github.com/jfrog/frogbot@v1.1.1-0.20231221090046-821a26f50338/testdata/projects/yarn1/.yarn/releases/yarn-1.22.19.cjs (about)

     1  #!/usr/bin/env node
     2  module.exports =
     3  /******/ (function(modules) { // webpackBootstrap
     4  /******/ 	// The module cache
     5  /******/ 	var installedModules = {};
     6  /******/
     7  /******/ 	// The require function
     8  /******/ 	function __webpack_require__(moduleId) {
     9  /******/
    10  /******/ 		// Check if module is in cache
    11  /******/ 		if(installedModules[moduleId]) {
    12  /******/ 			return installedModules[moduleId].exports;
    13  /******/ 		}
    14  /******/ 		// Create a new module (and put it into the cache)
    15  /******/ 		var module = installedModules[moduleId] = {
    16  /******/ 			i: moduleId,
    17  /******/ 			l: false,
    18  /******/ 			exports: {}
    19  /******/ 		};
    20  /******/
    21  /******/ 		// Execute the module function
    22  /******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
    23  /******/
    24  /******/ 		// Flag the module as loaded
    25  /******/ 		module.l = true;
    26  /******/
    27  /******/ 		// Return the exports of the module
    28  /******/ 		return module.exports;
    29  /******/ 	}
    30  /******/
    31  /******/
    32  /******/ 	// expose the modules object (__webpack_modules__)
    33  /******/ 	__webpack_require__.m = modules;
    34  /******/
    35  /******/ 	// expose the module cache
    36  /******/ 	__webpack_require__.c = installedModules;
    37  /******/
    38  /******/ 	// identity function for calling harmony imports with the correct context
    39  /******/ 	__webpack_require__.i = function(value) { return value; };
    40  /******/
    41  /******/ 	// define getter function for harmony exports
    42  /******/ 	__webpack_require__.d = function(exports, name, getter) {
    43  /******/ 		if(!__webpack_require__.o(exports, name)) {
    44  /******/ 			Object.defineProperty(exports, name, {
    45  /******/ 				configurable: false,
    46  /******/ 				enumerable: true,
    47  /******/ 				get: getter
    48  /******/ 			});
    49  /******/ 		}
    50  /******/ 	};
    51  /******/
    52  /******/ 	// getDefaultExport function for compatibility with non-harmony modules
    53  /******/ 	__webpack_require__.n = function(module) {
    54  /******/ 		var getter = module && module.__esModule ?
    55  /******/ 			function getDefault() { return module['default']; } :
    56  /******/ 			function getModuleExports() { return module; };
    57  /******/ 		__webpack_require__.d(getter, 'a', getter);
    58  /******/ 		return getter;
    59  /******/ 	};
    60  /******/
    61  /******/ 	// Object.prototype.hasOwnProperty.call
    62  /******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
    63  /******/
    64  /******/ 	// __webpack_public_path__
    65  /******/ 	__webpack_require__.p = "";
    66  /******/
    67  /******/ 	// Load entry module and return exports
    68  /******/ 	return __webpack_require__(__webpack_require__.s = 517);
    69  /******/ })
    70  /************************************************************************/
    71  /******/ ([
    72  /* 0 */
    73  /***/ (function(module, exports) {
    74  
    75  module.exports = require("path");
    76  
    77  /***/ }),
    78  /* 1 */
    79  /***/ (function(module, __webpack_exports__, __webpack_require__) {
    80  
    81  "use strict";
    82  /* harmony export (immutable) */ __webpack_exports__["a"] = __extends;
    83  /* unused harmony export __assign */
    84  /* unused harmony export __rest */
    85  /* unused harmony export __decorate */
    86  /* unused harmony export __param */
    87  /* unused harmony export __metadata */
    88  /* unused harmony export __awaiter */
    89  /* unused harmony export __generator */
    90  /* unused harmony export __exportStar */
    91  /* unused harmony export __values */
    92  /* unused harmony export __read */
    93  /* unused harmony export __spread */
    94  /* unused harmony export __await */
    95  /* unused harmony export __asyncGenerator */
    96  /* unused harmony export __asyncDelegator */
    97  /* unused harmony export __asyncValues */
    98  /* unused harmony export __makeTemplateObject */
    99  /* unused harmony export __importStar */
   100  /* unused harmony export __importDefault */
   101  /*! *****************************************************************************
   102  Copyright (c) Microsoft Corporation. All rights reserved.
   103  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
   104  this file except in compliance with the License. You may obtain a copy of the
   105  License at http://www.apache.org/licenses/LICENSE-2.0
   106  
   107  THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   108  KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
   109  WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
   110  MERCHANTABLITY OR NON-INFRINGEMENT.
   111  
   112  See the Apache Version 2.0 License for specific language governing permissions
   113  and limitations under the License.
   114  ***************************************************************************** */
   115  /* global Reflect, Promise */
   116  
   117  var extendStatics = function(d, b) {
   118      extendStatics = Object.setPrototypeOf ||
   119          ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
   120          function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
   121      return extendStatics(d, b);
   122  };
   123  
   124  function __extends(d, b) {
   125      extendStatics(d, b);
   126      function __() { this.constructor = d; }
   127      d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
   128  }
   129  
   130  var __assign = function() {
   131      __assign = Object.assign || function __assign(t) {
   132          for (var s, i = 1, n = arguments.length; i < n; i++) {
   133              s = arguments[i];
   134              for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
   135          }
   136          return t;
   137      }
   138      return __assign.apply(this, arguments);
   139  }
   140  
   141  function __rest(s, e) {
   142      var t = {};
   143      for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
   144          t[p] = s[p];
   145      if (s != null && typeof Object.getOwnPropertySymbols === "function")
   146          for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
   147              t[p[i]] = s[p[i]];
   148      return t;
   149  }
   150  
   151  function __decorate(decorators, target, key, desc) {
   152      var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
   153      if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
   154      else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
   155      return c > 3 && r && Object.defineProperty(target, key, r), r;
   156  }
   157  
   158  function __param(paramIndex, decorator) {
   159      return function (target, key) { decorator(target, key, paramIndex); }
   160  }
   161  
   162  function __metadata(metadataKey, metadataValue) {
   163      if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
   164  }
   165  
   166  function __awaiter(thisArg, _arguments, P, generator) {
   167      return new (P || (P = Promise))(function (resolve, reject) {
   168          function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
   169          function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
   170          function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
   171          step((generator = generator.apply(thisArg, _arguments || [])).next());
   172      });
   173  }
   174  
   175  function __generator(thisArg, body) {
   176      var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
   177      return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
   178      function verb(n) { return function (v) { return step([n, v]); }; }
   179      function step(op) {
   180          if (f) throw new TypeError("Generator is already executing.");
   181          while (_) try {
   182              if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
   183              if (y = 0, t) op = [op[0] & 2, t.value];
   184              switch (op[0]) {
   185                  case 0: case 1: t = op; break;
   186                  case 4: _.label++; return { value: op[1], done: false };
   187                  case 5: _.label++; y = op[1]; op = [0]; continue;
   188                  case 7: op = _.ops.pop(); _.trys.pop(); continue;
   189                  default:
   190                      if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
   191                      if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
   192                      if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
   193                      if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
   194                      if (t[2]) _.ops.pop();
   195                      _.trys.pop(); continue;
   196              }
   197              op = body.call(thisArg, _);
   198          } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
   199          if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
   200      }
   201  }
   202  
   203  function __exportStar(m, exports) {
   204      for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
   205  }
   206  
   207  function __values(o) {
   208      var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
   209      if (m) return m.call(o);
   210      return {
   211          next: function () {
   212              if (o && i >= o.length) o = void 0;
   213              return { value: o && o[i++], done: !o };
   214          }
   215      };
   216  }
   217  
   218  function __read(o, n) {
   219      var m = typeof Symbol === "function" && o[Symbol.iterator];
   220      if (!m) return o;
   221      var i = m.call(o), r, ar = [], e;
   222      try {
   223          while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
   224      }
   225      catch (error) { e = { error: error }; }
   226      finally {
   227          try {
   228              if (r && !r.done && (m = i["return"])) m.call(i);
   229          }
   230          finally { if (e) throw e.error; }
   231      }
   232      return ar;
   233  }
   234  
   235  function __spread() {
   236      for (var ar = [], i = 0; i < arguments.length; i++)
   237          ar = ar.concat(__read(arguments[i]));
   238      return ar;
   239  }
   240  
   241  function __await(v) {
   242      return this instanceof __await ? (this.v = v, this) : new __await(v);
   243  }
   244  
   245  function __asyncGenerator(thisArg, _arguments, generator) {
   246      if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
   247      var g = generator.apply(thisArg, _arguments || []), i, q = [];
   248      return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
   249      function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
   250      function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
   251      function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
   252      function fulfill(value) { resume("next", value); }
   253      function reject(value) { resume("throw", value); }
   254      function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
   255  }
   256  
   257  function __asyncDelegator(o) {
   258      var i, p;
   259      return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
   260      function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
   261  }
   262  
   263  function __asyncValues(o) {
   264      if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
   265      var m = o[Symbol.asyncIterator], i;
   266      return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
   267      function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
   268      function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
   269  }
   270  
   271  function __makeTemplateObject(cooked, raw) {
   272      if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
   273      return cooked;
   274  };
   275  
   276  function __importStar(mod) {
   277      if (mod && mod.__esModule) return mod;
   278      var result = {};
   279      if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
   280      result.default = mod;
   281      return result;
   282  }
   283  
   284  function __importDefault(mod) {
   285      return (mod && mod.__esModule) ? mod : { default: mod };
   286  }
   287  
   288  
   289  /***/ }),
   290  /* 2 */
   291  /***/ (function(module, exports, __webpack_require__) {
   292  
   293  "use strict";
   294  
   295  
   296  exports.__esModule = true;
   297  
   298  var _promise = __webpack_require__(224);
   299  
   300  var _promise2 = _interopRequireDefault(_promise);
   301  
   302  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
   303  
   304  exports.default = function (fn) {
   305    return function () {
   306      var gen = fn.apply(this, arguments);
   307      return new _promise2.default(function (resolve, reject) {
   308        function step(key, arg) {
   309          try {
   310            var info = gen[key](arg);
   311            var value = info.value;
   312          } catch (error) {
   313            reject(error);
   314            return;
   315          }
   316  
   317          if (info.done) {
   318            resolve(value);
   319          } else {
   320            return _promise2.default.resolve(value).then(function (value) {
   321              step("next", value);
   322            }, function (err) {
   323              step("throw", err);
   324            });
   325          }
   326        }
   327  
   328        return step("next");
   329      });
   330    };
   331  };
   332  
   333  /***/ }),
   334  /* 3 */
   335  /***/ (function(module, exports) {
   336  
   337  module.exports = require("util");
   338  
   339  /***/ }),
   340  /* 4 */
   341  /***/ (function(module, exports) {
   342  
   343  module.exports = require("fs");
   344  
   345  /***/ }),
   346  /* 5 */
   347  /***/ (function(module, exports, __webpack_require__) {
   348  
   349  "use strict";
   350  
   351  
   352  Object.defineProperty(exports, "__esModule", {
   353    value: true
   354  });
   355  exports.getFirstSuitableFolder = exports.readFirstAvailableStream = exports.makeTempDir = exports.hardlinksWork = exports.writeFilePreservingEol = exports.getFileSizeOnDisk = exports.walk = exports.symlink = exports.find = exports.readJsonAndFile = exports.readJson = exports.readFileAny = exports.hardlinkBulk = exports.copyBulk = exports.unlink = exports.glob = exports.link = exports.chmod = exports.lstat = exports.exists = exports.mkdirp = exports.stat = exports.access = exports.rename = exports.readdir = exports.realpath = exports.readlink = exports.writeFile = exports.open = exports.readFileBuffer = exports.lockQueue = exports.constants = undefined;
   356  
   357  var _asyncToGenerator2;
   358  
   359  function _load_asyncToGenerator() {
   360    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
   361  }
   362  
   363  let buildActionsForCopy = (() => {
   364    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) {
   365  
   366      //
   367      let build = (() => {
   368        var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) {
   369          const src = data.src,
   370                dest = data.dest,
   371                type = data.type;
   372  
   373          const onFresh = data.onFresh || noop;
   374          const onDone = data.onDone || noop;
   375  
   376          // TODO https://github.com/yarnpkg/yarn/issues/3751
   377          // related to bundled dependencies handling
   378          if (files.has(dest.toLowerCase())) {
   379            reporter.verbose(`The case-insensitive file ${dest} shouldn't be copied twice in one bulk copy`);
   380          } else {
   381            files.add(dest.toLowerCase());
   382          }
   383  
   384          if (type === 'symlink') {
   385            yield mkdirp((_path || _load_path()).default.dirname(dest));
   386            onFresh();
   387            actions.symlink.push({
   388              dest,
   389              linkname: src
   390            });
   391            onDone();
   392            return;
   393          }
   394  
   395          if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) {
   396            // ignored file
   397            return;
   398          }
   399  
   400          const srcStat = yield lstat(src);
   401          let srcFiles;
   402  
   403          if (srcStat.isDirectory()) {
   404            srcFiles = yield readdir(src);
   405          }
   406  
   407          let destStat;
   408          try {
   409            // try accessing the destination
   410            destStat = yield lstat(dest);
   411          } catch (e) {
   412            // proceed if destination doesn't exist, otherwise error
   413            if (e.code !== 'ENOENT') {
   414              throw e;
   415            }
   416          }
   417  
   418          // if destination exists
   419          if (destStat) {
   420            const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink();
   421            const bothFolders = srcStat.isDirectory() && destStat.isDirectory();
   422            const bothFiles = srcStat.isFile() && destStat.isFile();
   423  
   424            // EINVAL access errors sometimes happen which shouldn't because node shouldn't be giving
   425            // us modes that aren't valid. investigate this, it's generally safe to proceed.
   426  
   427            /* if (srcStat.mode !== destStat.mode) {
   428              try {
   429                await access(dest, srcStat.mode);
   430              } catch (err) {}
   431            } */
   432  
   433            if (bothFiles && artifactFiles.has(dest)) {
   434              // this file gets changed during build, likely by a custom install script. Don't bother checking it.
   435              onDone();
   436              reporter.verbose(reporter.lang('verboseFileSkipArtifact', src));
   437              return;
   438            }
   439  
   440            if (bothFiles && srcStat.size === destStat.size && (0, (_fsNormalized || _load_fsNormalized()).fileDatesEqual)(srcStat.mtime, destStat.mtime)) {
   441              // we can safely assume this is the same file
   442              onDone();
   443              reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.size, +srcStat.mtime));
   444              return;
   445            }
   446  
   447            if (bothSymlinks) {
   448              const srcReallink = yield readlink(src);
   449              if (srcReallink === (yield readlink(dest))) {
   450                // if both symlinks are the same then we can continue on
   451                onDone();
   452                reporter.verbose(reporter.lang('verboseFileSkipSymlink', src, dest, srcReallink));
   453                return;
   454              }
   455            }
   456  
   457            if (bothFolders) {
   458              // mark files that aren't in this folder as possibly extraneous
   459              const destFiles = yield readdir(dest);
   460              invariant(srcFiles, 'src files not initialised');
   461  
   462              for (var _iterator4 = destFiles, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
   463                var _ref6;
   464  
   465                if (_isArray4) {
   466                  if (_i4 >= _iterator4.length) break;
   467                  _ref6 = _iterator4[_i4++];
   468                } else {
   469                  _i4 = _iterator4.next();
   470                  if (_i4.done) break;
   471                  _ref6 = _i4.value;
   472                }
   473  
   474                const file = _ref6;
   475  
   476                if (srcFiles.indexOf(file) < 0) {
   477                  const loc = (_path || _load_path()).default.join(dest, file);
   478                  possibleExtraneous.add(loc);
   479  
   480                  if ((yield lstat(loc)).isDirectory()) {
   481                    for (var _iterator5 = yield readdir(loc), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
   482                      var _ref7;
   483  
   484                      if (_isArray5) {
   485                        if (_i5 >= _iterator5.length) break;
   486                        _ref7 = _iterator5[_i5++];
   487                      } else {
   488                        _i5 = _iterator5.next();
   489                        if (_i5.done) break;
   490                        _ref7 = _i5.value;
   491                      }
   492  
   493                      const file = _ref7;
   494  
   495                      possibleExtraneous.add((_path || _load_path()).default.join(loc, file));
   496                    }
   497                  }
   498                }
   499              }
   500            }
   501          }
   502  
   503          if (destStat && destStat.isSymbolicLink()) {
   504            yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dest);
   505            destStat = null;
   506          }
   507  
   508          if (srcStat.isSymbolicLink()) {
   509            onFresh();
   510            const linkname = yield readlink(src);
   511            actions.symlink.push({
   512              dest,
   513              linkname
   514            });
   515            onDone();
   516          } else if (srcStat.isDirectory()) {
   517            if (!destStat) {
   518              reporter.verbose(reporter.lang('verboseFileFolder', dest));
   519              yield mkdirp(dest);
   520            }
   521  
   522            const destParts = dest.split((_path || _load_path()).default.sep);
   523            while (destParts.length) {
   524              files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase());
   525              destParts.pop();
   526            }
   527  
   528            // push all files to queue
   529            invariant(srcFiles, 'src files not initialised');
   530            let remaining = srcFiles.length;
   531            if (!remaining) {
   532              onDone();
   533            }
   534            for (var _iterator6 = srcFiles, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
   535              var _ref8;
   536  
   537              if (_isArray6) {
   538                if (_i6 >= _iterator6.length) break;
   539                _ref8 = _iterator6[_i6++];
   540              } else {
   541                _i6 = _iterator6.next();
   542                if (_i6.done) break;
   543                _ref8 = _i6.value;
   544              }
   545  
   546              const file = _ref8;
   547  
   548              queue.push({
   549                dest: (_path || _load_path()).default.join(dest, file),
   550                onFresh,
   551                onDone: function (_onDone) {
   552                  function onDone() {
   553                    return _onDone.apply(this, arguments);
   554                  }
   555  
   556                  onDone.toString = function () {
   557                    return _onDone.toString();
   558                  };
   559  
   560                  return onDone;
   561                }(function () {
   562                  if (--remaining === 0) {
   563                    onDone();
   564                  }
   565                }),
   566                src: (_path || _load_path()).default.join(src, file)
   567              });
   568            }
   569          } else if (srcStat.isFile()) {
   570            onFresh();
   571            actions.file.push({
   572              src,
   573              dest,
   574              atime: srcStat.atime,
   575              mtime: srcStat.mtime,
   576              mode: srcStat.mode
   577            });
   578            onDone();
   579          } else {
   580            throw new Error(`unsure how to copy this: ${src}`);
   581          }
   582        });
   583  
   584        return function build(_x5) {
   585          return _ref5.apply(this, arguments);
   586        };
   587      })();
   588  
   589      const artifactFiles = new Set(events.artifactFiles || []);
   590      const files = new Set();
   591  
   592      // initialise events
   593      for (var _iterator = queue, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
   594        var _ref2;
   595  
   596        if (_isArray) {
   597          if (_i >= _iterator.length) break;
   598          _ref2 = _iterator[_i++];
   599        } else {
   600          _i = _iterator.next();
   601          if (_i.done) break;
   602          _ref2 = _i.value;
   603        }
   604  
   605        const item = _ref2;
   606  
   607        const onDone = item.onDone;
   608        item.onDone = function () {
   609          events.onProgress(item.dest);
   610          if (onDone) {
   611            onDone();
   612          }
   613        };
   614      }
   615      events.onStart(queue.length);
   616  
   617      // start building actions
   618      const actions = {
   619        file: [],
   620        symlink: [],
   621        link: []
   622      };
   623  
   624      // custom concurrency logic as we're always executing stacks of CONCURRENT_QUEUE_ITEMS queue items
   625      // at a time due to the requirement to push items onto the queue
   626      while (queue.length) {
   627        const items = queue.splice(0, CONCURRENT_QUEUE_ITEMS);
   628        yield Promise.all(items.map(build));
   629      }
   630  
   631      // simulate the existence of some files to prevent considering them extraneous
   632      for (var _iterator2 = artifactFiles, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
   633        var _ref3;
   634  
   635        if (_isArray2) {
   636          if (_i2 >= _iterator2.length) break;
   637          _ref3 = _iterator2[_i2++];
   638        } else {
   639          _i2 = _iterator2.next();
   640          if (_i2.done) break;
   641          _ref3 = _i2.value;
   642        }
   643  
   644        const file = _ref3;
   645  
   646        if (possibleExtraneous.has(file)) {
   647          reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file));
   648          possibleExtraneous.delete(file);
   649        }
   650      }
   651  
   652      for (var _iterator3 = possibleExtraneous, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
   653        var _ref4;
   654  
   655        if (_isArray3) {
   656          if (_i3 >= _iterator3.length) break;
   657          _ref4 = _iterator3[_i3++];
   658        } else {
   659          _i3 = _iterator3.next();
   660          if (_i3.done) break;
   661          _ref4 = _i3.value;
   662        }
   663  
   664        const loc = _ref4;
   665  
   666        if (files.has(loc.toLowerCase())) {
   667          possibleExtraneous.delete(loc);
   668        }
   669      }
   670  
   671      return actions;
   672    });
   673  
   674    return function buildActionsForCopy(_x, _x2, _x3, _x4) {
   675      return _ref.apply(this, arguments);
   676    };
   677  })();
   678  
   679  let buildActionsForHardlink = (() => {
   680    var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) {
   681  
   682      //
   683      let build = (() => {
   684        var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) {
   685          const src = data.src,
   686                dest = data.dest;
   687  
   688          const onFresh = data.onFresh || noop;
   689          const onDone = data.onDone || noop;
   690          if (files.has(dest.toLowerCase())) {
   691            // Fixes issue https://github.com/yarnpkg/yarn/issues/2734
   692            // When bulk hardlinking we have A -> B structure that we want to hardlink to A1 -> B1,
   693            // package-linker passes that modules A1 and B1 need to be hardlinked,
   694            // the recursive linking algorithm of A1 ends up scheduling files in B1 to be linked twice which will case
   695            // an exception.
   696            onDone();
   697            return;
   698          }
   699          files.add(dest.toLowerCase());
   700  
   701          if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) {
   702            // ignored file
   703            return;
   704          }
   705  
   706          const srcStat = yield lstat(src);
   707          let srcFiles;
   708  
   709          if (srcStat.isDirectory()) {
   710            srcFiles = yield readdir(src);
   711          }
   712  
   713          const destExists = yield exists(dest);
   714          if (destExists) {
   715            const destStat = yield lstat(dest);
   716  
   717            const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink();
   718            const bothFolders = srcStat.isDirectory() && destStat.isDirectory();
   719            const bothFiles = srcStat.isFile() && destStat.isFile();
   720  
   721            if (srcStat.mode !== destStat.mode) {
   722              try {
   723                yield access(dest, srcStat.mode);
   724              } catch (err) {
   725                // EINVAL access errors sometimes happen which shouldn't because node shouldn't be giving
   726                // us modes that aren't valid. investigate this, it's generally safe to proceed.
   727                reporter.verbose(err);
   728              }
   729            }
   730  
   731            if (bothFiles && artifactFiles.has(dest)) {
   732              // this file gets changed during build, likely by a custom install script. Don't bother checking it.
   733              onDone();
   734              reporter.verbose(reporter.lang('verboseFileSkipArtifact', src));
   735              return;
   736            }
   737  
   738            // correct hardlink
   739            if (bothFiles && srcStat.ino !== null && srcStat.ino === destStat.ino) {
   740              onDone();
   741              reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.ino));
   742              return;
   743            }
   744  
   745            if (bothSymlinks) {
   746              const srcReallink = yield readlink(src);
   747              if (srcReallink === (yield readlink(dest))) {
   748                // if both symlinks are the same then we can continue on
   749                onDone();
   750                reporter.verbose(reporter.lang('verboseFileSkipSymlink', src, dest, srcReallink));
   751                return;
   752              }
   753            }
   754  
   755            if (bothFolders) {
   756              // mark files that aren't in this folder as possibly extraneous
   757              const destFiles = yield readdir(dest);
   758              invariant(srcFiles, 'src files not initialised');
   759  
   760              for (var _iterator10 = destFiles, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {
   761                var _ref14;
   762  
   763                if (_isArray10) {
   764                  if (_i10 >= _iterator10.length) break;
   765                  _ref14 = _iterator10[_i10++];
   766                } else {
   767                  _i10 = _iterator10.next();
   768                  if (_i10.done) break;
   769                  _ref14 = _i10.value;
   770                }
   771  
   772                const file = _ref14;
   773  
   774                if (srcFiles.indexOf(file) < 0) {
   775                  const loc = (_path || _load_path()).default.join(dest, file);
   776                  possibleExtraneous.add(loc);
   777  
   778                  if ((yield lstat(loc)).isDirectory()) {
   779                    for (var _iterator11 = yield readdir(loc), _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) {
   780                      var _ref15;
   781  
   782                      if (_isArray11) {
   783                        if (_i11 >= _iterator11.length) break;
   784                        _ref15 = _iterator11[_i11++];
   785                      } else {
   786                        _i11 = _iterator11.next();
   787                        if (_i11.done) break;
   788                        _ref15 = _i11.value;
   789                      }
   790  
   791                      const file = _ref15;
   792  
   793                      possibleExtraneous.add((_path || _load_path()).default.join(loc, file));
   794                    }
   795                  }
   796                }
   797              }
   798            }
   799          }
   800  
   801          if (srcStat.isSymbolicLink()) {
   802            onFresh();
   803            const linkname = yield readlink(src);
   804            actions.symlink.push({
   805              dest,
   806              linkname
   807            });
   808            onDone();
   809          } else if (srcStat.isDirectory()) {
   810            reporter.verbose(reporter.lang('verboseFileFolder', dest));
   811            yield mkdirp(dest);
   812  
   813            const destParts = dest.split((_path || _load_path()).default.sep);
   814            while (destParts.length) {
   815              files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase());
   816              destParts.pop();
   817            }
   818  
   819            // push all files to queue
   820            invariant(srcFiles, 'src files not initialised');
   821            let remaining = srcFiles.length;
   822            if (!remaining) {
   823              onDone();
   824            }
   825            for (var _iterator12 = srcFiles, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) {
   826              var _ref16;
   827  
   828              if (_isArray12) {
   829                if (_i12 >= _iterator12.length) break;
   830                _ref16 = _iterator12[_i12++];
   831              } else {
   832                _i12 = _iterator12.next();
   833                if (_i12.done) break;
   834                _ref16 = _i12.value;
   835              }
   836  
   837              const file = _ref16;
   838  
   839              queue.push({
   840                onFresh,
   841                src: (_path || _load_path()).default.join(src, file),
   842                dest: (_path || _load_path()).default.join(dest, file),
   843                onDone: function (_onDone2) {
   844                  function onDone() {
   845                    return _onDone2.apply(this, arguments);
   846                  }
   847  
   848                  onDone.toString = function () {
   849                    return _onDone2.toString();
   850                  };
   851  
   852                  return onDone;
   853                }(function () {
   854                  if (--remaining === 0) {
   855                    onDone();
   856                  }
   857                })
   858              });
   859            }
   860          } else if (srcStat.isFile()) {
   861            onFresh();
   862            actions.link.push({
   863              src,
   864              dest,
   865              removeDest: destExists
   866            });
   867            onDone();
   868          } else {
   869            throw new Error(`unsure how to copy this: ${src}`);
   870          }
   871        });
   872  
   873        return function build(_x10) {
   874          return _ref13.apply(this, arguments);
   875        };
   876      })();
   877  
   878      const artifactFiles = new Set(events.artifactFiles || []);
   879      const files = new Set();
   880  
   881      // initialise events
   882      for (var _iterator7 = queue, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
   883        var _ref10;
   884  
   885        if (_isArray7) {
   886          if (_i7 >= _iterator7.length) break;
   887          _ref10 = _iterator7[_i7++];
   888        } else {
   889          _i7 = _iterator7.next();
   890          if (_i7.done) break;
   891          _ref10 = _i7.value;
   892        }
   893  
   894        const item = _ref10;
   895  
   896        const onDone = item.onDone || noop;
   897        item.onDone = function () {
   898          events.onProgress(item.dest);
   899          onDone();
   900        };
   901      }
   902      events.onStart(queue.length);
   903  
   904      // start building actions
   905      const actions = {
   906        file: [],
   907        symlink: [],
   908        link: []
   909      };
   910  
   911      // custom concurrency logic as we're always executing stacks of CONCURRENT_QUEUE_ITEMS queue items
   912      // at a time due to the requirement to push items onto the queue
   913      while (queue.length) {
   914        const items = queue.splice(0, CONCURRENT_QUEUE_ITEMS);
   915        yield Promise.all(items.map(build));
   916      }
   917  
   918      // simulate the existence of some files to prevent considering them extraneous
   919      for (var _iterator8 = artifactFiles, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {
   920        var _ref11;
   921  
   922        if (_isArray8) {
   923          if (_i8 >= _iterator8.length) break;
   924          _ref11 = _iterator8[_i8++];
   925        } else {
   926          _i8 = _iterator8.next();
   927          if (_i8.done) break;
   928          _ref11 = _i8.value;
   929        }
   930  
   931        const file = _ref11;
   932  
   933        if (possibleExtraneous.has(file)) {
   934          reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file));
   935          possibleExtraneous.delete(file);
   936        }
   937      }
   938  
   939      for (var _iterator9 = possibleExtraneous, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {
   940        var _ref12;
   941  
   942        if (_isArray9) {
   943          if (_i9 >= _iterator9.length) break;
   944          _ref12 = _iterator9[_i9++];
   945        } else {
   946          _i9 = _iterator9.next();
   947          if (_i9.done) break;
   948          _ref12 = _i9.value;
   949        }
   950  
   951        const loc = _ref12;
   952  
   953        if (files.has(loc.toLowerCase())) {
   954          possibleExtraneous.delete(loc);
   955        }
   956      }
   957  
   958      return actions;
   959    });
   960  
   961    return function buildActionsForHardlink(_x6, _x7, _x8, _x9) {
   962      return _ref9.apply(this, arguments);
   963    };
   964  })();
   965  
   966  let copyBulk = exports.copyBulk = (() => {
   967    var _ref17 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, reporter, _events) {
   968      const events = {
   969        onStart: _events && _events.onStart || noop,
   970        onProgress: _events && _events.onProgress || noop,
   971        possibleExtraneous: _events ? _events.possibleExtraneous : new Set(),
   972        ignoreBasenames: _events && _events.ignoreBasenames || [],
   973        artifactFiles: _events && _events.artifactFiles || []
   974      };
   975  
   976      const actions = yield buildActionsForCopy(queue, events, events.possibleExtraneous, reporter);
   977      events.onStart(actions.file.length + actions.symlink.length + actions.link.length);
   978  
   979      const fileActions = actions.file;
   980  
   981      const currentlyWriting = new Map();
   982  
   983      yield (_promise || _load_promise()).queue(fileActions, (() => {
   984        var _ref18 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) {
   985          let writePromise;
   986          while (writePromise = currentlyWriting.get(data.dest)) {
   987            yield writePromise;
   988          }
   989  
   990          reporter.verbose(reporter.lang('verboseFileCopy', data.src, data.dest));
   991          const copier = (0, (_fsNormalized || _load_fsNormalized()).copyFile)(data, function () {
   992            return currentlyWriting.delete(data.dest);
   993          });
   994          currentlyWriting.set(data.dest, copier);
   995          events.onProgress(data.dest);
   996          return copier;
   997        });
   998  
   999        return function (_x14) {
  1000          return _ref18.apply(this, arguments);
  1001        };
  1002      })(), CONCURRENT_QUEUE_ITEMS);
  1003  
  1004      // we need to copy symlinks last as they could reference files we were copying
  1005      const symlinkActions = actions.symlink;
  1006      yield (_promise || _load_promise()).queue(symlinkActions, function (data) {
  1007        const linkname = (_path || _load_path()).default.resolve((_path || _load_path()).default.dirname(data.dest), data.linkname);
  1008        reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname));
  1009        return symlink(linkname, data.dest);
  1010      });
  1011    });
  1012  
  1013    return function copyBulk(_x11, _x12, _x13) {
  1014      return _ref17.apply(this, arguments);
  1015    };
  1016  })();
  1017  
  1018  let hardlinkBulk = exports.hardlinkBulk = (() => {
  1019    var _ref19 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, reporter, _events) {
  1020      const events = {
  1021        onStart: _events && _events.onStart || noop,
  1022        onProgress: _events && _events.onProgress || noop,
  1023        possibleExtraneous: _events ? _events.possibleExtraneous : new Set(),
  1024        artifactFiles: _events && _events.artifactFiles || [],
  1025        ignoreBasenames: []
  1026      };
  1027  
  1028      const actions = yield buildActionsForHardlink(queue, events, events.possibleExtraneous, reporter);
  1029      events.onStart(actions.file.length + actions.symlink.length + actions.link.length);
  1030  
  1031      const fileActions = actions.link;
  1032  
  1033      yield (_promise || _load_promise()).queue(fileActions, (() => {
  1034        var _ref20 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) {
  1035          reporter.verbose(reporter.lang('verboseFileLink', data.src, data.dest));
  1036          if (data.removeDest) {
  1037            yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(data.dest);
  1038          }
  1039          yield link(data.src, data.dest);
  1040        });
  1041  
  1042        return function (_x18) {
  1043          return _ref20.apply(this, arguments);
  1044        };
  1045      })(), CONCURRENT_QUEUE_ITEMS);
  1046  
  1047      // we need to copy symlinks last as they could reference files we were copying
  1048      const symlinkActions = actions.symlink;
  1049      yield (_promise || _load_promise()).queue(symlinkActions, function (data) {
  1050        const linkname = (_path || _load_path()).default.resolve((_path || _load_path()).default.dirname(data.dest), data.linkname);
  1051        reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname));
  1052        return symlink(linkname, data.dest);
  1053      });
  1054    });
  1055  
  1056    return function hardlinkBulk(_x15, _x16, _x17) {
  1057      return _ref19.apply(this, arguments);
  1058    };
  1059  })();
  1060  
  1061  let readFileAny = exports.readFileAny = (() => {
  1062    var _ref21 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (files) {
  1063      for (var _iterator13 = files, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) {
  1064        var _ref22;
  1065  
  1066        if (_isArray13) {
  1067          if (_i13 >= _iterator13.length) break;
  1068          _ref22 = _iterator13[_i13++];
  1069        } else {
  1070          _i13 = _iterator13.next();
  1071          if (_i13.done) break;
  1072          _ref22 = _i13.value;
  1073        }
  1074  
  1075        const file = _ref22;
  1076  
  1077        if (yield exists(file)) {
  1078          return readFile(file);
  1079        }
  1080      }
  1081      return null;
  1082    });
  1083  
  1084    return function readFileAny(_x19) {
  1085      return _ref21.apply(this, arguments);
  1086    };
  1087  })();
  1088  
  1089  let readJson = exports.readJson = (() => {
  1090    var _ref23 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) {
  1091      return (yield readJsonAndFile(loc)).object;
  1092    });
  1093  
  1094    return function readJson(_x20) {
  1095      return _ref23.apply(this, arguments);
  1096    };
  1097  })();
  1098  
  1099  let readJsonAndFile = exports.readJsonAndFile = (() => {
  1100    var _ref24 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) {
  1101      const file = yield readFile(loc);
  1102      try {
  1103        return {
  1104          object: (0, (_map || _load_map()).default)(JSON.parse(stripBOM(file))),
  1105          content: file
  1106        };
  1107      } catch (err) {
  1108        err.message = `${loc}: ${err.message}`;
  1109        throw err;
  1110      }
  1111    });
  1112  
  1113    return function readJsonAndFile(_x21) {
  1114      return _ref24.apply(this, arguments);
  1115    };
  1116  })();
  1117  
  1118  let find = exports.find = (() => {
  1119    var _ref25 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (filename, dir) {
  1120      const parts = dir.split((_path || _load_path()).default.sep);
  1121  
  1122      while (parts.length) {
  1123        const loc = parts.concat(filename).join((_path || _load_path()).default.sep);
  1124  
  1125        if (yield exists(loc)) {
  1126          return loc;
  1127        } else {
  1128          parts.pop();
  1129        }
  1130      }
  1131  
  1132      return false;
  1133    });
  1134  
  1135    return function find(_x22, _x23) {
  1136      return _ref25.apply(this, arguments);
  1137    };
  1138  })();
  1139  
  1140  let symlink = exports.symlink = (() => {
  1141    var _ref26 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (src, dest) {
  1142      if (process.platform !== 'win32') {
  1143        // use relative paths otherwise which will be retained if the directory is moved
  1144        src = (_path || _load_path()).default.relative((_path || _load_path()).default.dirname(dest), src);
  1145        // When path.relative returns an empty string for the current directory, we should instead use
  1146        // '.', which is a valid fs.symlink target.
  1147        src = src || '.';
  1148      }
  1149  
  1150      try {
  1151        const stats = yield lstat(dest);
  1152        if (stats.isSymbolicLink()) {
  1153          const resolved = dest;
  1154          if (resolved === src) {
  1155            return;
  1156          }
  1157        }
  1158      } catch (err) {
  1159        if (err.code !== 'ENOENT') {
  1160          throw err;
  1161        }
  1162      }
  1163  
  1164      // We use rimraf for unlink which never throws an ENOENT on missing target
  1165      yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dest);
  1166  
  1167      if (process.platform === 'win32') {
  1168        // use directory junctions if possible on win32, this requires absolute paths
  1169        yield fsSymlink(src, dest, 'junction');
  1170      } else {
  1171        yield fsSymlink(src, dest);
  1172      }
  1173    });
  1174  
  1175    return function symlink(_x24, _x25) {
  1176      return _ref26.apply(this, arguments);
  1177    };
  1178  })();
  1179  
  1180  let walk = exports.walk = (() => {
  1181    var _ref27 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir, relativeDir, ignoreBasenames = new Set()) {
  1182      let files = [];
  1183  
  1184      let filenames = yield readdir(dir);
  1185      if (ignoreBasenames.size) {
  1186        filenames = filenames.filter(function (name) {
  1187          return !ignoreBasenames.has(name);
  1188        });
  1189      }
  1190  
  1191      for (var _iterator14 = filenames, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) {
  1192        var _ref28;
  1193  
  1194        if (_isArray14) {
  1195          if (_i14 >= _iterator14.length) break;
  1196          _ref28 = _iterator14[_i14++];
  1197        } else {
  1198          _i14 = _iterator14.next();
  1199          if (_i14.done) break;
  1200          _ref28 = _i14.value;
  1201        }
  1202  
  1203        const name = _ref28;
  1204  
  1205        const relative = relativeDir ? (_path || _load_path()).default.join(relativeDir, name) : name;
  1206        const loc = (_path || _load_path()).default.join(dir, name);
  1207        const stat = yield lstat(loc);
  1208  
  1209        files.push({
  1210          relative,
  1211          basename: name,
  1212          absolute: loc,
  1213          mtime: +stat.mtime
  1214        });
  1215  
  1216        if (stat.isDirectory()) {
  1217          files = files.concat((yield walk(loc, relative, ignoreBasenames)));
  1218        }
  1219      }
  1220  
  1221      return files;
  1222    });
  1223  
  1224    return function walk(_x26, _x27) {
  1225      return _ref27.apply(this, arguments);
  1226    };
  1227  })();
  1228  
  1229  let getFileSizeOnDisk = exports.getFileSizeOnDisk = (() => {
  1230    var _ref29 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) {
  1231      const stat = yield lstat(loc);
  1232      const size = stat.size,
  1233            blockSize = stat.blksize;
  1234  
  1235  
  1236      return Math.ceil(size / blockSize) * blockSize;
  1237    });
  1238  
  1239    return function getFileSizeOnDisk(_x28) {
  1240      return _ref29.apply(this, arguments);
  1241    };
  1242  })();
  1243  
  1244  let getEolFromFile = (() => {
  1245    var _ref30 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path) {
  1246      if (!(yield exists(path))) {
  1247        return undefined;
  1248      }
  1249  
  1250      const buffer = yield readFileBuffer(path);
  1251  
  1252      for (let i = 0; i < buffer.length; ++i) {
  1253        if (buffer[i] === cr) {
  1254          return '\r\n';
  1255        }
  1256        if (buffer[i] === lf) {
  1257          return '\n';
  1258        }
  1259      }
  1260      return undefined;
  1261    });
  1262  
  1263    return function getEolFromFile(_x29) {
  1264      return _ref30.apply(this, arguments);
  1265    };
  1266  })();
  1267  
  1268  let writeFilePreservingEol = exports.writeFilePreservingEol = (() => {
  1269    var _ref31 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path, data) {
  1270      const eol = (yield getEolFromFile(path)) || (_os || _load_os()).default.EOL;
  1271      if (eol !== '\n') {
  1272        data = data.replace(/\n/g, eol);
  1273      }
  1274      yield writeFile(path, data);
  1275    });
  1276  
  1277    return function writeFilePreservingEol(_x30, _x31) {
  1278      return _ref31.apply(this, arguments);
  1279    };
  1280  })();
  1281  
  1282  let hardlinksWork = exports.hardlinksWork = (() => {
  1283    var _ref32 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir) {
  1284      const filename = 'test-file' + Math.random();
  1285      const file = (_path || _load_path()).default.join(dir, filename);
  1286      const fileLink = (_path || _load_path()).default.join(dir, filename + '-link');
  1287      try {
  1288        yield writeFile(file, 'test');
  1289        yield link(file, fileLink);
  1290      } catch (err) {
  1291        return false;
  1292      } finally {
  1293        yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(file);
  1294        yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(fileLink);
  1295      }
  1296      return true;
  1297    });
  1298  
  1299    return function hardlinksWork(_x32) {
  1300      return _ref32.apply(this, arguments);
  1301    };
  1302  })();
  1303  
  1304  // not a strict polyfill for Node's fs.mkdtemp
  1305  
  1306  
  1307  let makeTempDir = exports.makeTempDir = (() => {
  1308    var _ref33 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (prefix) {
  1309      const dir = (_path || _load_path()).default.join((_os || _load_os()).default.tmpdir(), `yarn-${prefix || ''}-${Date.now()}-${Math.random()}`);
  1310      yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dir);
  1311      yield mkdirp(dir);
  1312      return dir;
  1313    });
  1314  
  1315    return function makeTempDir(_x33) {
  1316      return _ref33.apply(this, arguments);
  1317    };
  1318  })();
  1319  
  1320  let readFirstAvailableStream = exports.readFirstAvailableStream = (() => {
  1321    var _ref34 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (paths) {
  1322      for (var _iterator15 = paths, _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) {
  1323        var _ref35;
  1324  
  1325        if (_isArray15) {
  1326          if (_i15 >= _iterator15.length) break;
  1327          _ref35 = _iterator15[_i15++];
  1328        } else {
  1329          _i15 = _iterator15.next();
  1330          if (_i15.done) break;
  1331          _ref35 = _i15.value;
  1332        }
  1333  
  1334        const path = _ref35;
  1335  
  1336        try {
  1337          const fd = yield open(path, 'r');
  1338          return (_fs || _load_fs()).default.createReadStream(path, { fd });
  1339        } catch (err) {
  1340          // Try the next one
  1341        }
  1342      }
  1343      return null;
  1344    });
  1345  
  1346    return function readFirstAvailableStream(_x34) {
  1347      return _ref34.apply(this, arguments);
  1348    };
  1349  })();
  1350  
  1351  let getFirstSuitableFolder = exports.getFirstSuitableFolder = (() => {
  1352    var _ref36 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (paths, mode = constants.W_OK | constants.X_OK) {
  1353      const result = {
  1354        skipped: [],
  1355        folder: null
  1356      };
  1357  
  1358      for (var _iterator16 = paths, _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : _iterator16[Symbol.iterator]();;) {
  1359        var _ref37;
  1360  
  1361        if (_isArray16) {
  1362          if (_i16 >= _iterator16.length) break;
  1363          _ref37 = _iterator16[_i16++];
  1364        } else {
  1365          _i16 = _iterator16.next();
  1366          if (_i16.done) break;
  1367          _ref37 = _i16.value;
  1368        }
  1369  
  1370        const folder = _ref37;
  1371  
  1372        try {
  1373          yield mkdirp(folder);
  1374          yield access(folder, mode);
  1375  
  1376          result.folder = folder;
  1377  
  1378          return result;
  1379        } catch (error) {
  1380          result.skipped.push({
  1381            error,
  1382            folder
  1383          });
  1384        }
  1385      }
  1386      return result;
  1387    });
  1388  
  1389    return function getFirstSuitableFolder(_x35) {
  1390      return _ref36.apply(this, arguments);
  1391    };
  1392  })();
  1393  
  1394  exports.copy = copy;
  1395  exports.readFile = readFile;
  1396  exports.readFileRaw = readFileRaw;
  1397  exports.normalizeOS = normalizeOS;
  1398  
  1399  var _fs;
  1400  
  1401  function _load_fs() {
  1402    return _fs = _interopRequireDefault(__webpack_require__(4));
  1403  }
  1404  
  1405  var _glob;
  1406  
  1407  function _load_glob() {
  1408    return _glob = _interopRequireDefault(__webpack_require__(99));
  1409  }
  1410  
  1411  var _os;
  1412  
  1413  function _load_os() {
  1414    return _os = _interopRequireDefault(__webpack_require__(46));
  1415  }
  1416  
  1417  var _path;
  1418  
  1419  function _load_path() {
  1420    return _path = _interopRequireDefault(__webpack_require__(0));
  1421  }
  1422  
  1423  var _blockingQueue;
  1424  
  1425  function _load_blockingQueue() {
  1426    return _blockingQueue = _interopRequireDefault(__webpack_require__(110));
  1427  }
  1428  
  1429  var _promise;
  1430  
  1431  function _load_promise() {
  1432    return _promise = _interopRequireWildcard(__webpack_require__(51));
  1433  }
  1434  
  1435  var _promise2;
  1436  
  1437  function _load_promise2() {
  1438    return _promise2 = __webpack_require__(51);
  1439  }
  1440  
  1441  var _map;
  1442  
  1443  function _load_map() {
  1444    return _map = _interopRequireDefault(__webpack_require__(29));
  1445  }
  1446  
  1447  var _fsNormalized;
  1448  
  1449  function _load_fsNormalized() {
  1450    return _fsNormalized = __webpack_require__(216);
  1451  }
  1452  
  1453  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
  1454  
  1455  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  1456  
  1457  const constants = exports.constants = typeof (_fs || _load_fs()).default.constants !== 'undefined' ? (_fs || _load_fs()).default.constants : {
  1458    R_OK: (_fs || _load_fs()).default.R_OK,
  1459    W_OK: (_fs || _load_fs()).default.W_OK,
  1460    X_OK: (_fs || _load_fs()).default.X_OK
  1461  };
  1462  
  1463  const lockQueue = exports.lockQueue = new (_blockingQueue || _load_blockingQueue()).default('fs lock');
  1464  
  1465  const readFileBuffer = exports.readFileBuffer = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readFile);
  1466  const open = exports.open = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.open);
  1467  const writeFile = exports.writeFile = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.writeFile);
  1468  const readlink = exports.readlink = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readlink);
  1469  const realpath = exports.realpath = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.realpath);
  1470  const readdir = exports.readdir = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readdir);
  1471  const rename = exports.rename = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.rename);
  1472  const access = exports.access = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.access);
  1473  const stat = exports.stat = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.stat);
  1474  const mkdirp = exports.mkdirp = (0, (_promise2 || _load_promise2()).promisify)(__webpack_require__(145));
  1475  const exists = exports.exists = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.exists, true);
  1476  const lstat = exports.lstat = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.lstat);
  1477  const chmod = exports.chmod = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.chmod);
  1478  const link = exports.link = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.link);
  1479  const glob = exports.glob = (0, (_promise2 || _load_promise2()).promisify)((_glob || _load_glob()).default);
  1480  exports.unlink = (_fsNormalized || _load_fsNormalized()).unlink;
  1481  
  1482  // fs.copyFile uses the native file copying instructions on the system, performing much better
  1483  // than any JS-based solution and consumes fewer resources. Repeated testing to fine tune the
  1484  // concurrency level revealed 128 as the sweet spot on a quad-core, 16 CPU Intel system with SSD.
  1485  
  1486  const CONCURRENT_QUEUE_ITEMS = (_fs || _load_fs()).default.copyFile ? 128 : 4;
  1487  
  1488  const fsSymlink = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.symlink);
  1489  const invariant = __webpack_require__(9);
  1490  const stripBOM = __webpack_require__(160);
  1491  
  1492  const noop = () => {};
  1493  
  1494  function copy(src, dest, reporter) {
  1495    return copyBulk([{ src, dest }], reporter);
  1496  }
  1497  
  1498  function _readFile(loc, encoding) {
  1499    return new Promise((resolve, reject) => {
  1500      (_fs || _load_fs()).default.readFile(loc, encoding, function (err, content) {
  1501        if (err) {
  1502          reject(err);
  1503        } else {
  1504          resolve(content);
  1505        }
  1506      });
  1507    });
  1508  }
  1509  
  1510  function readFile(loc) {
  1511    return _readFile(loc, 'utf8').then(normalizeOS);
  1512  }
  1513  
  1514  function readFileRaw(loc) {
  1515    return _readFile(loc, 'binary');
  1516  }
  1517  
  1518  function normalizeOS(body) {
  1519    return body.replace(/\r\n/g, '\n');
  1520  }
  1521  
  1522  const cr = '\r'.charCodeAt(0);
  1523  const lf = '\n'.charCodeAt(0);
  1524  
  1525  /***/ }),
  1526  /* 6 */
  1527  /***/ (function(module, exports, __webpack_require__) {
  1528  
  1529  "use strict";
  1530  
  1531  
  1532  Object.defineProperty(exports, "__esModule", {
  1533    value: true
  1534  });
  1535  class MessageError extends Error {
  1536    constructor(msg, code) {
  1537      super(msg);
  1538      this.code = code;
  1539    }
  1540  
  1541  }
  1542  
  1543  exports.MessageError = MessageError;
  1544  class ProcessSpawnError extends MessageError {
  1545    constructor(msg, code, process) {
  1546      super(msg, code);
  1547      this.process = process;
  1548    }
  1549  
  1550  }
  1551  
  1552  exports.ProcessSpawnError = ProcessSpawnError;
  1553  class SecurityError extends MessageError {}
  1554  
  1555  exports.SecurityError = SecurityError;
  1556  class ProcessTermError extends MessageError {}
  1557  
  1558  exports.ProcessTermError = ProcessTermError;
  1559  class ResponseError extends Error {
  1560    constructor(msg, responseCode) {
  1561      super(msg);
  1562      this.responseCode = responseCode;
  1563    }
  1564  
  1565  }
  1566  
  1567  exports.ResponseError = ResponseError;
  1568  class OneTimePasswordError extends Error {
  1569    constructor(notice) {
  1570      super();
  1571      this.notice = notice;
  1572    }
  1573  
  1574  }
  1575  exports.OneTimePasswordError = OneTimePasswordError;
  1576  
  1577  /***/ }),
  1578  /* 7 */
  1579  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1580  
  1581  "use strict";
  1582  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Subscriber; });
  1583  /* unused harmony export SafeSubscriber */
  1584  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
  1585  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isFunction__ = __webpack_require__(154);
  1586  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Observer__ = __webpack_require__(420);
  1587  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscription__ = __webpack_require__(25);
  1588  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__internal_symbol_rxSubscriber__ = __webpack_require__(321);
  1589  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__config__ = __webpack_require__(186);
  1590  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__util_hostReportError__ = __webpack_require__(323);
  1591  /** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */
  1592  
  1593  
  1594  
  1595  
  1596  
  1597  
  1598  
  1599  var Subscriber = /*@__PURE__*/ (function (_super) {
  1600      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](Subscriber, _super);
  1601      function Subscriber(destinationOrNext, error, complete) {
  1602          var _this = _super.call(this) || this;
  1603          _this.syncErrorValue = null;
  1604          _this.syncErrorThrown = false;
  1605          _this.syncErrorThrowable = false;
  1606          _this.isStopped = false;
  1607          _this._parentSubscription = null;
  1608          switch (arguments.length) {
  1609              case 0:
  1610                  _this.destination = __WEBPACK_IMPORTED_MODULE_2__Observer__["a" /* empty */];
  1611                  break;
  1612              case 1:
  1613                  if (!destinationOrNext) {
  1614                      _this.destination = __WEBPACK_IMPORTED_MODULE_2__Observer__["a" /* empty */];
  1615                      break;
  1616                  }
  1617                  if (typeof destinationOrNext === 'object') {
  1618                      if (destinationOrNext instanceof Subscriber) {
  1619                          _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;
  1620                          _this.destination = destinationOrNext;
  1621                          destinationOrNext.add(_this);
  1622                      }
  1623                      else {
  1624                          _this.syncErrorThrowable = true;
  1625                          _this.destination = new SafeSubscriber(_this, destinationOrNext);
  1626                      }
  1627                      break;
  1628                  }
  1629              default:
  1630                  _this.syncErrorThrowable = true;
  1631                  _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete);
  1632                  break;
  1633          }
  1634          return _this;
  1635      }
  1636      Subscriber.prototype[__WEBPACK_IMPORTED_MODULE_4__internal_symbol_rxSubscriber__["a" /* rxSubscriber */]] = function () { return this; };
  1637      Subscriber.create = function (next, error, complete) {
  1638          var subscriber = new Subscriber(next, error, complete);
  1639          subscriber.syncErrorThrowable = false;
  1640          return subscriber;
  1641      };
  1642      Subscriber.prototype.next = function (value) {
  1643          if (!this.isStopped) {
  1644              this._next(value);
  1645          }
  1646      };
  1647      Subscriber.prototype.error = function (err) {
  1648          if (!this.isStopped) {
  1649              this.isStopped = true;
  1650              this._error(err);
  1651          }
  1652      };
  1653      Subscriber.prototype.complete = function () {
  1654          if (!this.isStopped) {
  1655              this.isStopped = true;
  1656              this._complete();
  1657          }
  1658      };
  1659      Subscriber.prototype.unsubscribe = function () {
  1660          if (this.closed) {
  1661              return;
  1662          }
  1663          this.isStopped = true;
  1664          _super.prototype.unsubscribe.call(this);
  1665      };
  1666      Subscriber.prototype._next = function (value) {
  1667          this.destination.next(value);
  1668      };
  1669      Subscriber.prototype._error = function (err) {
  1670          this.destination.error(err);
  1671          this.unsubscribe();
  1672      };
  1673      Subscriber.prototype._complete = function () {
  1674          this.destination.complete();
  1675          this.unsubscribe();
  1676      };
  1677      Subscriber.prototype._unsubscribeAndRecycle = function () {
  1678          var _a = this, _parent = _a._parent, _parents = _a._parents;
  1679          this._parent = null;
  1680          this._parents = null;
  1681          this.unsubscribe();
  1682          this.closed = false;
  1683          this.isStopped = false;
  1684          this._parent = _parent;
  1685          this._parents = _parents;
  1686          this._parentSubscription = null;
  1687          return this;
  1688      };
  1689      return Subscriber;
  1690  }(__WEBPACK_IMPORTED_MODULE_3__Subscription__["a" /* Subscription */]));
  1691  
  1692  var SafeSubscriber = /*@__PURE__*/ (function (_super) {
  1693      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SafeSubscriber, _super);
  1694      function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {
  1695          var _this = _super.call(this) || this;
  1696          _this._parentSubscriber = _parentSubscriber;
  1697          var next;
  1698          var context = _this;
  1699          if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_isFunction__["a" /* isFunction */])(observerOrNext)) {
  1700              next = observerOrNext;
  1701          }
  1702          else if (observerOrNext) {
  1703              next = observerOrNext.next;
  1704              error = observerOrNext.error;
  1705              complete = observerOrNext.complete;
  1706              if (observerOrNext !== __WEBPACK_IMPORTED_MODULE_2__Observer__["a" /* empty */]) {
  1707                  context = Object.create(observerOrNext);
  1708                  if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_isFunction__["a" /* isFunction */])(context.unsubscribe)) {
  1709                      _this.add(context.unsubscribe.bind(context));
  1710                  }
  1711                  context.unsubscribe = _this.unsubscribe.bind(_this);
  1712              }
  1713          }
  1714          _this._context = context;
  1715          _this._next = next;
  1716          _this._error = error;
  1717          _this._complete = complete;
  1718          return _this;
  1719      }
  1720      SafeSubscriber.prototype.next = function (value) {
  1721          if (!this.isStopped && this._next) {
  1722              var _parentSubscriber = this._parentSubscriber;
  1723              if (!__WEBPACK_IMPORTED_MODULE_5__config__["a" /* config */].useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {
  1724                  this.__tryOrUnsub(this._next, value);
  1725              }
  1726              else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {
  1727                  this.unsubscribe();
  1728              }
  1729          }
  1730      };
  1731      SafeSubscriber.prototype.error = function (err) {
  1732          if (!this.isStopped) {
  1733              var _parentSubscriber = this._parentSubscriber;
  1734              var useDeprecatedSynchronousErrorHandling = __WEBPACK_IMPORTED_MODULE_5__config__["a" /* config */].useDeprecatedSynchronousErrorHandling;
  1735              if (this._error) {
  1736                  if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {
  1737                      this.__tryOrUnsub(this._error, err);
  1738                      this.unsubscribe();
  1739                  }
  1740                  else {
  1741                      this.__tryOrSetError(_parentSubscriber, this._error, err);
  1742                      this.unsubscribe();
  1743                  }
  1744              }
  1745              else if (!_parentSubscriber.syncErrorThrowable) {
  1746                  this.unsubscribe();
  1747                  if (useDeprecatedSynchronousErrorHandling) {
  1748                      throw err;
  1749                  }
  1750                  __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__util_hostReportError__["a" /* hostReportError */])(err);
  1751              }
  1752              else {
  1753                  if (useDeprecatedSynchronousErrorHandling) {
  1754                      _parentSubscriber.syncErrorValue = err;
  1755                      _parentSubscriber.syncErrorThrown = true;
  1756                  }
  1757                  else {
  1758                      __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__util_hostReportError__["a" /* hostReportError */])(err);
  1759                  }
  1760                  this.unsubscribe();
  1761              }
  1762          }
  1763      };
  1764      SafeSubscriber.prototype.complete = function () {
  1765          var _this = this;
  1766          if (!this.isStopped) {
  1767              var _parentSubscriber = this._parentSubscriber;
  1768              if (this._complete) {
  1769                  var wrappedComplete = function () { return _this._complete.call(_this._context); };
  1770                  if (!__WEBPACK_IMPORTED_MODULE_5__config__["a" /* config */].useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {
  1771                      this.__tryOrUnsub(wrappedComplete);
  1772                      this.unsubscribe();
  1773                  }
  1774                  else {
  1775                      this.__tryOrSetError(_parentSubscriber, wrappedComplete);
  1776                      this.unsubscribe();
  1777                  }
  1778              }
  1779              else {
  1780                  this.unsubscribe();
  1781              }
  1782          }
  1783      };
  1784      SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {
  1785          try {
  1786              fn.call(this._context, value);
  1787          }
  1788          catch (err) {
  1789              this.unsubscribe();
  1790              if (__WEBPACK_IMPORTED_MODULE_5__config__["a" /* config */].useDeprecatedSynchronousErrorHandling) {
  1791                  throw err;
  1792              }
  1793              else {
  1794                  __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__util_hostReportError__["a" /* hostReportError */])(err);
  1795              }
  1796          }
  1797      };
  1798      SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {
  1799          if (!__WEBPACK_IMPORTED_MODULE_5__config__["a" /* config */].useDeprecatedSynchronousErrorHandling) {
  1800              throw new Error('bad call');
  1801          }
  1802          try {
  1803              fn.call(this._context, value);
  1804          }
  1805          catch (err) {
  1806              if (__WEBPACK_IMPORTED_MODULE_5__config__["a" /* config */].useDeprecatedSynchronousErrorHandling) {
  1807                  parent.syncErrorValue = err;
  1808                  parent.syncErrorThrown = true;
  1809                  return true;
  1810              }
  1811              else {
  1812                  __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__util_hostReportError__["a" /* hostReportError */])(err);
  1813                  return true;
  1814              }
  1815          }
  1816          return false;
  1817      };
  1818      SafeSubscriber.prototype._unsubscribe = function () {
  1819          var _parentSubscriber = this._parentSubscriber;
  1820          this._context = null;
  1821          this._parentSubscriber = null;
  1822          _parentSubscriber.unsubscribe();
  1823      };
  1824      return SafeSubscriber;
  1825  }(Subscriber));
  1826  
  1827  //# sourceMappingURL=Subscriber.js.map
  1828  
  1829  
  1830  /***/ }),
  1831  /* 8 */
  1832  /***/ (function(module, exports, __webpack_require__) {
  1833  
  1834  "use strict";
  1835  
  1836  
  1837  Object.defineProperty(exports, "__esModule", {
  1838    value: true
  1839  });
  1840  exports.getPathKey = getPathKey;
  1841  const os = __webpack_require__(46);
  1842  const path = __webpack_require__(0);
  1843  const userHome = __webpack_require__(67).default;
  1844  
  1845  var _require = __webpack_require__(222);
  1846  
  1847  const getCacheDir = _require.getCacheDir,
  1848        getConfigDir = _require.getConfigDir,
  1849        getDataDir = _require.getDataDir;
  1850  
  1851  const isWebpackBundle = __webpack_require__(278);
  1852  
  1853  const DEPENDENCY_TYPES = exports.DEPENDENCY_TYPES = ['devDependencies', 'dependencies', 'optionalDependencies', 'peerDependencies'];
  1854  const OWNED_DEPENDENCY_TYPES = exports.OWNED_DEPENDENCY_TYPES = ['devDependencies', 'dependencies', 'optionalDependencies'];
  1855  
  1856  const RESOLUTIONS = exports.RESOLUTIONS = 'resolutions';
  1857  const MANIFEST_FIELDS = exports.MANIFEST_FIELDS = [RESOLUTIONS, ...DEPENDENCY_TYPES];
  1858  
  1859  const SUPPORTED_NODE_VERSIONS = exports.SUPPORTED_NODE_VERSIONS = '^4.8.0 || ^5.7.0 || ^6.2.2 || >=8.0.0';
  1860  
  1861  const YARN_REGISTRY = exports.YARN_REGISTRY = 'https://registry.yarnpkg.com';
  1862  const NPM_REGISTRY_RE = exports.NPM_REGISTRY_RE = /https?:\/\/registry\.npmjs\.org/g;
  1863  
  1864  const YARN_DOCS = exports.YARN_DOCS = 'https://yarnpkg.com/en/docs/cli/';
  1865  const YARN_INSTALLER_SH = exports.YARN_INSTALLER_SH = 'https://yarnpkg.com/install.sh';
  1866  const YARN_INSTALLER_MSI = exports.YARN_INSTALLER_MSI = 'https://yarnpkg.com/latest.msi';
  1867  
  1868  const SELF_UPDATE_VERSION_URL = exports.SELF_UPDATE_VERSION_URL = 'https://yarnpkg.com/latest-version';
  1869  
  1870  // cache version, bump whenever we make backwards incompatible changes
  1871  const CACHE_VERSION = exports.CACHE_VERSION = 6;
  1872  
  1873  // lockfile version, bump whenever we make backwards incompatible changes
  1874  const LOCKFILE_VERSION = exports.LOCKFILE_VERSION = 1;
  1875  
  1876  // max amount of network requests to perform concurrently
  1877  const NETWORK_CONCURRENCY = exports.NETWORK_CONCURRENCY = 8;
  1878  
  1879  // HTTP timeout used when downloading packages
  1880  const NETWORK_TIMEOUT = exports.NETWORK_TIMEOUT = 30 * 1000; // in milliseconds
  1881  
  1882  // max amount of child processes to execute concurrently
  1883  const CHILD_CONCURRENCY = exports.CHILD_CONCURRENCY = 5;
  1884  
  1885  const REQUIRED_PACKAGE_KEYS = exports.REQUIRED_PACKAGE_KEYS = ['name', 'version', '_uid'];
  1886  
  1887  function getPreferredCacheDirectories() {
  1888    const preferredCacheDirectories = [getCacheDir()];
  1889  
  1890    if (process.getuid) {
  1891      // $FlowFixMe: process.getuid exists, dammit
  1892      preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache-${process.getuid()}`));
  1893    }
  1894  
  1895    preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache`));
  1896  
  1897    return preferredCacheDirectories;
  1898  }
  1899  
  1900  const PREFERRED_MODULE_CACHE_DIRECTORIES = exports.PREFERRED_MODULE_CACHE_DIRECTORIES = getPreferredCacheDirectories();
  1901  const CONFIG_DIRECTORY = exports.CONFIG_DIRECTORY = getConfigDir();
  1902  const DATA_DIRECTORY = exports.DATA_DIRECTORY = getDataDir();
  1903  const LINK_REGISTRY_DIRECTORY = exports.LINK_REGISTRY_DIRECTORY = path.join(DATA_DIRECTORY, 'link');
  1904  const GLOBAL_MODULE_DIRECTORY = exports.GLOBAL_MODULE_DIRECTORY = path.join(DATA_DIRECTORY, 'global');
  1905  
  1906  const NODE_BIN_PATH = exports.NODE_BIN_PATH = process.execPath;
  1907  const YARN_BIN_PATH = exports.YARN_BIN_PATH = getYarnBinPath();
  1908  
  1909  // Webpack needs to be configured with node.__dirname/__filename = false
  1910  function getYarnBinPath() {
  1911    if (isWebpackBundle) {
  1912      return __filename;
  1913    } else {
  1914      return path.join(__dirname, '..', 'bin', 'yarn.js');
  1915    }
  1916  }
  1917  
  1918  const NODE_MODULES_FOLDER = exports.NODE_MODULES_FOLDER = 'node_modules';
  1919  const NODE_PACKAGE_JSON = exports.NODE_PACKAGE_JSON = 'package.json';
  1920  
  1921  const PNP_FILENAME = exports.PNP_FILENAME = '.pnp.js';
  1922  
  1923  const POSIX_GLOBAL_PREFIX = exports.POSIX_GLOBAL_PREFIX = `${process.env.DESTDIR || ''}/usr/local`;
  1924  const FALLBACK_GLOBAL_PREFIX = exports.FALLBACK_GLOBAL_PREFIX = path.join(userHome, '.yarn');
  1925  
  1926  const META_FOLDER = exports.META_FOLDER = '.yarn-meta';
  1927  const INTEGRITY_FILENAME = exports.INTEGRITY_FILENAME = '.yarn-integrity';
  1928  const LOCKFILE_FILENAME = exports.LOCKFILE_FILENAME = 'yarn.lock';
  1929  const METADATA_FILENAME = exports.METADATA_FILENAME = '.yarn-metadata.json';
  1930  const TARBALL_FILENAME = exports.TARBALL_FILENAME = '.yarn-tarball.tgz';
  1931  const CLEAN_FILENAME = exports.CLEAN_FILENAME = '.yarnclean';
  1932  
  1933  const NPM_LOCK_FILENAME = exports.NPM_LOCK_FILENAME = 'package-lock.json';
  1934  const NPM_SHRINKWRAP_FILENAME = exports.NPM_SHRINKWRAP_FILENAME = 'npm-shrinkwrap.json';
  1935  
  1936  const DEFAULT_INDENT = exports.DEFAULT_INDENT = '  ';
  1937  const SINGLE_INSTANCE_PORT = exports.SINGLE_INSTANCE_PORT = 31997;
  1938  const SINGLE_INSTANCE_FILENAME = exports.SINGLE_INSTANCE_FILENAME = '.yarn-single-instance';
  1939  
  1940  const ENV_PATH_KEY = exports.ENV_PATH_KEY = getPathKey(process.platform, process.env);
  1941  
  1942  function getPathKey(platform, env) {
  1943    let pathKey = 'PATH';
  1944  
  1945    // windows calls its path "Path" usually, but this is not guaranteed.
  1946    if (platform === 'win32') {
  1947      pathKey = 'Path';
  1948  
  1949      for (const key in env) {
  1950        if (key.toLowerCase() === 'path') {
  1951          pathKey = key;
  1952        }
  1953      }
  1954    }
  1955  
  1956    return pathKey;
  1957  }
  1958  
  1959  const VERSION_COLOR_SCHEME = exports.VERSION_COLOR_SCHEME = {
  1960    major: 'red',
  1961    premajor: 'red',
  1962    minor: 'yellow',
  1963    preminor: 'yellow',
  1964    patch: 'green',
  1965    prepatch: 'green',
  1966    prerelease: 'red',
  1967    unchanged: 'white',
  1968    unknown: 'red'
  1969  };
  1970  
  1971  /***/ }),
  1972  /* 9 */
  1973  /***/ (function(module, exports, __webpack_require__) {
  1974  
  1975  "use strict";
  1976  /**
  1977   * Copyright (c) 2013-present, Facebook, Inc.
  1978   *
  1979   * This source code is licensed under the MIT license found in the
  1980   * LICENSE file in the root directory of this source tree.
  1981   */
  1982  
  1983  
  1984  
  1985  /**
  1986   * Use invariant() to assert state which your program assumes to be true.
  1987   *
  1988   * Provide sprintf-style format (only %s is supported) and arguments
  1989   * to provide information about what broke and what you were
  1990   * expecting.
  1991   *
  1992   * The invariant message will be stripped in production, but the invariant
  1993   * will remain to ensure logic does not differ in production.
  1994   */
  1995  
  1996  var NODE_ENV = process.env.NODE_ENV;
  1997  
  1998  var invariant = function(condition, format, a, b, c, d, e, f) {
  1999    if (NODE_ENV !== 'production') {
  2000      if (format === undefined) {
  2001        throw new Error('invariant requires an error message argument');
  2002      }
  2003    }
  2004  
  2005    if (!condition) {
  2006      var error;
  2007      if (format === undefined) {
  2008        error = new Error(
  2009          'Minified exception occurred; use the non-minified dev environment ' +
  2010          'for the full error message and additional helpful warnings.'
  2011        );
  2012      } else {
  2013        var args = [a, b, c, d, e, f];
  2014        var argIndex = 0;
  2015        error = new Error(
  2016          format.replace(/%s/g, function() { return args[argIndex++]; })
  2017        );
  2018        error.name = 'Invariant Violation';
  2019      }
  2020  
  2021      error.framesToPop = 1; // we don't care about invariant's own frame
  2022      throw error;
  2023    }
  2024  };
  2025  
  2026  module.exports = invariant;
  2027  
  2028  
  2029  /***/ }),
  2030  /* 10 */
  2031  /***/ (function(module, exports, __webpack_require__) {
  2032  
  2033  "use strict";
  2034  
  2035  
  2036  var YAMLException = __webpack_require__(55);
  2037  
  2038  var TYPE_CONSTRUCTOR_OPTIONS = [
  2039    'kind',
  2040    'resolve',
  2041    'construct',
  2042    'instanceOf',
  2043    'predicate',
  2044    'represent',
  2045    'defaultStyle',
  2046    'styleAliases'
  2047  ];
  2048  
  2049  var YAML_NODE_KINDS = [
  2050    'scalar',
  2051    'sequence',
  2052    'mapping'
  2053  ];
  2054  
  2055  function compileStyleAliases(map) {
  2056    var result = {};
  2057  
  2058    if (map !== null) {
  2059      Object.keys(map).forEach(function (style) {
  2060        map[style].forEach(function (alias) {
  2061          result[String(alias)] = style;
  2062        });
  2063      });
  2064    }
  2065  
  2066    return result;
  2067  }
  2068  
  2069  function Type(tag, options) {
  2070    options = options || {};
  2071  
  2072    Object.keys(options).forEach(function (name) {
  2073      if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {
  2074        throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.');
  2075      }
  2076    });
  2077  
  2078    // TODO: Add tag format check.
  2079    this.tag          = tag;
  2080    this.kind         = options['kind']         || null;
  2081    this.resolve      = options['resolve']      || function () { return true; };
  2082    this.construct    = options['construct']    || function (data) { return data; };
  2083    this.instanceOf   = options['instanceOf']   || null;
  2084    this.predicate    = options['predicate']    || null;
  2085    this.represent    = options['represent']    || null;
  2086    this.defaultStyle = options['defaultStyle'] || null;
  2087    this.styleAliases = compileStyleAliases(options['styleAliases'] || null);
  2088  
  2089    if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {
  2090      throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.');
  2091    }
  2092  }
  2093  
  2094  module.exports = Type;
  2095  
  2096  
  2097  /***/ }),
  2098  /* 11 */
  2099  /***/ (function(module, exports) {
  2100  
  2101  module.exports = require("crypto");
  2102  
  2103  /***/ }),
  2104  /* 12 */
  2105  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2106  
  2107  "use strict";
  2108  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Observable; });
  2109  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_canReportError__ = __webpack_require__(322);
  2110  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_toSubscriber__ = __webpack_require__(932);
  2111  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__internal_symbol_observable__ = __webpack_require__(118);
  2112  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_pipe__ = __webpack_require__(324);
  2113  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__config__ = __webpack_require__(186);
  2114  /** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_internal_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */
  2115  
  2116  
  2117  
  2118  
  2119  
  2120  var Observable = /*@__PURE__*/ (function () {
  2121      function Observable(subscribe) {
  2122          this._isScalar = false;
  2123          if (subscribe) {
  2124              this._subscribe = subscribe;
  2125          }
  2126      }
  2127      Observable.prototype.lift = function (operator) {
  2128          var observable = new Observable();
  2129          observable.source = this;
  2130          observable.operator = operator;
  2131          return observable;
  2132      };
  2133      Observable.prototype.subscribe = function (observerOrNext, error, complete) {
  2134          var operator = this.operator;
  2135          var sink = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_toSubscriber__["a" /* toSubscriber */])(observerOrNext, error, complete);
  2136          if (operator) {
  2137              operator.call(sink, this.source);
  2138          }
  2139          else {
  2140              sink.add(this.source || (__WEBPACK_IMPORTED_MODULE_4__config__["a" /* config */].useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?
  2141                  this._subscribe(sink) :
  2142                  this._trySubscribe(sink));
  2143          }
  2144          if (__WEBPACK_IMPORTED_MODULE_4__config__["a" /* config */].useDeprecatedSynchronousErrorHandling) {
  2145              if (sink.syncErrorThrowable) {
  2146                  sink.syncErrorThrowable = false;
  2147                  if (sink.syncErrorThrown) {
  2148                      throw sink.syncErrorValue;
  2149                  }
  2150              }
  2151          }
  2152          return sink;
  2153      };
  2154      Observable.prototype._trySubscribe = function (sink) {
  2155          try {
  2156              return this._subscribe(sink);
  2157          }
  2158          catch (err) {
  2159              if (__WEBPACK_IMPORTED_MODULE_4__config__["a" /* config */].useDeprecatedSynchronousErrorHandling) {
  2160                  sink.syncErrorThrown = true;
  2161                  sink.syncErrorValue = err;
  2162              }
  2163              if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util_canReportError__["a" /* canReportError */])(sink)) {
  2164                  sink.error(err);
  2165              }
  2166              else {
  2167                  console.warn(err);
  2168              }
  2169          }
  2170      };
  2171      Observable.prototype.forEach = function (next, promiseCtor) {
  2172          var _this = this;
  2173          promiseCtor = getPromiseCtor(promiseCtor);
  2174          return new promiseCtor(function (resolve, reject) {
  2175              var subscription;
  2176              subscription = _this.subscribe(function (value) {
  2177                  try {
  2178                      next(value);
  2179                  }
  2180                  catch (err) {
  2181                      reject(err);
  2182                      if (subscription) {
  2183                          subscription.unsubscribe();
  2184                      }
  2185                  }
  2186              }, reject, resolve);
  2187          });
  2188      };
  2189      Observable.prototype._subscribe = function (subscriber) {
  2190          var source = this.source;
  2191          return source && source.subscribe(subscriber);
  2192      };
  2193      Observable.prototype[__WEBPACK_IMPORTED_MODULE_2__internal_symbol_observable__["a" /* observable */]] = function () {
  2194          return this;
  2195      };
  2196      Observable.prototype.pipe = function () {
  2197          var operations = [];
  2198          for (var _i = 0; _i < arguments.length; _i++) {
  2199              operations[_i] = arguments[_i];
  2200          }
  2201          if (operations.length === 0) {
  2202              return this;
  2203          }
  2204          return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_pipe__["b" /* pipeFromArray */])(operations)(this);
  2205      };
  2206      Observable.prototype.toPromise = function (promiseCtor) {
  2207          var _this = this;
  2208          promiseCtor = getPromiseCtor(promiseCtor);
  2209          return new promiseCtor(function (resolve, reject) {
  2210              var value;
  2211              _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });
  2212          });
  2213      };
  2214      Observable.create = function (subscribe) {
  2215          return new Observable(subscribe);
  2216      };
  2217      return Observable;
  2218  }());
  2219  
  2220  function getPromiseCtor(promiseCtor) {
  2221      if (!promiseCtor) {
  2222          promiseCtor = __WEBPACK_IMPORTED_MODULE_4__config__["a" /* config */].Promise || Promise;
  2223      }
  2224      if (!promiseCtor) {
  2225          throw new Error('no Promise impl found');
  2226      }
  2227      return promiseCtor;
  2228  }
  2229  //# sourceMappingURL=Observable.js.map
  2230  
  2231  
  2232  /***/ }),
  2233  /* 13 */
  2234  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2235  
  2236  "use strict";
  2237  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return OuterSubscriber; });
  2238  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
  2239  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
  2240  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
  2241  
  2242  
  2243  var OuterSubscriber = /*@__PURE__*/ (function (_super) {
  2244      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](OuterSubscriber, _super);
  2245      function OuterSubscriber() {
  2246          return _super !== null && _super.apply(this, arguments) || this;
  2247      }
  2248      OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
  2249          this.destination.next(innerValue);
  2250      };
  2251      OuterSubscriber.prototype.notifyError = function (error, innerSub) {
  2252          this.destination.error(error);
  2253      };
  2254      OuterSubscriber.prototype.notifyComplete = function (innerSub) {
  2255          this.destination.complete();
  2256      };
  2257      return OuterSubscriber;
  2258  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
  2259  
  2260  //# sourceMappingURL=OuterSubscriber.js.map
  2261  
  2262  
  2263  /***/ }),
  2264  /* 14 */
  2265  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2266  
  2267  "use strict";
  2268  /* harmony export (immutable) */ __webpack_exports__["a"] = subscribeToResult;
  2269  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__InnerSubscriber__ = __webpack_require__(84);
  2270  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__subscribeTo__ = __webpack_require__(446);
  2271  /** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo PURE_IMPORTS_END */
  2272  
  2273  
  2274  function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, destination) {
  2275      if (destination === void 0) {
  2276          destination = new __WEBPACK_IMPORTED_MODULE_0__InnerSubscriber__["a" /* InnerSubscriber */](outerSubscriber, outerValue, outerIndex);
  2277      }
  2278      if (destination.closed) {
  2279          return;
  2280      }
  2281      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__subscribeTo__["a" /* subscribeTo */])(result)(destination);
  2282  }
  2283  //# sourceMappingURL=subscribeToResult.js.map
  2284  
  2285  
  2286  /***/ }),
  2287  /* 15 */
  2288  /***/ (function(module, exports, __webpack_require__) {
  2289  
  2290  "use strict";
  2291  /* eslint-disable node/no-deprecated-api */
  2292  
  2293  
  2294  
  2295  var buffer = __webpack_require__(64)
  2296  var Buffer = buffer.Buffer
  2297  
  2298  var safer = {}
  2299  
  2300  var key
  2301  
  2302  for (key in buffer) {
  2303    if (!buffer.hasOwnProperty(key)) continue
  2304    if (key === 'SlowBuffer' || key === 'Buffer') continue
  2305    safer[key] = buffer[key]
  2306  }
  2307  
  2308  var Safer = safer.Buffer = {}
  2309  for (key in Buffer) {
  2310    if (!Buffer.hasOwnProperty(key)) continue
  2311    if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue
  2312    Safer[key] = Buffer[key]
  2313  }
  2314  
  2315  safer.Buffer.prototype = Buffer.prototype
  2316  
  2317  if (!Safer.from || Safer.from === Uint8Array.from) {
  2318    Safer.from = function (value, encodingOrOffset, length) {
  2319      if (typeof value === 'number') {
  2320        throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value)
  2321      }
  2322      if (value && typeof value.length === 'undefined') {
  2323        throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)
  2324      }
  2325      return Buffer(value, encodingOrOffset, length)
  2326    }
  2327  }
  2328  
  2329  if (!Safer.alloc) {
  2330    Safer.alloc = function (size, fill, encoding) {
  2331      if (typeof size !== 'number') {
  2332        throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size)
  2333      }
  2334      if (size < 0 || size >= 2 * (1 << 30)) {
  2335        throw new RangeError('The value "' + size + '" is invalid for option "size"')
  2336      }
  2337      var buf = Buffer(size)
  2338      if (!fill || fill.length === 0) {
  2339        buf.fill(0)
  2340      } else if (typeof encoding === 'string') {
  2341        buf.fill(fill, encoding)
  2342      } else {
  2343        buf.fill(fill)
  2344      }
  2345      return buf
  2346    }
  2347  }
  2348  
  2349  if (!safer.kStringMaxLength) {
  2350    try {
  2351      safer.kStringMaxLength = process.binding('buffer').kStringMaxLength
  2352    } catch (e) {
  2353      // we can't determine kStringMaxLength in environments where process.binding
  2354      // is unsupported, so let's not set it
  2355    }
  2356  }
  2357  
  2358  if (!safer.constants) {
  2359    safer.constants = {
  2360      MAX_LENGTH: safer.kMaxLength
  2361    }
  2362    if (safer.kStringMaxLength) {
  2363      safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength
  2364    }
  2365  }
  2366  
  2367  module.exports = safer
  2368  
  2369  
  2370  /***/ }),
  2371  /* 16 */
  2372  /***/ (function(module, exports, __webpack_require__) {
  2373  
  2374  // Copyright (c) 2012, Mark Cavage. All rights reserved.
  2375  // Copyright 2015 Joyent, Inc.
  2376  
  2377  var assert = __webpack_require__(28);
  2378  var Stream = __webpack_require__(23).Stream;
  2379  var util = __webpack_require__(3);
  2380  
  2381  
  2382  ///--- Globals
  2383  
  2384  /* JSSTYLED */
  2385  var UUID_REGEXP = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;
  2386  
  2387  
  2388  ///--- Internal
  2389  
  2390  function _capitalize(str) {
  2391      return (str.charAt(0).toUpperCase() + str.slice(1));
  2392  }
  2393  
  2394  function _toss(name, expected, oper, arg, actual) {
  2395      throw new assert.AssertionError({
  2396          message: util.format('%s (%s) is required', name, expected),
  2397          actual: (actual === undefined) ? typeof (arg) : actual(arg),
  2398          expected: expected,
  2399          operator: oper || '===',
  2400          stackStartFunction: _toss.caller
  2401      });
  2402  }
  2403  
  2404  function _getClass(arg) {
  2405      return (Object.prototype.toString.call(arg).slice(8, -1));
  2406  }
  2407  
  2408  function noop() {
  2409      // Why even bother with asserts?
  2410  }
  2411  
  2412  
  2413  ///--- Exports
  2414  
  2415  var types = {
  2416      bool: {
  2417          check: function (arg) { return typeof (arg) === 'boolean'; }
  2418      },
  2419      func: {
  2420          check: function (arg) { return typeof (arg) === 'function'; }
  2421      },
  2422      string: {
  2423          check: function (arg) { return typeof (arg) === 'string'; }
  2424      },
  2425      object: {
  2426          check: function (arg) {
  2427              return typeof (arg) === 'object' && arg !== null;
  2428          }
  2429      },
  2430      number: {
  2431          check: function (arg) {
  2432              return typeof (arg) === 'number' && !isNaN(arg);
  2433          }
  2434      },
  2435      finite: {
  2436          check: function (arg) {
  2437              return typeof (arg) === 'number' && !isNaN(arg) && isFinite(arg);
  2438          }
  2439      },
  2440      buffer: {
  2441          check: function (arg) { return Buffer.isBuffer(arg); },
  2442          operator: 'Buffer.isBuffer'
  2443      },
  2444      array: {
  2445          check: function (arg) { return Array.isArray(arg); },
  2446          operator: 'Array.isArray'
  2447      },
  2448      stream: {
  2449          check: function (arg) { return arg instanceof Stream; },
  2450          operator: 'instanceof',
  2451          actual: _getClass
  2452      },
  2453      date: {
  2454          check: function (arg) { return arg instanceof Date; },
  2455          operator: 'instanceof',
  2456          actual: _getClass
  2457      },
  2458      regexp: {
  2459          check: function (arg) { return arg instanceof RegExp; },
  2460          operator: 'instanceof',
  2461          actual: _getClass
  2462      },
  2463      uuid: {
  2464          check: function (arg) {
  2465              return typeof (arg) === 'string' && UUID_REGEXP.test(arg);
  2466          },
  2467          operator: 'isUUID'
  2468      }
  2469  };
  2470  
  2471  function _setExports(ndebug) {
  2472      var keys = Object.keys(types);
  2473      var out;
  2474  
  2475      /* re-export standard assert */
  2476      if (process.env.NODE_NDEBUG) {
  2477          out = noop;
  2478      } else {
  2479          out = function (arg, msg) {
  2480              if (!arg) {
  2481                  _toss(msg, 'true', arg);
  2482              }
  2483          };
  2484      }
  2485  
  2486      /* standard checks */
  2487      keys.forEach(function (k) {
  2488          if (ndebug) {
  2489              out[k] = noop;
  2490              return;
  2491          }
  2492          var type = types[k];
  2493          out[k] = function (arg, msg) {
  2494              if (!type.check(arg)) {
  2495                  _toss(msg, k, type.operator, arg, type.actual);
  2496              }
  2497          };
  2498      });
  2499  
  2500      /* optional checks */
  2501      keys.forEach(function (k) {
  2502          var name = 'optional' + _capitalize(k);
  2503          if (ndebug) {
  2504              out[name] = noop;
  2505              return;
  2506          }
  2507          var type = types[k];
  2508          out[name] = function (arg, msg) {
  2509              if (arg === undefined || arg === null) {
  2510                  return;
  2511              }
  2512              if (!type.check(arg)) {
  2513                  _toss(msg, k, type.operator, arg, type.actual);
  2514              }
  2515          };
  2516      });
  2517  
  2518      /* arrayOf checks */
  2519      keys.forEach(function (k) {
  2520          var name = 'arrayOf' + _capitalize(k);
  2521          if (ndebug) {
  2522              out[name] = noop;
  2523              return;
  2524          }
  2525          var type = types[k];
  2526          var expected = '[' + k + ']';
  2527          out[name] = function (arg, msg) {
  2528              if (!Array.isArray(arg)) {
  2529                  _toss(msg, expected, type.operator, arg, type.actual);
  2530              }
  2531              var i;
  2532              for (i = 0; i < arg.length; i++) {
  2533                  if (!type.check(arg[i])) {
  2534                      _toss(msg, expected, type.operator, arg, type.actual);
  2535                  }
  2536              }
  2537          };
  2538      });
  2539  
  2540      /* optionalArrayOf checks */
  2541      keys.forEach(function (k) {
  2542          var name = 'optionalArrayOf' + _capitalize(k);
  2543          if (ndebug) {
  2544              out[name] = noop;
  2545              return;
  2546          }
  2547          var type = types[k];
  2548          var expected = '[' + k + ']';
  2549          out[name] = function (arg, msg) {
  2550              if (arg === undefined || arg === null) {
  2551                  return;
  2552              }
  2553              if (!Array.isArray(arg)) {
  2554                  _toss(msg, expected, type.operator, arg, type.actual);
  2555              }
  2556              var i;
  2557              for (i = 0; i < arg.length; i++) {
  2558                  if (!type.check(arg[i])) {
  2559                      _toss(msg, expected, type.operator, arg, type.actual);
  2560                  }
  2561              }
  2562          };
  2563      });
  2564  
  2565      /* re-export built-in assertions */
  2566      Object.keys(assert).forEach(function (k) {
  2567          if (k === 'AssertionError') {
  2568              out[k] = assert[k];
  2569              return;
  2570          }
  2571          if (ndebug) {
  2572              out[k] = noop;
  2573              return;
  2574          }
  2575          out[k] = assert[k];
  2576      });
  2577  
  2578      /* export ourselves (for unit tests _only_) */
  2579      out._setExports = _setExports;
  2580  
  2581      return out;
  2582  }
  2583  
  2584  module.exports = _setExports(process.env.NODE_NDEBUG);
  2585  
  2586  
  2587  /***/ }),
  2588  /* 17 */
  2589  /***/ (function(module, exports) {
  2590  
  2591  // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
  2592  var global = module.exports = typeof window != 'undefined' && window.Math == Math
  2593    ? window : typeof self != 'undefined' && self.Math == Math ? self
  2594    // eslint-disable-next-line no-new-func
  2595    : Function('return this')();
  2596  if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
  2597  
  2598  
  2599  /***/ }),
  2600  /* 18 */
  2601  /***/ (function(module, exports, __webpack_require__) {
  2602  
  2603  "use strict";
  2604  
  2605  
  2606  Object.defineProperty(exports, "__esModule", {
  2607    value: true
  2608  });
  2609  exports.sortAlpha = sortAlpha;
  2610  exports.sortOptionsByFlags = sortOptionsByFlags;
  2611  exports.entries = entries;
  2612  exports.removePrefix = removePrefix;
  2613  exports.removeSuffix = removeSuffix;
  2614  exports.addSuffix = addSuffix;
  2615  exports.hyphenate = hyphenate;
  2616  exports.camelCase = camelCase;
  2617  exports.compareSortedArrays = compareSortedArrays;
  2618  exports.sleep = sleep;
  2619  const _camelCase = __webpack_require__(227);
  2620  
  2621  function sortAlpha(a, b) {
  2622    // sort alphabetically in a deterministic way
  2623    const shortLen = Math.min(a.length, b.length);
  2624    for (let i = 0; i < shortLen; i++) {
  2625      const aChar = a.charCodeAt(i);
  2626      const bChar = b.charCodeAt(i);
  2627      if (aChar !== bChar) {
  2628        return aChar - bChar;
  2629      }
  2630    }
  2631    return a.length - b.length;
  2632  }
  2633  
  2634  function sortOptionsByFlags(a, b) {
  2635    const aOpt = a.flags.replace(/-/g, '');
  2636    const bOpt = b.flags.replace(/-/g, '');
  2637    return sortAlpha(aOpt, bOpt);
  2638  }
  2639  
  2640  function entries(obj) {
  2641    const entries = [];
  2642    if (obj) {
  2643      for (const key in obj) {
  2644        entries.push([key, obj[key]]);
  2645      }
  2646    }
  2647    return entries;
  2648  }
  2649  
  2650  function removePrefix(pattern, prefix) {
  2651    if (pattern.startsWith(prefix)) {
  2652      pattern = pattern.slice(prefix.length);
  2653    }
  2654  
  2655    return pattern;
  2656  }
  2657  
  2658  function removeSuffix(pattern, suffix) {
  2659    if (pattern.endsWith(suffix)) {
  2660      return pattern.slice(0, -suffix.length);
  2661    }
  2662  
  2663    return pattern;
  2664  }
  2665  
  2666  function addSuffix(pattern, suffix) {
  2667    if (!pattern.endsWith(suffix)) {
  2668      return pattern + suffix;
  2669    }
  2670  
  2671    return pattern;
  2672  }
  2673  
  2674  function hyphenate(str) {
  2675    return str.replace(/[A-Z]/g, match => {
  2676      return '-' + match.charAt(0).toLowerCase();
  2677    });
  2678  }
  2679  
  2680  function camelCase(str) {
  2681    if (/[A-Z]/.test(str)) {
  2682      return null;
  2683    } else {
  2684      return _camelCase(str);
  2685    }
  2686  }
  2687  
  2688  function compareSortedArrays(array1, array2) {
  2689    if (array1.length !== array2.length) {
  2690      return false;
  2691    }
  2692    for (let i = 0, len = array1.length; i < len; i++) {
  2693      if (array1[i] !== array2[i]) {
  2694        return false;
  2695      }
  2696    }
  2697    return true;
  2698  }
  2699  
  2700  function sleep(ms) {
  2701    return new Promise(resolve => {
  2702      setTimeout(resolve, ms);
  2703    });
  2704  }
  2705  
  2706  /***/ }),
  2707  /* 19 */
  2708  /***/ (function(module, exports, __webpack_require__) {
  2709  
  2710  "use strict";
  2711  
  2712  
  2713  Object.defineProperty(exports, "__esModule", {
  2714    value: true
  2715  });
  2716  exports.stringify = exports.parse = undefined;
  2717  
  2718  var _asyncToGenerator2;
  2719  
  2720  function _load_asyncToGenerator() {
  2721    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
  2722  }
  2723  
  2724  var _parse;
  2725  
  2726  function _load_parse() {
  2727    return _parse = __webpack_require__(106);
  2728  }
  2729  
  2730  Object.defineProperty(exports, 'parse', {
  2731    enumerable: true,
  2732    get: function get() {
  2733      return _interopRequireDefault(_parse || _load_parse()).default;
  2734    }
  2735  });
  2736  
  2737  var _stringify;
  2738  
  2739  function _load_stringify() {
  2740    return _stringify = __webpack_require__(200);
  2741  }
  2742  
  2743  Object.defineProperty(exports, 'stringify', {
  2744    enumerable: true,
  2745    get: function get() {
  2746      return _interopRequireDefault(_stringify || _load_stringify()).default;
  2747    }
  2748  });
  2749  exports.implodeEntry = implodeEntry;
  2750  exports.explodeEntry = explodeEntry;
  2751  
  2752  var _misc;
  2753  
  2754  function _load_misc() {
  2755    return _misc = __webpack_require__(18);
  2756  }
  2757  
  2758  var _normalizePattern;
  2759  
  2760  function _load_normalizePattern() {
  2761    return _normalizePattern = __webpack_require__(37);
  2762  }
  2763  
  2764  var _parse2;
  2765  
  2766  function _load_parse2() {
  2767    return _parse2 = _interopRequireDefault(__webpack_require__(106));
  2768  }
  2769  
  2770  var _constants;
  2771  
  2772  function _load_constants() {
  2773    return _constants = __webpack_require__(8);
  2774  }
  2775  
  2776  var _fs;
  2777  
  2778  function _load_fs() {
  2779    return _fs = _interopRequireWildcard(__webpack_require__(5));
  2780  }
  2781  
  2782  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
  2783  
  2784  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  2785  
  2786  const invariant = __webpack_require__(9);
  2787  
  2788  const path = __webpack_require__(0);
  2789  const ssri = __webpack_require__(65);
  2790  
  2791  function getName(pattern) {
  2792    return (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(pattern).name;
  2793  }
  2794  
  2795  function blankObjectUndefined(obj) {
  2796    return obj && Object.keys(obj).length ? obj : undefined;
  2797  }
  2798  
  2799  function keyForRemote(remote) {
  2800    return remote.resolved || (remote.reference && remote.hash ? `${remote.reference}#${remote.hash}` : null);
  2801  }
  2802  
  2803  function serializeIntegrity(integrity) {
  2804    // We need this because `Integrity.toString()` does not use sorting to ensure a stable string output
  2805    // See https://git.io/vx2Hy
  2806    return integrity.toString().split(' ').sort().join(' ');
  2807  }
  2808  
  2809  function implodeEntry(pattern, obj) {
  2810    const inferredName = getName(pattern);
  2811    const integrity = obj.integrity ? serializeIntegrity(obj.integrity) : '';
  2812    const imploded = {
  2813      name: inferredName === obj.name ? undefined : obj.name,
  2814      version: obj.version,
  2815      uid: obj.uid === obj.version ? undefined : obj.uid,
  2816      resolved: obj.resolved,
  2817      registry: obj.registry === 'npm' ? undefined : obj.registry,
  2818      dependencies: blankObjectUndefined(obj.dependencies),
  2819      optionalDependencies: blankObjectUndefined(obj.optionalDependencies),
  2820      permissions: blankObjectUndefined(obj.permissions),
  2821      prebuiltVariants: blankObjectUndefined(obj.prebuiltVariants)
  2822    };
  2823    if (integrity) {
  2824      imploded.integrity = integrity;
  2825    }
  2826    return imploded;
  2827  }
  2828  
  2829  function explodeEntry(pattern, obj) {
  2830    obj.optionalDependencies = obj.optionalDependencies || {};
  2831    obj.dependencies = obj.dependencies || {};
  2832    obj.uid = obj.uid || obj.version;
  2833    obj.permissions = obj.permissions || {};
  2834    obj.registry = obj.registry || 'npm';
  2835    obj.name = obj.name || getName(pattern);
  2836    const integrity = obj.integrity;
  2837    if (integrity && integrity.isIntegrity) {
  2838      obj.integrity = ssri.parse(integrity);
  2839    }
  2840    return obj;
  2841  }
  2842  
  2843  class Lockfile {
  2844    constructor({ cache, source, parseResultType } = {}) {
  2845      this.source = source || '';
  2846      this.cache = cache;
  2847      this.parseResultType = parseResultType;
  2848    }
  2849  
  2850    // source string if the `cache` was parsed
  2851  
  2852  
  2853    // if true, we're parsing an old yarn file and need to update integrity fields
  2854    hasEntriesExistWithoutIntegrity() {
  2855      if (!this.cache) {
  2856        return false;
  2857      }
  2858  
  2859      for (const key in this.cache) {
  2860        // $FlowFixMe - `this.cache` is clearly defined at this point
  2861        if (!/^.*@(file:|http)/.test(key) && this.cache[key] && !this.cache[key].integrity) {
  2862          return true;
  2863        }
  2864      }
  2865  
  2866      return false;
  2867    }
  2868  
  2869    static fromDirectory(dir, reporter) {
  2870      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  2871        // read the manifest in this directory
  2872        const lockfileLoc = path.join(dir, (_constants || _load_constants()).LOCKFILE_FILENAME);
  2873  
  2874        let lockfile;
  2875        let rawLockfile = '';
  2876        let parseResult;
  2877  
  2878        if (yield (_fs || _load_fs()).exists(lockfileLoc)) {
  2879          rawLockfile = yield (_fs || _load_fs()).readFile(lockfileLoc);
  2880          parseResult = (0, (_parse2 || _load_parse2()).default)(rawLockfile, lockfileLoc);
  2881  
  2882          if (reporter) {
  2883            if (parseResult.type === 'merge') {
  2884              reporter.info(reporter.lang('lockfileMerged'));
  2885            } else if (parseResult.type === 'conflict') {
  2886              reporter.warn(reporter.lang('lockfileConflict'));
  2887            }
  2888          }
  2889  
  2890          lockfile = parseResult.object;
  2891        } else if (reporter) {
  2892          reporter.info(reporter.lang('noLockfileFound'));
  2893        }
  2894  
  2895        if (lockfile && lockfile.__metadata) {
  2896          const lockfilev2 = lockfile;
  2897          lockfile = {};
  2898        }
  2899  
  2900        return new Lockfile({ cache: lockfile, source: rawLockfile, parseResultType: parseResult && parseResult.type });
  2901      })();
  2902    }
  2903  
  2904    getLocked(pattern) {
  2905      const cache = this.cache;
  2906      if (!cache) {
  2907        return undefined;
  2908      }
  2909  
  2910      const shrunk = pattern in cache && cache[pattern];
  2911  
  2912      if (typeof shrunk === 'string') {
  2913        return this.getLocked(shrunk);
  2914      } else if (shrunk) {
  2915        explodeEntry(pattern, shrunk);
  2916        return shrunk;
  2917      }
  2918  
  2919      return undefined;
  2920    }
  2921  
  2922    removePattern(pattern) {
  2923      const cache = this.cache;
  2924      if (!cache) {
  2925        return;
  2926      }
  2927      delete cache[pattern];
  2928    }
  2929  
  2930    getLockfile(patterns) {
  2931      const lockfile = {};
  2932      const seen = new Map();
  2933  
  2934      // order by name so that lockfile manifest is assigned to the first dependency with this manifest
  2935      // the others that have the same remoteKey will just refer to the first
  2936      // ordering allows for consistency in lockfile when it is serialized
  2937      const sortedPatternsKeys = Object.keys(patterns).sort((_misc || _load_misc()).sortAlpha);
  2938  
  2939      for (var _iterator = sortedPatternsKeys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
  2940        var _ref;
  2941  
  2942        if (_isArray) {
  2943          if (_i >= _iterator.length) break;
  2944          _ref = _iterator[_i++];
  2945        } else {
  2946          _i = _iterator.next();
  2947          if (_i.done) break;
  2948          _ref = _i.value;
  2949        }
  2950  
  2951        const pattern = _ref;
  2952  
  2953        const pkg = patterns[pattern];
  2954        const remote = pkg._remote,
  2955              ref = pkg._reference;
  2956  
  2957        invariant(ref, 'Package is missing a reference');
  2958        invariant(remote, 'Package is missing a remote');
  2959  
  2960        const remoteKey = keyForRemote(remote);
  2961        const seenPattern = remoteKey && seen.get(remoteKey);
  2962        if (seenPattern) {
  2963          // no point in duplicating it
  2964          lockfile[pattern] = seenPattern;
  2965  
  2966          // if we're relying on our name being inferred and two of the patterns have
  2967          // different inferred names then we need to set it
  2968          if (!seenPattern.name && getName(pattern) !== pkg.name) {
  2969            seenPattern.name = pkg.name;
  2970          }
  2971          continue;
  2972        }
  2973        const obj = implodeEntry(pattern, {
  2974          name: pkg.name,
  2975          version: pkg.version,
  2976          uid: pkg._uid,
  2977          resolved: remote.resolved,
  2978          integrity: remote.integrity,
  2979          registry: remote.registry,
  2980          dependencies: pkg.dependencies,
  2981          peerDependencies: pkg.peerDependencies,
  2982          optionalDependencies: pkg.optionalDependencies,
  2983          permissions: ref.permissions,
  2984          prebuiltVariants: pkg.prebuiltVariants
  2985        });
  2986  
  2987        lockfile[pattern] = obj;
  2988  
  2989        if (remoteKey) {
  2990          seen.set(remoteKey, obj);
  2991        }
  2992      }
  2993  
  2994      return lockfile;
  2995    }
  2996  }
  2997  exports.default = Lockfile;
  2998  
  2999  /***/ }),
  3000  /* 20 */
  3001  /***/ (function(module, exports, __webpack_require__) {
  3002  
  3003  "use strict";
  3004  
  3005  
  3006  exports.__esModule = true;
  3007  
  3008  var _assign = __webpack_require__(559);
  3009  
  3010  var _assign2 = _interopRequireDefault(_assign);
  3011  
  3012  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  3013  
  3014  exports.default = _assign2.default || function (target) {
  3015    for (var i = 1; i < arguments.length; i++) {
  3016      var source = arguments[i];
  3017  
  3018      for (var key in source) {
  3019        if (Object.prototype.hasOwnProperty.call(source, key)) {
  3020          target[key] = source[key];
  3021        }
  3022      }
  3023    }
  3024  
  3025    return target;
  3026  };
  3027  
  3028  /***/ }),
  3029  /* 21 */
  3030  /***/ (function(module, exports, __webpack_require__) {
  3031  
  3032  var store = __webpack_require__(133)('wks');
  3033  var uid = __webpack_require__(137);
  3034  var Symbol = __webpack_require__(17).Symbol;
  3035  var USE_SYMBOL = typeof Symbol == 'function';
  3036  
  3037  var $exports = module.exports = function (name) {
  3038    return store[name] || (store[name] =
  3039      USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
  3040  };
  3041  
  3042  $exports.store = store;
  3043  
  3044  
  3045  /***/ }),
  3046  /* 22 */
  3047  /***/ (function(module, exports) {
  3048  
  3049  exports = module.exports = SemVer;
  3050  
  3051  // The debug function is excluded entirely from the minified version.
  3052  /* nomin */ var debug;
  3053  /* nomin */ if (typeof process === 'object' &&
  3054      /* nomin */ process.env &&
  3055      /* nomin */ process.env.NODE_DEBUG &&
  3056      /* nomin */ /\bsemver\b/i.test(process.env.NODE_DEBUG))
  3057    /* nomin */ debug = function() {
  3058      /* nomin */ var args = Array.prototype.slice.call(arguments, 0);
  3059      /* nomin */ args.unshift('SEMVER');
  3060      /* nomin */ console.log.apply(console, args);
  3061      /* nomin */ };
  3062  /* nomin */ else
  3063    /* nomin */ debug = function() {};
  3064  
  3065  // Note: this is the semver.org version of the spec that it implements
  3066  // Not necessarily the package version of this code.
  3067  exports.SEMVER_SPEC_VERSION = '2.0.0';
  3068  
  3069  var MAX_LENGTH = 256;
  3070  var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
  3071  
  3072  // Max safe segment length for coercion.
  3073  var MAX_SAFE_COMPONENT_LENGTH = 16;
  3074  
  3075  // The actual regexps go on exports.re
  3076  var re = exports.re = [];
  3077  var src = exports.src = [];
  3078  var R = 0;
  3079  
  3080  // The following Regular Expressions can be used for tokenizing,
  3081  // validating, and parsing SemVer version strings.
  3082  
  3083  // ## Numeric Identifier
  3084  // A single `0`, or a non-zero digit followed by zero or more digits.
  3085  
  3086  var NUMERICIDENTIFIER = R++;
  3087  src[NUMERICIDENTIFIER] = '0|[1-9]\\d*';
  3088  var NUMERICIDENTIFIERLOOSE = R++;
  3089  src[NUMERICIDENTIFIERLOOSE] = '[0-9]+';
  3090  
  3091  
  3092  // ## Non-numeric Identifier
  3093  // Zero or more digits, followed by a letter or hyphen, and then zero or
  3094  // more letters, digits, or hyphens.
  3095  
  3096  var NONNUMERICIDENTIFIER = R++;
  3097  src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*';
  3098  
  3099  
  3100  // ## Main Version
  3101  // Three dot-separated numeric identifiers.
  3102  
  3103  var MAINVERSION = R++;
  3104  src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' +
  3105                     '(' + src[NUMERICIDENTIFIER] + ')\\.' +
  3106                     '(' + src[NUMERICIDENTIFIER] + ')';
  3107  
  3108  var MAINVERSIONLOOSE = R++;
  3109  src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
  3110                          '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
  3111                          '(' + src[NUMERICIDENTIFIERLOOSE] + ')';
  3112  
  3113  // ## Pre-release Version Identifier
  3114  // A numeric identifier, or a non-numeric identifier.
  3115  
  3116  var PRERELEASEIDENTIFIER = R++;
  3117  src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +
  3118                              '|' + src[NONNUMERICIDENTIFIER] + ')';
  3119  
  3120  var PRERELEASEIDENTIFIERLOOSE = R++;
  3121  src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +
  3122                                   '|' + src[NONNUMERICIDENTIFIER] + ')';
  3123  
  3124  
  3125  // ## Pre-release Version
  3126  // Hyphen, followed by one or more dot-separated pre-release version
  3127  // identifiers.
  3128  
  3129  var PRERELEASE = R++;
  3130  src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +
  3131                    '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))';
  3132  
  3133  var PRERELEASELOOSE = R++;
  3134  src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +
  3135                         '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))';
  3136  
  3137  // ## Build Metadata Identifier
  3138  // Any combination of digits, letters, or hyphens.
  3139  
  3140  var BUILDIDENTIFIER = R++;
  3141  src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+';
  3142  
  3143  // ## Build Metadata
  3144  // Plus sign, followed by one or more period-separated build metadata
  3145  // identifiers.
  3146  
  3147  var BUILD = R++;
  3148  src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] +
  3149               '(?:\\.' + src[BUILDIDENTIFIER] + ')*))';
  3150  
  3151  
  3152  // ## Full Version String
  3153  // A main version, followed optionally by a pre-release version and
  3154  // build metadata.
  3155  
  3156  // Note that the only major, minor, patch, and pre-release sections of
  3157  // the version string are capturing groups.  The build metadata is not a
  3158  // capturing group, because it should not ever be used in version
  3159  // comparison.
  3160  
  3161  var FULL = R++;
  3162  var FULLPLAIN = 'v?' + src[MAINVERSION] +
  3163                  src[PRERELEASE] + '?' +
  3164                  src[BUILD] + '?';
  3165  
  3166  src[FULL] = '^' + FULLPLAIN + '$';
  3167  
  3168  // like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
  3169  // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
  3170  // common in the npm registry.
  3171  var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] +
  3172                   src[PRERELEASELOOSE] + '?' +
  3173                   src[BUILD] + '?';
  3174  
  3175  var LOOSE = R++;
  3176  src[LOOSE] = '^' + LOOSEPLAIN + '$';
  3177  
  3178  var GTLT = R++;
  3179  src[GTLT] = '((?:<|>)?=?)';
  3180  
  3181  // Something like "2.*" or "1.2.x".
  3182  // Note that "x.x" is a valid xRange identifer, meaning "any version"
  3183  // Only the first item is strictly required.
  3184  var XRANGEIDENTIFIERLOOSE = R++;
  3185  src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*';
  3186  var XRANGEIDENTIFIER = R++;
  3187  src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*';
  3188  
  3189  var XRANGEPLAIN = R++;
  3190  src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' +
  3191                     '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
  3192                     '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
  3193                     '(?:' + src[PRERELEASE] + ')?' +
  3194                     src[BUILD] + '?' +
  3195                     ')?)?';
  3196  
  3197  var XRANGEPLAINLOOSE = R++;
  3198  src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
  3199                          '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
  3200                          '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
  3201                          '(?:' + src[PRERELEASELOOSE] + ')?' +
  3202                          src[BUILD] + '?' +
  3203                          ')?)?';
  3204  
  3205  var XRANGE = R++;
  3206  src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$';
  3207  var XRANGELOOSE = R++;
  3208  src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$';
  3209  
  3210  // Coercion.
  3211  // Extract anything that could conceivably be a part of a valid semver
  3212  var COERCE = R++;
  3213  src[COERCE] = '(?:^|[^\\d])' +
  3214                '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
  3215                '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
  3216                '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
  3217                '(?:$|[^\\d])';
  3218  
  3219  // Tilde ranges.
  3220  // Meaning is "reasonably at or greater than"
  3221  var LONETILDE = R++;
  3222  src[LONETILDE] = '(?:~>?)';
  3223  
  3224  var TILDETRIM = R++;
  3225  src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+';
  3226  re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g');
  3227  var tildeTrimReplace = '$1~';
  3228  
  3229  var TILDE = R++;
  3230  src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$';
  3231  var TILDELOOSE = R++;
  3232  src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$';
  3233  
  3234  // Caret ranges.
  3235  // Meaning is "at least and backwards compatible with"
  3236  var LONECARET = R++;
  3237  src[LONECARET] = '(?:\\^)';
  3238  
  3239  var CARETTRIM = R++;
  3240  src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+';
  3241  re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g');
  3242  var caretTrimReplace = '$1^';
  3243  
  3244  var CARET = R++;
  3245  src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$';
  3246  var CARETLOOSE = R++;
  3247  src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$';
  3248  
  3249  // A simple gt/lt/eq thing, or just "" to indicate "any version"
  3250  var COMPARATORLOOSE = R++;
  3251  src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$';
  3252  var COMPARATOR = R++;
  3253  src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$';
  3254  
  3255  
  3256  // An expression to strip any whitespace between the gtlt and the thing
  3257  // it modifies, so that `> 1.2.3` ==> `>1.2.3`
  3258  var COMPARATORTRIM = R++;
  3259  src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] +
  3260                        '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')';
  3261  
  3262  // this one has to use the /g flag
  3263  re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g');
  3264  var comparatorTrimReplace = '$1$2$3';
  3265  
  3266  
  3267  // Something like `1.2.3 - 1.2.4`
  3268  // Note that these all use the loose form, because they'll be
  3269  // checked against either the strict or loose comparator form
  3270  // later.
  3271  var HYPHENRANGE = R++;
  3272  src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' +
  3273                     '\\s+-\\s+' +
  3274                     '(' + src[XRANGEPLAIN] + ')' +
  3275                     '\\s*$';
  3276  
  3277  var HYPHENRANGELOOSE = R++;
  3278  src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' +
  3279                          '\\s+-\\s+' +
  3280                          '(' + src[XRANGEPLAINLOOSE] + ')' +
  3281                          '\\s*$';
  3282  
  3283  // Star ranges basically just allow anything at all.
  3284  var STAR = R++;
  3285  src[STAR] = '(<|>)?=?\\s*\\*';
  3286  
  3287  // Compile to actual regexp objects.
  3288  // All are flag-free, unless they were created above with a flag.
  3289  for (var i = 0; i < R; i++) {
  3290    debug(i, src[i]);
  3291    if (!re[i])
  3292      re[i] = new RegExp(src[i]);
  3293  }
  3294  
  3295  exports.parse = parse;
  3296  function parse(version, loose) {
  3297    if (version instanceof SemVer)
  3298      return version;
  3299  
  3300    if (typeof version !== 'string')
  3301      return null;
  3302  
  3303    if (version.length > MAX_LENGTH)
  3304      return null;
  3305  
  3306    var r = loose ? re[LOOSE] : re[FULL];
  3307    if (!r.test(version))
  3308      return null;
  3309  
  3310    try {
  3311      return new SemVer(version, loose);
  3312    } catch (er) {
  3313      return null;
  3314    }
  3315  }
  3316  
  3317  exports.valid = valid;
  3318  function valid(version, loose) {
  3319    var v = parse(version, loose);
  3320    return v ? v.version : null;
  3321  }
  3322  
  3323  
  3324  exports.clean = clean;
  3325  function clean(version, loose) {
  3326    var s = parse(version.trim().replace(/^[=v]+/, ''), loose);
  3327    return s ? s.version : null;
  3328  }
  3329  
  3330  exports.SemVer = SemVer;
  3331  
  3332  function SemVer(version, loose) {
  3333    if (version instanceof SemVer) {
  3334      if (version.loose === loose)
  3335        return version;
  3336      else
  3337        version = version.version;
  3338    } else if (typeof version !== 'string') {
  3339      throw new TypeError('Invalid Version: ' + version);
  3340    }
  3341  
  3342    if (version.length > MAX_LENGTH)
  3343      throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
  3344  
  3345    if (!(this instanceof SemVer))
  3346      return new SemVer(version, loose);
  3347  
  3348    debug('SemVer', version, loose);
  3349    this.loose = loose;
  3350    var m = version.trim().match(loose ? re[LOOSE] : re[FULL]);
  3351  
  3352    if (!m)
  3353      throw new TypeError('Invalid Version: ' + version);
  3354  
  3355    this.raw = version;
  3356  
  3357    // these are actually numbers
  3358    this.major = +m[1];
  3359    this.minor = +m[2];
  3360    this.patch = +m[3];
  3361  
  3362    if (this.major > MAX_SAFE_INTEGER || this.major < 0)
  3363      throw new TypeError('Invalid major version')
  3364  
  3365    if (this.minor > MAX_SAFE_INTEGER || this.minor < 0)
  3366      throw new TypeError('Invalid minor version')
  3367  
  3368    if (this.patch > MAX_SAFE_INTEGER || this.patch < 0)
  3369      throw new TypeError('Invalid patch version')
  3370  
  3371    // numberify any prerelease numeric ids
  3372    if (!m[4])
  3373      this.prerelease = [];
  3374    else
  3375      this.prerelease = m[4].split('.').map(function(id) {
  3376        if (/^[0-9]+$/.test(id)) {
  3377          var num = +id;
  3378          if (num >= 0 && num < MAX_SAFE_INTEGER)
  3379            return num;
  3380        }
  3381        return id;
  3382      });
  3383  
  3384    this.build = m[5] ? m[5].split('.') : [];
  3385    this.format();
  3386  }
  3387  
  3388  SemVer.prototype.format = function() {
  3389    this.version = this.major + '.' + this.minor + '.' + this.patch;
  3390    if (this.prerelease.length)
  3391      this.version += '-' + this.prerelease.join('.');
  3392    return this.version;
  3393  };
  3394  
  3395  SemVer.prototype.toString = function() {
  3396    return this.version;
  3397  };
  3398  
  3399  SemVer.prototype.compare = function(other) {
  3400    debug('SemVer.compare', this.version, this.loose, other);
  3401    if (!(other instanceof SemVer))
  3402      other = new SemVer(other, this.loose);
  3403  
  3404    return this.compareMain(other) || this.comparePre(other);
  3405  };
  3406  
  3407  SemVer.prototype.compareMain = function(other) {
  3408    if (!(other instanceof SemVer))
  3409      other = new SemVer(other, this.loose);
  3410  
  3411    return compareIdentifiers(this.major, other.major) ||
  3412           compareIdentifiers(this.minor, other.minor) ||
  3413           compareIdentifiers(this.patch, other.patch);
  3414  };
  3415  
  3416  SemVer.prototype.comparePre = function(other) {
  3417    if (!(other instanceof SemVer))
  3418      other = new SemVer(other, this.loose);
  3419  
  3420    // NOT having a prerelease is > having one
  3421    if (this.prerelease.length && !other.prerelease.length)
  3422      return -1;
  3423    else if (!this.prerelease.length && other.prerelease.length)
  3424      return 1;
  3425    else if (!this.prerelease.length && !other.prerelease.length)
  3426      return 0;
  3427  
  3428    var i = 0;
  3429    do {
  3430      var a = this.prerelease[i];
  3431      var b = other.prerelease[i];
  3432      debug('prerelease compare', i, a, b);
  3433      if (a === undefined && b === undefined)
  3434        return 0;
  3435      else if (b === undefined)
  3436        return 1;
  3437      else if (a === undefined)
  3438        return -1;
  3439      else if (a === b)
  3440        continue;
  3441      else
  3442        return compareIdentifiers(a, b);
  3443    } while (++i);
  3444  };
  3445  
  3446  // preminor will bump the version up to the next minor release, and immediately
  3447  // down to pre-release. premajor and prepatch work the same way.
  3448  SemVer.prototype.inc = function(release, identifier) {
  3449    switch (release) {
  3450      case 'premajor':
  3451        this.prerelease.length = 0;
  3452        this.patch = 0;
  3453        this.minor = 0;
  3454        this.major++;
  3455        this.inc('pre', identifier);
  3456        break;
  3457      case 'preminor':
  3458        this.prerelease.length = 0;
  3459        this.patch = 0;
  3460        this.minor++;
  3461        this.inc('pre', identifier);
  3462        break;
  3463      case 'prepatch':
  3464        // If this is already a prerelease, it will bump to the next version
  3465        // drop any prereleases that might already exist, since they are not
  3466        // relevant at this point.
  3467        this.prerelease.length = 0;
  3468        this.inc('patch', identifier);
  3469        this.inc('pre', identifier);
  3470        break;
  3471      // If the input is a non-prerelease version, this acts the same as
  3472      // prepatch.
  3473      case 'prerelease':
  3474        if (this.prerelease.length === 0)
  3475          this.inc('patch', identifier);
  3476        this.inc('pre', identifier);
  3477        break;
  3478  
  3479      case 'major':
  3480        // If this is a pre-major version, bump up to the same major version.
  3481        // Otherwise increment major.
  3482        // 1.0.0-5 bumps to 1.0.0
  3483        // 1.1.0 bumps to 2.0.0
  3484        if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0)
  3485          this.major++;
  3486        this.minor = 0;
  3487        this.patch = 0;
  3488        this.prerelease = [];
  3489        break;
  3490      case 'minor':
  3491        // If this is a pre-minor version, bump up to the same minor version.
  3492        // Otherwise increment minor.
  3493        // 1.2.0-5 bumps to 1.2.0
  3494        // 1.2.1 bumps to 1.3.0
  3495        if (this.patch !== 0 || this.prerelease.length === 0)
  3496          this.minor++;
  3497        this.patch = 0;
  3498        this.prerelease = [];
  3499        break;
  3500      case 'patch':
  3501        // If this is not a pre-release version, it will increment the patch.
  3502        // If it is a pre-release it will bump up to the same patch version.
  3503        // 1.2.0-5 patches to 1.2.0
  3504        // 1.2.0 patches to 1.2.1
  3505        if (this.prerelease.length === 0)
  3506          this.patch++;
  3507        this.prerelease = [];
  3508        break;
  3509      // This probably shouldn't be used publicly.
  3510      // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
  3511      case 'pre':
  3512        if (this.prerelease.length === 0)
  3513          this.prerelease = [0];
  3514        else {
  3515          var i = this.prerelease.length;
  3516          while (--i >= 0) {
  3517            if (typeof this.prerelease[i] === 'number') {
  3518              this.prerelease[i]++;
  3519              i = -2;
  3520            }
  3521          }
  3522          if (i === -1) // didn't increment anything
  3523            this.prerelease.push(0);
  3524        }
  3525        if (identifier) {
  3526          // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
  3527          // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
  3528          if (this.prerelease[0] === identifier) {
  3529            if (isNaN(this.prerelease[1]))
  3530              this.prerelease = [identifier, 0];
  3531          } else
  3532            this.prerelease = [identifier, 0];
  3533        }
  3534        break;
  3535  
  3536      default:
  3537        throw new Error('invalid increment argument: ' + release);
  3538    }
  3539    this.format();
  3540    this.raw = this.version;
  3541    return this;
  3542  };
  3543  
  3544  exports.inc = inc;
  3545  function inc(version, release, loose, identifier) {
  3546    if (typeof(loose) === 'string') {
  3547      identifier = loose;
  3548      loose = undefined;
  3549    }
  3550  
  3551    try {
  3552      return new SemVer(version, loose).inc(release, identifier).version;
  3553    } catch (er) {
  3554      return null;
  3555    }
  3556  }
  3557  
  3558  exports.diff = diff;
  3559  function diff(version1, version2) {
  3560    if (eq(version1, version2)) {
  3561      return null;
  3562    } else {
  3563      var v1 = parse(version1);
  3564      var v2 = parse(version2);
  3565      if (v1.prerelease.length || v2.prerelease.length) {
  3566        for (var key in v1) {
  3567          if (key === 'major' || key === 'minor' || key === 'patch') {
  3568            if (v1[key] !== v2[key]) {
  3569              return 'pre'+key;
  3570            }
  3571          }
  3572        }
  3573        return 'prerelease';
  3574      }
  3575      for (var key in v1) {
  3576        if (key === 'major' || key === 'minor' || key === 'patch') {
  3577          if (v1[key] !== v2[key]) {
  3578            return key;
  3579          }
  3580        }
  3581      }
  3582    }
  3583  }
  3584  
  3585  exports.compareIdentifiers = compareIdentifiers;
  3586  
  3587  var numeric = /^[0-9]+$/;
  3588  function compareIdentifiers(a, b) {
  3589    var anum = numeric.test(a);
  3590    var bnum = numeric.test(b);
  3591  
  3592    if (anum && bnum) {
  3593      a = +a;
  3594      b = +b;
  3595    }
  3596  
  3597    return (anum && !bnum) ? -1 :
  3598           (bnum && !anum) ? 1 :
  3599           a < b ? -1 :
  3600           a > b ? 1 :
  3601           0;
  3602  }
  3603  
  3604  exports.rcompareIdentifiers = rcompareIdentifiers;
  3605  function rcompareIdentifiers(a, b) {
  3606    return compareIdentifiers(b, a);
  3607  }
  3608  
  3609  exports.major = major;
  3610  function major(a, loose) {
  3611    return new SemVer(a, loose).major;
  3612  }
  3613  
  3614  exports.minor = minor;
  3615  function minor(a, loose) {
  3616    return new SemVer(a, loose).minor;
  3617  }
  3618  
  3619  exports.patch = patch;
  3620  function patch(a, loose) {
  3621    return new SemVer(a, loose).patch;
  3622  }
  3623  
  3624  exports.compare = compare;
  3625  function compare(a, b, loose) {
  3626    return new SemVer(a, loose).compare(new SemVer(b, loose));
  3627  }
  3628  
  3629  exports.compareLoose = compareLoose;
  3630  function compareLoose(a, b) {
  3631    return compare(a, b, true);
  3632  }
  3633  
  3634  exports.rcompare = rcompare;
  3635  function rcompare(a, b, loose) {
  3636    return compare(b, a, loose);
  3637  }
  3638  
  3639  exports.sort = sort;
  3640  function sort(list, loose) {
  3641    return list.sort(function(a, b) {
  3642      return exports.compare(a, b, loose);
  3643    });
  3644  }
  3645  
  3646  exports.rsort = rsort;
  3647  function rsort(list, loose) {
  3648    return list.sort(function(a, b) {
  3649      return exports.rcompare(a, b, loose);
  3650    });
  3651  }
  3652  
  3653  exports.gt = gt;
  3654  function gt(a, b, loose) {
  3655    return compare(a, b, loose) > 0;
  3656  }
  3657  
  3658  exports.lt = lt;
  3659  function lt(a, b, loose) {
  3660    return compare(a, b, loose) < 0;
  3661  }
  3662  
  3663  exports.eq = eq;
  3664  function eq(a, b, loose) {
  3665    return compare(a, b, loose) === 0;
  3666  }
  3667  
  3668  exports.neq = neq;
  3669  function neq(a, b, loose) {
  3670    return compare(a, b, loose) !== 0;
  3671  }
  3672  
  3673  exports.gte = gte;
  3674  function gte(a, b, loose) {
  3675    return compare(a, b, loose) >= 0;
  3676  }
  3677  
  3678  exports.lte = lte;
  3679  function lte(a, b, loose) {
  3680    return compare(a, b, loose) <= 0;
  3681  }
  3682  
  3683  exports.cmp = cmp;
  3684  function cmp(a, op, b, loose) {
  3685    var ret;
  3686    switch (op) {
  3687      case '===':
  3688        if (typeof a === 'object') a = a.version;
  3689        if (typeof b === 'object') b = b.version;
  3690        ret = a === b;
  3691        break;
  3692      case '!==':
  3693        if (typeof a === 'object') a = a.version;
  3694        if (typeof b === 'object') b = b.version;
  3695        ret = a !== b;
  3696        break;
  3697      case '': case '=': case '==': ret = eq(a, b, loose); break;
  3698      case '!=': ret = neq(a, b, loose); break;
  3699      case '>': ret = gt(a, b, loose); break;
  3700      case '>=': ret = gte(a, b, loose); break;
  3701      case '<': ret = lt(a, b, loose); break;
  3702      case '<=': ret = lte(a, b, loose); break;
  3703      default: throw new TypeError('Invalid operator: ' + op);
  3704    }
  3705    return ret;
  3706  }
  3707  
  3708  exports.Comparator = Comparator;
  3709  function Comparator(comp, loose) {
  3710    if (comp instanceof Comparator) {
  3711      if (comp.loose === loose)
  3712        return comp;
  3713      else
  3714        comp = comp.value;
  3715    }
  3716  
  3717    if (!(this instanceof Comparator))
  3718      return new Comparator(comp, loose);
  3719  
  3720    debug('comparator', comp, loose);
  3721    this.loose = loose;
  3722    this.parse(comp);
  3723  
  3724    if (this.semver === ANY)
  3725      this.value = '';
  3726    else
  3727      this.value = this.operator + this.semver.version;
  3728  
  3729    debug('comp', this);
  3730  }
  3731  
  3732  var ANY = {};
  3733  Comparator.prototype.parse = function(comp) {
  3734    var r = this.loose ? re[COMPARATORLOOSE] : re[COMPARATOR];
  3735    var m = comp.match(r);
  3736  
  3737    if (!m)
  3738      throw new TypeError('Invalid comparator: ' + comp);
  3739  
  3740    this.operator = m[1];
  3741    if (this.operator === '=')
  3742      this.operator = '';
  3743  
  3744    // if it literally is just '>' or '' then allow anything.
  3745    if (!m[2])
  3746      this.semver = ANY;
  3747    else
  3748      this.semver = new SemVer(m[2], this.loose);
  3749  };
  3750  
  3751  Comparator.prototype.toString = function() {
  3752    return this.value;
  3753  };
  3754  
  3755  Comparator.prototype.test = function(version) {
  3756    debug('Comparator.test', version, this.loose);
  3757  
  3758    if (this.semver === ANY)
  3759      return true;
  3760  
  3761    if (typeof version === 'string')
  3762      version = new SemVer(version, this.loose);
  3763  
  3764    return cmp(version, this.operator, this.semver, this.loose);
  3765  };
  3766  
  3767  Comparator.prototype.intersects = function(comp, loose) {
  3768    if (!(comp instanceof Comparator)) {
  3769      throw new TypeError('a Comparator is required');
  3770    }
  3771  
  3772    var rangeTmp;
  3773  
  3774    if (this.operator === '') {
  3775      rangeTmp = new Range(comp.value, loose);
  3776      return satisfies(this.value, rangeTmp, loose);
  3777    } else if (comp.operator === '') {
  3778      rangeTmp = new Range(this.value, loose);
  3779      return satisfies(comp.semver, rangeTmp, loose);
  3780    }
  3781  
  3782    var sameDirectionIncreasing =
  3783      (this.operator === '>=' || this.operator === '>') &&
  3784      (comp.operator === '>=' || comp.operator === '>');
  3785    var sameDirectionDecreasing =
  3786      (this.operator === '<=' || this.operator === '<') &&
  3787      (comp.operator === '<=' || comp.operator === '<');
  3788    var sameSemVer = this.semver.version === comp.semver.version;
  3789    var differentDirectionsInclusive =
  3790      (this.operator === '>=' || this.operator === '<=') &&
  3791      (comp.operator === '>=' || comp.operator === '<=');
  3792    var oppositeDirectionsLessThan =
  3793      cmp(this.semver, '<', comp.semver, loose) &&
  3794      ((this.operator === '>=' || this.operator === '>') &&
  3795      (comp.operator === '<=' || comp.operator === '<'));
  3796    var oppositeDirectionsGreaterThan =
  3797      cmp(this.semver, '>', comp.semver, loose) &&
  3798      ((this.operator === '<=' || this.operator === '<') &&
  3799      (comp.operator === '>=' || comp.operator === '>'));
  3800  
  3801    return sameDirectionIncreasing || sameDirectionDecreasing ||
  3802      (sameSemVer && differentDirectionsInclusive) ||
  3803      oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
  3804  };
  3805  
  3806  
  3807  exports.Range = Range;
  3808  function Range(range, loose) {
  3809    if (range instanceof Range) {
  3810      if (range.loose === loose) {
  3811        return range;
  3812      } else {
  3813        return new Range(range.raw, loose);
  3814      }
  3815    }
  3816  
  3817    if (range instanceof Comparator) {
  3818      return new Range(range.value, loose);
  3819    }
  3820  
  3821    if (!(this instanceof Range))
  3822      return new Range(range, loose);
  3823  
  3824    this.loose = loose;
  3825  
  3826    // First, split based on boolean or ||
  3827    this.raw = range;
  3828    this.set = range.split(/\s*\|\|\s*/).map(function(range) {
  3829      return this.parseRange(range.trim());
  3830    }, this).filter(function(c) {
  3831      // throw out any that are not relevant for whatever reason
  3832      return c.length;
  3833    });
  3834  
  3835    if (!this.set.length) {
  3836      throw new TypeError('Invalid SemVer Range: ' + range);
  3837    }
  3838  
  3839    this.format();
  3840  }
  3841  
  3842  Range.prototype.format = function() {
  3843    this.range = this.set.map(function(comps) {
  3844      return comps.join(' ').trim();
  3845    }).join('||').trim();
  3846    return this.range;
  3847  };
  3848  
  3849  Range.prototype.toString = function() {
  3850    return this.range;
  3851  };
  3852  
  3853  Range.prototype.parseRange = function(range) {
  3854    var loose = this.loose;
  3855    range = range.trim();
  3856    debug('range', range, loose);
  3857    // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
  3858    var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE];
  3859    range = range.replace(hr, hyphenReplace);
  3860    debug('hyphen replace', range);
  3861    // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
  3862    range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace);
  3863    debug('comparator trim', range, re[COMPARATORTRIM]);
  3864  
  3865    // `~ 1.2.3` => `~1.2.3`
  3866    range = range.replace(re[TILDETRIM], tildeTrimReplace);
  3867  
  3868    // `^ 1.2.3` => `^1.2.3`
  3869    range = range.replace(re[CARETTRIM], caretTrimReplace);
  3870  
  3871    // normalize spaces
  3872    range = range.split(/\s+/).join(' ');
  3873  
  3874    // At this point, the range is completely trimmed and
  3875    // ready to be split into comparators.
  3876  
  3877    var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR];
  3878    var set = range.split(' ').map(function(comp) {
  3879      return parseComparator(comp, loose);
  3880    }).join(' ').split(/\s+/);
  3881    if (this.loose) {
  3882      // in loose mode, throw out any that are not valid comparators
  3883      set = set.filter(function(comp) {
  3884        return !!comp.match(compRe);
  3885      });
  3886    }
  3887    set = set.map(function(comp) {
  3888      return new Comparator(comp, loose);
  3889    });
  3890  
  3891    return set;
  3892  };
  3893  
  3894  Range.prototype.intersects = function(range, loose) {
  3895    if (!(range instanceof Range)) {
  3896      throw new TypeError('a Range is required');
  3897    }
  3898  
  3899    return this.set.some(function(thisComparators) {
  3900      return thisComparators.every(function(thisComparator) {
  3901        return range.set.some(function(rangeComparators) {
  3902          return rangeComparators.every(function(rangeComparator) {
  3903            return thisComparator.intersects(rangeComparator, loose);
  3904          });
  3905        });
  3906      });
  3907    });
  3908  };
  3909  
  3910  // Mostly just for testing and legacy API reasons
  3911  exports.toComparators = toComparators;
  3912  function toComparators(range, loose) {
  3913    return new Range(range, loose).set.map(function(comp) {
  3914      return comp.map(function(c) {
  3915        return c.value;
  3916      }).join(' ').trim().split(' ');
  3917    });
  3918  }
  3919  
  3920  // comprised of xranges, tildes, stars, and gtlt's at this point.
  3921  // already replaced the hyphen ranges
  3922  // turn into a set of JUST comparators.
  3923  function parseComparator(comp, loose) {
  3924    debug('comp', comp);
  3925    comp = replaceCarets(comp, loose);
  3926    debug('caret', comp);
  3927    comp = replaceTildes(comp, loose);
  3928    debug('tildes', comp);
  3929    comp = replaceXRanges(comp, loose);
  3930    debug('xrange', comp);
  3931    comp = replaceStars(comp, loose);
  3932    debug('stars', comp);
  3933    return comp;
  3934  }
  3935  
  3936  function isX(id) {
  3937    return !id || id.toLowerCase() === 'x' || id === '*';
  3938  }
  3939  
  3940  // ~, ~> --> * (any, kinda silly)
  3941  // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
  3942  // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
  3943  // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
  3944  // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
  3945  // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
  3946  function replaceTildes(comp, loose) {
  3947    return comp.trim().split(/\s+/).map(function(comp) {
  3948      return replaceTilde(comp, loose);
  3949    }).join(' ');
  3950  }
  3951  
  3952  function replaceTilde(comp, loose) {
  3953    var r = loose ? re[TILDELOOSE] : re[TILDE];
  3954    return comp.replace(r, function(_, M, m, p, pr) {
  3955      debug('tilde', comp, _, M, m, p, pr);
  3956      var ret;
  3957  
  3958      if (isX(M))
  3959        ret = '';
  3960      else if (isX(m))
  3961        ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
  3962      else if (isX(p))
  3963        // ~1.2 == >=1.2.0 <1.3.0
  3964        ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
  3965      else if (pr) {
  3966        debug('replaceTilde pr', pr);
  3967        if (pr.charAt(0) !== '-')
  3968          pr = '-' + pr;
  3969        ret = '>=' + M + '.' + m + '.' + p + pr +
  3970              ' <' + M + '.' + (+m + 1) + '.0';
  3971      } else
  3972        // ~1.2.3 == >=1.2.3 <1.3.0
  3973        ret = '>=' + M + '.' + m + '.' + p +
  3974              ' <' + M + '.' + (+m + 1) + '.0';
  3975  
  3976      debug('tilde return', ret);
  3977      return ret;
  3978    });
  3979  }
  3980  
  3981  // ^ --> * (any, kinda silly)
  3982  // ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
  3983  // ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
  3984  // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
  3985  // ^1.2.3 --> >=1.2.3 <2.0.0
  3986  // ^1.2.0 --> >=1.2.0 <2.0.0
  3987  function replaceCarets(comp, loose) {
  3988    return comp.trim().split(/\s+/).map(function(comp) {
  3989      return replaceCaret(comp, loose);
  3990    }).join(' ');
  3991  }
  3992  
  3993  function replaceCaret(comp, loose) {
  3994    debug('caret', comp, loose);
  3995    var r = loose ? re[CARETLOOSE] : re[CARET];
  3996    return comp.replace(r, function(_, M, m, p, pr) {
  3997      debug('caret', comp, _, M, m, p, pr);
  3998      var ret;
  3999  
  4000      if (isX(M))
  4001        ret = '';
  4002      else if (isX(m))
  4003        ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
  4004      else if (isX(p)) {
  4005        if (M === '0')
  4006          ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
  4007        else
  4008          ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';
  4009      } else if (pr) {
  4010        debug('replaceCaret pr', pr);
  4011        if (pr.charAt(0) !== '-')
  4012          pr = '-' + pr;
  4013        if (M === '0') {
  4014          if (m === '0')
  4015            ret = '>=' + M + '.' + m + '.' + p + pr +
  4016                  ' <' + M + '.' + m + '.' + (+p + 1);
  4017          else
  4018            ret = '>=' + M + '.' + m + '.' + p + pr +
  4019                  ' <' + M + '.' + (+m + 1) + '.0';
  4020        } else
  4021          ret = '>=' + M + '.' + m + '.' + p + pr +
  4022                ' <' + (+M + 1) + '.0.0';
  4023      } else {
  4024        debug('no pr');
  4025        if (M === '0') {
  4026          if (m === '0')
  4027            ret = '>=' + M + '.' + m + '.' + p +
  4028                  ' <' + M + '.' + m + '.' + (+p + 1);
  4029          else
  4030            ret = '>=' + M + '.' + m + '.' + p +
  4031                  ' <' + M + '.' + (+m + 1) + '.0';
  4032        } else
  4033          ret = '>=' + M + '.' + m + '.' + p +
  4034                ' <' + (+M + 1) + '.0.0';
  4035      }
  4036  
  4037      debug('caret return', ret);
  4038      return ret;
  4039    });
  4040  }
  4041  
  4042  function replaceXRanges(comp, loose) {
  4043    debug('replaceXRanges', comp, loose);
  4044    return comp.split(/\s+/).map(function(comp) {
  4045      return replaceXRange(comp, loose);
  4046    }).join(' ');
  4047  }
  4048  
  4049  function replaceXRange(comp, loose) {
  4050    comp = comp.trim();
  4051    var r = loose ? re[XRANGELOOSE] : re[XRANGE];
  4052    return comp.replace(r, function(ret, gtlt, M, m, p, pr) {
  4053      debug('xRange', comp, ret, gtlt, M, m, p, pr);
  4054      var xM = isX(M);
  4055      var xm = xM || isX(m);
  4056      var xp = xm || isX(p);
  4057      var anyX = xp;
  4058  
  4059      if (gtlt === '=' && anyX)
  4060        gtlt = '';
  4061  
  4062      if (xM) {
  4063        if (gtlt === '>' || gtlt === '<') {
  4064          // nothing is allowed
  4065          ret = '<0.0.0';
  4066        } else {
  4067          // nothing is forbidden
  4068          ret = '*';
  4069        }
  4070      } else if (gtlt && anyX) {
  4071        // replace X with 0
  4072        if (xm)
  4073          m = 0;
  4074        if (xp)
  4075          p = 0;
  4076  
  4077        if (gtlt === '>') {
  4078          // >1 => >=2.0.0
  4079          // >1.2 => >=1.3.0
  4080          // >1.2.3 => >= 1.2.4
  4081          gtlt = '>=';
  4082          if (xm) {
  4083            M = +M + 1;
  4084            m = 0;
  4085            p = 0;
  4086          } else if (xp) {
  4087            m = +m + 1;
  4088            p = 0;
  4089          }
  4090        } else if (gtlt === '<=') {
  4091          // <=0.7.x is actually <0.8.0, since any 0.7.x should
  4092          // pass.  Similarly, <=7.x is actually <8.0.0, etc.
  4093          gtlt = '<';
  4094          if (xm)
  4095            M = +M + 1;
  4096          else
  4097            m = +m + 1;
  4098        }
  4099  
  4100        ret = gtlt + M + '.' + m + '.' + p;
  4101      } else if (xm) {
  4102        ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
  4103      } else if (xp) {
  4104        ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
  4105      }
  4106  
  4107      debug('xRange return', ret);
  4108  
  4109      return ret;
  4110    });
  4111  }
  4112  
  4113  // Because * is AND-ed with everything else in the comparator,
  4114  // and '' means "any version", just remove the *s entirely.
  4115  function replaceStars(comp, loose) {
  4116    debug('replaceStars', comp, loose);
  4117    // Looseness is ignored here.  star is always as loose as it gets!
  4118    return comp.trim().replace(re[STAR], '');
  4119  }
  4120  
  4121  // This function is passed to string.replace(re[HYPHENRANGE])
  4122  // M, m, patch, prerelease, build
  4123  // 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
  4124  // 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
  4125  // 1.2 - 3.4 => >=1.2.0 <3.5.0
  4126  function hyphenReplace($0,
  4127                         from, fM, fm, fp, fpr, fb,
  4128                         to, tM, tm, tp, tpr, tb) {
  4129  
  4130    if (isX(fM))
  4131      from = '';
  4132    else if (isX(fm))
  4133      from = '>=' + fM + '.0.0';
  4134    else if (isX(fp))
  4135      from = '>=' + fM + '.' + fm + '.0';
  4136    else
  4137      from = '>=' + from;
  4138  
  4139    if (isX(tM))
  4140      to = '';
  4141    else if (isX(tm))
  4142      to = '<' + (+tM + 1) + '.0.0';
  4143    else if (isX(tp))
  4144      to = '<' + tM + '.' + (+tm + 1) + '.0';
  4145    else if (tpr)
  4146      to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;
  4147    else
  4148      to = '<=' + to;
  4149  
  4150    return (from + ' ' + to).trim();
  4151  }
  4152  
  4153  
  4154  // if ANY of the sets match ALL of its comparators, then pass
  4155  Range.prototype.test = function(version) {
  4156    if (!version)
  4157      return false;
  4158  
  4159    if (typeof version === 'string')
  4160      version = new SemVer(version, this.loose);
  4161  
  4162    for (var i = 0; i < this.set.length; i++) {
  4163      if (testSet(this.set[i], version))
  4164        return true;
  4165    }
  4166    return false;
  4167  };
  4168  
  4169  function testSet(set, version) {
  4170    for (var i = 0; i < set.length; i++) {
  4171      if (!set[i].test(version))
  4172        return false;
  4173    }
  4174  
  4175    if (version.prerelease.length) {
  4176      // Find the set of versions that are allowed to have prereleases
  4177      // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
  4178      // That should allow `1.2.3-pr.2` to pass.
  4179      // However, `1.2.4-alpha.notready` should NOT be allowed,
  4180      // even though it's within the range set by the comparators.
  4181      for (var i = 0; i < set.length; i++) {
  4182        debug(set[i].semver);
  4183        if (set[i].semver === ANY)
  4184          continue;
  4185  
  4186        if (set[i].semver.prerelease.length > 0) {
  4187          var allowed = set[i].semver;
  4188          if (allowed.major === version.major &&
  4189              allowed.minor === version.minor &&
  4190              allowed.patch === version.patch)
  4191            return true;
  4192        }
  4193      }
  4194  
  4195      // Version has a -pre, but it's not one of the ones we like.
  4196      return false;
  4197    }
  4198  
  4199    return true;
  4200  }
  4201  
  4202  exports.satisfies = satisfies;
  4203  function satisfies(version, range, loose) {
  4204    try {
  4205      range = new Range(range, loose);
  4206    } catch (er) {
  4207      return false;
  4208    }
  4209    return range.test(version);
  4210  }
  4211  
  4212  exports.maxSatisfying = maxSatisfying;
  4213  function maxSatisfying(versions, range, loose) {
  4214    var max = null;
  4215    var maxSV = null;
  4216    try {
  4217      var rangeObj = new Range(range, loose);
  4218    } catch (er) {
  4219      return null;
  4220    }
  4221    versions.forEach(function (v) {
  4222      if (rangeObj.test(v)) { // satisfies(v, range, loose)
  4223        if (!max || maxSV.compare(v) === -1) { // compare(max, v, true)
  4224          max = v;
  4225          maxSV = new SemVer(max, loose);
  4226        }
  4227      }
  4228    })
  4229    return max;
  4230  }
  4231  
  4232  exports.minSatisfying = minSatisfying;
  4233  function minSatisfying(versions, range, loose) {
  4234    var min = null;
  4235    var minSV = null;
  4236    try {
  4237      var rangeObj = new Range(range, loose);
  4238    } catch (er) {
  4239      return null;
  4240    }
  4241    versions.forEach(function (v) {
  4242      if (rangeObj.test(v)) { // satisfies(v, range, loose)
  4243        if (!min || minSV.compare(v) === 1) { // compare(min, v, true)
  4244          min = v;
  4245          minSV = new SemVer(min, loose);
  4246        }
  4247      }
  4248    })
  4249    return min;
  4250  }
  4251  
  4252  exports.validRange = validRange;
  4253  function validRange(range, loose) {
  4254    try {
  4255      // Return '*' instead of '' so that truthiness works.
  4256      // This will throw if it's invalid anyway
  4257      return new Range(range, loose).range || '*';
  4258    } catch (er) {
  4259      return null;
  4260    }
  4261  }
  4262  
  4263  // Determine if version is less than all the versions possible in the range
  4264  exports.ltr = ltr;
  4265  function ltr(version, range, loose) {
  4266    return outside(version, range, '<', loose);
  4267  }
  4268  
  4269  // Determine if version is greater than all the versions possible in the range.
  4270  exports.gtr = gtr;
  4271  function gtr(version, range, loose) {
  4272    return outside(version, range, '>', loose);
  4273  }
  4274  
  4275  exports.outside = outside;
  4276  function outside(version, range, hilo, loose) {
  4277    version = new SemVer(version, loose);
  4278    range = new Range(range, loose);
  4279  
  4280    var gtfn, ltefn, ltfn, comp, ecomp;
  4281    switch (hilo) {
  4282      case '>':
  4283        gtfn = gt;
  4284        ltefn = lte;
  4285        ltfn = lt;
  4286        comp = '>';
  4287        ecomp = '>=';
  4288        break;
  4289      case '<':
  4290        gtfn = lt;
  4291        ltefn = gte;
  4292        ltfn = gt;
  4293        comp = '<';
  4294        ecomp = '<=';
  4295        break;
  4296      default:
  4297        throw new TypeError('Must provide a hilo val of "<" or ">"');
  4298    }
  4299  
  4300    // If it satisifes the range it is not outside
  4301    if (satisfies(version, range, loose)) {
  4302      return false;
  4303    }
  4304  
  4305    // From now on, variable terms are as if we're in "gtr" mode.
  4306    // but note that everything is flipped for the "ltr" function.
  4307  
  4308    for (var i = 0; i < range.set.length; ++i) {
  4309      var comparators = range.set[i];
  4310  
  4311      var high = null;
  4312      var low = null;
  4313  
  4314      comparators.forEach(function(comparator) {
  4315        if (comparator.semver === ANY) {
  4316          comparator = new Comparator('>=0.0.0')
  4317        }
  4318        high = high || comparator;
  4319        low = low || comparator;
  4320        if (gtfn(comparator.semver, high.semver, loose)) {
  4321          high = comparator;
  4322        } else if (ltfn(comparator.semver, low.semver, loose)) {
  4323          low = comparator;
  4324        }
  4325      });
  4326  
  4327      // If the edge version comparator has a operator then our version
  4328      // isn't outside it
  4329      if (high.operator === comp || high.operator === ecomp) {
  4330        return false;
  4331      }
  4332  
  4333      // If the lowest version comparator has an operator and our version
  4334      // is less than it then it isn't higher than the range
  4335      if ((!low.operator || low.operator === comp) &&
  4336          ltefn(version, low.semver)) {
  4337        return false;
  4338      } else if (low.operator === ecomp && ltfn(version, low.semver)) {
  4339        return false;
  4340      }
  4341    }
  4342    return true;
  4343  }
  4344  
  4345  exports.prerelease = prerelease;
  4346  function prerelease(version, loose) {
  4347    var parsed = parse(version, loose);
  4348    return (parsed && parsed.prerelease.length) ? parsed.prerelease : null;
  4349  }
  4350  
  4351  exports.intersects = intersects;
  4352  function intersects(r1, r2, loose) {
  4353    r1 = new Range(r1, loose)
  4354    r2 = new Range(r2, loose)
  4355    return r1.intersects(r2)
  4356  }
  4357  
  4358  exports.coerce = coerce;
  4359  function coerce(version) {
  4360    if (version instanceof SemVer)
  4361      return version;
  4362  
  4363    if (typeof version !== 'string')
  4364      return null;
  4365  
  4366    var match = version.match(re[COERCE]);
  4367  
  4368    if (match == null)
  4369      return null;
  4370  
  4371    return parse((match[1] || '0') + '.' + (match[2] || '0') + '.' + (match[3] || '0')); 
  4372  }
  4373  
  4374  
  4375  /***/ }),
  4376  /* 23 */
  4377  /***/ (function(module, exports) {
  4378  
  4379  module.exports = require("stream");
  4380  
  4381  /***/ }),
  4382  /* 24 */
  4383  /***/ (function(module, exports) {
  4384  
  4385  module.exports = require("url");
  4386  
  4387  /***/ }),
  4388  /* 25 */
  4389  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4390  
  4391  "use strict";
  4392  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Subscription; });
  4393  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_isArray__ = __webpack_require__(41);
  4394  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isObject__ = __webpack_require__(444);
  4395  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isFunction__ = __webpack_require__(154);
  4396  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_tryCatch__ = __webpack_require__(57);
  4397  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_errorObject__ = __webpack_require__(48);
  4398  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_UnsubscriptionError__ = __webpack_require__(441);
  4399  /** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_tryCatch,_util_errorObject,_util_UnsubscriptionError PURE_IMPORTS_END */
  4400  
  4401  
  4402  
  4403  
  4404  
  4405  
  4406  var Subscription = /*@__PURE__*/ (function () {
  4407      function Subscription(unsubscribe) {
  4408          this.closed = false;
  4409          this._parent = null;
  4410          this._parents = null;
  4411          this._subscriptions = null;
  4412          if (unsubscribe) {
  4413              this._unsubscribe = unsubscribe;
  4414          }
  4415      }
  4416      Subscription.prototype.unsubscribe = function () {
  4417          var hasErrors = false;
  4418          var errors;
  4419          if (this.closed) {
  4420              return;
  4421          }
  4422          var _a = this, _parent = _a._parent, _parents = _a._parents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;
  4423          this.closed = true;
  4424          this._parent = null;
  4425          this._parents = null;
  4426          this._subscriptions = null;
  4427          var index = -1;
  4428          var len = _parents ? _parents.length : 0;
  4429          while (_parent) {
  4430              _parent.remove(this);
  4431              _parent = ++index < len && _parents[index] || null;
  4432          }
  4433          if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_isFunction__["a" /* isFunction */])(_unsubscribe)) {
  4434              var trial = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_tryCatch__["a" /* tryCatch */])(_unsubscribe).call(this);
  4435              if (trial === __WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */]) {
  4436                  hasErrors = true;
  4437                  errors = errors || (__WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */].e instanceof __WEBPACK_IMPORTED_MODULE_5__util_UnsubscriptionError__["a" /* UnsubscriptionError */] ?
  4438                      flattenUnsubscriptionErrors(__WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */].e.errors) : [__WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */].e]);
  4439              }
  4440          }
  4441          if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util_isArray__["a" /* isArray */])(_subscriptions)) {
  4442              index = -1;
  4443              len = _subscriptions.length;
  4444              while (++index < len) {
  4445                  var sub = _subscriptions[index];
  4446                  if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_isObject__["a" /* isObject */])(sub)) {
  4447                      var trial = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_tryCatch__["a" /* tryCatch */])(sub.unsubscribe).call(sub);
  4448                      if (trial === __WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */]) {
  4449                          hasErrors = true;
  4450                          errors = errors || [];
  4451                          var err = __WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */].e;
  4452                          if (err instanceof __WEBPACK_IMPORTED_MODULE_5__util_UnsubscriptionError__["a" /* UnsubscriptionError */]) {
  4453                              errors = errors.concat(flattenUnsubscriptionErrors(err.errors));
  4454                          }
  4455                          else {
  4456                              errors.push(err);
  4457                          }
  4458                      }
  4459                  }
  4460              }
  4461          }
  4462          if (hasErrors) {
  4463              throw new __WEBPACK_IMPORTED_MODULE_5__util_UnsubscriptionError__["a" /* UnsubscriptionError */](errors);
  4464          }
  4465      };
  4466      Subscription.prototype.add = function (teardown) {
  4467          if (!teardown || (teardown === Subscription.EMPTY)) {
  4468              return Subscription.EMPTY;
  4469          }
  4470          if (teardown === this) {
  4471              return this;
  4472          }
  4473          var subscription = teardown;
  4474          switch (typeof teardown) {
  4475              case 'function':
  4476                  subscription = new Subscription(teardown);
  4477              case 'object':
  4478                  if (subscription.closed || typeof subscription.unsubscribe !== 'function') {
  4479                      return subscription;
  4480                  }
  4481                  else if (this.closed) {
  4482                      subscription.unsubscribe();
  4483                      return subscription;
  4484                  }
  4485                  else if (typeof subscription._addParent !== 'function') {
  4486                      var tmp = subscription;
  4487                      subscription = new Subscription();
  4488                      subscription._subscriptions = [tmp];
  4489                  }
  4490                  break;
  4491              default:
  4492                  throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');
  4493          }
  4494          var subscriptions = this._subscriptions || (this._subscriptions = []);
  4495          subscriptions.push(subscription);
  4496          subscription._addParent(this);
  4497          return subscription;
  4498      };
  4499      Subscription.prototype.remove = function (subscription) {
  4500          var subscriptions = this._subscriptions;
  4501          if (subscriptions) {
  4502              var subscriptionIndex = subscriptions.indexOf(subscription);
  4503              if (subscriptionIndex !== -1) {
  4504                  subscriptions.splice(subscriptionIndex, 1);
  4505              }
  4506          }
  4507      };
  4508      Subscription.prototype._addParent = function (parent) {
  4509          var _a = this, _parent = _a._parent, _parents = _a._parents;
  4510          if (!_parent || _parent === parent) {
  4511              this._parent = parent;
  4512          }
  4513          else if (!_parents) {
  4514              this._parents = [parent];
  4515          }
  4516          else if (_parents.indexOf(parent) === -1) {
  4517              _parents.push(parent);
  4518          }
  4519      };
  4520      Subscription.EMPTY = (function (empty) {
  4521          empty.closed = true;
  4522          return empty;
  4523      }(new Subscription()));
  4524      return Subscription;
  4525  }());
  4526  
  4527  function flattenUnsubscriptionErrors(errors) {
  4528      return errors.reduce(function (errs, err) { return errs.concat((err instanceof __WEBPACK_IMPORTED_MODULE_5__util_UnsubscriptionError__["a" /* UnsubscriptionError */]) ? err.errors : err); }, []);
  4529  }
  4530  //# sourceMappingURL=Subscription.js.map
  4531  
  4532  
  4533  /***/ }),
  4534  /* 26 */
  4535  /***/ (function(module, exports, __webpack_require__) {
  4536  
  4537  // Copyright 2015 Joyent, Inc.
  4538  
  4539  module.exports = {
  4540  	bufferSplit: bufferSplit,
  4541  	addRSAMissing: addRSAMissing,
  4542  	calculateDSAPublic: calculateDSAPublic,
  4543  	calculateED25519Public: calculateED25519Public,
  4544  	calculateX25519Public: calculateX25519Public,
  4545  	mpNormalize: mpNormalize,
  4546  	mpDenormalize: mpDenormalize,
  4547  	ecNormalize: ecNormalize,
  4548  	countZeros: countZeros,
  4549  	assertCompatible: assertCompatible,
  4550  	isCompatible: isCompatible,
  4551  	opensslKeyDeriv: opensslKeyDeriv,
  4552  	opensshCipherInfo: opensshCipherInfo,
  4553  	publicFromPrivateECDSA: publicFromPrivateECDSA,
  4554  	zeroPadToLength: zeroPadToLength,
  4555  	writeBitString: writeBitString,
  4556  	readBitString: readBitString
  4557  };
  4558  
  4559  var assert = __webpack_require__(16);
  4560  var Buffer = __webpack_require__(15).Buffer;
  4561  var PrivateKey = __webpack_require__(33);
  4562  var Key = __webpack_require__(27);
  4563  var crypto = __webpack_require__(11);
  4564  var algs = __webpack_require__(32);
  4565  var asn1 = __webpack_require__(66);
  4566  
  4567  var ec, jsbn;
  4568  var nacl;
  4569  
  4570  var MAX_CLASS_DEPTH = 3;
  4571  
  4572  function isCompatible(obj, klass, needVer) {
  4573  	if (obj === null || typeof (obj) !== 'object')
  4574  		return (false);
  4575  	if (needVer === undefined)
  4576  		needVer = klass.prototype._sshpkApiVersion;
  4577  	if (obj instanceof klass &&
  4578  	    klass.prototype._sshpkApiVersion[0] == needVer[0])
  4579  		return (true);
  4580  	var proto = Object.getPrototypeOf(obj);
  4581  	var depth = 0;
  4582  	while (proto.constructor.name !== klass.name) {
  4583  		proto = Object.getPrototypeOf(proto);
  4584  		if (!proto || ++depth > MAX_CLASS_DEPTH)
  4585  			return (false);
  4586  	}
  4587  	if (proto.constructor.name !== klass.name)
  4588  		return (false);
  4589  	var ver = proto._sshpkApiVersion;
  4590  	if (ver === undefined)
  4591  		ver = klass._oldVersionDetect(obj);
  4592  	if (ver[0] != needVer[0] || ver[1] < needVer[1])
  4593  		return (false);
  4594  	return (true);
  4595  }
  4596  
  4597  function assertCompatible(obj, klass, needVer, name) {
  4598  	if (name === undefined)
  4599  		name = 'object';
  4600  	assert.ok(obj, name + ' must not be null');
  4601  	assert.object(obj, name + ' must be an object');
  4602  	if (needVer === undefined)
  4603  		needVer = klass.prototype._sshpkApiVersion;
  4604  	if (obj instanceof klass &&
  4605  	    klass.prototype._sshpkApiVersion[0] == needVer[0])
  4606  		return;
  4607  	var proto = Object.getPrototypeOf(obj);
  4608  	var depth = 0;
  4609  	while (proto.constructor.name !== klass.name) {
  4610  		proto = Object.getPrototypeOf(proto);
  4611  		assert.ok(proto && ++depth <= MAX_CLASS_DEPTH,
  4612  		    name + ' must be a ' + klass.name + ' instance');
  4613  	}
  4614  	assert.strictEqual(proto.constructor.name, klass.name,
  4615  	    name + ' must be a ' + klass.name + ' instance');
  4616  	var ver = proto._sshpkApiVersion;
  4617  	if (ver === undefined)
  4618  		ver = klass._oldVersionDetect(obj);
  4619  	assert.ok(ver[0] == needVer[0] && ver[1] >= needVer[1],
  4620  	    name + ' must be compatible with ' + klass.name + ' klass ' +
  4621  	    'version ' + needVer[0] + '.' + needVer[1]);
  4622  }
  4623  
  4624  var CIPHER_LEN = {
  4625  	'des-ede3-cbc': { key: 7, iv: 8 },
  4626  	'aes-128-cbc': { key: 16, iv: 16 }
  4627  };
  4628  var PKCS5_SALT_LEN = 8;
  4629  
  4630  function opensslKeyDeriv(cipher, salt, passphrase, count) {
  4631  	assert.buffer(salt, 'salt');
  4632  	assert.buffer(passphrase, 'passphrase');
  4633  	assert.number(count, 'iteration count');
  4634  
  4635  	var clen = CIPHER_LEN[cipher];
  4636  	assert.object(clen, 'supported cipher');
  4637  
  4638  	salt = salt.slice(0, PKCS5_SALT_LEN);
  4639  
  4640  	var D, D_prev, bufs;
  4641  	var material = Buffer.alloc(0);
  4642  	while (material.length < clen.key + clen.iv) {
  4643  		bufs = [];
  4644  		if (D_prev)
  4645  			bufs.push(D_prev);
  4646  		bufs.push(passphrase);
  4647  		bufs.push(salt);
  4648  		D = Buffer.concat(bufs);
  4649  		for (var j = 0; j < count; ++j)
  4650  			D = crypto.createHash('md5').update(D).digest();
  4651  		material = Buffer.concat([material, D]);
  4652  		D_prev = D;
  4653  	}
  4654  
  4655  	return ({
  4656  	    key: material.slice(0, clen.key),
  4657  	    iv: material.slice(clen.key, clen.key + clen.iv)
  4658  	});
  4659  }
  4660  
  4661  /* Count leading zero bits on a buffer */
  4662  function countZeros(buf) {
  4663  	var o = 0, obit = 8;
  4664  	while (o < buf.length) {
  4665  		var mask = (1 << obit);
  4666  		if ((buf[o] & mask) === mask)
  4667  			break;
  4668  		obit--;
  4669  		if (obit < 0) {
  4670  			o++;
  4671  			obit = 8;
  4672  		}
  4673  	}
  4674  	return (o*8 + (8 - obit) - 1);
  4675  }
  4676  
  4677  function bufferSplit(buf, chr) {
  4678  	assert.buffer(buf);
  4679  	assert.string(chr);
  4680  
  4681  	var parts = [];
  4682  	var lastPart = 0;
  4683  	var matches = 0;
  4684  	for (var i = 0; i < buf.length; ++i) {
  4685  		if (buf[i] === chr.charCodeAt(matches))
  4686  			++matches;
  4687  		else if (buf[i] === chr.charCodeAt(0))
  4688  			matches = 1;
  4689  		else
  4690  			matches = 0;
  4691  
  4692  		if (matches >= chr.length) {
  4693  			var newPart = i + 1;
  4694  			parts.push(buf.slice(lastPart, newPart - matches));
  4695  			lastPart = newPart;
  4696  			matches = 0;
  4697  		}
  4698  	}
  4699  	if (lastPart <= buf.length)
  4700  		parts.push(buf.slice(lastPart, buf.length));
  4701  
  4702  	return (parts);
  4703  }
  4704  
  4705  function ecNormalize(buf, addZero) {
  4706  	assert.buffer(buf);
  4707  	if (buf[0] === 0x00 && buf[1] === 0x04) {
  4708  		if (addZero)
  4709  			return (buf);
  4710  		return (buf.slice(1));
  4711  	} else if (buf[0] === 0x04) {
  4712  		if (!addZero)
  4713  			return (buf);
  4714  	} else {
  4715  		while (buf[0] === 0x00)
  4716  			buf = buf.slice(1);
  4717  		if (buf[0] === 0x02 || buf[0] === 0x03)
  4718  			throw (new Error('Compressed elliptic curve points ' +
  4719  			    'are not supported'));
  4720  		if (buf[0] !== 0x04)
  4721  			throw (new Error('Not a valid elliptic curve point'));
  4722  		if (!addZero)
  4723  			return (buf);
  4724  	}
  4725  	var b = Buffer.alloc(buf.length + 1);
  4726  	b[0] = 0x0;
  4727  	buf.copy(b, 1);
  4728  	return (b);
  4729  }
  4730  
  4731  function readBitString(der, tag) {
  4732  	if (tag === undefined)
  4733  		tag = asn1.Ber.BitString;
  4734  	var buf = der.readString(tag, true);
  4735  	assert.strictEqual(buf[0], 0x00, 'bit strings with unused bits are ' +
  4736  	    'not supported (0x' + buf[0].toString(16) + ')');
  4737  	return (buf.slice(1));
  4738  }
  4739  
  4740  function writeBitString(der, buf, tag) {
  4741  	if (tag === undefined)
  4742  		tag = asn1.Ber.BitString;
  4743  	var b = Buffer.alloc(buf.length + 1);
  4744  	b[0] = 0x00;
  4745  	buf.copy(b, 1);
  4746  	der.writeBuffer(b, tag);
  4747  }
  4748  
  4749  function mpNormalize(buf) {
  4750  	assert.buffer(buf);
  4751  	while (buf.length > 1 && buf[0] === 0x00 && (buf[1] & 0x80) === 0x00)
  4752  		buf = buf.slice(1);
  4753  	if ((buf[0] & 0x80) === 0x80) {
  4754  		var b = Buffer.alloc(buf.length + 1);
  4755  		b[0] = 0x00;
  4756  		buf.copy(b, 1);
  4757  		buf = b;
  4758  	}
  4759  	return (buf);
  4760  }
  4761  
  4762  function mpDenormalize(buf) {
  4763  	assert.buffer(buf);
  4764  	while (buf.length > 1 && buf[0] === 0x00)
  4765  		buf = buf.slice(1);
  4766  	return (buf);
  4767  }
  4768  
  4769  function zeroPadToLength(buf, len) {
  4770  	assert.buffer(buf);
  4771  	assert.number(len);
  4772  	while (buf.length > len) {
  4773  		assert.equal(buf[0], 0x00);
  4774  		buf = buf.slice(1);
  4775  	}
  4776  	while (buf.length < len) {
  4777  		var b = Buffer.alloc(buf.length + 1);
  4778  		b[0] = 0x00;
  4779  		buf.copy(b, 1);
  4780  		buf = b;
  4781  	}
  4782  	return (buf);
  4783  }
  4784  
  4785  function bigintToMpBuf(bigint) {
  4786  	var buf = Buffer.from(bigint.toByteArray());
  4787  	buf = mpNormalize(buf);
  4788  	return (buf);
  4789  }
  4790  
  4791  function calculateDSAPublic(g, p, x) {
  4792  	assert.buffer(g);
  4793  	assert.buffer(p);
  4794  	assert.buffer(x);
  4795  	try {
  4796  		var bigInt = __webpack_require__(81).BigInteger;
  4797  	} catch (e) {
  4798  		throw (new Error('To load a PKCS#8 format DSA private key, ' +
  4799  		    'the node jsbn library is required.'));
  4800  	}
  4801  	g = new bigInt(g);
  4802  	p = new bigInt(p);
  4803  	x = new bigInt(x);
  4804  	var y = g.modPow(x, p);
  4805  	var ybuf = bigintToMpBuf(y);
  4806  	return (ybuf);
  4807  }
  4808  
  4809  function calculateED25519Public(k) {
  4810  	assert.buffer(k);
  4811  
  4812  	if (nacl === undefined)
  4813  		nacl = __webpack_require__(76);
  4814  
  4815  	var kp = nacl.sign.keyPair.fromSeed(new Uint8Array(k));
  4816  	return (Buffer.from(kp.publicKey));
  4817  }
  4818  
  4819  function calculateX25519Public(k) {
  4820  	assert.buffer(k);
  4821  
  4822  	if (nacl === undefined)
  4823  		nacl = __webpack_require__(76);
  4824  
  4825  	var kp = nacl.box.keyPair.fromSeed(new Uint8Array(k));
  4826  	return (Buffer.from(kp.publicKey));
  4827  }
  4828  
  4829  function addRSAMissing(key) {
  4830  	assert.object(key);
  4831  	assertCompatible(key, PrivateKey, [1, 1]);
  4832  	try {
  4833  		var bigInt = __webpack_require__(81).BigInteger;
  4834  	} catch (e) {
  4835  		throw (new Error('To write a PEM private key from ' +
  4836  		    'this source, the node jsbn lib is required.'));
  4837  	}
  4838  
  4839  	var d = new bigInt(key.part.d.data);
  4840  	var buf;
  4841  
  4842  	if (!key.part.dmodp) {
  4843  		var p = new bigInt(key.part.p.data);
  4844  		var dmodp = d.mod(p.subtract(1));
  4845  
  4846  		buf = bigintToMpBuf(dmodp);
  4847  		key.part.dmodp = {name: 'dmodp', data: buf};
  4848  		key.parts.push(key.part.dmodp);
  4849  	}
  4850  	if (!key.part.dmodq) {
  4851  		var q = new bigInt(key.part.q.data);
  4852  		var dmodq = d.mod(q.subtract(1));
  4853  
  4854  		buf = bigintToMpBuf(dmodq);
  4855  		key.part.dmodq = {name: 'dmodq', data: buf};
  4856  		key.parts.push(key.part.dmodq);
  4857  	}
  4858  }
  4859  
  4860  function publicFromPrivateECDSA(curveName, priv) {
  4861  	assert.string(curveName, 'curveName');
  4862  	assert.buffer(priv);
  4863  	if (ec === undefined)
  4864  		ec = __webpack_require__(139);
  4865  	if (jsbn === undefined)
  4866  		jsbn = __webpack_require__(81).BigInteger;
  4867  	var params = algs.curves[curveName];
  4868  	var p = new jsbn(params.p);
  4869  	var a = new jsbn(params.a);
  4870  	var b = new jsbn(params.b);
  4871  	var curve = new ec.ECCurveFp(p, a, b);
  4872  	var G = curve.decodePointHex(params.G.toString('hex'));
  4873  
  4874  	var d = new jsbn(mpNormalize(priv));
  4875  	var pub = G.multiply(d);
  4876  	pub = Buffer.from(curve.encodePointHex(pub), 'hex');
  4877  
  4878  	var parts = [];
  4879  	parts.push({name: 'curve', data: Buffer.from(curveName)});
  4880  	parts.push({name: 'Q', data: pub});
  4881  
  4882  	var key = new Key({type: 'ecdsa', curve: curve, parts: parts});
  4883  	return (key);
  4884  }
  4885  
  4886  function opensshCipherInfo(cipher) {
  4887  	var inf = {};
  4888  	switch (cipher) {
  4889  	case '3des-cbc':
  4890  		inf.keySize = 24;
  4891  		inf.blockSize = 8;
  4892  		inf.opensslName = 'des-ede3-cbc';
  4893  		break;
  4894  	case 'blowfish-cbc':
  4895  		inf.keySize = 16;
  4896  		inf.blockSize = 8;
  4897  		inf.opensslName = 'bf-cbc';
  4898  		break;
  4899  	case 'aes128-cbc':
  4900  	case 'aes128-ctr':
  4901  	case 'aes128-gcm@openssh.com':
  4902  		inf.keySize = 16;
  4903  		inf.blockSize = 16;
  4904  		inf.opensslName = 'aes-128-' + cipher.slice(7, 10);
  4905  		break;
  4906  	case 'aes192-cbc':
  4907  	case 'aes192-ctr':
  4908  	case 'aes192-gcm@openssh.com':
  4909  		inf.keySize = 24;
  4910  		inf.blockSize = 16;
  4911  		inf.opensslName = 'aes-192-' + cipher.slice(7, 10);
  4912  		break;
  4913  	case 'aes256-cbc':
  4914  	case 'aes256-ctr':
  4915  	case 'aes256-gcm@openssh.com':
  4916  		inf.keySize = 32;
  4917  		inf.blockSize = 16;
  4918  		inf.opensslName = 'aes-256-' + cipher.slice(7, 10);
  4919  		break;
  4920  	default:
  4921  		throw (new Error(
  4922  		    'Unsupported openssl cipher "' + cipher + '"'));
  4923  	}
  4924  	return (inf);
  4925  }
  4926  
  4927  
  4928  /***/ }),
  4929  /* 27 */
  4930  /***/ (function(module, exports, __webpack_require__) {
  4931  
  4932  // Copyright 2017 Joyent, Inc.
  4933  
  4934  module.exports = Key;
  4935  
  4936  var assert = __webpack_require__(16);
  4937  var algs = __webpack_require__(32);
  4938  var crypto = __webpack_require__(11);
  4939  var Fingerprint = __webpack_require__(156);
  4940  var Signature = __webpack_require__(75);
  4941  var DiffieHellman = __webpack_require__(325).DiffieHellman;
  4942  var errs = __webpack_require__(74);
  4943  var utils = __webpack_require__(26);
  4944  var PrivateKey = __webpack_require__(33);
  4945  var edCompat;
  4946  
  4947  try {
  4948  	edCompat = __webpack_require__(454);
  4949  } catch (e) {
  4950  	/* Just continue through, and bail out if we try to use it. */
  4951  }
  4952  
  4953  var InvalidAlgorithmError = errs.InvalidAlgorithmError;
  4954  var KeyParseError = errs.KeyParseError;
  4955  
  4956  var formats = {};
  4957  formats['auto'] = __webpack_require__(455);
  4958  formats['pem'] = __webpack_require__(86);
  4959  formats['pkcs1'] = __webpack_require__(327);
  4960  formats['pkcs8'] = __webpack_require__(157);
  4961  formats['rfc4253'] = __webpack_require__(103);
  4962  formats['ssh'] = __webpack_require__(456);
  4963  formats['ssh-private'] = __webpack_require__(193);
  4964  formats['openssh'] = formats['ssh-private'];
  4965  formats['dnssec'] = __webpack_require__(326);
  4966  
  4967  function Key(opts) {
  4968  	assert.object(opts, 'options');
  4969  	assert.arrayOfObject(opts.parts, 'options.parts');
  4970  	assert.string(opts.type, 'options.type');
  4971  	assert.optionalString(opts.comment, 'options.comment');
  4972  
  4973  	var algInfo = algs.info[opts.type];
  4974  	if (typeof (algInfo) !== 'object')
  4975  		throw (new InvalidAlgorithmError(opts.type));
  4976  
  4977  	var partLookup = {};
  4978  	for (var i = 0; i < opts.parts.length; ++i) {
  4979  		var part = opts.parts[i];
  4980  		partLookup[part.name] = part;
  4981  	}
  4982  
  4983  	this.type = opts.type;
  4984  	this.parts = opts.parts;
  4985  	this.part = partLookup;
  4986  	this.comment = undefined;
  4987  	this.source = opts.source;
  4988  
  4989  	/* for speeding up hashing/fingerprint operations */
  4990  	this._rfc4253Cache = opts._rfc4253Cache;
  4991  	this._hashCache = {};
  4992  
  4993  	var sz;
  4994  	this.curve = undefined;
  4995  	if (this.type === 'ecdsa') {
  4996  		var curve = this.part.curve.data.toString();
  4997  		this.curve = curve;
  4998  		sz = algs.curves[curve].size;
  4999  	} else if (this.type === 'ed25519' || this.type === 'curve25519') {
  5000  		sz = 256;
  5001  		this.curve = 'curve25519';
  5002  	} else {
  5003  		var szPart = this.part[algInfo.sizePart];
  5004  		sz = szPart.data.length;
  5005  		sz = sz * 8 - utils.countZeros(szPart.data);
  5006  	}
  5007  	this.size = sz;
  5008  }
  5009  
  5010  Key.formats = formats;
  5011  
  5012  Key.prototype.toBuffer = function (format, options) {
  5013  	if (format === undefined)
  5014  		format = 'ssh';
  5015  	assert.string(format, 'format');
  5016  	assert.object(formats[format], 'formats[format]');
  5017  	assert.optionalObject(options, 'options');
  5018  
  5019  	if (format === 'rfc4253') {
  5020  		if (this._rfc4253Cache === undefined)
  5021  			this._rfc4253Cache = formats['rfc4253'].write(this);
  5022  		return (this._rfc4253Cache);
  5023  	}
  5024  
  5025  	return (formats[format].write(this, options));
  5026  };
  5027  
  5028  Key.prototype.toString = function (format, options) {
  5029  	return (this.toBuffer(format, options).toString());
  5030  };
  5031  
  5032  Key.prototype.hash = function (algo) {
  5033  	assert.string(algo, 'algorithm');
  5034  	algo = algo.toLowerCase();
  5035  	if (algs.hashAlgs[algo] === undefined)
  5036  		throw (new InvalidAlgorithmError(algo));
  5037  
  5038  	if (this._hashCache[algo])
  5039  		return (this._hashCache[algo]);
  5040  	var hash = crypto.createHash(algo).
  5041  	    update(this.toBuffer('rfc4253')).digest();
  5042  	this._hashCache[algo] = hash;
  5043  	return (hash);
  5044  };
  5045  
  5046  Key.prototype.fingerprint = function (algo) {
  5047  	if (algo === undefined)
  5048  		algo = 'sha256';
  5049  	assert.string(algo, 'algorithm');
  5050  	var opts = {
  5051  		type: 'key',
  5052  		hash: this.hash(algo),
  5053  		algorithm: algo
  5054  	};
  5055  	return (new Fingerprint(opts));
  5056  };
  5057  
  5058  Key.prototype.defaultHashAlgorithm = function () {
  5059  	var hashAlgo = 'sha1';
  5060  	if (this.type === 'rsa')
  5061  		hashAlgo = 'sha256';
  5062  	if (this.type === 'dsa' && this.size > 1024)
  5063  		hashAlgo = 'sha256';
  5064  	if (this.type === 'ed25519')
  5065  		hashAlgo = 'sha512';
  5066  	if (this.type === 'ecdsa') {
  5067  		if (this.size <= 256)
  5068  			hashAlgo = 'sha256';
  5069  		else if (this.size <= 384)
  5070  			hashAlgo = 'sha384';
  5071  		else
  5072  			hashAlgo = 'sha512';
  5073  	}
  5074  	return (hashAlgo);
  5075  };
  5076  
  5077  Key.prototype.createVerify = function (hashAlgo) {
  5078  	if (hashAlgo === undefined)
  5079  		hashAlgo = this.defaultHashAlgorithm();
  5080  	assert.string(hashAlgo, 'hash algorithm');
  5081  
  5082  	/* ED25519 is not supported by OpenSSL, use a javascript impl. */
  5083  	if (this.type === 'ed25519' && edCompat !== undefined)
  5084  		return (new edCompat.Verifier(this, hashAlgo));
  5085  	if (this.type === 'curve25519')
  5086  		throw (new Error('Curve25519 keys are not suitable for ' +
  5087  		    'signing or verification'));
  5088  
  5089  	var v, nm, err;
  5090  	try {
  5091  		nm = hashAlgo.toUpperCase();
  5092  		v = crypto.createVerify(nm);
  5093  	} catch (e) {
  5094  		err = e;
  5095  	}
  5096  	if (v === undefined || (err instanceof Error &&
  5097  	    err.message.match(/Unknown message digest/))) {
  5098  		nm = 'RSA-';
  5099  		nm += hashAlgo.toUpperCase();
  5100  		v = crypto.createVerify(nm);
  5101  	}
  5102  	assert.ok(v, 'failed to create verifier');
  5103  	var oldVerify = v.verify.bind(v);
  5104  	var key = this.toBuffer('pkcs8');
  5105  	var curve = this.curve;
  5106  	var self = this;
  5107  	v.verify = function (signature, fmt) {
  5108  		if (Signature.isSignature(signature, [2, 0])) {
  5109  			if (signature.type !== self.type)
  5110  				return (false);
  5111  			if (signature.hashAlgorithm &&
  5112  			    signature.hashAlgorithm !== hashAlgo)
  5113  				return (false);
  5114  			if (signature.curve && self.type === 'ecdsa' &&
  5115  			    signature.curve !== curve)
  5116  				return (false);
  5117  			return (oldVerify(key, signature.toBuffer('asn1')));
  5118  
  5119  		} else if (typeof (signature) === 'string' ||
  5120  		    Buffer.isBuffer(signature)) {
  5121  			return (oldVerify(key, signature, fmt));
  5122  
  5123  		/*
  5124  		 * Avoid doing this on valid arguments, walking the prototype
  5125  		 * chain can be quite slow.
  5126  		 */
  5127  		} else if (Signature.isSignature(signature, [1, 0])) {
  5128  			throw (new Error('signature was created by too old ' +
  5129  			    'a version of sshpk and cannot be verified'));
  5130  
  5131  		} else {
  5132  			throw (new TypeError('signature must be a string, ' +
  5133  			    'Buffer, or Signature object'));
  5134  		}
  5135  	};
  5136  	return (v);
  5137  };
  5138  
  5139  Key.prototype.createDiffieHellman = function () {
  5140  	if (this.type === 'rsa')
  5141  		throw (new Error('RSA keys do not support Diffie-Hellman'));
  5142  
  5143  	return (new DiffieHellman(this));
  5144  };
  5145  Key.prototype.createDH = Key.prototype.createDiffieHellman;
  5146  
  5147  Key.parse = function (data, format, options) {
  5148  	if (typeof (data) !== 'string')
  5149  		assert.buffer(data, 'data');
  5150  	if (format === undefined)
  5151  		format = 'auto';
  5152  	assert.string(format, 'format');
  5153  	if (typeof (options) === 'string')
  5154  		options = { filename: options };
  5155  	assert.optionalObject(options, 'options');
  5156  	if (options === undefined)
  5157  		options = {};
  5158  	assert.optionalString(options.filename, 'options.filename');
  5159  	if (options.filename === undefined)
  5160  		options.filename = '(unnamed)';
  5161  
  5162  	assert.object(formats[format], 'formats[format]');
  5163  
  5164  	try {
  5165  		var k = formats[format].read(data, options);
  5166  		if (k instanceof PrivateKey)
  5167  			k = k.toPublic();
  5168  		if (!k.comment)
  5169  			k.comment = options.filename;
  5170  		return (k);
  5171  	} catch (e) {
  5172  		if (e.name === 'KeyEncryptedError')
  5173  			throw (e);
  5174  		throw (new KeyParseError(options.filename, format, e));
  5175  	}
  5176  };
  5177  
  5178  Key.isKey = function (obj, ver) {
  5179  	return (utils.isCompatible(obj, Key, ver));
  5180  };
  5181  
  5182  /*
  5183   * API versions for Key:
  5184   * [1,0] -- initial ver, may take Signature for createVerify or may not
  5185   * [1,1] -- added pkcs1, pkcs8 formats
  5186   * [1,2] -- added auto, ssh-private, openssh formats
  5187   * [1,3] -- added defaultHashAlgorithm
  5188   * [1,4] -- added ed support, createDH
  5189   * [1,5] -- first explicitly tagged version
  5190   * [1,6] -- changed ed25519 part names
  5191   */
  5192  Key.prototype._sshpkApiVersion = [1, 6];
  5193  
  5194  Key._oldVersionDetect = function (obj) {
  5195  	assert.func(obj.toBuffer);
  5196  	assert.func(obj.fingerprint);
  5197  	if (obj.createDH)
  5198  		return ([1, 4]);
  5199  	if (obj.defaultHashAlgorithm)
  5200  		return ([1, 3]);
  5201  	if (obj.formats['auto'])
  5202  		return ([1, 2]);
  5203  	if (obj.formats['pkcs1'])
  5204  		return ([1, 1]);
  5205  	return ([1, 0]);
  5206  };
  5207  
  5208  
  5209  /***/ }),
  5210  /* 28 */
  5211  /***/ (function(module, exports) {
  5212  
  5213  module.exports = require("assert");
  5214  
  5215  /***/ }),
  5216  /* 29 */
  5217  /***/ (function(module, exports, __webpack_require__) {
  5218  
  5219  "use strict";
  5220  
  5221  
  5222  Object.defineProperty(exports, "__esModule", {
  5223    value: true
  5224  });
  5225  exports.default = nullify;
  5226  function nullify(obj = {}) {
  5227    if (Array.isArray(obj)) {
  5228      for (var _iterator = obj, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
  5229        var _ref;
  5230  
  5231        if (_isArray) {
  5232          if (_i >= _iterator.length) break;
  5233          _ref = _iterator[_i++];
  5234        } else {
  5235          _i = _iterator.next();
  5236          if (_i.done) break;
  5237          _ref = _i.value;
  5238        }
  5239  
  5240        const item = _ref;
  5241  
  5242        nullify(item);
  5243      }
  5244    } else if (obj !== null && typeof obj === 'object' || typeof obj === 'function') {
  5245      Object.setPrototypeOf(obj, null);
  5246  
  5247      // for..in can only be applied to 'object', not 'function'
  5248      if (typeof obj === 'object') {
  5249        for (const key in obj) {
  5250          nullify(obj[key]);
  5251        }
  5252      }
  5253    }
  5254  
  5255    return obj;
  5256  }
  5257  
  5258  /***/ }),
  5259  /* 30 */
  5260  /***/ (function(module, exports, __webpack_require__) {
  5261  
  5262  "use strict";
  5263  
  5264  const escapeStringRegexp = __webpack_require__(382);
  5265  const ansiStyles = __webpack_require__(474);
  5266  const stdoutColor = __webpack_require__(566).stdout;
  5267  
  5268  const template = __webpack_require__(567);
  5269  
  5270  const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');
  5271  
  5272  // `supportsColor.level` → `ansiStyles.color[name]` mapping
  5273  const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];
  5274  
  5275  // `color-convert` models to exclude from the Chalk API due to conflicts and such
  5276  const skipModels = new Set(['gray']);
  5277  
  5278  const styles = Object.create(null);
  5279  
  5280  function applyOptions(obj, options) {
  5281  	options = options || {};
  5282  
  5283  	// Detect level if not set manually
  5284  	const scLevel = stdoutColor ? stdoutColor.level : 0;
  5285  	obj.level = options.level === undefined ? scLevel : options.level;
  5286  	obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;
  5287  }
  5288  
  5289  function Chalk(options) {
  5290  	// We check for this.template here since calling `chalk.constructor()`
  5291  	// by itself will have a `this` of a previously constructed chalk object
  5292  	if (!this || !(this instanceof Chalk) || this.template) {
  5293  		const chalk = {};
  5294  		applyOptions(chalk, options);
  5295  
  5296  		chalk.template = function () {
  5297  			const args = [].slice.call(arguments);
  5298  			return chalkTag.apply(null, [chalk.template].concat(args));
  5299  		};
  5300  
  5301  		Object.setPrototypeOf(chalk, Chalk.prototype);
  5302  		Object.setPrototypeOf(chalk.template, chalk);
  5303  
  5304  		chalk.template.constructor = Chalk;
  5305  
  5306  		return chalk.template;
  5307  	}
  5308  
  5309  	applyOptions(this, options);
  5310  }
  5311  
  5312  // Use bright blue on Windows as the normal blue color is illegible
  5313  if (isSimpleWindowsTerm) {
  5314  	ansiStyles.blue.open = '\u001B[94m';
  5315  }
  5316  
  5317  for (const key of Object.keys(ansiStyles)) {
  5318  	ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
  5319  
  5320  	styles[key] = {
  5321  		get() {
  5322  			const codes = ansiStyles[key];
  5323  			return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);
  5324  		}
  5325  	};
  5326  }
  5327  
  5328  styles.visible = {
  5329  	get() {
  5330  		return build.call(this, this._styles || [], true, 'visible');
  5331  	}
  5332  };
  5333  
  5334  ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');
  5335  for (const model of Object.keys(ansiStyles.color.ansi)) {
  5336  	if (skipModels.has(model)) {
  5337  		continue;
  5338  	}
  5339  
  5340  	styles[model] = {
  5341  		get() {
  5342  			const level = this.level;
  5343  			return function () {
  5344  				const open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);
  5345  				const codes = {
  5346  					open,
  5347  					close: ansiStyles.color.close,
  5348  					closeRe: ansiStyles.color.closeRe
  5349  				};
  5350  				return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);
  5351  			};
  5352  		}
  5353  	};
  5354  }
  5355  
  5356  ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');
  5357  for (const model of Object.keys(ansiStyles.bgColor.ansi)) {
  5358  	if (skipModels.has(model)) {
  5359  		continue;
  5360  	}
  5361  
  5362  	const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);
  5363  	styles[bgModel] = {
  5364  		get() {
  5365  			const level = this.level;
  5366  			return function () {
  5367  				const open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);
  5368  				const codes = {
  5369  					open,
  5370  					close: ansiStyles.bgColor.close,
  5371  					closeRe: ansiStyles.bgColor.closeRe
  5372  				};
  5373  				return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);
  5374  			};
  5375  		}
  5376  	};
  5377  }
  5378  
  5379  const proto = Object.defineProperties(() => {}, styles);
  5380  
  5381  function build(_styles, _empty, key) {
  5382  	const builder = function () {
  5383  		return applyStyle.apply(builder, arguments);
  5384  	};
  5385  
  5386  	builder._styles = _styles;
  5387  	builder._empty = _empty;
  5388  
  5389  	const self = this;
  5390  
  5391  	Object.defineProperty(builder, 'level', {
  5392  		enumerable: true,
  5393  		get() {
  5394  			return self.level;
  5395  		},
  5396  		set(level) {
  5397  			self.level = level;
  5398  		}
  5399  	});
  5400  
  5401  	Object.defineProperty(builder, 'enabled', {
  5402  		enumerable: true,
  5403  		get() {
  5404  			return self.enabled;
  5405  		},
  5406  		set(enabled) {
  5407  			self.enabled = enabled;
  5408  		}
  5409  	});
  5410  
  5411  	// See below for fix regarding invisible grey/dim combination on Windows
  5412  	builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';
  5413  
  5414  	// `__proto__` is used because we must return a function, but there is
  5415  	// no way to create a function with a different prototype
  5416  	builder.__proto__ = proto; // eslint-disable-line no-proto
  5417  
  5418  	return builder;
  5419  }
  5420  
  5421  function applyStyle() {
  5422  	// Support varags, but simply cast to string in case there's only one arg
  5423  	const args = arguments;
  5424  	const argsLen = args.length;
  5425  	let str = String(arguments[0]);
  5426  
  5427  	if (argsLen === 0) {
  5428  		return '';
  5429  	}
  5430  
  5431  	if (argsLen > 1) {
  5432  		// Don't slice `arguments`, it prevents V8 optimizations
  5433  		for (let a = 1; a < argsLen; a++) {
  5434  			str += ' ' + args[a];
  5435  		}
  5436  	}
  5437  
  5438  	if (!this.enabled || this.level <= 0 || !str) {
  5439  		return this._empty ? '' : str;
  5440  	}
  5441  
  5442  	// Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,
  5443  	// see https://github.com/chalk/chalk/issues/58
  5444  	// If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.
  5445  	const originalDim = ansiStyles.dim.open;
  5446  	if (isSimpleWindowsTerm && this.hasGrey) {
  5447  		ansiStyles.dim.open = '';
  5448  	}
  5449  
  5450  	for (const code of this._styles.slice().reverse()) {
  5451  		// Replace any instances already present with a re-opening code
  5452  		// otherwise only the part of the string until said closing code
  5453  		// will be colored, and the rest will simply be 'plain'.
  5454  		str = code.open + str.replace(code.closeRe, code.open) + code.close;
  5455  
  5456  		// Close the styling before a linebreak and reopen
  5457  		// after next line to fix a bleed issue on macOS
  5458  		// https://github.com/chalk/chalk/pull/92
  5459  		str = str.replace(/\r?\n/g, `${code.close}$&${code.open}`);
  5460  	}
  5461  
  5462  	// Reset the original `dim` if we changed it to work around the Windows dimmed gray issue
  5463  	ansiStyles.dim.open = originalDim;
  5464  
  5465  	return str;
  5466  }
  5467  
  5468  function chalkTag(chalk, strings) {
  5469  	if (!Array.isArray(strings)) {
  5470  		// If chalk() was called by itself or with a string,
  5471  		// return the string itself as a string.
  5472  		return [].slice.call(arguments, 1).join(' ');
  5473  	}
  5474  
  5475  	const args = [].slice.call(arguments, 2);
  5476  	const parts = [strings.raw[0]];
  5477  
  5478  	for (let i = 1; i < strings.length; i++) {
  5479  		parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&'));
  5480  		parts.push(String(strings.raw[i]));
  5481  	}
  5482  
  5483  	return template(chalk, parts.join(''));
  5484  }
  5485  
  5486  Object.defineProperties(Chalk.prototype, styles);
  5487  
  5488  module.exports = Chalk(); // eslint-disable-line new-cap
  5489  module.exports.supportsColor = stdoutColor;
  5490  module.exports.default = module.exports; // For TypeScript
  5491  
  5492  
  5493  /***/ }),
  5494  /* 31 */
  5495  /***/ (function(module, exports) {
  5496  
  5497  var core = module.exports = { version: '2.5.7' };
  5498  if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
  5499  
  5500  
  5501  /***/ }),
  5502  /* 32 */
  5503  /***/ (function(module, exports, __webpack_require__) {
  5504  
  5505  // Copyright 2015 Joyent, Inc.
  5506  
  5507  var Buffer = __webpack_require__(15).Buffer;
  5508  
  5509  var algInfo = {
  5510  	'dsa': {
  5511  		parts: ['p', 'q', 'g', 'y'],
  5512  		sizePart: 'p'
  5513  	},
  5514  	'rsa': {
  5515  		parts: ['e', 'n'],
  5516  		sizePart: 'n'
  5517  	},
  5518  	'ecdsa': {
  5519  		parts: ['curve', 'Q'],
  5520  		sizePart: 'Q'
  5521  	},
  5522  	'ed25519': {
  5523  		parts: ['A'],
  5524  		sizePart: 'A'
  5525  	}
  5526  };
  5527  algInfo['curve25519'] = algInfo['ed25519'];
  5528  
  5529  var algPrivInfo = {
  5530  	'dsa': {
  5531  		parts: ['p', 'q', 'g', 'y', 'x']
  5532  	},
  5533  	'rsa': {
  5534  		parts: ['n', 'e', 'd', 'iqmp', 'p', 'q']
  5535  	},
  5536  	'ecdsa': {
  5537  		parts: ['curve', 'Q', 'd']
  5538  	},
  5539  	'ed25519': {
  5540  		parts: ['A', 'k']
  5541  	}
  5542  };
  5543  algPrivInfo['curve25519'] = algPrivInfo['ed25519'];
  5544  
  5545  var hashAlgs = {
  5546  	'md5': true,
  5547  	'sha1': true,
  5548  	'sha256': true,
  5549  	'sha384': true,
  5550  	'sha512': true
  5551  };
  5552  
  5553  /*
  5554   * Taken from
  5555   * http://csrc.nist.gov/groups/ST/toolkit/documents/dss/NISTReCur.pdf
  5556   */
  5557  var curves = {
  5558  	'nistp256': {
  5559  		size: 256,
  5560  		pkcs8oid: '1.2.840.10045.3.1.7',
  5561  		p: Buffer.from(('00' +
  5562  		    'ffffffff 00000001 00000000 00000000' +
  5563  		    '00000000 ffffffff ffffffff ffffffff').
  5564  		    replace(/ /g, ''), 'hex'),
  5565  		a: Buffer.from(('00' +
  5566  		    'FFFFFFFF 00000001 00000000 00000000' +
  5567  		    '00000000 FFFFFFFF FFFFFFFF FFFFFFFC').
  5568  		    replace(/ /g, ''), 'hex'),
  5569  		b: Buffer.from((
  5570  		    '5ac635d8 aa3a93e7 b3ebbd55 769886bc' +
  5571  		    '651d06b0 cc53b0f6 3bce3c3e 27d2604b').
  5572  		    replace(/ /g, ''), 'hex'),
  5573  		s: Buffer.from(('00' +
  5574  		    'c49d3608 86e70493 6a6678e1 139d26b7' +
  5575  		    '819f7e90').
  5576  		    replace(/ /g, ''), 'hex'),
  5577  		n: Buffer.from(('00' +
  5578  		    'ffffffff 00000000 ffffffff ffffffff' +
  5579  		    'bce6faad a7179e84 f3b9cac2 fc632551').
  5580  		    replace(/ /g, ''), 'hex'),
  5581  		G: Buffer.from(('04' +
  5582  		    '6b17d1f2 e12c4247 f8bce6e5 63a440f2' +
  5583  		    '77037d81 2deb33a0 f4a13945 d898c296' +
  5584  		    '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16' +
  5585  		    '2bce3357 6b315ece cbb64068 37bf51f5').
  5586  		    replace(/ /g, ''), 'hex')
  5587  	},
  5588  	'nistp384': {
  5589  		size: 384,
  5590  		pkcs8oid: '1.3.132.0.34',
  5591  		p: Buffer.from(('00' +
  5592  		    'ffffffff ffffffff ffffffff ffffffff' +
  5593  		    'ffffffff ffffffff ffffffff fffffffe' +
  5594  		    'ffffffff 00000000 00000000 ffffffff').
  5595  		    replace(/ /g, ''), 'hex'),
  5596  		a: Buffer.from(('00' +
  5597  		    'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' +
  5598  		    'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE' +
  5599  		    'FFFFFFFF 00000000 00000000 FFFFFFFC').
  5600  		    replace(/ /g, ''), 'hex'),
  5601  		b: Buffer.from((
  5602  		    'b3312fa7 e23ee7e4 988e056b e3f82d19' +
  5603  		    '181d9c6e fe814112 0314088f 5013875a' +
  5604  		    'c656398d 8a2ed19d 2a85c8ed d3ec2aef').
  5605  		    replace(/ /g, ''), 'hex'),
  5606  		s: Buffer.from(('00' +
  5607  		    'a335926a a319a27a 1d00896a 6773a482' +
  5608  		    '7acdac73').
  5609  		    replace(/ /g, ''), 'hex'),
  5610  		n: Buffer.from(('00' +
  5611  		    'ffffffff ffffffff ffffffff ffffffff' +
  5612  		    'ffffffff ffffffff c7634d81 f4372ddf' +
  5613  		    '581a0db2 48b0a77a ecec196a ccc52973').
  5614  		    replace(/ /g, ''), 'hex'),
  5615  		G: Buffer.from(('04' +
  5616  		    'aa87ca22 be8b0537 8eb1c71e f320ad74' +
  5617  		    '6e1d3b62 8ba79b98 59f741e0 82542a38' +
  5618  		    '5502f25d bf55296c 3a545e38 72760ab7' +
  5619  		    '3617de4a 96262c6f 5d9e98bf 9292dc29' +
  5620  		    'f8f41dbd 289a147c e9da3113 b5f0b8c0' +
  5621  		    '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f').
  5622  		    replace(/ /g, ''), 'hex')
  5623  	},
  5624  	'nistp521': {
  5625  		size: 521,
  5626  		pkcs8oid: '1.3.132.0.35',
  5627  		p: Buffer.from((
  5628  		    '01ffffff ffffffff ffffffff ffffffff' +
  5629  		    'ffffffff ffffffff ffffffff ffffffff' +
  5630  		    'ffffffff ffffffff ffffffff ffffffff' +
  5631  		    'ffffffff ffffffff ffffffff ffffffff' +
  5632  		    'ffff').replace(/ /g, ''), 'hex'),
  5633  		a: Buffer.from(('01FF' +
  5634  		    'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' +
  5635  		    'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' +
  5636  		    'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' +
  5637  		    'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFC').
  5638  		    replace(/ /g, ''), 'hex'),
  5639  		b: Buffer.from(('51' +
  5640  		    '953eb961 8e1c9a1f 929a21a0 b68540ee' +
  5641  		    'a2da725b 99b315f3 b8b48991 8ef109e1' +
  5642  		    '56193951 ec7e937b 1652c0bd 3bb1bf07' +
  5643  		    '3573df88 3d2c34f1 ef451fd4 6b503f00').
  5644  		    replace(/ /g, ''), 'hex'),
  5645  		s: Buffer.from(('00' +
  5646  		    'd09e8800 291cb853 96cc6717 393284aa' +
  5647  		    'a0da64ba').replace(/ /g, ''), 'hex'),
  5648  		n: Buffer.from(('01ff' +
  5649  		    'ffffffff ffffffff ffffffff ffffffff' +
  5650  		    'ffffffff ffffffff ffffffff fffffffa' +
  5651  		    '51868783 bf2f966b 7fcc0148 f709a5d0' +
  5652  		    '3bb5c9b8 899c47ae bb6fb71e 91386409').
  5653  		    replace(/ /g, ''), 'hex'),
  5654  		G: Buffer.from(('04' +
  5655  		    '00c6 858e06b7 0404e9cd 9e3ecb66 2395b442' +
  5656  		         '9c648139 053fb521 f828af60 6b4d3dba' +
  5657  		         'a14b5e77 efe75928 fe1dc127 a2ffa8de' +
  5658  		         '3348b3c1 856a429b f97e7e31 c2e5bd66' +
  5659  		    '0118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9' +
  5660  		         '98f54449 579b4468 17afbd17 273e662c' +
  5661  		         '97ee7299 5ef42640 c550b901 3fad0761' +
  5662  		         '353c7086 a272c240 88be9476 9fd16650').
  5663  		    replace(/ /g, ''), 'hex')
  5664  	}
  5665  };
  5666  
  5667  module.exports = {
  5668  	info: algInfo,
  5669  	privInfo: algPrivInfo,
  5670  	hashAlgs: hashAlgs,
  5671  	curves: curves
  5672  };
  5673  
  5674  
  5675  /***/ }),
  5676  /* 33 */
  5677  /***/ (function(module, exports, __webpack_require__) {
  5678  
  5679  // Copyright 2017 Joyent, Inc.
  5680  
  5681  module.exports = PrivateKey;
  5682  
  5683  var assert = __webpack_require__(16);
  5684  var Buffer = __webpack_require__(15).Buffer;
  5685  var algs = __webpack_require__(32);
  5686  var crypto = __webpack_require__(11);
  5687  var Fingerprint = __webpack_require__(156);
  5688  var Signature = __webpack_require__(75);
  5689  var errs = __webpack_require__(74);
  5690  var util = __webpack_require__(3);
  5691  var utils = __webpack_require__(26);
  5692  var dhe = __webpack_require__(325);
  5693  var generateECDSA = dhe.generateECDSA;
  5694  var generateED25519 = dhe.generateED25519;
  5695  var edCompat;
  5696  var nacl;
  5697  
  5698  try {
  5699  	edCompat = __webpack_require__(454);
  5700  } catch (e) {
  5701  	/* Just continue through, and bail out if we try to use it. */
  5702  }
  5703  
  5704  var Key = __webpack_require__(27);
  5705  
  5706  var InvalidAlgorithmError = errs.InvalidAlgorithmError;
  5707  var KeyParseError = errs.KeyParseError;
  5708  var KeyEncryptedError = errs.KeyEncryptedError;
  5709  
  5710  var formats = {};
  5711  formats['auto'] = __webpack_require__(455);
  5712  formats['pem'] = __webpack_require__(86);
  5713  formats['pkcs1'] = __webpack_require__(327);
  5714  formats['pkcs8'] = __webpack_require__(157);
  5715  formats['rfc4253'] = __webpack_require__(103);
  5716  formats['ssh-private'] = __webpack_require__(193);
  5717  formats['openssh'] = formats['ssh-private'];
  5718  formats['ssh'] = formats['ssh-private'];
  5719  formats['dnssec'] = __webpack_require__(326);
  5720  
  5721  function PrivateKey(opts) {
  5722  	assert.object(opts, 'options');
  5723  	Key.call(this, opts);
  5724  
  5725  	this._pubCache = undefined;
  5726  }
  5727  util.inherits(PrivateKey, Key);
  5728  
  5729  PrivateKey.formats = formats;
  5730  
  5731  PrivateKey.prototype.toBuffer = function (format, options) {
  5732  	if (format === undefined)
  5733  		format = 'pkcs1';
  5734  	assert.string(format, 'format');
  5735  	assert.object(formats[format], 'formats[format]');
  5736  	assert.optionalObject(options, 'options');
  5737  
  5738  	return (formats[format].write(this, options));
  5739  };
  5740  
  5741  PrivateKey.prototype.hash = function (algo) {
  5742  	return (this.toPublic().hash(algo));
  5743  };
  5744  
  5745  PrivateKey.prototype.toPublic = function () {
  5746  	if (this._pubCache)
  5747  		return (this._pubCache);
  5748  
  5749  	var algInfo = algs.info[this.type];
  5750  	var pubParts = [];
  5751  	for (var i = 0; i < algInfo.parts.length; ++i) {
  5752  		var p = algInfo.parts[i];
  5753  		pubParts.push(this.part[p]);
  5754  	}
  5755  
  5756  	this._pubCache = new Key({
  5757  		type: this.type,
  5758  		source: this,
  5759  		parts: pubParts
  5760  	});
  5761  	if (this.comment)
  5762  		this._pubCache.comment = this.comment;
  5763  	return (this._pubCache);
  5764  };
  5765  
  5766  PrivateKey.prototype.derive = function (newType) {
  5767  	assert.string(newType, 'type');
  5768  	var priv, pub, pair;
  5769  
  5770  	if (this.type === 'ed25519' && newType === 'curve25519') {
  5771  		if (nacl === undefined)
  5772  			nacl = __webpack_require__(76);
  5773  
  5774  		priv = this.part.k.data;
  5775  		if (priv[0] === 0x00)
  5776  			priv = priv.slice(1);
  5777  
  5778  		pair = nacl.box.keyPair.fromSecretKey(new Uint8Array(priv));
  5779  		pub = Buffer.from(pair.publicKey);
  5780  
  5781  		return (new PrivateKey({
  5782  			type: 'curve25519',
  5783  			parts: [
  5784  				{ name: 'A', data: utils.mpNormalize(pub) },
  5785  				{ name: 'k', data: utils.mpNormalize(priv) }
  5786  			]
  5787  		}));
  5788  	} else if (this.type === 'curve25519' && newType === 'ed25519') {
  5789  		if (nacl === undefined)
  5790  			nacl = __webpack_require__(76);
  5791  
  5792  		priv = this.part.k.data;
  5793  		if (priv[0] === 0x00)
  5794  			priv = priv.slice(1);
  5795  
  5796  		pair = nacl.sign.keyPair.fromSeed(new Uint8Array(priv));
  5797  		pub = Buffer.from(pair.publicKey);
  5798  
  5799  		return (new PrivateKey({
  5800  			type: 'ed25519',
  5801  			parts: [
  5802  				{ name: 'A', data: utils.mpNormalize(pub) },
  5803  				{ name: 'k', data: utils.mpNormalize(priv) }
  5804  			]
  5805  		}));
  5806  	}
  5807  	throw (new Error('Key derivation not supported from ' + this.type +
  5808  	    ' to ' + newType));
  5809  };
  5810  
  5811  PrivateKey.prototype.createVerify = function (hashAlgo) {
  5812  	return (this.toPublic().createVerify(hashAlgo));
  5813  };
  5814  
  5815  PrivateKey.prototype.createSign = function (hashAlgo) {
  5816  	if (hashAlgo === undefined)
  5817  		hashAlgo = this.defaultHashAlgorithm();
  5818  	assert.string(hashAlgo, 'hash algorithm');
  5819  
  5820  	/* ED25519 is not supported by OpenSSL, use a javascript impl. */
  5821  	if (this.type === 'ed25519' && edCompat !== undefined)
  5822  		return (new edCompat.Signer(this, hashAlgo));
  5823  	if (this.type === 'curve25519')
  5824  		throw (new Error('Curve25519 keys are not suitable for ' +
  5825  		    'signing or verification'));
  5826  
  5827  	var v, nm, err;
  5828  	try {
  5829  		nm = hashAlgo.toUpperCase();
  5830  		v = crypto.createSign(nm);
  5831  	} catch (e) {
  5832  		err = e;
  5833  	}
  5834  	if (v === undefined || (err instanceof Error &&
  5835  	    err.message.match(/Unknown message digest/))) {
  5836  		nm = 'RSA-';
  5837  		nm += hashAlgo.toUpperCase();
  5838  		v = crypto.createSign(nm);
  5839  	}
  5840  	assert.ok(v, 'failed to create verifier');
  5841  	var oldSign = v.sign.bind(v);
  5842  	var key = this.toBuffer('pkcs1');
  5843  	var type = this.type;
  5844  	var curve = this.curve;
  5845  	v.sign = function () {
  5846  		var sig = oldSign(key);
  5847  		if (typeof (sig) === 'string')
  5848  			sig = Buffer.from(sig, 'binary');
  5849  		sig = Signature.parse(sig, type, 'asn1');
  5850  		sig.hashAlgorithm = hashAlgo;
  5851  		sig.curve = curve;
  5852  		return (sig);
  5853  	};
  5854  	return (v);
  5855  };
  5856  
  5857  PrivateKey.parse = function (data, format, options) {
  5858  	if (typeof (data) !== 'string')
  5859  		assert.buffer(data, 'data');
  5860  	if (format === undefined)
  5861  		format = 'auto';
  5862  	assert.string(format, 'format');
  5863  	if (typeof (options) === 'string')
  5864  		options = { filename: options };
  5865  	assert.optionalObject(options, 'options');
  5866  	if (options === undefined)
  5867  		options = {};
  5868  	assert.optionalString(options.filename, 'options.filename');
  5869  	if (options.filename === undefined)
  5870  		options.filename = '(unnamed)';
  5871  
  5872  	assert.object(formats[format], 'formats[format]');
  5873  
  5874  	try {
  5875  		var k = formats[format].read(data, options);
  5876  		assert.ok(k instanceof PrivateKey, 'key is not a private key');
  5877  		if (!k.comment)
  5878  			k.comment = options.filename;
  5879  		return (k);
  5880  	} catch (e) {
  5881  		if (e.name === 'KeyEncryptedError')
  5882  			throw (e);
  5883  		throw (new KeyParseError(options.filename, format, e));
  5884  	}
  5885  };
  5886  
  5887  PrivateKey.isPrivateKey = function (obj, ver) {
  5888  	return (utils.isCompatible(obj, PrivateKey, ver));
  5889  };
  5890  
  5891  PrivateKey.generate = function (type, options) {
  5892  	if (options === undefined)
  5893  		options = {};
  5894  	assert.object(options, 'options');
  5895  
  5896  	switch (type) {
  5897  	case 'ecdsa':
  5898  		if (options.curve === undefined)
  5899  			options.curve = 'nistp256';
  5900  		assert.string(options.curve, 'options.curve');
  5901  		return (generateECDSA(options.curve));
  5902  	case 'ed25519':
  5903  		return (generateED25519());
  5904  	default:
  5905  		throw (new Error('Key generation not supported with key ' +
  5906  		    'type "' + type + '"'));
  5907  	}
  5908  };
  5909  
  5910  /*
  5911   * API versions for PrivateKey:
  5912   * [1,0] -- initial ver
  5913   * [1,1] -- added auto, pkcs[18], openssh/ssh-private formats
  5914   * [1,2] -- added defaultHashAlgorithm
  5915   * [1,3] -- added derive, ed, createDH
  5916   * [1,4] -- first tagged version
  5917   * [1,5] -- changed ed25519 part names and format
  5918   */
  5919  PrivateKey.prototype._sshpkApiVersion = [1, 5];
  5920  
  5921  PrivateKey._oldVersionDetect = function (obj) {
  5922  	assert.func(obj.toPublic);
  5923  	assert.func(obj.createSign);
  5924  	if (obj.derive)
  5925  		return ([1, 3]);
  5926  	if (obj.defaultHashAlgorithm)
  5927  		return ([1, 2]);
  5928  	if (obj.formats['auto'])
  5929  		return ([1, 1]);
  5930  	return ([1, 0]);
  5931  };
  5932  
  5933  
  5934  /***/ }),
  5935  /* 34 */
  5936  /***/ (function(module, exports, __webpack_require__) {
  5937  
  5938  "use strict";
  5939  
  5940  
  5941  Object.defineProperty(exports, "__esModule", {
  5942    value: true
  5943  });
  5944  exports.wrapLifecycle = exports.run = exports.install = exports.Install = undefined;
  5945  
  5946  var _extends2;
  5947  
  5948  function _load_extends() {
  5949    return _extends2 = _interopRequireDefault(__webpack_require__(20));
  5950  }
  5951  
  5952  var _asyncToGenerator2;
  5953  
  5954  function _load_asyncToGenerator() {
  5955    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
  5956  }
  5957  
  5958  let install = exports.install = (() => {
  5959    var _ref29 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, lockfile) {
  5960      yield wrapLifecycle(config, flags, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  5961        const install = new Install(flags, config, reporter, lockfile);
  5962        yield install.init();
  5963      }));
  5964    });
  5965  
  5966    return function install(_x7, _x8, _x9, _x10) {
  5967      return _ref29.apply(this, arguments);
  5968    };
  5969  })();
  5970  
  5971  let run = exports.run = (() => {
  5972    var _ref31 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
  5973      let lockfile;
  5974      let error = 'installCommandRenamed';
  5975      if (flags.lockfile === false) {
  5976        lockfile = new (_lockfile || _load_lockfile()).default();
  5977      } else {
  5978        lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.lockfileFolder, reporter);
  5979      }
  5980  
  5981      if (args.length) {
  5982        const exampleArgs = args.slice();
  5983  
  5984        if (flags.saveDev) {
  5985          exampleArgs.push('--dev');
  5986        }
  5987        if (flags.savePeer) {
  5988          exampleArgs.push('--peer');
  5989        }
  5990        if (flags.saveOptional) {
  5991          exampleArgs.push('--optional');
  5992        }
  5993        if (flags.saveExact) {
  5994          exampleArgs.push('--exact');
  5995        }
  5996        if (flags.saveTilde) {
  5997          exampleArgs.push('--tilde');
  5998        }
  5999        let command = 'add';
  6000        if (flags.global) {
  6001          error = 'globalFlagRemoved';
  6002          command = 'global add';
  6003        }
  6004        throw new (_errors || _load_errors()).MessageError(reporter.lang(error, `yarn ${command} ${exampleArgs.join(' ')}`));
  6005      }
  6006  
  6007      yield install(config, reporter, flags, lockfile);
  6008    });
  6009  
  6010    return function run(_x11, _x12, _x13, _x14) {
  6011      return _ref31.apply(this, arguments);
  6012    };
  6013  })();
  6014  
  6015  let wrapLifecycle = exports.wrapLifecycle = (() => {
  6016    var _ref32 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, flags, factory) {
  6017      yield config.executeLifecycleScript('preinstall');
  6018  
  6019      yield factory();
  6020  
  6021      // npm behaviour, seems kinda funky but yay compatibility
  6022      yield config.executeLifecycleScript('install');
  6023      yield config.executeLifecycleScript('postinstall');
  6024  
  6025      if (!config.production) {
  6026        if (!config.disablePrepublish) {
  6027          yield config.executeLifecycleScript('prepublish');
  6028        }
  6029        yield config.executeLifecycleScript('prepare');
  6030      }
  6031    });
  6032  
  6033    return function wrapLifecycle(_x15, _x16, _x17) {
  6034      return _ref32.apply(this, arguments);
  6035    };
  6036  })();
  6037  
  6038  exports.hasWrapper = hasWrapper;
  6039  exports.setFlags = setFlags;
  6040  
  6041  var _objectPath;
  6042  
  6043  function _load_objectPath() {
  6044    return _objectPath = _interopRequireDefault(__webpack_require__(304));
  6045  }
  6046  
  6047  var _hooks;
  6048  
  6049  function _load_hooks() {
  6050    return _hooks = __webpack_require__(368);
  6051  }
  6052  
  6053  var _index;
  6054  
  6055  function _load_index() {
  6056    return _index = _interopRequireDefault(__webpack_require__(218));
  6057  }
  6058  
  6059  var _errors;
  6060  
  6061  function _load_errors() {
  6062    return _errors = __webpack_require__(6);
  6063  }
  6064  
  6065  var _integrityChecker;
  6066  
  6067  function _load_integrityChecker() {
  6068    return _integrityChecker = _interopRequireDefault(__webpack_require__(206));
  6069  }
  6070  
  6071  var _lockfile;
  6072  
  6073  function _load_lockfile() {
  6074    return _lockfile = _interopRequireDefault(__webpack_require__(19));
  6075  }
  6076  
  6077  var _lockfile2;
  6078  
  6079  function _load_lockfile2() {
  6080    return _lockfile2 = __webpack_require__(19);
  6081  }
  6082  
  6083  var _packageFetcher;
  6084  
  6085  function _load_packageFetcher() {
  6086    return _packageFetcher = _interopRequireWildcard(__webpack_require__(208));
  6087  }
  6088  
  6089  var _packageInstallScripts;
  6090  
  6091  function _load_packageInstallScripts() {
  6092    return _packageInstallScripts = _interopRequireDefault(__webpack_require__(525));
  6093  }
  6094  
  6095  var _packageCompatibility;
  6096  
  6097  function _load_packageCompatibility() {
  6098    return _packageCompatibility = _interopRequireWildcard(__webpack_require__(207));
  6099  }
  6100  
  6101  var _packageResolver;
  6102  
  6103  function _load_packageResolver() {
  6104    return _packageResolver = _interopRequireDefault(__webpack_require__(360));
  6105  }
  6106  
  6107  var _packageLinker;
  6108  
  6109  function _load_packageLinker() {
  6110    return _packageLinker = _interopRequireDefault(__webpack_require__(209));
  6111  }
  6112  
  6113  var _index2;
  6114  
  6115  function _load_index2() {
  6116    return _index2 = __webpack_require__(58);
  6117  }
  6118  
  6119  var _index3;
  6120  
  6121  function _load_index3() {
  6122    return _index3 = __webpack_require__(78);
  6123  }
  6124  
  6125  var _autoclean;
  6126  
  6127  function _load_autoclean() {
  6128    return _autoclean = __webpack_require__(348);
  6129  }
  6130  
  6131  var _constants;
  6132  
  6133  function _load_constants() {
  6134    return _constants = _interopRequireWildcard(__webpack_require__(8));
  6135  }
  6136  
  6137  var _normalizePattern;
  6138  
  6139  function _load_normalizePattern() {
  6140    return _normalizePattern = __webpack_require__(37);
  6141  }
  6142  
  6143  var _fs;
  6144  
  6145  function _load_fs() {
  6146    return _fs = _interopRequireWildcard(__webpack_require__(5));
  6147  }
  6148  
  6149  var _map;
  6150  
  6151  function _load_map() {
  6152    return _map = _interopRequireDefault(__webpack_require__(29));
  6153  }
  6154  
  6155  var _yarnVersion;
  6156  
  6157  function _load_yarnVersion() {
  6158    return _yarnVersion = __webpack_require__(105);
  6159  }
  6160  
  6161  var _generatePnpMap;
  6162  
  6163  function _load_generatePnpMap() {
  6164    return _generatePnpMap = __webpack_require__(547);
  6165  }
  6166  
  6167  var _workspaceLayout;
  6168  
  6169  function _load_workspaceLayout() {
  6170    return _workspaceLayout = _interopRequireDefault(__webpack_require__(90));
  6171  }
  6172  
  6173  var _resolutionMap;
  6174  
  6175  function _load_resolutionMap() {
  6176    return _resolutionMap = _interopRequireDefault(__webpack_require__(212));
  6177  }
  6178  
  6179  var _guessName;
  6180  
  6181  function _load_guessName() {
  6182    return _guessName = _interopRequireDefault(__webpack_require__(169));
  6183  }
  6184  
  6185  var _audit;
  6186  
  6187  function _load_audit() {
  6188    return _audit = _interopRequireDefault(__webpack_require__(347));
  6189  }
  6190  
  6191  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
  6192  
  6193  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  6194  
  6195  const deepEqual = __webpack_require__(599);
  6196  
  6197  const emoji = __webpack_require__(302);
  6198  const invariant = __webpack_require__(9);
  6199  const path = __webpack_require__(0);
  6200  const semver = __webpack_require__(22);
  6201  const uuid = __webpack_require__(120);
  6202  const ssri = __webpack_require__(65);
  6203  
  6204  const ONE_DAY = 1000 * 60 * 60 * 24;
  6205  
  6206  /**
  6207   * Try and detect the installation method for Yarn and provide a command to update it with.
  6208   */
  6209  
  6210  function getUpdateCommand(installationMethod) {
  6211    if (installationMethod === 'tar') {
  6212      return `curl --compressed -o- -L ${(_constants || _load_constants()).YARN_INSTALLER_SH} | bash`;
  6213    }
  6214  
  6215    if (installationMethod === 'homebrew') {
  6216      return 'brew upgrade yarn';
  6217    }
  6218  
  6219    if (installationMethod === 'deb') {
  6220      return 'sudo apt-get update && sudo apt-get install yarn';
  6221    }
  6222  
  6223    if (installationMethod === 'rpm') {
  6224      return 'sudo yum install yarn';
  6225    }
  6226  
  6227    if (installationMethod === 'npm') {
  6228      return 'npm install --global yarn';
  6229    }
  6230  
  6231    if (installationMethod === 'chocolatey') {
  6232      return 'choco upgrade yarn';
  6233    }
  6234  
  6235    if (installationMethod === 'apk') {
  6236      return 'apk update && apk add -u yarn';
  6237    }
  6238  
  6239    if (installationMethod === 'portage') {
  6240      return 'sudo emerge --sync && sudo emerge -au sys-apps/yarn';
  6241    }
  6242  
  6243    return null;
  6244  }
  6245  
  6246  function getUpdateInstaller(installationMethod) {
  6247    // Windows
  6248    if (installationMethod === 'msi') {
  6249      return (_constants || _load_constants()).YARN_INSTALLER_MSI;
  6250    }
  6251  
  6252    return null;
  6253  }
  6254  
  6255  function normalizeFlags(config, rawFlags) {
  6256    const flags = {
  6257      // install
  6258      har: !!rawFlags.har,
  6259      ignorePlatform: !!rawFlags.ignorePlatform,
  6260      ignoreEngines: !!rawFlags.ignoreEngines,
  6261      ignoreScripts: !!rawFlags.ignoreScripts,
  6262      ignoreOptional: !!rawFlags.ignoreOptional,
  6263      force: !!rawFlags.force,
  6264      flat: !!rawFlags.flat,
  6265      lockfile: rawFlags.lockfile !== false,
  6266      pureLockfile: !!rawFlags.pureLockfile,
  6267      updateChecksums: !!rawFlags.updateChecksums,
  6268      skipIntegrityCheck: !!rawFlags.skipIntegrityCheck,
  6269      frozenLockfile: !!rawFlags.frozenLockfile,
  6270      linkDuplicates: !!rawFlags.linkDuplicates,
  6271      checkFiles: !!rawFlags.checkFiles,
  6272      audit: !!rawFlags.audit,
  6273  
  6274      // add
  6275      peer: !!rawFlags.peer,
  6276      dev: !!rawFlags.dev,
  6277      optional: !!rawFlags.optional,
  6278      exact: !!rawFlags.exact,
  6279      tilde: !!rawFlags.tilde,
  6280      ignoreWorkspaceRootCheck: !!rawFlags.ignoreWorkspaceRootCheck,
  6281  
  6282      // outdated, update-interactive
  6283      includeWorkspaceDeps: !!rawFlags.includeWorkspaceDeps,
  6284  
  6285      // add, remove, update
  6286      workspaceRootIsCwd: rawFlags.workspaceRootIsCwd !== false
  6287    };
  6288  
  6289    if (config.getOption('ignore-scripts')) {
  6290      flags.ignoreScripts = true;
  6291    }
  6292  
  6293    if (config.getOption('ignore-platform')) {
  6294      flags.ignorePlatform = true;
  6295    }
  6296  
  6297    if (config.getOption('ignore-engines')) {
  6298      flags.ignoreEngines = true;
  6299    }
  6300  
  6301    if (config.getOption('ignore-optional')) {
  6302      flags.ignoreOptional = true;
  6303    }
  6304  
  6305    if (config.getOption('force')) {
  6306      flags.force = true;
  6307    }
  6308  
  6309    return flags;
  6310  }
  6311  
  6312  class Install {
  6313    constructor(flags, config, reporter, lockfile) {
  6314      this.rootManifestRegistries = [];
  6315      this.rootPatternsToOrigin = (0, (_map || _load_map()).default)();
  6316      this.lockfile = lockfile;
  6317      this.reporter = reporter;
  6318      this.config = config;
  6319      this.flags = normalizeFlags(config, flags);
  6320      this.resolutions = (0, (_map || _load_map()).default)(); // Legacy resolutions field used for flat install mode
  6321      this.resolutionMap = new (_resolutionMap || _load_resolutionMap()).default(config); // Selective resolutions for nested dependencies
  6322      this.resolver = new (_packageResolver || _load_packageResolver()).default(config, lockfile, this.resolutionMap);
  6323      this.integrityChecker = new (_integrityChecker || _load_integrityChecker()).default(config);
  6324      this.linker = new (_packageLinker || _load_packageLinker()).default(config, this.resolver);
  6325      this.scripts = new (_packageInstallScripts || _load_packageInstallScripts()).default(config, this.resolver, this.flags.force);
  6326    }
  6327  
  6328    /**
  6329     * Create a list of dependency requests from the current directories manifests.
  6330     */
  6331  
  6332    fetchRequestFromCwd(excludePatterns = [], ignoreUnusedPatterns = false) {
  6333      var _this = this;
  6334  
  6335      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  6336        const patterns = [];
  6337        const deps = [];
  6338        let resolutionDeps = [];
  6339        const manifest = {};
  6340  
  6341        const ignorePatterns = [];
  6342        const usedPatterns = [];
  6343        let workspaceLayout;
  6344  
  6345        // some commands should always run in the context of the entire workspace
  6346        const cwd = _this.flags.includeWorkspaceDeps || _this.flags.workspaceRootIsCwd ? _this.config.lockfileFolder : _this.config.cwd;
  6347  
  6348        // non-workspaces are always root, otherwise check for workspace root
  6349        const cwdIsRoot = !_this.config.workspaceRootFolder || _this.config.lockfileFolder === cwd;
  6350  
  6351        // exclude package names that are in install args
  6352        const excludeNames = [];
  6353        for (var _iterator = excludePatterns, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
  6354          var _ref;
  6355  
  6356          if (_isArray) {
  6357            if (_i >= _iterator.length) break;
  6358            _ref = _iterator[_i++];
  6359          } else {
  6360            _i = _iterator.next();
  6361            if (_i.done) break;
  6362            _ref = _i.value;
  6363          }
  6364  
  6365          const pattern = _ref;
  6366  
  6367          if ((0, (_index3 || _load_index3()).getExoticResolver)(pattern)) {
  6368            excludeNames.push((0, (_guessName || _load_guessName()).default)(pattern));
  6369          } else {
  6370            // extract the name
  6371            const parts = (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(pattern);
  6372            excludeNames.push(parts.name);
  6373          }
  6374        }
  6375  
  6376        const stripExcluded = function stripExcluded(manifest) {
  6377          for (var _iterator2 = excludeNames, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
  6378            var _ref2;
  6379  
  6380            if (_isArray2) {
  6381              if (_i2 >= _iterator2.length) break;
  6382              _ref2 = _iterator2[_i2++];
  6383            } else {
  6384              _i2 = _iterator2.next();
  6385              if (_i2.done) break;
  6386              _ref2 = _i2.value;
  6387            }
  6388  
  6389            const exclude = _ref2;
  6390  
  6391            if (manifest.dependencies && manifest.dependencies[exclude]) {
  6392              delete manifest.dependencies[exclude];
  6393            }
  6394            if (manifest.devDependencies && manifest.devDependencies[exclude]) {
  6395              delete manifest.devDependencies[exclude];
  6396            }
  6397            if (manifest.optionalDependencies && manifest.optionalDependencies[exclude]) {
  6398              delete manifest.optionalDependencies[exclude];
  6399            }
  6400          }
  6401        };
  6402  
  6403        for (var _iterator3 = Object.keys((_index2 || _load_index2()).registries), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
  6404          var _ref3;
  6405  
  6406          if (_isArray3) {
  6407            if (_i3 >= _iterator3.length) break;
  6408            _ref3 = _iterator3[_i3++];
  6409          } else {
  6410            _i3 = _iterator3.next();
  6411            if (_i3.done) break;
  6412            _ref3 = _i3.value;
  6413          }
  6414  
  6415          const registry = _ref3;
  6416  
  6417          const filename = (_index2 || _load_index2()).registries[registry].filename;
  6418  
  6419          const loc = path.join(cwd, filename);
  6420          if (!(yield (_fs || _load_fs()).exists(loc))) {
  6421            continue;
  6422          }
  6423  
  6424          _this.rootManifestRegistries.push(registry);
  6425  
  6426          const projectManifestJson = yield _this.config.readJson(loc);
  6427          yield (0, (_index || _load_index()).default)(projectManifestJson, cwd, _this.config, cwdIsRoot);
  6428  
  6429          Object.assign(_this.resolutions, projectManifestJson.resolutions);
  6430          Object.assign(manifest, projectManifestJson);
  6431  
  6432          _this.resolutionMap.init(_this.resolutions);
  6433          for (var _iterator4 = Object.keys(_this.resolutionMap.resolutionsByPackage), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
  6434            var _ref4;
  6435  
  6436            if (_isArray4) {
  6437              if (_i4 >= _iterator4.length) break;
  6438              _ref4 = _iterator4[_i4++];
  6439            } else {
  6440              _i4 = _iterator4.next();
  6441              if (_i4.done) break;
  6442              _ref4 = _i4.value;
  6443            }
  6444  
  6445            const packageName = _ref4;
  6446  
  6447            const optional = (_objectPath || _load_objectPath()).default.has(manifest.optionalDependencies, packageName) && _this.flags.ignoreOptional;
  6448            for (var _iterator8 = _this.resolutionMap.resolutionsByPackage[packageName], _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {
  6449              var _ref9;
  6450  
  6451              if (_isArray8) {
  6452                if (_i8 >= _iterator8.length) break;
  6453                _ref9 = _iterator8[_i8++];
  6454              } else {
  6455                _i8 = _iterator8.next();
  6456                if (_i8.done) break;
  6457                _ref9 = _i8.value;
  6458              }
  6459  
  6460              const _ref8 = _ref9;
  6461              const pattern = _ref8.pattern;
  6462  
  6463              resolutionDeps = [...resolutionDeps, { registry, pattern, optional, hint: 'resolution' }];
  6464            }
  6465          }
  6466  
  6467          const pushDeps = function pushDeps(depType, manifest, { hint, optional }, isUsed) {
  6468            if (ignoreUnusedPatterns && !isUsed) {
  6469              return;
  6470            }
  6471            // We only take unused dependencies into consideration to get deterministic hoisting.
  6472            // Since flat mode doesn't care about hoisting and everything is top level and specified then we can safely
  6473            // leave these out.
  6474            if (_this.flags.flat && !isUsed) {
  6475              return;
  6476            }
  6477            const depMap = manifest[depType];
  6478            for (const name in depMap) {
  6479              if (excludeNames.indexOf(name) >= 0) {
  6480                continue;
  6481              }
  6482  
  6483              let pattern = name;
  6484              if (!_this.lockfile.getLocked(pattern)) {
  6485                // when we use --save we save the dependency to the lockfile with just the name rather than the
  6486                // version combo
  6487                pattern += '@' + depMap[name];
  6488              }
  6489  
  6490              // normalization made sure packages are mentioned only once
  6491              if (isUsed) {
  6492                usedPatterns.push(pattern);
  6493              } else {
  6494                ignorePatterns.push(pattern);
  6495              }
  6496  
  6497              _this.rootPatternsToOrigin[pattern] = depType;
  6498              patterns.push(pattern);
  6499              deps.push({ pattern, registry, hint, optional, workspaceName: manifest.name, workspaceLoc: manifest._loc });
  6500            }
  6501          };
  6502  
  6503          if (cwdIsRoot) {
  6504            pushDeps('dependencies', projectManifestJson, { hint: null, optional: false }, true);
  6505            pushDeps('devDependencies', projectManifestJson, { hint: 'dev', optional: false }, !_this.config.production);
  6506            pushDeps('optionalDependencies', projectManifestJson, { hint: 'optional', optional: true }, true);
  6507          }
  6508  
  6509          if (_this.config.workspaceRootFolder) {
  6510            const workspaceLoc = cwdIsRoot ? loc : path.join(_this.config.lockfileFolder, filename);
  6511            const workspacesRoot = path.dirname(workspaceLoc);
  6512  
  6513            let workspaceManifestJson = projectManifestJson;
  6514            if (!cwdIsRoot) {
  6515              // the manifest we read before was a child workspace, so get the root
  6516              workspaceManifestJson = yield _this.config.readJson(workspaceLoc);
  6517              yield (0, (_index || _load_index()).default)(workspaceManifestJson, workspacesRoot, _this.config, true);
  6518            }
  6519  
  6520            const workspaces = yield _this.config.resolveWorkspaces(workspacesRoot, workspaceManifestJson);
  6521            workspaceLayout = new (_workspaceLayout || _load_workspaceLayout()).default(workspaces, _this.config);
  6522  
  6523            // add virtual manifest that depends on all workspaces, this way package hoisters and resolvers will work fine
  6524            const workspaceDependencies = (0, (_extends2 || _load_extends()).default)({}, workspaceManifestJson.dependencies);
  6525            for (var _iterator5 = Object.keys(workspaces), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
  6526              var _ref5;
  6527  
  6528              if (_isArray5) {
  6529                if (_i5 >= _iterator5.length) break;
  6530                _ref5 = _iterator5[_i5++];
  6531              } else {
  6532                _i5 = _iterator5.next();
  6533                if (_i5.done) break;
  6534                _ref5 = _i5.value;
  6535              }
  6536  
  6537              const workspaceName = _ref5;
  6538  
  6539              const workspaceManifest = workspaces[workspaceName].manifest;
  6540              workspaceDependencies[workspaceName] = workspaceManifest.version;
  6541  
  6542              // include dependencies from all workspaces
  6543              if (_this.flags.includeWorkspaceDeps) {
  6544                pushDeps('dependencies', workspaceManifest, { hint: null, optional: false }, true);
  6545                pushDeps('devDependencies', workspaceManifest, { hint: 'dev', optional: false }, !_this.config.production);
  6546                pushDeps('optionalDependencies', workspaceManifest, { hint: 'optional', optional: true }, true);
  6547              }
  6548            }
  6549            const virtualDependencyManifest = {
  6550              _uid: '',
  6551              name: `workspace-aggregator-${uuid.v4()}`,
  6552              version: '1.0.0',
  6553              _registry: 'npm',
  6554              _loc: workspacesRoot,
  6555              dependencies: workspaceDependencies,
  6556              devDependencies: (0, (_extends2 || _load_extends()).default)({}, workspaceManifestJson.devDependencies),
  6557              optionalDependencies: (0, (_extends2 || _load_extends()).default)({}, workspaceManifestJson.optionalDependencies),
  6558              private: workspaceManifestJson.private,
  6559              workspaces: workspaceManifestJson.workspaces
  6560            };
  6561            workspaceLayout.virtualManifestName = virtualDependencyManifest.name;
  6562            const virtualDep = {};
  6563            virtualDep[virtualDependencyManifest.name] = virtualDependencyManifest.version;
  6564            workspaces[virtualDependencyManifest.name] = { loc: workspacesRoot, manifest: virtualDependencyManifest };
  6565  
  6566            // ensure dependencies that should be excluded are stripped from the correct manifest
  6567            stripExcluded(cwdIsRoot ? virtualDependencyManifest : workspaces[projectManifestJson.name].manifest);
  6568  
  6569            pushDeps('workspaces', { workspaces: virtualDep }, { hint: 'workspaces', optional: false }, true);
  6570  
  6571            const implicitWorkspaceDependencies = (0, (_extends2 || _load_extends()).default)({}, workspaceDependencies);
  6572  
  6573            for (var _iterator6 = (_constants || _load_constants()).OWNED_DEPENDENCY_TYPES, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
  6574              var _ref6;
  6575  
  6576              if (_isArray6) {
  6577                if (_i6 >= _iterator6.length) break;
  6578                _ref6 = _iterator6[_i6++];
  6579              } else {
  6580                _i6 = _iterator6.next();
  6581                if (_i6.done) break;
  6582                _ref6 = _i6.value;
  6583              }
  6584  
  6585              const type = _ref6;
  6586  
  6587              for (var _iterator7 = Object.keys(projectManifestJson[type] || {}), _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
  6588                var _ref7;
  6589  
  6590                if (_isArray7) {
  6591                  if (_i7 >= _iterator7.length) break;
  6592                  _ref7 = _iterator7[_i7++];
  6593                } else {
  6594                  _i7 = _iterator7.next();
  6595                  if (_i7.done) break;
  6596                  _ref7 = _i7.value;
  6597                }
  6598  
  6599                const dependencyName = _ref7;
  6600  
  6601                delete implicitWorkspaceDependencies[dependencyName];
  6602              }
  6603            }
  6604  
  6605            pushDeps('dependencies', { dependencies: implicitWorkspaceDependencies }, { hint: 'workspaces', optional: false }, true);
  6606          }
  6607  
  6608          break;
  6609        }
  6610  
  6611        // inherit root flat flag
  6612        if (manifest.flat) {
  6613          _this.flags.flat = true;
  6614        }
  6615  
  6616        return {
  6617          requests: [...resolutionDeps, ...deps],
  6618          patterns,
  6619          manifest,
  6620          usedPatterns,
  6621          ignorePatterns,
  6622          workspaceLayout
  6623        };
  6624      })();
  6625    }
  6626  
  6627    /**
  6628     * TODO description
  6629     */
  6630  
  6631    prepareRequests(requests) {
  6632      return requests;
  6633    }
  6634  
  6635    preparePatterns(patterns) {
  6636      return patterns;
  6637    }
  6638    preparePatternsForLinking(patterns, cwdManifest, cwdIsRoot) {
  6639      return patterns;
  6640    }
  6641  
  6642    prepareManifests() {
  6643      var _this2 = this;
  6644  
  6645      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  6646        const manifests = yield _this2.config.getRootManifests();
  6647        return manifests;
  6648      })();
  6649    }
  6650  
  6651    bailout(patterns, workspaceLayout) {
  6652      var _this3 = this;
  6653  
  6654      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  6655        // We don't want to skip the audit - it could yield important errors
  6656        if (_this3.flags.audit) {
  6657          return false;
  6658        }
  6659        // PNP is so fast that the integrity check isn't pertinent
  6660        if (_this3.config.plugnplayEnabled) {
  6661          return false;
  6662        }
  6663        if (_this3.flags.skipIntegrityCheck || _this3.flags.force) {
  6664          return false;
  6665        }
  6666        const lockfileCache = _this3.lockfile.cache;
  6667        if (!lockfileCache) {
  6668          return false;
  6669        }
  6670        const lockfileClean = _this3.lockfile.parseResultType === 'success';
  6671        const match = yield _this3.integrityChecker.check(patterns, lockfileCache, _this3.flags, workspaceLayout);
  6672        if (_this3.flags.frozenLockfile && (!lockfileClean || match.missingPatterns.length > 0)) {
  6673          throw new (_errors || _load_errors()).MessageError(_this3.reporter.lang('frozenLockfileError'));
  6674        }
  6675  
  6676        const haveLockfile = yield (_fs || _load_fs()).exists(path.join(_this3.config.lockfileFolder, (_constants || _load_constants()).LOCKFILE_FILENAME));
  6677  
  6678        const lockfileIntegrityPresent = !_this3.lockfile.hasEntriesExistWithoutIntegrity();
  6679        const integrityBailout = lockfileIntegrityPresent || !_this3.config.autoAddIntegrity;
  6680  
  6681        if (match.integrityMatches && haveLockfile && lockfileClean && integrityBailout) {
  6682          _this3.reporter.success(_this3.reporter.lang('upToDate'));
  6683          return true;
  6684        }
  6685  
  6686        if (match.integrityFileMissing && haveLockfile) {
  6687          // Integrity file missing, force script installations
  6688          _this3.scripts.setForce(true);
  6689          return false;
  6690        }
  6691  
  6692        if (match.hardRefreshRequired) {
  6693          // e.g. node version doesn't match, force script installations
  6694          _this3.scripts.setForce(true);
  6695          return false;
  6696        }
  6697  
  6698        if (!patterns.length && !match.integrityFileMissing) {
  6699          _this3.reporter.success(_this3.reporter.lang('nothingToInstall'));
  6700          yield _this3.createEmptyManifestFolders();
  6701          yield _this3.saveLockfileAndIntegrity(patterns, workspaceLayout);
  6702          return true;
  6703        }
  6704  
  6705        return false;
  6706      })();
  6707    }
  6708  
  6709    /**
  6710     * Produce empty folders for all used root manifests.
  6711     */
  6712  
  6713    createEmptyManifestFolders() {
  6714      var _this4 = this;
  6715  
  6716      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  6717        if (_this4.config.modulesFolder) {
  6718          // already created
  6719          return;
  6720        }
  6721  
  6722        for (var _iterator9 = _this4.rootManifestRegistries, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {
  6723          var _ref10;
  6724  
  6725          if (_isArray9) {
  6726            if (_i9 >= _iterator9.length) break;
  6727            _ref10 = _iterator9[_i9++];
  6728          } else {
  6729            _i9 = _iterator9.next();
  6730            if (_i9.done) break;
  6731            _ref10 = _i9.value;
  6732          }
  6733  
  6734          const registryName = _ref10;
  6735          const folder = _this4.config.registries[registryName].folder;
  6736  
  6737          yield (_fs || _load_fs()).mkdirp(path.join(_this4.config.lockfileFolder, folder));
  6738        }
  6739      })();
  6740    }
  6741  
  6742    /**
  6743     * TODO description
  6744     */
  6745  
  6746    markIgnored(patterns) {
  6747      for (var _iterator10 = patterns, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {
  6748        var _ref11;
  6749  
  6750        if (_isArray10) {
  6751          if (_i10 >= _iterator10.length) break;
  6752          _ref11 = _iterator10[_i10++];
  6753        } else {
  6754          _i10 = _iterator10.next();
  6755          if (_i10.done) break;
  6756          _ref11 = _i10.value;
  6757        }
  6758  
  6759        const pattern = _ref11;
  6760  
  6761        const manifest = this.resolver.getStrictResolvedPattern(pattern);
  6762        const ref = manifest._reference;
  6763        invariant(ref, 'expected package reference');
  6764  
  6765        // just mark the package as ignored. if the package is used by a required package, the hoister
  6766        // will take care of that.
  6767        ref.ignore = true;
  6768      }
  6769    }
  6770  
  6771    /**
  6772     * helper method that gets only recent manifests
  6773     * used by global.ls command
  6774     */
  6775    getFlattenedDeps() {
  6776      var _this5 = this;
  6777  
  6778      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  6779        var _ref12 = yield _this5.fetchRequestFromCwd();
  6780  
  6781        const depRequests = _ref12.requests,
  6782              rawPatterns = _ref12.patterns;
  6783  
  6784  
  6785        yield _this5.resolver.init(depRequests, {});
  6786  
  6787        const manifests = yield (_packageFetcher || _load_packageFetcher()).fetch(_this5.resolver.getManifests(), _this5.config);
  6788        _this5.resolver.updateManifests(manifests);
  6789  
  6790        return _this5.flatten(rawPatterns);
  6791      })();
  6792    }
  6793  
  6794    /**
  6795     * TODO description
  6796     */
  6797  
  6798    init() {
  6799      var _this6 = this;
  6800  
  6801      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  6802        _this6.checkUpdate();
  6803  
  6804        // warn if we have a shrinkwrap
  6805        if (yield (_fs || _load_fs()).exists(path.join(_this6.config.lockfileFolder, (_constants || _load_constants()).NPM_SHRINKWRAP_FILENAME))) {
  6806          _this6.reporter.warn(_this6.reporter.lang('shrinkwrapWarning'));
  6807        }
  6808  
  6809        // warn if we have an npm lockfile
  6810        if (yield (_fs || _load_fs()).exists(path.join(_this6.config.lockfileFolder, (_constants || _load_constants()).NPM_LOCK_FILENAME))) {
  6811          _this6.reporter.warn(_this6.reporter.lang('npmLockfileWarning'));
  6812        }
  6813  
  6814        if (_this6.config.plugnplayEnabled) {
  6815          _this6.reporter.info(_this6.reporter.lang('plugnplaySuggestV2L1'));
  6816          _this6.reporter.info(_this6.reporter.lang('plugnplaySuggestV2L2'));
  6817        }
  6818  
  6819        let flattenedTopLevelPatterns = [];
  6820        const steps = [];
  6821  
  6822        var _ref13 = yield _this6.fetchRequestFromCwd();
  6823  
  6824        const depRequests = _ref13.requests,
  6825              rawPatterns = _ref13.patterns,
  6826              ignorePatterns = _ref13.ignorePatterns,
  6827              workspaceLayout = _ref13.workspaceLayout,
  6828              manifest = _ref13.manifest;
  6829  
  6830        let topLevelPatterns = [];
  6831  
  6832        const artifacts = yield _this6.integrityChecker.getArtifacts();
  6833        if (artifacts) {
  6834          _this6.linker.setArtifacts(artifacts);
  6835          _this6.scripts.setArtifacts(artifacts);
  6836        }
  6837  
  6838        if ((_packageCompatibility || _load_packageCompatibility()).shouldCheck(manifest, _this6.flags)) {
  6839          steps.push((() => {
  6840            var _ref14 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (curr, total) {
  6841              _this6.reporter.step(curr, total, _this6.reporter.lang('checkingManifest'), emoji.get('mag'));
  6842              yield _this6.checkCompatibility();
  6843            });
  6844  
  6845            return function (_x, _x2) {
  6846              return _ref14.apply(this, arguments);
  6847            };
  6848          })());
  6849        }
  6850  
  6851        const audit = new (_audit || _load_audit()).default(_this6.config, _this6.reporter, { groups: (_constants || _load_constants()).OWNED_DEPENDENCY_TYPES });
  6852        let auditFoundProblems = false;
  6853  
  6854        steps.push(function (curr, total) {
  6855          return (0, (_hooks || _load_hooks()).callThroughHook)('resolveStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  6856            _this6.reporter.step(curr, total, _this6.reporter.lang('resolvingPackages'), emoji.get('mag'));
  6857            yield _this6.resolver.init(_this6.prepareRequests(depRequests), {
  6858              isFlat: _this6.flags.flat,
  6859              isFrozen: _this6.flags.frozenLockfile,
  6860              workspaceLayout
  6861            });
  6862            topLevelPatterns = _this6.preparePatterns(rawPatterns);
  6863            flattenedTopLevelPatterns = yield _this6.flatten(topLevelPatterns);
  6864            return { bailout: !_this6.flags.audit && (yield _this6.bailout(topLevelPatterns, workspaceLayout)) };
  6865          }));
  6866        });
  6867  
  6868        if (_this6.flags.audit) {
  6869          steps.push(function (curr, total) {
  6870            return (0, (_hooks || _load_hooks()).callThroughHook)('auditStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  6871              _this6.reporter.step(curr, total, _this6.reporter.lang('auditRunning'), emoji.get('mag'));
  6872              if (_this6.flags.offline) {
  6873                _this6.reporter.warn(_this6.reporter.lang('auditOffline'));
  6874                return { bailout: false };
  6875              }
  6876              const preparedManifests = yield _this6.prepareManifests();
  6877              // $FlowFixMe - Flow considers `m` in the map operation to be "mixed", so does not recognize `m.object`
  6878              const mergedManifest = Object.assign({}, ...Object.values(preparedManifests).map(function (m) {
  6879                return m.object;
  6880              }));
  6881              const auditVulnerabilityCounts = yield audit.performAudit(mergedManifest, _this6.lockfile, _this6.resolver, _this6.linker, topLevelPatterns);
  6882              auditFoundProblems = auditVulnerabilityCounts.info || auditVulnerabilityCounts.low || auditVulnerabilityCounts.moderate || auditVulnerabilityCounts.high || auditVulnerabilityCounts.critical;
  6883              return { bailout: yield _this6.bailout(topLevelPatterns, workspaceLayout) };
  6884            }));
  6885          });
  6886        }
  6887  
  6888        steps.push(function (curr, total) {
  6889          return (0, (_hooks || _load_hooks()).callThroughHook)('fetchStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  6890            _this6.markIgnored(ignorePatterns);
  6891            _this6.reporter.step(curr, total, _this6.reporter.lang('fetchingPackages'), emoji.get('truck'));
  6892            const manifests = yield (_packageFetcher || _load_packageFetcher()).fetch(_this6.resolver.getManifests(), _this6.config);
  6893            _this6.resolver.updateManifests(manifests);
  6894            yield (_packageCompatibility || _load_packageCompatibility()).check(_this6.resolver.getManifests(), _this6.config, _this6.flags.ignoreEngines);
  6895          }));
  6896        });
  6897  
  6898        steps.push(function (curr, total) {
  6899          return (0, (_hooks || _load_hooks()).callThroughHook)('linkStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  6900            // remove integrity hash to make this operation atomic
  6901            yield _this6.integrityChecker.removeIntegrityFile();
  6902            _this6.reporter.step(curr, total, _this6.reporter.lang('linkingDependencies'), emoji.get('link'));
  6903            flattenedTopLevelPatterns = _this6.preparePatternsForLinking(flattenedTopLevelPatterns, manifest, _this6.config.lockfileFolder === _this6.config.cwd);
  6904            yield _this6.linker.init(flattenedTopLevelPatterns, workspaceLayout, {
  6905              linkDuplicates: _this6.flags.linkDuplicates,
  6906              ignoreOptional: _this6.flags.ignoreOptional
  6907            });
  6908          }));
  6909        });
  6910  
  6911        if (_this6.config.plugnplayEnabled) {
  6912          steps.push(function (curr, total) {
  6913            return (0, (_hooks || _load_hooks()).callThroughHook)('pnpStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  6914              const pnpPath = `${_this6.config.lockfileFolder}/${(_constants || _load_constants()).PNP_FILENAME}`;
  6915  
  6916              const code = yield (0, (_generatePnpMap || _load_generatePnpMap()).generatePnpMap)(_this6.config, flattenedTopLevelPatterns, {
  6917                resolver: _this6.resolver,
  6918                reporter: _this6.reporter,
  6919                targetPath: pnpPath,
  6920                workspaceLayout
  6921              });
  6922  
  6923              try {
  6924                const file = yield (_fs || _load_fs()).readFile(pnpPath);
  6925                if (file === code) {
  6926                  return;
  6927                }
  6928              } catch (error) {}
  6929  
  6930              yield (_fs || _load_fs()).writeFile(pnpPath, code);
  6931              yield (_fs || _load_fs()).chmod(pnpPath, 0o755);
  6932            }));
  6933          });
  6934        }
  6935  
  6936        steps.push(function (curr, total) {
  6937          return (0, (_hooks || _load_hooks()).callThroughHook)('buildStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  6938            _this6.reporter.step(curr, total, _this6.flags.force ? _this6.reporter.lang('rebuildingPackages') : _this6.reporter.lang('buildingFreshPackages'), emoji.get('hammer'));
  6939  
  6940            if (_this6.config.ignoreScripts) {
  6941              _this6.reporter.warn(_this6.reporter.lang('ignoredScripts'));
  6942            } else {
  6943              yield _this6.scripts.init(flattenedTopLevelPatterns);
  6944            }
  6945          }));
  6946        });
  6947  
  6948        if (_this6.flags.har) {
  6949          steps.push((() => {
  6950            var _ref21 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (curr, total) {
  6951              const formattedDate = new Date().toISOString().replace(/:/g, '-');
  6952              const filename = `yarn-install_${formattedDate}.har`;
  6953              _this6.reporter.step(curr, total, _this6.reporter.lang('savingHar', filename), emoji.get('black_circle_for_record'));
  6954              yield _this6.config.requestManager.saveHar(filename);
  6955            });
  6956  
  6957            return function (_x3, _x4) {
  6958              return _ref21.apply(this, arguments);
  6959            };
  6960          })());
  6961        }
  6962  
  6963        if (yield _this6.shouldClean()) {
  6964          steps.push((() => {
  6965            var _ref22 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (curr, total) {
  6966              _this6.reporter.step(curr, total, _this6.reporter.lang('cleaningModules'), emoji.get('recycle'));
  6967              yield (0, (_autoclean || _load_autoclean()).clean)(_this6.config, _this6.reporter);
  6968            });
  6969  
  6970            return function (_x5, _x6) {
  6971              return _ref22.apply(this, arguments);
  6972            };
  6973          })());
  6974        }
  6975  
  6976        let currentStep = 0;
  6977        for (var _iterator11 = steps, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) {
  6978          var _ref23;
  6979  
  6980          if (_isArray11) {
  6981            if (_i11 >= _iterator11.length) break;
  6982            _ref23 = _iterator11[_i11++];
  6983          } else {
  6984            _i11 = _iterator11.next();
  6985            if (_i11.done) break;
  6986            _ref23 = _i11.value;
  6987          }
  6988  
  6989          const step = _ref23;
  6990  
  6991          const stepResult = yield step(++currentStep, steps.length);
  6992          if (stepResult && stepResult.bailout) {
  6993            if (_this6.flags.audit) {
  6994              audit.summary();
  6995            }
  6996            if (auditFoundProblems) {
  6997              _this6.reporter.warn(_this6.reporter.lang('auditRunAuditForDetails'));
  6998            }
  6999            _this6.maybeOutputUpdate();
  7000            return flattenedTopLevelPatterns;
  7001          }
  7002        }
  7003  
  7004        // fin!
  7005        if (_this6.flags.audit) {
  7006          audit.summary();
  7007        }
  7008        if (auditFoundProblems) {
  7009          _this6.reporter.warn(_this6.reporter.lang('auditRunAuditForDetails'));
  7010        }
  7011        yield _this6.saveLockfileAndIntegrity(topLevelPatterns, workspaceLayout);
  7012        yield _this6.persistChanges();
  7013        _this6.maybeOutputUpdate();
  7014        _this6.config.requestManager.clearCache();
  7015        return flattenedTopLevelPatterns;
  7016      })();
  7017    }
  7018  
  7019    checkCompatibility() {
  7020      var _this7 = this;
  7021  
  7022      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  7023        var _ref24 = yield _this7.fetchRequestFromCwd();
  7024  
  7025        const manifest = _ref24.manifest;
  7026  
  7027        yield (_packageCompatibility || _load_packageCompatibility()).checkOne(manifest, _this7.config, _this7.flags.ignoreEngines);
  7028      })();
  7029    }
  7030  
  7031    persistChanges() {
  7032      var _this8 = this;
  7033  
  7034      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  7035        // get all the different registry manifests in this folder
  7036        const manifests = yield _this8.config.getRootManifests();
  7037  
  7038        if (yield _this8.applyChanges(manifests)) {
  7039          yield _this8.config.saveRootManifests(manifests);
  7040        }
  7041      })();
  7042    }
  7043  
  7044    applyChanges(manifests) {
  7045      let hasChanged = false;
  7046  
  7047      if (this.config.plugnplayPersist) {
  7048        const object = manifests.npm.object;
  7049  
  7050  
  7051        if (typeof object.installConfig !== 'object') {
  7052          object.installConfig = {};
  7053        }
  7054  
  7055        if (this.config.plugnplayEnabled && object.installConfig.pnp !== true) {
  7056          object.installConfig.pnp = true;
  7057          hasChanged = true;
  7058        } else if (!this.config.plugnplayEnabled && typeof object.installConfig.pnp !== 'undefined') {
  7059          delete object.installConfig.pnp;
  7060          hasChanged = true;
  7061        }
  7062  
  7063        if (Object.keys(object.installConfig).length === 0) {
  7064          delete object.installConfig;
  7065        }
  7066      }
  7067  
  7068      return Promise.resolve(hasChanged);
  7069    }
  7070  
  7071    /**
  7072     * Check if we should run the cleaning step.
  7073     */
  7074  
  7075    shouldClean() {
  7076      return (_fs || _load_fs()).exists(path.join(this.config.lockfileFolder, (_constants || _load_constants()).CLEAN_FILENAME));
  7077    }
  7078  
  7079    /**
  7080     * TODO
  7081     */
  7082  
  7083    flatten(patterns) {
  7084      var _this9 = this;
  7085  
  7086      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  7087        if (!_this9.flags.flat) {
  7088          return patterns;
  7089        }
  7090  
  7091        const flattenedPatterns = [];
  7092  
  7093        for (var _iterator12 = _this9.resolver.getAllDependencyNamesByLevelOrder(patterns), _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) {
  7094          var _ref25;
  7095  
  7096          if (_isArray12) {
  7097            if (_i12 >= _iterator12.length) break;
  7098            _ref25 = _iterator12[_i12++];
  7099          } else {
  7100            _i12 = _iterator12.next();
  7101            if (_i12.done) break;
  7102            _ref25 = _i12.value;
  7103          }
  7104  
  7105          const name = _ref25;
  7106  
  7107          const infos = _this9.resolver.getAllInfoForPackageName(name).filter(function (manifest) {
  7108            const ref = manifest._reference;
  7109            invariant(ref, 'expected package reference');
  7110            return !ref.ignore;
  7111          });
  7112  
  7113          if (infos.length === 0) {
  7114            continue;
  7115          }
  7116  
  7117          if (infos.length === 1) {
  7118            // single version of this package
  7119            // take out a single pattern as multiple patterns may have resolved to this package
  7120            flattenedPatterns.push(_this9.resolver.patternsByPackage[name][0]);
  7121            continue;
  7122          }
  7123  
  7124          const options = infos.map(function (info) {
  7125            const ref = info._reference;
  7126            invariant(ref, 'expected reference');
  7127            return {
  7128              // TODO `and is required by {PARENT}`,
  7129              name: _this9.reporter.lang('manualVersionResolutionOption', ref.patterns.join(', '), info.version),
  7130  
  7131              value: info.version
  7132            };
  7133          });
  7134          const versions = infos.map(function (info) {
  7135            return info.version;
  7136          });
  7137          let version;
  7138  
  7139          const resolutionVersion = _this9.resolutions[name];
  7140          if (resolutionVersion && versions.indexOf(resolutionVersion) >= 0) {
  7141            // use json `resolution` version
  7142            version = resolutionVersion;
  7143          } else {
  7144            version = yield _this9.reporter.select(_this9.reporter.lang('manualVersionResolution', name), _this9.reporter.lang('answer'), options);
  7145            _this9.resolutions[name] = version;
  7146          }
  7147  
  7148          flattenedPatterns.push(_this9.resolver.collapseAllVersionsOfPackage(name, version));
  7149        }
  7150  
  7151        // save resolutions to their appropriate root manifest
  7152        if (Object.keys(_this9.resolutions).length) {
  7153          const manifests = yield _this9.config.getRootManifests();
  7154  
  7155          for (const name in _this9.resolutions) {
  7156            const version = _this9.resolutions[name];
  7157  
  7158            const patterns = _this9.resolver.patternsByPackage[name];
  7159            if (!patterns) {
  7160              continue;
  7161            }
  7162  
  7163            let manifest;
  7164            for (var _iterator13 = patterns, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) {
  7165              var _ref26;
  7166  
  7167              if (_isArray13) {
  7168                if (_i13 >= _iterator13.length) break;
  7169                _ref26 = _iterator13[_i13++];
  7170              } else {
  7171                _i13 = _iterator13.next();
  7172                if (_i13.done) break;
  7173                _ref26 = _i13.value;
  7174              }
  7175  
  7176              const pattern = _ref26;
  7177  
  7178              manifest = _this9.resolver.getResolvedPattern(pattern);
  7179              if (manifest) {
  7180                break;
  7181              }
  7182            }
  7183            invariant(manifest, 'expected manifest');
  7184  
  7185            const ref = manifest._reference;
  7186            invariant(ref, 'expected reference');
  7187  
  7188            const object = manifests[ref.registry].object;
  7189            object.resolutions = object.resolutions || {};
  7190            object.resolutions[name] = version;
  7191          }
  7192  
  7193          yield _this9.config.saveRootManifests(manifests);
  7194        }
  7195  
  7196        return flattenedPatterns;
  7197      })();
  7198    }
  7199  
  7200    /**
  7201     * Remove offline tarballs that are no longer required
  7202     */
  7203  
  7204    pruneOfflineMirror(lockfile) {
  7205      var _this10 = this;
  7206  
  7207      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  7208        const mirror = _this10.config.getOfflineMirrorPath();
  7209        if (!mirror) {
  7210          return;
  7211        }
  7212  
  7213        const requiredTarballs = new Set();
  7214        for (const dependency in lockfile) {
  7215          const resolved = lockfile[dependency].resolved;
  7216          if (resolved) {
  7217            const basename = path.basename(resolved.split('#')[0]);
  7218            if (dependency[0] === '@' && basename[0] !== '@') {
  7219              requiredTarballs.add(`${dependency.split('/')[0]}-${basename}`);
  7220            }
  7221            requiredTarballs.add(basename);
  7222          }
  7223        }
  7224  
  7225        const mirrorFiles = yield (_fs || _load_fs()).walk(mirror);
  7226        for (var _iterator14 = mirrorFiles, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) {
  7227          var _ref27;
  7228  
  7229          if (_isArray14) {
  7230            if (_i14 >= _iterator14.length) break;
  7231            _ref27 = _iterator14[_i14++];
  7232          } else {
  7233            _i14 = _iterator14.next();
  7234            if (_i14.done) break;
  7235            _ref27 = _i14.value;
  7236          }
  7237  
  7238          const file = _ref27;
  7239  
  7240          const isTarball = path.extname(file.basename) === '.tgz';
  7241          // if using experimental-pack-script-packages-in-mirror flag, don't unlink prebuilt packages
  7242          const hasPrebuiltPackage = file.relative.startsWith('prebuilt/');
  7243          if (isTarball && !hasPrebuiltPackage && !requiredTarballs.has(file.basename)) {
  7244            yield (_fs || _load_fs()).unlink(file.absolute);
  7245          }
  7246        }
  7247      })();
  7248    }
  7249  
  7250    /**
  7251     * Save updated integrity and lockfiles.
  7252     */
  7253  
  7254    saveLockfileAndIntegrity(patterns, workspaceLayout) {
  7255      var _this11 = this;
  7256  
  7257      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  7258        const resolvedPatterns = {};
  7259        Object.keys(_this11.resolver.patterns).forEach(function (pattern) {
  7260          if (!workspaceLayout || !workspaceLayout.getManifestByPattern(pattern)) {
  7261            resolvedPatterns[pattern] = _this11.resolver.patterns[pattern];
  7262          }
  7263        });
  7264  
  7265        // TODO this code is duplicated in a few places, need a common way to filter out workspace patterns from lockfile
  7266        patterns = patterns.filter(function (p) {
  7267          return !workspaceLayout || !workspaceLayout.getManifestByPattern(p);
  7268        });
  7269  
  7270        const lockfileBasedOnResolver = _this11.lockfile.getLockfile(resolvedPatterns);
  7271  
  7272        if (_this11.config.pruneOfflineMirror) {
  7273          yield _this11.pruneOfflineMirror(lockfileBasedOnResolver);
  7274        }
  7275  
  7276        // write integrity hash
  7277        if (!_this11.config.plugnplayEnabled) {
  7278          yield _this11.integrityChecker.save(patterns, lockfileBasedOnResolver, _this11.flags, workspaceLayout, _this11.scripts.getArtifacts());
  7279        }
  7280  
  7281        // --no-lockfile or --pure-lockfile or --frozen-lockfile
  7282        if (_this11.flags.lockfile === false || _this11.flags.pureLockfile || _this11.flags.frozenLockfile) {
  7283          return;
  7284        }
  7285  
  7286        const lockFileHasAllPatterns = patterns.every(function (p) {
  7287          return _this11.lockfile.getLocked(p);
  7288        });
  7289        const lockfilePatternsMatch = Object.keys(_this11.lockfile.cache || {}).every(function (p) {
  7290          return lockfileBasedOnResolver[p];
  7291        });
  7292        const resolverPatternsAreSameAsInLockfile = Object.keys(lockfileBasedOnResolver).every(function (pattern) {
  7293          const manifest = _this11.lockfile.getLocked(pattern);
  7294          return manifest && manifest.resolved === lockfileBasedOnResolver[pattern].resolved && deepEqual(manifest.prebuiltVariants, lockfileBasedOnResolver[pattern].prebuiltVariants);
  7295        });
  7296        const integrityPatternsAreSameAsInLockfile = Object.keys(lockfileBasedOnResolver).every(function (pattern) {
  7297          const existingIntegrityInfo = lockfileBasedOnResolver[pattern].integrity;
  7298          if (!existingIntegrityInfo) {
  7299            // if this entry does not have an integrity, no need to re-write the lockfile because of it
  7300            return true;
  7301          }
  7302          const manifest = _this11.lockfile.getLocked(pattern);
  7303          if (manifest && manifest.integrity) {
  7304            const manifestIntegrity = ssri.stringify(manifest.integrity);
  7305            return manifestIntegrity === existingIntegrityInfo;
  7306          }
  7307          return false;
  7308        });
  7309  
  7310        // remove command is followed by install with force, lockfile will be rewritten in any case then
  7311        if (!_this11.flags.force && _this11.lockfile.parseResultType === 'success' && lockFileHasAllPatterns && lockfilePatternsMatch && resolverPatternsAreSameAsInLockfile && integrityPatternsAreSameAsInLockfile && patterns.length) {
  7312          return;
  7313        }
  7314  
  7315        // build lockfile location
  7316        const loc = path.join(_this11.config.lockfileFolder, (_constants || _load_constants()).LOCKFILE_FILENAME);
  7317  
  7318        // write lockfile
  7319        const lockSource = (0, (_lockfile2 || _load_lockfile2()).stringify)(lockfileBasedOnResolver, false, _this11.config.enableLockfileVersions);
  7320        yield (_fs || _load_fs()).writeFilePreservingEol(loc, lockSource);
  7321  
  7322        _this11._logSuccessSaveLockfile();
  7323      })();
  7324    }
  7325  
  7326    _logSuccessSaveLockfile() {
  7327      this.reporter.success(this.reporter.lang('savedLockfile'));
  7328    }
  7329  
  7330    /**
  7331     * Load the dependency graph of the current install. Only does package resolving and wont write to the cwd.
  7332     */
  7333    hydrate(ignoreUnusedPatterns) {
  7334      var _this12 = this;
  7335  
  7336      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  7337        const request = yield _this12.fetchRequestFromCwd([], ignoreUnusedPatterns);
  7338        const depRequests = request.requests,
  7339              rawPatterns = request.patterns,
  7340              ignorePatterns = request.ignorePatterns,
  7341              workspaceLayout = request.workspaceLayout;
  7342  
  7343  
  7344        yield _this12.resolver.init(depRequests, {
  7345          isFlat: _this12.flags.flat,
  7346          isFrozen: _this12.flags.frozenLockfile,
  7347          workspaceLayout
  7348        });
  7349        yield _this12.flatten(rawPatterns);
  7350        _this12.markIgnored(ignorePatterns);
  7351  
  7352        // fetch packages, should hit cache most of the time
  7353        const manifests = yield (_packageFetcher || _load_packageFetcher()).fetch(_this12.resolver.getManifests(), _this12.config);
  7354        _this12.resolver.updateManifests(manifests);
  7355        yield (_packageCompatibility || _load_packageCompatibility()).check(_this12.resolver.getManifests(), _this12.config, _this12.flags.ignoreEngines);
  7356  
  7357        // expand minimal manifests
  7358        for (var _iterator15 = _this12.resolver.getManifests(), _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) {
  7359          var _ref28;
  7360  
  7361          if (_isArray15) {
  7362            if (_i15 >= _iterator15.length) break;
  7363            _ref28 = _iterator15[_i15++];
  7364          } else {
  7365            _i15 = _iterator15.next();
  7366            if (_i15.done) break;
  7367            _ref28 = _i15.value;
  7368          }
  7369  
  7370          const manifest = _ref28;
  7371  
  7372          const ref = manifest._reference;
  7373          invariant(ref, 'expected reference');
  7374          const type = ref.remote.type;
  7375          // link specifier won't ever hit cache
  7376  
  7377          let loc = '';
  7378          if (type === 'link') {
  7379            continue;
  7380          } else if (type === 'workspace') {
  7381            if (!ref.remote.reference) {
  7382              continue;
  7383            }
  7384            loc = ref.remote.reference;
  7385          } else {
  7386            loc = _this12.config.generateModuleCachePath(ref);
  7387          }
  7388          const newPkg = yield _this12.config.readManifest(loc);
  7389          yield _this12.resolver.updateManifest(ref, newPkg);
  7390        }
  7391  
  7392        return request;
  7393      })();
  7394    }
  7395  
  7396    /**
  7397     * Check for updates every day and output a nag message if there's a newer version.
  7398     */
  7399  
  7400    checkUpdate() {
  7401      if (this.config.nonInteractive) {
  7402        // don't show upgrade dialog on CI or non-TTY terminals
  7403        return;
  7404      }
  7405  
  7406      // don't check if disabled
  7407      if (this.config.getOption('disable-self-update-check')) {
  7408        return;
  7409      }
  7410  
  7411      // only check for updates once a day
  7412      const lastUpdateCheck = Number(this.config.getOption('lastUpdateCheck')) || 0;
  7413      if (lastUpdateCheck && Date.now() - lastUpdateCheck < ONE_DAY) {
  7414        return;
  7415      }
  7416  
  7417      // don't bug for updates on tagged releases
  7418      if ((_yarnVersion || _load_yarnVersion()).version.indexOf('-') >= 0) {
  7419        return;
  7420      }
  7421  
  7422      this._checkUpdate().catch(() => {
  7423        // swallow errors
  7424      });
  7425    }
  7426  
  7427    _checkUpdate() {
  7428      var _this13 = this;
  7429  
  7430      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
  7431        let latestVersion = yield _this13.config.requestManager.request({
  7432          url: (_constants || _load_constants()).SELF_UPDATE_VERSION_URL
  7433        });
  7434        invariant(typeof latestVersion === 'string', 'expected string');
  7435        latestVersion = latestVersion.trim();
  7436        if (!semver.valid(latestVersion)) {
  7437          return;
  7438        }
  7439  
  7440        // ensure we only check for updates periodically
  7441        _this13.config.registries.yarn.saveHomeConfig({
  7442          lastUpdateCheck: Date.now()
  7443        });
  7444  
  7445        if (semver.gt(latestVersion, (_yarnVersion || _load_yarnVersion()).version)) {
  7446          const installationMethod = yield (0, (_yarnVersion || _load_yarnVersion()).getInstallationMethod)();
  7447          _this13.maybeOutputUpdate = function () {
  7448            _this13.reporter.warn(_this13.reporter.lang('yarnOutdated', latestVersion, (_yarnVersion || _load_yarnVersion()).version));
  7449  
  7450            const command = getUpdateCommand(installationMethod);
  7451            if (command) {
  7452              _this13.reporter.info(_this13.reporter.lang('yarnOutdatedCommand'));
  7453              _this13.reporter.command(command);
  7454            } else {
  7455              const installer = getUpdateInstaller(installationMethod);
  7456              if (installer) {
  7457                _this13.reporter.info(_this13.reporter.lang('yarnOutdatedInstaller', installer));
  7458              }
  7459            }
  7460          };
  7461        }
  7462      })();
  7463    }
  7464  
  7465    /**
  7466     * Method to override with a possible upgrade message.
  7467     */
  7468  
  7469    maybeOutputUpdate() {}
  7470  }
  7471  
  7472  exports.Install = Install;
  7473  function hasWrapper(commander, args) {
  7474    return true;
  7475  }
  7476  
  7477  function setFlags(commander) {
  7478    commander.description('Yarn install is used to install all dependencies for a project.');
  7479    commander.usage('install [flags]');
  7480    commander.option('-A, --audit', 'Run vulnerability audit on installed packages');
  7481    commander.option('-g, --global', 'DEPRECATED');
  7482    commander.option('-S, --save', 'DEPRECATED - save package to your `dependencies`');
  7483    commander.option('-D, --save-dev', 'DEPRECATED - save package to your `devDependencies`');
  7484    commander.option('-P, --save-peer', 'DEPRECATED - save package to your `peerDependencies`');
  7485    commander.option('-O, --save-optional', 'DEPRECATED - save package to your `optionalDependencies`');
  7486    commander.option('-E, --save-exact', 'DEPRECATED');
  7487    commander.option('-T, --save-tilde', 'DEPRECATED');
  7488  }
  7489  
  7490  /***/ }),
  7491  /* 35 */
  7492  /***/ (function(module, exports, __webpack_require__) {
  7493  
  7494  var isObject = __webpack_require__(53);
  7495  module.exports = function (it) {
  7496    if (!isObject(it)) throw TypeError(it + ' is not an object!');
  7497    return it;
  7498  };
  7499  
  7500  
  7501  /***/ }),
  7502  /* 36 */
  7503  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  7504  
  7505  "use strict";
  7506  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return SubjectSubscriber; });
  7507  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Subject; });
  7508  /* unused harmony export AnonymousSubject */
  7509  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
  7510  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Observable__ = __webpack_require__(12);
  7511  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Subscriber__ = __webpack_require__(7);
  7512  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscription__ = __webpack_require__(25);
  7513  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__ = __webpack_require__(190);
  7514  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__SubjectSubscription__ = __webpack_require__(422);
  7515  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__internal_symbol_rxSubscriber__ = __webpack_require__(321);
  7516  /** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */
  7517  
  7518  
  7519  
  7520  
  7521  
  7522  
  7523  
  7524  var SubjectSubscriber = /*@__PURE__*/ (function (_super) {
  7525      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SubjectSubscriber, _super);
  7526      function SubjectSubscriber(destination) {
  7527          var _this = _super.call(this, destination) || this;
  7528          _this.destination = destination;
  7529          return _this;
  7530      }
  7531      return SubjectSubscriber;
  7532  }(__WEBPACK_IMPORTED_MODULE_2__Subscriber__["a" /* Subscriber */]));
  7533  
  7534  var Subject = /*@__PURE__*/ (function (_super) {
  7535      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](Subject, _super);
  7536      function Subject() {
  7537          var _this = _super.call(this) || this;
  7538          _this.observers = [];
  7539          _this.closed = false;
  7540          _this.isStopped = false;
  7541          _this.hasError = false;
  7542          _this.thrownError = null;
  7543          return _this;
  7544      }
  7545      Subject.prototype[__WEBPACK_IMPORTED_MODULE_6__internal_symbol_rxSubscriber__["a" /* rxSubscriber */]] = function () {
  7546          return new SubjectSubscriber(this);
  7547      };
  7548      Subject.prototype.lift = function (operator) {
  7549          var subject = new AnonymousSubject(this, this);
  7550          subject.operator = operator;
  7551          return subject;
  7552      };
  7553      Subject.prototype.next = function (value) {
  7554          if (this.closed) {
  7555              throw new __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__["a" /* ObjectUnsubscribedError */]();
  7556          }
  7557          if (!this.isStopped) {
  7558              var observers = this.observers;
  7559              var len = observers.length;
  7560              var copy = observers.slice();
  7561              for (var i = 0; i < len; i++) {
  7562                  copy[i].next(value);
  7563              }
  7564          }
  7565      };
  7566      Subject.prototype.error = function (err) {
  7567          if (this.closed) {
  7568              throw new __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__["a" /* ObjectUnsubscribedError */]();
  7569          }
  7570          this.hasError = true;
  7571          this.thrownError = err;
  7572          this.isStopped = true;
  7573          var observers = this.observers;
  7574          var len = observers.length;
  7575          var copy = observers.slice();
  7576          for (var i = 0; i < len; i++) {
  7577              copy[i].error(err);
  7578          }
  7579          this.observers.length = 0;
  7580      };
  7581      Subject.prototype.complete = function () {
  7582          if (this.closed) {
  7583              throw new __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__["a" /* ObjectUnsubscribedError */]();
  7584          }
  7585          this.isStopped = true;
  7586          var observers = this.observers;
  7587          var len = observers.length;
  7588          var copy = observers.slice();
  7589          for (var i = 0; i < len; i++) {
  7590              copy[i].complete();
  7591          }
  7592          this.observers.length = 0;
  7593      };
  7594      Subject.prototype.unsubscribe = function () {
  7595          this.isStopped = true;
  7596          this.closed = true;
  7597          this.observers = null;
  7598      };
  7599      Subject.prototype._trySubscribe = function (subscriber) {
  7600          if (this.closed) {
  7601              throw new __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__["a" /* ObjectUnsubscribedError */]();
  7602          }
  7603          else {
  7604              return _super.prototype._trySubscribe.call(this, subscriber);
  7605          }
  7606      };
  7607      Subject.prototype._subscribe = function (subscriber) {
  7608          if (this.closed) {
  7609              throw new __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__["a" /* ObjectUnsubscribedError */]();
  7610          }
  7611          else if (this.hasError) {
  7612              subscriber.error(this.thrownError);
  7613              return __WEBPACK_IMPORTED_MODULE_3__Subscription__["a" /* Subscription */].EMPTY;
  7614          }
  7615          else if (this.isStopped) {
  7616              subscriber.complete();
  7617              return __WEBPACK_IMPORTED_MODULE_3__Subscription__["a" /* Subscription */].EMPTY;
  7618          }
  7619          else {
  7620              this.observers.push(subscriber);
  7621              return new __WEBPACK_IMPORTED_MODULE_5__SubjectSubscription__["a" /* SubjectSubscription */](this, subscriber);
  7622          }
  7623      };
  7624      Subject.prototype.asObservable = function () {
  7625          var observable = new __WEBPACK_IMPORTED_MODULE_1__Observable__["a" /* Observable */]();
  7626          observable.source = this;
  7627          return observable;
  7628      };
  7629      Subject.create = function (destination, source) {
  7630          return new AnonymousSubject(destination, source);
  7631      };
  7632      return Subject;
  7633  }(__WEBPACK_IMPORTED_MODULE_1__Observable__["a" /* Observable */]));
  7634  
  7635  var AnonymousSubject = /*@__PURE__*/ (function (_super) {
  7636      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](AnonymousSubject, _super);
  7637      function AnonymousSubject(destination, source) {
  7638          var _this = _super.call(this) || this;
  7639          _this.destination = destination;
  7640          _this.source = source;
  7641          return _this;
  7642      }
  7643      AnonymousSubject.prototype.next = function (value) {
  7644          var destination = this.destination;
  7645          if (destination && destination.next) {
  7646              destination.next(value);
  7647          }
  7648      };
  7649      AnonymousSubject.prototype.error = function (err) {
  7650          var destination = this.destination;
  7651          if (destination && destination.error) {
  7652              this.destination.error(err);
  7653          }
  7654      };
  7655      AnonymousSubject.prototype.complete = function () {
  7656          var destination = this.destination;
  7657          if (destination && destination.complete) {
  7658              this.destination.complete();
  7659          }
  7660      };
  7661      AnonymousSubject.prototype._subscribe = function (subscriber) {
  7662          var source = this.source;
  7663          if (source) {
  7664              return this.source.subscribe(subscriber);
  7665          }
  7666          else {
  7667              return __WEBPACK_IMPORTED_MODULE_3__Subscription__["a" /* Subscription */].EMPTY;
  7668          }
  7669      };
  7670      return AnonymousSubject;
  7671  }(Subject));
  7672  
  7673  //# sourceMappingURL=Subject.js.map
  7674  
  7675  
  7676  /***/ }),
  7677  /* 37 */
  7678  /***/ (function(module, exports, __webpack_require__) {
  7679  
  7680  "use strict";
  7681  
  7682  
  7683  Object.defineProperty(exports, "__esModule", {
  7684    value: true
  7685  });
  7686  exports.normalizePattern = normalizePattern;
  7687  
  7688  /**
  7689   * Explode and normalize a pattern into its name and range.
  7690   */
  7691  
  7692  function normalizePattern(pattern) {
  7693    let hasVersion = false;
  7694    let range = 'latest';
  7695    let name = pattern;
  7696  
  7697    // if we're a scope then remove the @ and add it back later
  7698    let isScoped = false;
  7699    if (name[0] === '@') {
  7700      isScoped = true;
  7701      name = name.slice(1);
  7702    }
  7703  
  7704    // take first part as the name
  7705    const parts = name.split('@');
  7706    if (parts.length > 1) {
  7707      name = parts.shift();
  7708      range = parts.join('@');
  7709  
  7710      if (range) {
  7711        hasVersion = true;
  7712      } else {
  7713        range = '*';
  7714      }
  7715    }
  7716  
  7717    // add back @ scope suffix
  7718    if (isScoped) {
  7719      name = `@${name}`;
  7720    }
  7721  
  7722    return { name, range, hasVersion };
  7723  }
  7724  
  7725  /***/ }),
  7726  /* 38 */
  7727  /***/ (function(module, exports, __webpack_require__) {
  7728  
  7729  /* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_RESULT__;/**
  7730   * @license
  7731   * Lodash <https://lodash.com/>
  7732   * Copyright JS Foundation and other contributors <https://js.foundation/>
  7733   * Released under MIT license <https://lodash.com/license>
  7734   * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
  7735   * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  7736   */
  7737  ;(function() {
  7738  
  7739    /** Used as a safe reference for `undefined` in pre-ES5 environments. */
  7740    var undefined;
  7741  
  7742    /** Used as the semantic version number. */
  7743    var VERSION = '4.17.10';
  7744  
  7745    /** Used as the size to enable large array optimizations. */
  7746    var LARGE_ARRAY_SIZE = 200;
  7747  
  7748    /** Error message constants. */
  7749    var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',
  7750        FUNC_ERROR_TEXT = 'Expected a function';
  7751  
  7752    /** Used to stand-in for `undefined` hash values. */
  7753    var HASH_UNDEFINED = '__lodash_hash_undefined__';
  7754  
  7755    /** Used as the maximum memoize cache size. */
  7756    var MAX_MEMOIZE_SIZE = 500;
  7757  
  7758    /** Used as the internal argument placeholder. */
  7759    var PLACEHOLDER = '__lodash_placeholder__';
  7760  
  7761    /** Used to compose bitmasks for cloning. */
  7762    var CLONE_DEEP_FLAG = 1,
  7763        CLONE_FLAT_FLAG = 2,
  7764        CLONE_SYMBOLS_FLAG = 4;
  7765  
  7766    /** Used to compose bitmasks for value comparisons. */
  7767    var COMPARE_PARTIAL_FLAG = 1,
  7768        COMPARE_UNORDERED_FLAG = 2;
  7769  
  7770    /** Used to compose bitmasks for function metadata. */
  7771    var WRAP_BIND_FLAG = 1,
  7772        WRAP_BIND_KEY_FLAG = 2,
  7773        WRAP_CURRY_BOUND_FLAG = 4,
  7774        WRAP_CURRY_FLAG = 8,
  7775        WRAP_CURRY_RIGHT_FLAG = 16,
  7776        WRAP_PARTIAL_FLAG = 32,
  7777        WRAP_PARTIAL_RIGHT_FLAG = 64,
  7778        WRAP_ARY_FLAG = 128,
  7779        WRAP_REARG_FLAG = 256,
  7780        WRAP_FLIP_FLAG = 512;
  7781  
  7782    /** Used as default options for `_.truncate`. */
  7783    var DEFAULT_TRUNC_LENGTH = 30,
  7784        DEFAULT_TRUNC_OMISSION = '...';
  7785  
  7786    /** Used to detect hot functions by number of calls within a span of milliseconds. */
  7787    var HOT_COUNT = 800,
  7788        HOT_SPAN = 16;
  7789  
  7790    /** Used to indicate the type of lazy iteratees. */
  7791    var LAZY_FILTER_FLAG = 1,
  7792        LAZY_MAP_FLAG = 2,
  7793        LAZY_WHILE_FLAG = 3;
  7794  
  7795    /** Used as references for various `Number` constants. */
  7796    var INFINITY = 1 / 0,
  7797        MAX_SAFE_INTEGER = 9007199254740991,
  7798        MAX_INTEGER = 1.7976931348623157e+308,
  7799        NAN = 0 / 0;
  7800  
  7801    /** Used as references for the maximum length and index of an array. */
  7802    var MAX_ARRAY_LENGTH = 4294967295,
  7803        MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
  7804        HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
  7805  
  7806    /** Used to associate wrap methods with their bit flags. */
  7807    var wrapFlags = [
  7808      ['ary', WRAP_ARY_FLAG],
  7809      ['bind', WRAP_BIND_FLAG],
  7810      ['bindKey', WRAP_BIND_KEY_FLAG],
  7811      ['curry', WRAP_CURRY_FLAG],
  7812      ['curryRight', WRAP_CURRY_RIGHT_FLAG],
  7813      ['flip', WRAP_FLIP_FLAG],
  7814      ['partial', WRAP_PARTIAL_FLAG],
  7815      ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],
  7816      ['rearg', WRAP_REARG_FLAG]
  7817    ];
  7818  
  7819    /** `Object#toString` result references. */
  7820    var argsTag = '[object Arguments]',
  7821        arrayTag = '[object Array]',
  7822        asyncTag = '[object AsyncFunction]',
  7823        boolTag = '[object Boolean]',
  7824        dateTag = '[object Date]',
  7825        domExcTag = '[object DOMException]',
  7826        errorTag = '[object Error]',
  7827        funcTag = '[object Function]',
  7828        genTag = '[object GeneratorFunction]',
  7829        mapTag = '[object Map]',
  7830        numberTag = '[object Number]',
  7831        nullTag = '[object Null]',
  7832        objectTag = '[object Object]',
  7833        promiseTag = '[object Promise]',
  7834        proxyTag = '[object Proxy]',
  7835        regexpTag = '[object RegExp]',
  7836        setTag = '[object Set]',
  7837        stringTag = '[object String]',
  7838        symbolTag = '[object Symbol]',
  7839        undefinedTag = '[object Undefined]',
  7840        weakMapTag = '[object WeakMap]',
  7841        weakSetTag = '[object WeakSet]';
  7842  
  7843    var arrayBufferTag = '[object ArrayBuffer]',
  7844        dataViewTag = '[object DataView]',
  7845        float32Tag = '[object Float32Array]',
  7846        float64Tag = '[object Float64Array]',
  7847        int8Tag = '[object Int8Array]',
  7848        int16Tag = '[object Int16Array]',
  7849        int32Tag = '[object Int32Array]',
  7850        uint8Tag = '[object Uint8Array]',
  7851        uint8ClampedTag = '[object Uint8ClampedArray]',
  7852        uint16Tag = '[object Uint16Array]',
  7853        uint32Tag = '[object Uint32Array]';
  7854  
  7855    /** Used to match empty string literals in compiled template source. */
  7856    var reEmptyStringLeading = /\b__p \+= '';/g,
  7857        reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
  7858        reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
  7859  
  7860    /** Used to match HTML entities and HTML characters. */
  7861    var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,
  7862        reUnescapedHtml = /[&<>"']/g,
  7863        reHasEscapedHtml = RegExp(reEscapedHtml.source),
  7864        reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
  7865  
  7866    /** Used to match template delimiters. */
  7867    var reEscape = /<%-([\s\S]+?)%>/g,
  7868        reEvaluate = /<%([\s\S]+?)%>/g,
  7869        reInterpolate = /<%=([\s\S]+?)%>/g;
  7870  
  7871    /** Used to match property names within property paths. */
  7872    var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
  7873        reIsPlainProp = /^\w*$/,
  7874        rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
  7875  
  7876    /**
  7877     * Used to match `RegExp`
  7878     * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
  7879     */
  7880    var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
  7881        reHasRegExpChar = RegExp(reRegExpChar.source);
  7882  
  7883    /** Used to match leading and trailing whitespace. */
  7884    var reTrim = /^\s+|\s+$/g,
  7885        reTrimStart = /^\s+/,
  7886        reTrimEnd = /\s+$/;
  7887  
  7888    /** Used to match wrap detail comments. */
  7889    var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
  7890        reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,
  7891        reSplitDetails = /,? & /;
  7892  
  7893    /** Used to match words composed of alphanumeric characters. */
  7894    var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
  7895  
  7896    /** Used to match backslashes in property paths. */
  7897    var reEscapeChar = /\\(\\)?/g;
  7898  
  7899    /**
  7900     * Used to match
  7901     * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).
  7902     */
  7903    var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
  7904  
  7905    /** Used to match `RegExp` flags from their coerced string values. */
  7906    var reFlags = /\w*$/;
  7907  
  7908    /** Used to detect bad signed hexadecimal string values. */
  7909    var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
  7910  
  7911    /** Used to detect binary string values. */
  7912    var reIsBinary = /^0b[01]+$/i;
  7913  
  7914    /** Used to detect host constructors (Safari). */
  7915    var reIsHostCtor = /^\[object .+?Constructor\]$/;
  7916  
  7917    /** Used to detect octal string values. */
  7918    var reIsOctal = /^0o[0-7]+$/i;
  7919  
  7920    /** Used to detect unsigned integer values. */
  7921    var reIsUint = /^(?:0|[1-9]\d*)$/;
  7922  
  7923    /** Used to match Latin Unicode letters (excluding mathematical operators). */
  7924    var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
  7925  
  7926    /** Used to ensure capturing order of template delimiters. */
  7927    var reNoMatch = /($^)/;
  7928  
  7929    /** Used to match unescaped characters in compiled string literals. */
  7930    var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
  7931  
  7932    /** Used to compose unicode character classes. */
  7933    var rsAstralRange = '\\ud800-\\udfff',
  7934        rsComboMarksRange = '\\u0300-\\u036f',
  7935        reComboHalfMarksRange = '\\ufe20-\\ufe2f',
  7936        rsComboSymbolsRange = '\\u20d0-\\u20ff',
  7937        rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
  7938        rsDingbatRange = '\\u2700-\\u27bf',
  7939        rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
  7940        rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
  7941        rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',
  7942        rsPunctuationRange = '\\u2000-\\u206f',
  7943        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',
  7944        rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde',
  7945        rsVarRange = '\\ufe0e\\ufe0f',
  7946        rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
  7947  
  7948    /** Used to compose unicode capture groups. */
  7949    var rsApos = "['\u2019]",
  7950        rsAstral = '[' + rsAstralRange + ']',
  7951        rsBreak = '[' + rsBreakRange + ']',
  7952        rsCombo = '[' + rsComboRange + ']',
  7953        rsDigits = '\\d+',
  7954        rsDingbat = '[' + rsDingbatRange + ']',
  7955        rsLower = '[' + rsLowerRange + ']',
  7956        rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',
  7957        rsFitz = '\\ud83c[\\udffb-\\udfff]',
  7958        rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
  7959        rsNonAstral = '[^' + rsAstralRange + ']',
  7960        rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
  7961        rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
  7962        rsUpper = '[' + rsUpperRange + ']',
  7963        rsZWJ = '\\u200d';
  7964  
  7965    /** Used to compose unicode regexes. */
  7966    var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
  7967        rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
  7968        rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
  7969        rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
  7970        reOptMod = rsModifier + '?',
  7971        rsOptVar = '[' + rsVarRange + ']?',
  7972        rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
  7973        rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])',
  7974        rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])',
  7975        rsSeq = rsOptVar + reOptMod + rsOptJoin,
  7976        rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,
  7977        rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
  7978  
  7979    /** Used to match apostrophes. */
  7980    var reApos = RegExp(rsApos, 'g');
  7981  
  7982    /**
  7983     * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
  7984     * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
  7985     */
  7986    var reComboMark = RegExp(rsCombo, 'g');
  7987  
  7988    /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
  7989    var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
  7990  
  7991    /** Used to match complex or compound words. */
  7992    var reUnicodeWord = RegExp([
  7993      rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
  7994      rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',
  7995      rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,
  7996      rsUpper + '+' + rsOptContrUpper,
  7997      rsOrdUpper,
  7998      rsOrdLower,
  7999      rsDigits,
  8000      rsEmoji
  8001    ].join('|'), 'g');
  8002  
  8003    /** 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/). */
  8004    var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
  8005  
  8006    /** Used to detect strings that need a more robust regexp to match words. */
  8007    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 ]/;
  8008  
  8009    /** Used to assign default `context` object properties. */
  8010    var contextProps = [
  8011      'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',
  8012      'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',
  8013      'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',
  8014      'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',
  8015      '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'
  8016    ];
  8017  
  8018    /** Used to make template sourceURLs easier to identify. */
  8019    var templateCounter = -1;
  8020  
  8021    /** Used to identify `toStringTag` values of typed arrays. */
  8022    var typedArrayTags = {};
  8023    typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
  8024    typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
  8025    typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
  8026    typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
  8027    typedArrayTags[uint32Tag] = true;
  8028    typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
  8029    typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
  8030    typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
  8031    typedArrayTags[errorTag] = typedArrayTags[funcTag] =
  8032    typedArrayTags[mapTag] = typedArrayTags[numberTag] =
  8033    typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
  8034    typedArrayTags[setTag] = typedArrayTags[stringTag] =
  8035    typedArrayTags[weakMapTag] = false;
  8036  
  8037    /** Used to identify `toStringTag` values supported by `_.clone`. */
  8038    var cloneableTags = {};
  8039    cloneableTags[argsTag] = cloneableTags[arrayTag] =
  8040    cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
  8041    cloneableTags[boolTag] = cloneableTags[dateTag] =
  8042    cloneableTags[float32Tag] = cloneableTags[float64Tag] =
  8043    cloneableTags[int8Tag] = cloneableTags[int16Tag] =
  8044    cloneableTags[int32Tag] = cloneableTags[mapTag] =
  8045    cloneableTags[numberTag] = cloneableTags[objectTag] =
  8046    cloneableTags[regexpTag] = cloneableTags[setTag] =
  8047    cloneableTags[stringTag] = cloneableTags[symbolTag] =
  8048    cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
  8049    cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
  8050    cloneableTags[errorTag] = cloneableTags[funcTag] =
  8051    cloneableTags[weakMapTag] = false;
  8052  
  8053    /** Used to map Latin Unicode letters to basic Latin letters. */
  8054    var deburredLetters = {
  8055      // Latin-1 Supplement block.
  8056      '\xc0': 'A',  '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
  8057      '\xe0': 'a',  '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
  8058      '\xc7': 'C',  '\xe7': 'c',
  8059      '\xd0': 'D',  '\xf0': 'd',
  8060      '\xc8': 'E',  '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
  8061      '\xe8': 'e',  '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
  8062      '\xcc': 'I',  '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
  8063      '\xec': 'i',  '\xed': 'i', '\xee': 'i', '\xef': 'i',
  8064      '\xd1': 'N',  '\xf1': 'n',
  8065      '\xd2': 'O',  '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
  8066      '\xf2': 'o',  '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
  8067      '\xd9': 'U',  '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
  8068      '\xf9': 'u',  '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
  8069      '\xdd': 'Y',  '\xfd': 'y', '\xff': 'y',
  8070      '\xc6': 'Ae', '\xe6': 'ae',
  8071      '\xde': 'Th', '\xfe': 'th',
  8072      '\xdf': 'ss',
  8073      // Latin Extended-A block.
  8074      '\u0100': 'A',  '\u0102': 'A', '\u0104': 'A',
  8075      '\u0101': 'a',  '\u0103': 'a', '\u0105': 'a',
  8076      '\u0106': 'C',  '\u0108': 'C', '\u010a': 'C', '\u010c': 'C',
  8077      '\u0107': 'c',  '\u0109': 'c', '\u010b': 'c', '\u010d': 'c',
  8078      '\u010e': 'D',  '\u0110': 'D', '\u010f': 'd', '\u0111': 'd',
  8079      '\u0112': 'E',  '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E',
  8080      '\u0113': 'e',  '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e',
  8081      '\u011c': 'G',  '\u011e': 'G', '\u0120': 'G', '\u0122': 'G',
  8082      '\u011d': 'g',  '\u011f': 'g', '\u0121': 'g', '\u0123': 'g',
  8083      '\u0124': 'H',  '\u0126': 'H', '\u0125': 'h', '\u0127': 'h',
  8084      '\u0128': 'I',  '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I',
  8085      '\u0129': 'i',  '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i',
  8086      '\u0134': 'J',  '\u0135': 'j',
  8087      '\u0136': 'K',  '\u0137': 'k', '\u0138': 'k',
  8088      '\u0139': 'L',  '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L',
  8089      '\u013a': 'l',  '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l',
  8090      '\u0143': 'N',  '\u0145': 'N', '\u0147': 'N', '\u014a': 'N',
  8091      '\u0144': 'n',  '\u0146': 'n', '\u0148': 'n', '\u014b': 'n',
  8092      '\u014c': 'O',  '\u014e': 'O', '\u0150': 'O',
  8093      '\u014d': 'o',  '\u014f': 'o', '\u0151': 'o',
  8094      '\u0154': 'R',  '\u0156': 'R', '\u0158': 'R',
  8095      '\u0155': 'r',  '\u0157': 'r', '\u0159': 'r',
  8096      '\u015a': 'S',  '\u015c': 'S', '\u015e': 'S', '\u0160': 'S',
  8097      '\u015b': 's',  '\u015d': 's', '\u015f': 's', '\u0161': 's',
  8098      '\u0162': 'T',  '\u0164': 'T', '\u0166': 'T',
  8099      '\u0163': 't',  '\u0165': 't', '\u0167': 't',
  8100      '\u0168': 'U',  '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U',
  8101      '\u0169': 'u',  '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u',
  8102      '\u0174': 'W',  '\u0175': 'w',
  8103      '\u0176': 'Y',  '\u0177': 'y', '\u0178': 'Y',
  8104      '\u0179': 'Z',  '\u017b': 'Z', '\u017d': 'Z',
  8105      '\u017a': 'z',  '\u017c': 'z', '\u017e': 'z',
  8106      '\u0132': 'IJ', '\u0133': 'ij',
  8107      '\u0152': 'Oe', '\u0153': 'oe',
  8108      '\u0149': "'n", '\u017f': 's'
  8109    };
  8110  
  8111    /** Used to map characters to HTML entities. */
  8112    var htmlEscapes = {
  8113      '&': '&amp;',
  8114      '<': '&lt;',
  8115      '>': '&gt;',
  8116      '"': '&quot;',
  8117      "'": '&#39;'
  8118    };
  8119  
  8120    /** Used to map HTML entities to characters. */
  8121    var htmlUnescapes = {
  8122      '&amp;': '&',
  8123      '&lt;': '<',
  8124      '&gt;': '>',
  8125      '&quot;': '"',
  8126      '&#39;': "'"
  8127    };
  8128  
  8129    /** Used to escape characters for inclusion in compiled string literals. */
  8130    var stringEscapes = {
  8131      '\\': '\\',
  8132      "'": "'",
  8133      '\n': 'n',
  8134      '\r': 'r',
  8135      '\u2028': 'u2028',
  8136      '\u2029': 'u2029'
  8137    };
  8138  
  8139    /** Built-in method references without a dependency on `root`. */
  8140    var freeParseFloat = parseFloat,
  8141        freeParseInt = parseInt;
  8142  
  8143    /** Detect free variable `global` from Node.js. */
  8144    var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
  8145  
  8146    /** Detect free variable `self`. */
  8147    var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
  8148  
  8149    /** Used as a reference to the global object. */
  8150    var root = freeGlobal || freeSelf || Function('return this')();
  8151  
  8152    /** Detect free variable `exports`. */
  8153    var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
  8154  
  8155    /** Detect free variable `module`. */
  8156    var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
  8157  
  8158    /** Detect the popular CommonJS extension `module.exports`. */
  8159    var moduleExports = freeModule && freeModule.exports === freeExports;
  8160  
  8161    /** Detect free variable `process` from Node.js. */
  8162    var freeProcess = moduleExports && freeGlobal.process;
  8163  
  8164    /** Used to access faster Node.js helpers. */
  8165    var nodeUtil = (function() {
  8166      try {
  8167        // Use `util.types` for Node.js 10+.
  8168        var types = freeModule && freeModule.require && freeModule.require('util').types;
  8169  
  8170        if (types) {
  8171          return types;
  8172        }
  8173  
  8174        // Legacy `process.binding('util')` for Node.js < 10.
  8175        return freeProcess && freeProcess.binding && freeProcess.binding('util');
  8176      } catch (e) {}
  8177    }());
  8178  
  8179    /* Node.js helper references. */
  8180    var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,
  8181        nodeIsDate = nodeUtil && nodeUtil.isDate,
  8182        nodeIsMap = nodeUtil && nodeUtil.isMap,
  8183        nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,
  8184        nodeIsSet = nodeUtil && nodeUtil.isSet,
  8185        nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
  8186  
  8187    /*--------------------------------------------------------------------------*/
  8188  
  8189    /**
  8190     * A faster alternative to `Function#apply`, this function invokes `func`
  8191     * with the `this` binding of `thisArg` and the arguments of `args`.
  8192     *
  8193     * @private
  8194     * @param {Function} func The function to invoke.
  8195     * @param {*} thisArg The `this` binding of `func`.
  8196     * @param {Array} args The arguments to invoke `func` with.
  8197     * @returns {*} Returns the result of `func`.
  8198     */
  8199    function apply(func, thisArg, args) {
  8200      switch (args.length) {
  8201        case 0: return func.call(thisArg);
  8202        case 1: return func.call(thisArg, args[0]);
  8203        case 2: return func.call(thisArg, args[0], args[1]);
  8204        case 3: return func.call(thisArg, args[0], args[1], args[2]);
  8205      }
  8206      return func.apply(thisArg, args);
  8207    }
  8208  
  8209    /**
  8210     * A specialized version of `baseAggregator` for arrays.
  8211     *
  8212     * @private
  8213     * @param {Array} [array] The array to iterate over.
  8214     * @param {Function} setter The function to set `accumulator` values.
  8215     * @param {Function} iteratee The iteratee to transform keys.
  8216     * @param {Object} accumulator The initial aggregated object.
  8217     * @returns {Function} Returns `accumulator`.
  8218     */
  8219    function arrayAggregator(array, setter, iteratee, accumulator) {
  8220      var index = -1,
  8221          length = array == null ? 0 : array.length;
  8222  
  8223      while (++index < length) {
  8224        var value = array[index];
  8225        setter(accumulator, value, iteratee(value), array);
  8226      }
  8227      return accumulator;
  8228    }
  8229  
  8230    /**
  8231     * A specialized version of `_.forEach` for arrays without support for
  8232     * iteratee shorthands.
  8233     *
  8234     * @private
  8235     * @param {Array} [array] The array to iterate over.
  8236     * @param {Function} iteratee The function invoked per iteration.
  8237     * @returns {Array} Returns `array`.
  8238     */
  8239    function arrayEach(array, iteratee) {
  8240      var index = -1,
  8241          length = array == null ? 0 : array.length;
  8242  
  8243      while (++index < length) {
  8244        if (iteratee(array[index], index, array) === false) {
  8245          break;
  8246        }
  8247      }
  8248      return array;
  8249    }
  8250  
  8251    /**
  8252     * A specialized version of `_.forEachRight` for arrays without support for
  8253     * iteratee shorthands.
  8254     *
  8255     * @private
  8256     * @param {Array} [array] The array to iterate over.
  8257     * @param {Function} iteratee The function invoked per iteration.
  8258     * @returns {Array} Returns `array`.
  8259     */
  8260    function arrayEachRight(array, iteratee) {
  8261      var length = array == null ? 0 : array.length;
  8262  
  8263      while (length--) {
  8264        if (iteratee(array[length], length, array) === false) {
  8265          break;
  8266        }
  8267      }
  8268      return array;
  8269    }
  8270  
  8271    /**
  8272     * A specialized version of `_.every` for arrays without support for
  8273     * iteratee shorthands.
  8274     *
  8275     * @private
  8276     * @param {Array} [array] The array to iterate over.
  8277     * @param {Function} predicate The function invoked per iteration.
  8278     * @returns {boolean} Returns `true` if all elements pass the predicate check,
  8279     *  else `false`.
  8280     */
  8281    function arrayEvery(array, predicate) {
  8282      var index = -1,
  8283          length = array == null ? 0 : array.length;
  8284  
  8285      while (++index < length) {
  8286        if (!predicate(array[index], index, array)) {
  8287          return false;
  8288        }
  8289      }
  8290      return true;
  8291    }
  8292  
  8293    /**
  8294     * A specialized version of `_.filter` for arrays without support for
  8295     * iteratee shorthands.
  8296     *
  8297     * @private
  8298     * @param {Array} [array] The array to iterate over.
  8299     * @param {Function} predicate The function invoked per iteration.
  8300     * @returns {Array} Returns the new filtered array.
  8301     */
  8302    function arrayFilter(array, predicate) {
  8303      var index = -1,
  8304          length = array == null ? 0 : array.length,
  8305          resIndex = 0,
  8306          result = [];
  8307  
  8308      while (++index < length) {
  8309        var value = array[index];
  8310        if (predicate(value, index, array)) {
  8311          result[resIndex++] = value;
  8312        }
  8313      }
  8314      return result;
  8315    }
  8316  
  8317    /**
  8318     * A specialized version of `_.includes` for arrays without support for
  8319     * specifying an index to search from.
  8320     *
  8321     * @private
  8322     * @param {Array} [array] The array to inspect.
  8323     * @param {*} target The value to search for.
  8324     * @returns {boolean} Returns `true` if `target` is found, else `false`.
  8325     */
  8326    function arrayIncludes(array, value) {
  8327      var length = array == null ? 0 : array.length;
  8328      return !!length && baseIndexOf(array, value, 0) > -1;
  8329    }
  8330  
  8331    /**
  8332     * This function is like `arrayIncludes` except that it accepts a comparator.
  8333     *
  8334     * @private
  8335     * @param {Array} [array] The array to inspect.
  8336     * @param {*} target The value to search for.
  8337     * @param {Function} comparator The comparator invoked per element.
  8338     * @returns {boolean} Returns `true` if `target` is found, else `false`.
  8339     */
  8340    function arrayIncludesWith(array, value, comparator) {
  8341      var index = -1,
  8342          length = array == null ? 0 : array.length;
  8343  
  8344      while (++index < length) {
  8345        if (comparator(value, array[index])) {
  8346          return true;
  8347        }
  8348      }
  8349      return false;
  8350    }
  8351  
  8352    /**
  8353     * A specialized version of `_.map` for arrays without support for iteratee
  8354     * shorthands.
  8355     *
  8356     * @private
  8357     * @param {Array} [array] The array to iterate over.
  8358     * @param {Function} iteratee The function invoked per iteration.
  8359     * @returns {Array} Returns the new mapped array.
  8360     */
  8361    function arrayMap(array, iteratee) {
  8362      var index = -1,
  8363          length = array == null ? 0 : array.length,
  8364          result = Array(length);
  8365  
  8366      while (++index < length) {
  8367        result[index] = iteratee(array[index], index, array);
  8368      }
  8369      return result;
  8370    }
  8371  
  8372    /**
  8373     * Appends the elements of `values` to `array`.
  8374     *
  8375     * @private
  8376     * @param {Array} array The array to modify.
  8377     * @param {Array} values The values to append.
  8378     * @returns {Array} Returns `array`.
  8379     */
  8380    function arrayPush(array, values) {
  8381      var index = -1,
  8382          length = values.length,
  8383          offset = array.length;
  8384  
  8385      while (++index < length) {
  8386        array[offset + index] = values[index];
  8387      }
  8388      return array;
  8389    }
  8390  
  8391    /**
  8392     * A specialized version of `_.reduce` for arrays without support for
  8393     * iteratee shorthands.
  8394     *
  8395     * @private
  8396     * @param {Array} [array] The array to iterate over.
  8397     * @param {Function} iteratee The function invoked per iteration.
  8398     * @param {*} [accumulator] The initial value.
  8399     * @param {boolean} [initAccum] Specify using the first element of `array` as
  8400     *  the initial value.
  8401     * @returns {*} Returns the accumulated value.
  8402     */
  8403    function arrayReduce(array, iteratee, accumulator, initAccum) {
  8404      var index = -1,
  8405          length = array == null ? 0 : array.length;
  8406  
  8407      if (initAccum && length) {
  8408        accumulator = array[++index];
  8409      }
  8410      while (++index < length) {
  8411        accumulator = iteratee(accumulator, array[index], index, array);
  8412      }
  8413      return accumulator;
  8414    }
  8415  
  8416    /**
  8417     * A specialized version of `_.reduceRight` for arrays without support for
  8418     * iteratee shorthands.
  8419     *
  8420     * @private
  8421     * @param {Array} [array] The array to iterate over.
  8422     * @param {Function} iteratee The function invoked per iteration.
  8423     * @param {*} [accumulator] The initial value.
  8424     * @param {boolean} [initAccum] Specify using the last element of `array` as
  8425     *  the initial value.
  8426     * @returns {*} Returns the accumulated value.
  8427     */
  8428    function arrayReduceRight(array, iteratee, accumulator, initAccum) {
  8429      var length = array == null ? 0 : array.length;
  8430      if (initAccum && length) {
  8431        accumulator = array[--length];
  8432      }
  8433      while (length--) {
  8434        accumulator = iteratee(accumulator, array[length], length, array);
  8435      }
  8436      return accumulator;
  8437    }
  8438  
  8439    /**
  8440     * A specialized version of `_.some` for arrays without support for iteratee
  8441     * shorthands.
  8442     *
  8443     * @private
  8444     * @param {Array} [array] The array to iterate over.
  8445     * @param {Function} predicate The function invoked per iteration.
  8446     * @returns {boolean} Returns `true` if any element passes the predicate check,
  8447     *  else `false`.
  8448     */
  8449    function arraySome(array, predicate) {
  8450      var index = -1,
  8451          length = array == null ? 0 : array.length;
  8452  
  8453      while (++index < length) {
  8454        if (predicate(array[index], index, array)) {
  8455          return true;
  8456        }
  8457      }
  8458      return false;
  8459    }
  8460  
  8461    /**
  8462     * Gets the size of an ASCII `string`.
  8463     *
  8464     * @private
  8465     * @param {string} string The string inspect.
  8466     * @returns {number} Returns the string size.
  8467     */
  8468    var asciiSize = baseProperty('length');
  8469  
  8470    /**
  8471     * Converts an ASCII `string` to an array.
  8472     *
  8473     * @private
  8474     * @param {string} string The string to convert.
  8475     * @returns {Array} Returns the converted array.
  8476     */
  8477    function asciiToArray(string) {
  8478      return string.split('');
  8479    }
  8480  
  8481    /**
  8482     * Splits an ASCII `string` into an array of its words.
  8483     *
  8484     * @private
  8485     * @param {string} The string to inspect.
  8486     * @returns {Array} Returns the words of `string`.
  8487     */
  8488    function asciiWords(string) {
  8489      return string.match(reAsciiWord) || [];
  8490    }
  8491  
  8492    /**
  8493     * The base implementation of methods like `_.findKey` and `_.findLastKey`,
  8494     * without support for iteratee shorthands, which iterates over `collection`
  8495     * using `eachFunc`.
  8496     *
  8497     * @private
  8498     * @param {Array|Object} collection The collection to inspect.
  8499     * @param {Function} predicate The function invoked per iteration.
  8500     * @param {Function} eachFunc The function to iterate over `collection`.
  8501     * @returns {*} Returns the found element or its key, else `undefined`.
  8502     */
  8503    function baseFindKey(collection, predicate, eachFunc) {
  8504      var result;
  8505      eachFunc(collection, function(value, key, collection) {
  8506        if (predicate(value, key, collection)) {
  8507          result = key;
  8508          return false;
  8509        }
  8510      });
  8511      return result;
  8512    }
  8513  
  8514    /**
  8515     * The base implementation of `_.findIndex` and `_.findLastIndex` without
  8516     * support for iteratee shorthands.
  8517     *
  8518     * @private
  8519     * @param {Array} array The array to inspect.
  8520     * @param {Function} predicate The function invoked per iteration.
  8521     * @param {number} fromIndex The index to search from.
  8522     * @param {boolean} [fromRight] Specify iterating from right to left.
  8523     * @returns {number} Returns the index of the matched value, else `-1`.
  8524     */
  8525    function baseFindIndex(array, predicate, fromIndex, fromRight) {
  8526      var length = array.length,
  8527          index = fromIndex + (fromRight ? 1 : -1);
  8528  
  8529      while ((fromRight ? index-- : ++index < length)) {
  8530        if (predicate(array[index], index, array)) {
  8531          return index;
  8532        }
  8533      }
  8534      return -1;
  8535    }
  8536  
  8537    /**
  8538     * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
  8539     *
  8540     * @private
  8541     * @param {Array} array The array to inspect.
  8542     * @param {*} value The value to search for.
  8543     * @param {number} fromIndex The index to search from.
  8544     * @returns {number} Returns the index of the matched value, else `-1`.
  8545     */
  8546    function baseIndexOf(array, value, fromIndex) {
  8547      return value === value
  8548        ? strictIndexOf(array, value, fromIndex)
  8549        : baseFindIndex(array, baseIsNaN, fromIndex);
  8550    }
  8551  
  8552    /**
  8553     * This function is like `baseIndexOf` except that it accepts a comparator.
  8554     *
  8555     * @private
  8556     * @param {Array} array The array to inspect.
  8557     * @param {*} value The value to search for.
  8558     * @param {number} fromIndex The index to search from.
  8559     * @param {Function} comparator The comparator invoked per element.
  8560     * @returns {number} Returns the index of the matched value, else `-1`.
  8561     */
  8562    function baseIndexOfWith(array, value, fromIndex, comparator) {
  8563      var index = fromIndex - 1,
  8564          length = array.length;
  8565  
  8566      while (++index < length) {
  8567        if (comparator(array[index], value)) {
  8568          return index;
  8569        }
  8570      }
  8571      return -1;
  8572    }
  8573  
  8574    /**
  8575     * The base implementation of `_.isNaN` without support for number objects.
  8576     *
  8577     * @private
  8578     * @param {*} value The value to check.
  8579     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
  8580     */
  8581    function baseIsNaN(value) {
  8582      return value !== value;
  8583    }
  8584  
  8585    /**
  8586     * The base implementation of `_.mean` and `_.meanBy` without support for
  8587     * iteratee shorthands.
  8588     *
  8589     * @private
  8590     * @param {Array} array The array to iterate over.
  8591     * @param {Function} iteratee The function invoked per iteration.
  8592     * @returns {number} Returns the mean.
  8593     */
  8594    function baseMean(array, iteratee) {
  8595      var length = array == null ? 0 : array.length;
  8596      return length ? (baseSum(array, iteratee) / length) : NAN;
  8597    }
  8598  
  8599    /**
  8600     * The base implementation of `_.property` without support for deep paths.
  8601     *
  8602     * @private
  8603     * @param {string} key The key of the property to get.
  8604     * @returns {Function} Returns the new accessor function.
  8605     */
  8606    function baseProperty(key) {
  8607      return function(object) {
  8608        return object == null ? undefined : object[key];
  8609      };
  8610    }
  8611  
  8612    /**
  8613     * The base implementation of `_.propertyOf` without support for deep paths.
  8614     *
  8615     * @private
  8616     * @param {Object} object The object to query.
  8617     * @returns {Function} Returns the new accessor function.
  8618     */
  8619    function basePropertyOf(object) {
  8620      return function(key) {
  8621        return object == null ? undefined : object[key];
  8622      };
  8623    }
  8624  
  8625    /**
  8626     * The base implementation of `_.reduce` and `_.reduceRight`, without support
  8627     * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
  8628     *
  8629     * @private
  8630     * @param {Array|Object} collection The collection to iterate over.
  8631     * @param {Function} iteratee The function invoked per iteration.
  8632     * @param {*} accumulator The initial value.
  8633     * @param {boolean} initAccum Specify using the first or last element of
  8634     *  `collection` as the initial value.
  8635     * @param {Function} eachFunc The function to iterate over `collection`.
  8636     * @returns {*} Returns the accumulated value.
  8637     */
  8638    function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
  8639      eachFunc(collection, function(value, index, collection) {
  8640        accumulator = initAccum
  8641          ? (initAccum = false, value)
  8642          : iteratee(accumulator, value, index, collection);
  8643      });
  8644      return accumulator;
  8645    }
  8646  
  8647    /**
  8648     * The base implementation of `_.sortBy` which uses `comparer` to define the
  8649     * sort order of `array` and replaces criteria objects with their corresponding
  8650     * values.
  8651     *
  8652     * @private
  8653     * @param {Array} array The array to sort.
  8654     * @param {Function} comparer The function to define sort order.
  8655     * @returns {Array} Returns `array`.
  8656     */
  8657    function baseSortBy(array, comparer) {
  8658      var length = array.length;
  8659  
  8660      array.sort(comparer);
  8661      while (length--) {
  8662        array[length] = array[length].value;
  8663      }
  8664      return array;
  8665    }
  8666  
  8667    /**
  8668     * The base implementation of `_.sum` and `_.sumBy` without support for
  8669     * iteratee shorthands.
  8670     *
  8671     * @private
  8672     * @param {Array} array The array to iterate over.
  8673     * @param {Function} iteratee The function invoked per iteration.
  8674     * @returns {number} Returns the sum.
  8675     */
  8676    function baseSum(array, iteratee) {
  8677      var result,
  8678          index = -1,
  8679          length = array.length;
  8680  
  8681      while (++index < length) {
  8682        var current = iteratee(array[index]);
  8683        if (current !== undefined) {
  8684          result = result === undefined ? current : (result + current);
  8685        }
  8686      }
  8687      return result;
  8688    }
  8689  
  8690    /**
  8691     * The base implementation of `_.times` without support for iteratee shorthands
  8692     * or max array length checks.
  8693     *
  8694     * @private
  8695     * @param {number} n The number of times to invoke `iteratee`.
  8696     * @param {Function} iteratee The function invoked per iteration.
  8697     * @returns {Array} Returns the array of results.
  8698     */
  8699    function baseTimes(n, iteratee) {
  8700      var index = -1,
  8701          result = Array(n);
  8702  
  8703      while (++index < n) {
  8704        result[index] = iteratee(index);
  8705      }
  8706      return result;
  8707    }
  8708  
  8709    /**
  8710     * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
  8711     * of key-value pairs for `object` corresponding to the property names of `props`.
  8712     *
  8713     * @private
  8714     * @param {Object} object The object to query.
  8715     * @param {Array} props The property names to get values for.
  8716     * @returns {Object} Returns the key-value pairs.
  8717     */
  8718    function baseToPairs(object, props) {
  8719      return arrayMap(props, function(key) {
  8720        return [key, object[key]];
  8721      });
  8722    }
  8723  
  8724    /**
  8725     * The base implementation of `_.unary` without support for storing metadata.
  8726     *
  8727     * @private
  8728     * @param {Function} func The function to cap arguments for.
  8729     * @returns {Function} Returns the new capped function.
  8730     */
  8731    function baseUnary(func) {
  8732      return function(value) {
  8733        return func(value);
  8734      };
  8735    }
  8736  
  8737    /**
  8738     * The base implementation of `_.values` and `_.valuesIn` which creates an
  8739     * array of `object` property values corresponding to the property names
  8740     * of `props`.
  8741     *
  8742     * @private
  8743     * @param {Object} object The object to query.
  8744     * @param {Array} props The property names to get values for.
  8745     * @returns {Object} Returns the array of property values.
  8746     */
  8747    function baseValues(object, props) {
  8748      return arrayMap(props, function(key) {
  8749        return object[key];
  8750      });
  8751    }
  8752  
  8753    /**
  8754     * Checks if a `cache` value for `key` exists.
  8755     *
  8756     * @private
  8757     * @param {Object} cache The cache to query.
  8758     * @param {string} key The key of the entry to check.
  8759     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  8760     */
  8761    function cacheHas(cache, key) {
  8762      return cache.has(key);
  8763    }
  8764  
  8765    /**
  8766     * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol
  8767     * that is not found in the character symbols.
  8768     *
  8769     * @private
  8770     * @param {Array} strSymbols The string symbols to inspect.
  8771     * @param {Array} chrSymbols The character symbols to find.
  8772     * @returns {number} Returns the index of the first unmatched string symbol.
  8773     */
  8774    function charsStartIndex(strSymbols, chrSymbols) {
  8775      var index = -1,
  8776          length = strSymbols.length;
  8777  
  8778      while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
  8779      return index;
  8780    }
  8781  
  8782    /**
  8783     * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol
  8784     * that is not found in the character symbols.
  8785     *
  8786     * @private
  8787     * @param {Array} strSymbols The string symbols to inspect.
  8788     * @param {Array} chrSymbols The character symbols to find.
  8789     * @returns {number} Returns the index of the last unmatched string symbol.
  8790     */
  8791    function charsEndIndex(strSymbols, chrSymbols) {
  8792      var index = strSymbols.length;
  8793  
  8794      while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
  8795      return index;
  8796    }
  8797  
  8798    /**
  8799     * Gets the number of `placeholder` occurrences in `array`.
  8800     *
  8801     * @private
  8802     * @param {Array} array The array to inspect.
  8803     * @param {*} placeholder The placeholder to search for.
  8804     * @returns {number} Returns the placeholder count.
  8805     */
  8806    function countHolders(array, placeholder) {
  8807      var length = array.length,
  8808          result = 0;
  8809  
  8810      while (length--) {
  8811        if (array[length] === placeholder) {
  8812          ++result;
  8813        }
  8814      }
  8815      return result;
  8816    }
  8817  
  8818    /**
  8819     * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A
  8820     * letters to basic Latin letters.
  8821     *
  8822     * @private
  8823     * @param {string} letter The matched letter to deburr.
  8824     * @returns {string} Returns the deburred letter.
  8825     */
  8826    var deburrLetter = basePropertyOf(deburredLetters);
  8827  
  8828    /**
  8829     * Used by `_.escape` to convert characters to HTML entities.
  8830     *
  8831     * @private
  8832     * @param {string} chr The matched character to escape.
  8833     * @returns {string} Returns the escaped character.
  8834     */
  8835    var escapeHtmlChar = basePropertyOf(htmlEscapes);
  8836  
  8837    /**
  8838     * Used by `_.template` to escape characters for inclusion in compiled string literals.
  8839     *
  8840     * @private
  8841     * @param {string} chr The matched character to escape.
  8842     * @returns {string} Returns the escaped character.
  8843     */
  8844    function escapeStringChar(chr) {
  8845      return '\\' + stringEscapes[chr];
  8846    }
  8847  
  8848    /**
  8849     * Gets the value at `key` of `object`.
  8850     *
  8851     * @private
  8852     * @param {Object} [object] The object to query.
  8853     * @param {string} key The key of the property to get.
  8854     * @returns {*} Returns the property value.
  8855     */
  8856    function getValue(object, key) {
  8857      return object == null ? undefined : object[key];
  8858    }
  8859  
  8860    /**
  8861     * Checks if `string` contains Unicode symbols.
  8862     *
  8863     * @private
  8864     * @param {string} string The string to inspect.
  8865     * @returns {boolean} Returns `true` if a symbol is found, else `false`.
  8866     */
  8867    function hasUnicode(string) {
  8868      return reHasUnicode.test(string);
  8869    }
  8870  
  8871    /**
  8872     * Checks if `string` contains a word composed of Unicode symbols.
  8873     *
  8874     * @private
  8875     * @param {string} string The string to inspect.
  8876     * @returns {boolean} Returns `true` if a word is found, else `false`.
  8877     */
  8878    function hasUnicodeWord(string) {
  8879      return reHasUnicodeWord.test(string);
  8880    }
  8881  
  8882    /**
  8883     * Converts `iterator` to an array.
  8884     *
  8885     * @private
  8886     * @param {Object} iterator The iterator to convert.
  8887     * @returns {Array} Returns the converted array.
  8888     */
  8889    function iteratorToArray(iterator) {
  8890      var data,
  8891          result = [];
  8892  
  8893      while (!(data = iterator.next()).done) {
  8894        result.push(data.value);
  8895      }
  8896      return result;
  8897    }
  8898  
  8899    /**
  8900     * Converts `map` to its key-value pairs.
  8901     *
  8902     * @private
  8903     * @param {Object} map The map to convert.
  8904     * @returns {Array} Returns the key-value pairs.
  8905     */
  8906    function mapToArray(map) {
  8907      var index = -1,
  8908          result = Array(map.size);
  8909  
  8910      map.forEach(function(value, key) {
  8911        result[++index] = [key, value];
  8912      });
  8913      return result;
  8914    }
  8915  
  8916    /**
  8917     * Creates a unary function that invokes `func` with its argument transformed.
  8918     *
  8919     * @private
  8920     * @param {Function} func The function to wrap.
  8921     * @param {Function} transform The argument transform.
  8922     * @returns {Function} Returns the new function.
  8923     */
  8924    function overArg(func, transform) {
  8925      return function(arg) {
  8926        return func(transform(arg));
  8927      };
  8928    }
  8929  
  8930    /**
  8931     * Replaces all `placeholder` elements in `array` with an internal placeholder
  8932     * and returns an array of their indexes.
  8933     *
  8934     * @private
  8935     * @param {Array} array The array to modify.
  8936     * @param {*} placeholder The placeholder to replace.
  8937     * @returns {Array} Returns the new array of placeholder indexes.
  8938     */
  8939    function replaceHolders(array, placeholder) {
  8940      var index = -1,
  8941          length = array.length,
  8942          resIndex = 0,
  8943          result = [];
  8944  
  8945      while (++index < length) {
  8946        var value = array[index];
  8947        if (value === placeholder || value === PLACEHOLDER) {
  8948          array[index] = PLACEHOLDER;
  8949          result[resIndex++] = index;
  8950        }
  8951      }
  8952      return result;
  8953    }
  8954  
  8955    /**
  8956     * Gets the value at `key`, unless `key` is "__proto__".
  8957     *
  8958     * @private
  8959     * @param {Object} object The object to query.
  8960     * @param {string} key The key of the property to get.
  8961     * @returns {*} Returns the property value.
  8962     */
  8963    function safeGet(object, key) {
  8964      return key == '__proto__'
  8965        ? undefined
  8966        : object[key];
  8967    }
  8968  
  8969    /**
  8970     * Converts `set` to an array of its values.
  8971     *
  8972     * @private
  8973     * @param {Object} set The set to convert.
  8974     * @returns {Array} Returns the values.
  8975     */
  8976    function setToArray(set) {
  8977      var index = -1,
  8978          result = Array(set.size);
  8979  
  8980      set.forEach(function(value) {
  8981        result[++index] = value;
  8982      });
  8983      return result;
  8984    }
  8985  
  8986    /**
  8987     * Converts `set` to its value-value pairs.
  8988     *
  8989     * @private
  8990     * @param {Object} set The set to convert.
  8991     * @returns {Array} Returns the value-value pairs.
  8992     */
  8993    function setToPairs(set) {
  8994      var index = -1,
  8995          result = Array(set.size);
  8996  
  8997      set.forEach(function(value) {
  8998        result[++index] = [value, value];
  8999      });
  9000      return result;
  9001    }
  9002  
  9003    /**
  9004     * A specialized version of `_.indexOf` which performs strict equality
  9005     * comparisons of values, i.e. `===`.
  9006     *
  9007     * @private
  9008     * @param {Array} array The array to inspect.
  9009     * @param {*} value The value to search for.
  9010     * @param {number} fromIndex The index to search from.
  9011     * @returns {number} Returns the index of the matched value, else `-1`.
  9012     */
  9013    function strictIndexOf(array, value, fromIndex) {
  9014      var index = fromIndex - 1,
  9015          length = array.length;
  9016  
  9017      while (++index < length) {
  9018        if (array[index] === value) {
  9019          return index;
  9020        }
  9021      }
  9022      return -1;
  9023    }
  9024  
  9025    /**
  9026     * A specialized version of `_.lastIndexOf` which performs strict equality
  9027     * comparisons of values, i.e. `===`.
  9028     *
  9029     * @private
  9030     * @param {Array} array The array to inspect.
  9031     * @param {*} value The value to search for.
  9032     * @param {number} fromIndex The index to search from.
  9033     * @returns {number} Returns the index of the matched value, else `-1`.
  9034     */
  9035    function strictLastIndexOf(array, value, fromIndex) {
  9036      var index = fromIndex + 1;
  9037      while (index--) {
  9038        if (array[index] === value) {
  9039          return index;
  9040        }
  9041      }
  9042      return index;
  9043    }
  9044  
  9045    /**
  9046     * Gets the number of symbols in `string`.
  9047     *
  9048     * @private
  9049     * @param {string} string The string to inspect.
  9050     * @returns {number} Returns the string size.
  9051     */
  9052    function stringSize(string) {
  9053      return hasUnicode(string)
  9054        ? unicodeSize(string)
  9055        : asciiSize(string);
  9056    }
  9057  
  9058    /**
  9059     * Converts `string` to an array.
  9060     *
  9061     * @private
  9062     * @param {string} string The string to convert.
  9063     * @returns {Array} Returns the converted array.
  9064     */
  9065    function stringToArray(string) {
  9066      return hasUnicode(string)
  9067        ? unicodeToArray(string)
  9068        : asciiToArray(string);
  9069    }
  9070  
  9071    /**
  9072     * Used by `_.unescape` to convert HTML entities to characters.
  9073     *
  9074     * @private
  9075     * @param {string} chr The matched character to unescape.
  9076     * @returns {string} Returns the unescaped character.
  9077     */
  9078    var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
  9079  
  9080    /**
  9081     * Gets the size of a Unicode `string`.
  9082     *
  9083     * @private
  9084     * @param {string} string The string inspect.
  9085     * @returns {number} Returns the string size.
  9086     */
  9087    function unicodeSize(string) {
  9088      var result = reUnicode.lastIndex = 0;
  9089      while (reUnicode.test(string)) {
  9090        ++result;
  9091      }
  9092      return result;
  9093    }
  9094  
  9095    /**
  9096     * Converts a Unicode `string` to an array.
  9097     *
  9098     * @private
  9099     * @param {string} string The string to convert.
  9100     * @returns {Array} Returns the converted array.
  9101     */
  9102    function unicodeToArray(string) {
  9103      return string.match(reUnicode) || [];
  9104    }
  9105  
  9106    /**
  9107     * Splits a Unicode `string` into an array of its words.
  9108     *
  9109     * @private
  9110     * @param {string} The string to inspect.
  9111     * @returns {Array} Returns the words of `string`.
  9112     */
  9113    function unicodeWords(string) {
  9114      return string.match(reUnicodeWord) || [];
  9115    }
  9116  
  9117    /*--------------------------------------------------------------------------*/
  9118  
  9119    /**
  9120     * Create a new pristine `lodash` function using the `context` object.
  9121     *
  9122     * @static
  9123     * @memberOf _
  9124     * @since 1.1.0
  9125     * @category Util
  9126     * @param {Object} [context=root] The context object.
  9127     * @returns {Function} Returns a new `lodash` function.
  9128     * @example
  9129     *
  9130     * _.mixin({ 'foo': _.constant('foo') });
  9131     *
  9132     * var lodash = _.runInContext();
  9133     * lodash.mixin({ 'bar': lodash.constant('bar') });
  9134     *
  9135     * _.isFunction(_.foo);
  9136     * // => true
  9137     * _.isFunction(_.bar);
  9138     * // => false
  9139     *
  9140     * lodash.isFunction(lodash.foo);
  9141     * // => false
  9142     * lodash.isFunction(lodash.bar);
  9143     * // => true
  9144     *
  9145     * // Create a suped-up `defer` in Node.js.
  9146     * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
  9147     */
  9148    var runInContext = (function runInContext(context) {
  9149      context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));
  9150  
  9151      /** Built-in constructor references. */
  9152      var Array = context.Array,
  9153          Date = context.Date,
  9154          Error = context.Error,
  9155          Function = context.Function,
  9156          Math = context.Math,
  9157          Object = context.Object,
  9158          RegExp = context.RegExp,
  9159          String = context.String,
  9160          TypeError = context.TypeError;
  9161  
  9162      /** Used for built-in method references. */
  9163      var arrayProto = Array.prototype,
  9164          funcProto = Function.prototype,
  9165          objectProto = Object.prototype;
  9166  
  9167      /** Used to detect overreaching core-js shims. */
  9168      var coreJsData = context['__core-js_shared__'];
  9169  
  9170      /** Used to resolve the decompiled source of functions. */
  9171      var funcToString = funcProto.toString;
  9172  
  9173      /** Used to check objects for own properties. */
  9174      var hasOwnProperty = objectProto.hasOwnProperty;
  9175  
  9176      /** Used to generate unique IDs. */
  9177      var idCounter = 0;
  9178  
  9179      /** Used to detect methods masquerading as native. */
  9180      var maskSrcKey = (function() {
  9181        var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
  9182        return uid ? ('Symbol(src)_1.' + uid) : '';
  9183      }());
  9184  
  9185      /**
  9186       * Used to resolve the
  9187       * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
  9188       * of values.
  9189       */
  9190      var nativeObjectToString = objectProto.toString;
  9191  
  9192      /** Used to infer the `Object` constructor. */
  9193      var objectCtorString = funcToString.call(Object);
  9194  
  9195      /** Used to restore the original `_` reference in `_.noConflict`. */
  9196      var oldDash = root._;
  9197  
  9198      /** Used to detect if a method is native. */
  9199      var reIsNative = RegExp('^' +
  9200        funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
  9201        .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
  9202      );
  9203  
  9204      /** Built-in value references. */
  9205      var Buffer = moduleExports ? context.Buffer : undefined,
  9206          Symbol = context.Symbol,
  9207          Uint8Array = context.Uint8Array,
  9208          allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,
  9209          getPrototype = overArg(Object.getPrototypeOf, Object),
  9210          objectCreate = Object.create,
  9211          propertyIsEnumerable = objectProto.propertyIsEnumerable,
  9212          splice = arrayProto.splice,
  9213          spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,
  9214          symIterator = Symbol ? Symbol.iterator : undefined,
  9215          symToStringTag = Symbol ? Symbol.toStringTag : undefined;
  9216  
  9217      var defineProperty = (function() {
  9218        try {
  9219          var func = getNative(Object, 'defineProperty');
  9220          func({}, '', {});
  9221          return func;
  9222        } catch (e) {}
  9223      }());
  9224  
  9225      /** Mocked built-ins. */
  9226      var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,
  9227          ctxNow = Date && Date.now !== root.Date.now && Date.now,
  9228          ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;
  9229  
  9230      /* Built-in method references for those with the same name as other `lodash` methods. */
  9231      var nativeCeil = Math.ceil,
  9232          nativeFloor = Math.floor,
  9233          nativeGetSymbols = Object.getOwnPropertySymbols,
  9234          nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
  9235          nativeIsFinite = context.isFinite,
  9236          nativeJoin = arrayProto.join,
  9237          nativeKeys = overArg(Object.keys, Object),
  9238          nativeMax = Math.max,
  9239          nativeMin = Math.min,
  9240          nativeNow = Date.now,
  9241          nativeParseInt = context.parseInt,
  9242          nativeRandom = Math.random,
  9243          nativeReverse = arrayProto.reverse;
  9244  
  9245      /* Built-in method references that are verified to be native. */
  9246      var DataView = getNative(context, 'DataView'),
  9247          Map = getNative(context, 'Map'),
  9248          Promise = getNative(context, 'Promise'),
  9249          Set = getNative(context, 'Set'),
  9250          WeakMap = getNative(context, 'WeakMap'),
  9251          nativeCreate = getNative(Object, 'create');
  9252  
  9253      /** Used to store function metadata. */
  9254      var metaMap = WeakMap && new WeakMap;
  9255  
  9256      /** Used to lookup unminified function names. */
  9257      var realNames = {};
  9258  
  9259      /** Used to detect maps, sets, and weakmaps. */
  9260      var dataViewCtorString = toSource(DataView),
  9261          mapCtorString = toSource(Map),
  9262          promiseCtorString = toSource(Promise),
  9263          setCtorString = toSource(Set),
  9264          weakMapCtorString = toSource(WeakMap);
  9265  
  9266      /** Used to convert symbols to primitives and strings. */
  9267      var symbolProto = Symbol ? Symbol.prototype : undefined,
  9268          symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,
  9269          symbolToString = symbolProto ? symbolProto.toString : undefined;
  9270  
  9271      /*------------------------------------------------------------------------*/
  9272  
  9273      /**
  9274       * Creates a `lodash` object which wraps `value` to enable implicit method
  9275       * chain sequences. Methods that operate on and return arrays, collections,
  9276       * and functions can be chained together. Methods that retrieve a single value
  9277       * or may return a primitive value will automatically end the chain sequence
  9278       * and return the unwrapped value. Otherwise, the value must be unwrapped
  9279       * with `_#value`.
  9280       *
  9281       * Explicit chain sequences, which must be unwrapped with `_#value`, may be
  9282       * enabled using `_.chain`.
  9283       *
  9284       * The execution of chained methods is lazy, that is, it's deferred until
  9285       * `_#value` is implicitly or explicitly called.
  9286       *
  9287       * Lazy evaluation allows several methods to support shortcut fusion.
  9288       * Shortcut fusion is an optimization to merge iteratee calls; this avoids
  9289       * the creation of intermediate arrays and can greatly reduce the number of
  9290       * iteratee executions. Sections of a chain sequence qualify for shortcut
  9291       * fusion if the section is applied to an array and iteratees accept only
  9292       * one argument. The heuristic for whether a section qualifies for shortcut
  9293       * fusion is subject to change.
  9294       *
  9295       * Chaining is supported in custom builds as long as the `_#value` method is
  9296       * directly or indirectly included in the build.
  9297       *
  9298       * In addition to lodash methods, wrappers have `Array` and `String` methods.
  9299       *
  9300       * The wrapper `Array` methods are:
  9301       * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
  9302       *
  9303       * The wrapper `String` methods are:
  9304       * `replace` and `split`
  9305       *
  9306       * The wrapper methods that support shortcut fusion are:
  9307       * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
  9308       * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
  9309       * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
  9310       *
  9311       * The chainable wrapper methods are:
  9312       * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
  9313       * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
  9314       * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
  9315       * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
  9316       * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
  9317       * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
  9318       * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
  9319       * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
  9320       * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
  9321       * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
  9322       * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
  9323       * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
  9324       * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
  9325       * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
  9326       * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
  9327       * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
  9328       * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
  9329       * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
  9330       * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
  9331       * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
  9332       * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
  9333       * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
  9334       * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
  9335       * `zipObject`, `zipObjectDeep`, and `zipWith`
  9336       *
  9337       * The wrapper methods that are **not** chainable by default are:
  9338       * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
  9339       * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
  9340       * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
  9341       * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
  9342       * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
  9343       * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
  9344       * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
  9345       * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
  9346       * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
  9347       * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
  9348       * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
  9349       * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
  9350       * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
  9351       * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
  9352       * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
  9353       * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
  9354       * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
  9355       * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
  9356       * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
  9357       * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
  9358       * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
  9359       * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
  9360       * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
  9361       * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
  9362       * `upperFirst`, `value`, and `words`
  9363       *
  9364       * @name _
  9365       * @constructor
  9366       * @category Seq
  9367       * @param {*} value The value to wrap in a `lodash` instance.
  9368       * @returns {Object} Returns the new `lodash` wrapper instance.
  9369       * @example
  9370       *
  9371       * function square(n) {
  9372       *   return n * n;
  9373       * }
  9374       *
  9375       * var wrapped = _([1, 2, 3]);
  9376       *
  9377       * // Returns an unwrapped value.
  9378       * wrapped.reduce(_.add);
  9379       * // => 6
  9380       *
  9381       * // Returns a wrapped value.
  9382       * var squares = wrapped.map(square);
  9383       *
  9384       * _.isArray(squares);
  9385       * // => false
  9386       *
  9387       * _.isArray(squares.value());
  9388       * // => true
  9389       */
  9390      function lodash(value) {
  9391        if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
  9392          if (value instanceof LodashWrapper) {
  9393            return value;
  9394          }
  9395          if (hasOwnProperty.call(value, '__wrapped__')) {
  9396            return wrapperClone(value);
  9397          }
  9398        }
  9399        return new LodashWrapper(value);
  9400      }
  9401  
  9402      /**
  9403       * The base implementation of `_.create` without support for assigning
  9404       * properties to the created object.
  9405       *
  9406       * @private
  9407       * @param {Object} proto The object to inherit from.
  9408       * @returns {Object} Returns the new object.
  9409       */
  9410      var baseCreate = (function() {
  9411        function object() {}
  9412        return function(proto) {
  9413          if (!isObject(proto)) {
  9414            return {};
  9415          }
  9416          if (objectCreate) {
  9417            return objectCreate(proto);
  9418          }
  9419          object.prototype = proto;
  9420          var result = new object;
  9421          object.prototype = undefined;
  9422          return result;
  9423        };
  9424      }());
  9425  
  9426      /**
  9427       * The function whose prototype chain sequence wrappers inherit from.
  9428       *
  9429       * @private
  9430       */
  9431      function baseLodash() {
  9432        // No operation performed.
  9433      }
  9434  
  9435      /**
  9436       * The base constructor for creating `lodash` wrapper objects.
  9437       *
  9438       * @private
  9439       * @param {*} value The value to wrap.
  9440       * @param {boolean} [chainAll] Enable explicit method chain sequences.
  9441       */
  9442      function LodashWrapper(value, chainAll) {
  9443        this.__wrapped__ = value;
  9444        this.__actions__ = [];
  9445        this.__chain__ = !!chainAll;
  9446        this.__index__ = 0;
  9447        this.__values__ = undefined;
  9448      }
  9449  
  9450      /**
  9451       * By default, the template delimiters used by lodash are like those in
  9452       * embedded Ruby (ERB) as well as ES2015 template strings. Change the
  9453       * following template settings to use alternative delimiters.
  9454       *
  9455       * @static
  9456       * @memberOf _
  9457       * @type {Object}
  9458       */
  9459      lodash.templateSettings = {
  9460  
  9461        /**
  9462         * Used to detect `data` property values to be HTML-escaped.
  9463         *
  9464         * @memberOf _.templateSettings
  9465         * @type {RegExp}
  9466         */
  9467        'escape': reEscape,
  9468  
  9469        /**
  9470         * Used to detect code to be evaluated.
  9471         *
  9472         * @memberOf _.templateSettings
  9473         * @type {RegExp}
  9474         */
  9475        'evaluate': reEvaluate,
  9476  
  9477        /**
  9478         * Used to detect `data` property values to inject.
  9479         *
  9480         * @memberOf _.templateSettings
  9481         * @type {RegExp}
  9482         */
  9483        'interpolate': reInterpolate,
  9484  
  9485        /**
  9486         * Used to reference the data object in the template text.
  9487         *
  9488         * @memberOf _.templateSettings
  9489         * @type {string}
  9490         */
  9491        'variable': '',
  9492  
  9493        /**
  9494         * Used to import variables into the compiled template.
  9495         *
  9496         * @memberOf _.templateSettings
  9497         * @type {Object}
  9498         */
  9499        'imports': {
  9500  
  9501          /**
  9502           * A reference to the `lodash` function.
  9503           *
  9504           * @memberOf _.templateSettings.imports
  9505           * @type {Function}
  9506           */
  9507          '_': lodash
  9508        }
  9509      };
  9510  
  9511      // Ensure wrappers are instances of `baseLodash`.
  9512      lodash.prototype = baseLodash.prototype;
  9513      lodash.prototype.constructor = lodash;
  9514  
  9515      LodashWrapper.prototype = baseCreate(baseLodash.prototype);
  9516      LodashWrapper.prototype.constructor = LodashWrapper;
  9517  
  9518      /*------------------------------------------------------------------------*/
  9519  
  9520      /**
  9521       * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
  9522       *
  9523       * @private
  9524       * @constructor
  9525       * @param {*} value The value to wrap.
  9526       */
  9527      function LazyWrapper(value) {
  9528        this.__wrapped__ = value;
  9529        this.__actions__ = [];
  9530        this.__dir__ = 1;
  9531        this.__filtered__ = false;
  9532        this.__iteratees__ = [];
  9533        this.__takeCount__ = MAX_ARRAY_LENGTH;
  9534        this.__views__ = [];
  9535      }
  9536  
  9537      /**
  9538       * Creates a clone of the lazy wrapper object.
  9539       *
  9540       * @private
  9541       * @name clone
  9542       * @memberOf LazyWrapper
  9543       * @returns {Object} Returns the cloned `LazyWrapper` object.
  9544       */
  9545      function lazyClone() {
  9546        var result = new LazyWrapper(this.__wrapped__);
  9547        result.__actions__ = copyArray(this.__actions__);
  9548        result.__dir__ = this.__dir__;
  9549        result.__filtered__ = this.__filtered__;
  9550        result.__iteratees__ = copyArray(this.__iteratees__);
  9551        result.__takeCount__ = this.__takeCount__;
  9552        result.__views__ = copyArray(this.__views__);
  9553        return result;
  9554      }
  9555  
  9556      /**
  9557       * Reverses the direction of lazy iteration.
  9558       *
  9559       * @private
  9560       * @name reverse
  9561       * @memberOf LazyWrapper
  9562       * @returns {Object} Returns the new reversed `LazyWrapper` object.
  9563       */
  9564      function lazyReverse() {
  9565        if (this.__filtered__) {
  9566          var result = new LazyWrapper(this);
  9567          result.__dir__ = -1;
  9568          result.__filtered__ = true;
  9569        } else {
  9570          result = this.clone();
  9571          result.__dir__ *= -1;
  9572        }
  9573        return result;
  9574      }
  9575  
  9576      /**
  9577       * Extracts the unwrapped value from its lazy wrapper.
  9578       *
  9579       * @private
  9580       * @name value
  9581       * @memberOf LazyWrapper
  9582       * @returns {*} Returns the unwrapped value.
  9583       */
  9584      function lazyValue() {
  9585        var array = this.__wrapped__.value(),
  9586            dir = this.__dir__,
  9587            isArr = isArray(array),
  9588            isRight = dir < 0,
  9589            arrLength = isArr ? array.length : 0,
  9590            view = getView(0, arrLength, this.__views__),
  9591            start = view.start,
  9592            end = view.end,
  9593            length = end - start,
  9594            index = isRight ? end : (start - 1),
  9595            iteratees = this.__iteratees__,
  9596            iterLength = iteratees.length,
  9597            resIndex = 0,
  9598            takeCount = nativeMin(length, this.__takeCount__);
  9599  
  9600        if (!isArr || (!isRight && arrLength == length && takeCount == length)) {
  9601          return baseWrapperValue(array, this.__actions__);
  9602        }
  9603        var result = [];
  9604  
  9605        outer:
  9606        while (length-- && resIndex < takeCount) {
  9607          index += dir;
  9608  
  9609          var iterIndex = -1,
  9610              value = array[index];
  9611  
  9612          while (++iterIndex < iterLength) {
  9613            var data = iteratees[iterIndex],
  9614                iteratee = data.iteratee,
  9615                type = data.type,
  9616                computed = iteratee(value);
  9617  
  9618            if (type == LAZY_MAP_FLAG) {
  9619              value = computed;
  9620            } else if (!computed) {
  9621              if (type == LAZY_FILTER_FLAG) {
  9622                continue outer;
  9623              } else {
  9624                break outer;
  9625              }
  9626            }
  9627          }
  9628          result[resIndex++] = value;
  9629        }
  9630        return result;
  9631      }
  9632  
  9633      // Ensure `LazyWrapper` is an instance of `baseLodash`.
  9634      LazyWrapper.prototype = baseCreate(baseLodash.prototype);
  9635      LazyWrapper.prototype.constructor = LazyWrapper;
  9636  
  9637      /*------------------------------------------------------------------------*/
  9638  
  9639      /**
  9640       * Creates a hash object.
  9641       *
  9642       * @private
  9643       * @constructor
  9644       * @param {Array} [entries] The key-value pairs to cache.
  9645       */
  9646      function Hash(entries) {
  9647        var index = -1,
  9648            length = entries == null ? 0 : entries.length;
  9649  
  9650        this.clear();
  9651        while (++index < length) {
  9652          var entry = entries[index];
  9653          this.set(entry[0], entry[1]);
  9654        }
  9655      }
  9656  
  9657      /**
  9658       * Removes all key-value entries from the hash.
  9659       *
  9660       * @private
  9661       * @name clear
  9662       * @memberOf Hash
  9663       */
  9664      function hashClear() {
  9665        this.__data__ = nativeCreate ? nativeCreate(null) : {};
  9666        this.size = 0;
  9667      }
  9668  
  9669      /**
  9670       * Removes `key` and its value from the hash.
  9671       *
  9672       * @private
  9673       * @name delete
  9674       * @memberOf Hash
  9675       * @param {Object} hash The hash to modify.
  9676       * @param {string} key The key of the value to remove.
  9677       * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  9678       */
  9679      function hashDelete(key) {
  9680        var result = this.has(key) && delete this.__data__[key];
  9681        this.size -= result ? 1 : 0;
  9682        return result;
  9683      }
  9684  
  9685      /**
  9686       * Gets the hash value for `key`.
  9687       *
  9688       * @private
  9689       * @name get
  9690       * @memberOf Hash
  9691       * @param {string} key The key of the value to get.
  9692       * @returns {*} Returns the entry value.
  9693       */
  9694      function hashGet(key) {
  9695        var data = this.__data__;
  9696        if (nativeCreate) {
  9697          var result = data[key];
  9698          return result === HASH_UNDEFINED ? undefined : result;
  9699        }
  9700        return hasOwnProperty.call(data, key) ? data[key] : undefined;
  9701      }
  9702  
  9703      /**
  9704       * Checks if a hash value for `key` exists.
  9705       *
  9706       * @private
  9707       * @name has
  9708       * @memberOf Hash
  9709       * @param {string} key The key of the entry to check.
  9710       * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  9711       */
  9712      function hashHas(key) {
  9713        var data = this.__data__;
  9714        return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
  9715      }
  9716  
  9717      /**
  9718       * Sets the hash `key` to `value`.
  9719       *
  9720       * @private
  9721       * @name set
  9722       * @memberOf Hash
  9723       * @param {string} key The key of the value to set.
  9724       * @param {*} value The value to set.
  9725       * @returns {Object} Returns the hash instance.
  9726       */
  9727      function hashSet(key, value) {
  9728        var data = this.__data__;
  9729        this.size += this.has(key) ? 0 : 1;
  9730        data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
  9731        return this;
  9732      }
  9733  
  9734      // Add methods to `Hash`.
  9735      Hash.prototype.clear = hashClear;
  9736      Hash.prototype['delete'] = hashDelete;
  9737      Hash.prototype.get = hashGet;
  9738      Hash.prototype.has = hashHas;
  9739      Hash.prototype.set = hashSet;
  9740  
  9741      /*------------------------------------------------------------------------*/
  9742  
  9743      /**
  9744       * Creates an list cache object.
  9745       *
  9746       * @private
  9747       * @constructor
  9748       * @param {Array} [entries] The key-value pairs to cache.
  9749       */
  9750      function ListCache(entries) {
  9751        var index = -1,
  9752            length = entries == null ? 0 : entries.length;
  9753  
  9754        this.clear();
  9755        while (++index < length) {
  9756          var entry = entries[index];
  9757          this.set(entry[0], entry[1]);
  9758        }
  9759      }
  9760  
  9761      /**
  9762       * Removes all key-value entries from the list cache.
  9763       *
  9764       * @private
  9765       * @name clear
  9766       * @memberOf ListCache
  9767       */
  9768      function listCacheClear() {
  9769        this.__data__ = [];
  9770        this.size = 0;
  9771      }
  9772  
  9773      /**
  9774       * Removes `key` and its value from the list cache.
  9775       *
  9776       * @private
  9777       * @name delete
  9778       * @memberOf ListCache
  9779       * @param {string} key The key of the value to remove.
  9780       * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  9781       */
  9782      function listCacheDelete(key) {
  9783        var data = this.__data__,
  9784            index = assocIndexOf(data, key);
  9785  
  9786        if (index < 0) {
  9787          return false;
  9788        }
  9789        var lastIndex = data.length - 1;
  9790        if (index == lastIndex) {
  9791          data.pop();
  9792        } else {
  9793          splice.call(data, index, 1);
  9794        }
  9795        --this.size;
  9796        return true;
  9797      }
  9798  
  9799      /**
  9800       * Gets the list cache value for `key`.
  9801       *
  9802       * @private
  9803       * @name get
  9804       * @memberOf ListCache
  9805       * @param {string} key The key of the value to get.
  9806       * @returns {*} Returns the entry value.
  9807       */
  9808      function listCacheGet(key) {
  9809        var data = this.__data__,
  9810            index = assocIndexOf(data, key);
  9811  
  9812        return index < 0 ? undefined : data[index][1];
  9813      }
  9814  
  9815      /**
  9816       * Checks if a list cache value for `key` exists.
  9817       *
  9818       * @private
  9819       * @name has
  9820       * @memberOf ListCache
  9821       * @param {string} key The key of the entry to check.
  9822       * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  9823       */
  9824      function listCacheHas(key) {
  9825        return assocIndexOf(this.__data__, key) > -1;
  9826      }
  9827  
  9828      /**
  9829       * Sets the list cache `key` to `value`.
  9830       *
  9831       * @private
  9832       * @name set
  9833       * @memberOf ListCache
  9834       * @param {string} key The key of the value to set.
  9835       * @param {*} value The value to set.
  9836       * @returns {Object} Returns the list cache instance.
  9837       */
  9838      function listCacheSet(key, value) {
  9839        var data = this.__data__,
  9840            index = assocIndexOf(data, key);
  9841  
  9842        if (index < 0) {
  9843          ++this.size;
  9844          data.push([key, value]);
  9845        } else {
  9846          data[index][1] = value;
  9847        }
  9848        return this;
  9849      }
  9850  
  9851      // Add methods to `ListCache`.
  9852      ListCache.prototype.clear = listCacheClear;
  9853      ListCache.prototype['delete'] = listCacheDelete;
  9854      ListCache.prototype.get = listCacheGet;
  9855      ListCache.prototype.has = listCacheHas;
  9856      ListCache.prototype.set = listCacheSet;
  9857  
  9858      /*------------------------------------------------------------------------*/
  9859  
  9860      /**
  9861       * Creates a map cache object to store key-value pairs.
  9862       *
  9863       * @private
  9864       * @constructor
  9865       * @param {Array} [entries] The key-value pairs to cache.
  9866       */
  9867      function MapCache(entries) {
  9868        var index = -1,
  9869            length = entries == null ? 0 : entries.length;
  9870  
  9871        this.clear();
  9872        while (++index < length) {
  9873          var entry = entries[index];
  9874          this.set(entry[0], entry[1]);
  9875        }
  9876      }
  9877  
  9878      /**
  9879       * Removes all key-value entries from the map.
  9880       *
  9881       * @private
  9882       * @name clear
  9883       * @memberOf MapCache
  9884       */
  9885      function mapCacheClear() {
  9886        this.size = 0;
  9887        this.__data__ = {
  9888          'hash': new Hash,
  9889          'map': new (Map || ListCache),
  9890          'string': new Hash
  9891        };
  9892      }
  9893  
  9894      /**
  9895       * Removes `key` and its value from the map.
  9896       *
  9897       * @private
  9898       * @name delete
  9899       * @memberOf MapCache
  9900       * @param {string} key The key of the value to remove.
  9901       * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  9902       */
  9903      function mapCacheDelete(key) {
  9904        var result = getMapData(this, key)['delete'](key);
  9905        this.size -= result ? 1 : 0;
  9906        return result;
  9907      }
  9908  
  9909      /**
  9910       * Gets the map value for `key`.
  9911       *
  9912       * @private
  9913       * @name get
  9914       * @memberOf MapCache
  9915       * @param {string} key The key of the value to get.
  9916       * @returns {*} Returns the entry value.
  9917       */
  9918      function mapCacheGet(key) {
  9919        return getMapData(this, key).get(key);
  9920      }
  9921  
  9922      /**
  9923       * Checks if a map value for `key` exists.
  9924       *
  9925       * @private
  9926       * @name has
  9927       * @memberOf MapCache
  9928       * @param {string} key The key of the entry to check.
  9929       * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  9930       */
  9931      function mapCacheHas(key) {
  9932        return getMapData(this, key).has(key);
  9933      }
  9934  
  9935      /**
  9936       * Sets the map `key` to `value`.
  9937       *
  9938       * @private
  9939       * @name set
  9940       * @memberOf MapCache
  9941       * @param {string} key The key of the value to set.
  9942       * @param {*} value The value to set.
  9943       * @returns {Object} Returns the map cache instance.
  9944       */
  9945      function mapCacheSet(key, value) {
  9946        var data = getMapData(this, key),
  9947            size = data.size;
  9948  
  9949        data.set(key, value);
  9950        this.size += data.size == size ? 0 : 1;
  9951        return this;
  9952      }
  9953  
  9954      // Add methods to `MapCache`.
  9955      MapCache.prototype.clear = mapCacheClear;
  9956      MapCache.prototype['delete'] = mapCacheDelete;
  9957      MapCache.prototype.get = mapCacheGet;
  9958      MapCache.prototype.has = mapCacheHas;
  9959      MapCache.prototype.set = mapCacheSet;
  9960  
  9961      /*------------------------------------------------------------------------*/
  9962  
  9963      /**
  9964       *
  9965       * Creates an array cache object to store unique values.
  9966       *
  9967       * @private
  9968       * @constructor
  9969       * @param {Array} [values] The values to cache.
  9970       */
  9971      function SetCache(values) {
  9972        var index = -1,
  9973            length = values == null ? 0 : values.length;
  9974  
  9975        this.__data__ = new MapCache;
  9976        while (++index < length) {
  9977          this.add(values[index]);
  9978        }
  9979      }
  9980  
  9981      /**
  9982       * Adds `value` to the array cache.
  9983       *
  9984       * @private
  9985       * @name add
  9986       * @memberOf SetCache
  9987       * @alias push
  9988       * @param {*} value The value to cache.
  9989       * @returns {Object} Returns the cache instance.
  9990       */
  9991      function setCacheAdd(value) {
  9992        this.__data__.set(value, HASH_UNDEFINED);
  9993        return this;
  9994      }
  9995  
  9996      /**
  9997       * Checks if `value` is in the array cache.
  9998       *
  9999       * @private
 10000       * @name has
 10001       * @memberOf SetCache
 10002       * @param {*} value The value to search for.
 10003       * @returns {number} Returns `true` if `value` is found, else `false`.
 10004       */
 10005      function setCacheHas(value) {
 10006        return this.__data__.has(value);
 10007      }
 10008  
 10009      // Add methods to `SetCache`.
 10010      SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
 10011      SetCache.prototype.has = setCacheHas;
 10012  
 10013      /*------------------------------------------------------------------------*/
 10014  
 10015      /**
 10016       * Creates a stack cache object to store key-value pairs.
 10017       *
 10018       * @private
 10019       * @constructor
 10020       * @param {Array} [entries] The key-value pairs to cache.
 10021       */
 10022      function Stack(entries) {
 10023        var data = this.__data__ = new ListCache(entries);
 10024        this.size = data.size;
 10025      }
 10026  
 10027      /**
 10028       * Removes all key-value entries from the stack.
 10029       *
 10030       * @private
 10031       * @name clear
 10032       * @memberOf Stack
 10033       */
 10034      function stackClear() {
 10035        this.__data__ = new ListCache;
 10036        this.size = 0;
 10037      }
 10038  
 10039      /**
 10040       * Removes `key` and its value from the stack.
 10041       *
 10042       * @private
 10043       * @name delete
 10044       * @memberOf Stack
 10045       * @param {string} key The key of the value to remove.
 10046       * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 10047       */
 10048      function stackDelete(key) {
 10049        var data = this.__data__,
 10050            result = data['delete'](key);
 10051  
 10052        this.size = data.size;
 10053        return result;
 10054      }
 10055  
 10056      /**
 10057       * Gets the stack value for `key`.
 10058       *
 10059       * @private
 10060       * @name get
 10061       * @memberOf Stack
 10062       * @param {string} key The key of the value to get.
 10063       * @returns {*} Returns the entry value.
 10064       */
 10065      function stackGet(key) {
 10066        return this.__data__.get(key);
 10067      }
 10068  
 10069      /**
 10070       * Checks if a stack value for `key` exists.
 10071       *
 10072       * @private
 10073       * @name has
 10074       * @memberOf Stack
 10075       * @param {string} key The key of the entry to check.
 10076       * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 10077       */
 10078      function stackHas(key) {
 10079        return this.__data__.has(key);
 10080      }
 10081  
 10082      /**
 10083       * Sets the stack `key` to `value`.
 10084       *
 10085       * @private
 10086       * @name set
 10087       * @memberOf Stack
 10088       * @param {string} key The key of the value to set.
 10089       * @param {*} value The value to set.
 10090       * @returns {Object} Returns the stack cache instance.
 10091       */
 10092      function stackSet(key, value) {
 10093        var data = this.__data__;
 10094        if (data instanceof ListCache) {
 10095          var pairs = data.__data__;
 10096          if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
 10097            pairs.push([key, value]);
 10098            this.size = ++data.size;
 10099            return this;
 10100          }
 10101          data = this.__data__ = new MapCache(pairs);
 10102        }
 10103        data.set(key, value);
 10104        this.size = data.size;
 10105        return this;
 10106      }
 10107  
 10108      // Add methods to `Stack`.
 10109      Stack.prototype.clear = stackClear;
 10110      Stack.prototype['delete'] = stackDelete;
 10111      Stack.prototype.get = stackGet;
 10112      Stack.prototype.has = stackHas;
 10113      Stack.prototype.set = stackSet;
 10114  
 10115      /*------------------------------------------------------------------------*/
 10116  
 10117      /**
 10118       * Creates an array of the enumerable property names of the array-like `value`.
 10119       *
 10120       * @private
 10121       * @param {*} value The value to query.
 10122       * @param {boolean} inherited Specify returning inherited property names.
 10123       * @returns {Array} Returns the array of property names.
 10124       */
 10125      function arrayLikeKeys(value, inherited) {
 10126        var isArr = isArray(value),
 10127            isArg = !isArr && isArguments(value),
 10128            isBuff = !isArr && !isArg && isBuffer(value),
 10129            isType = !isArr && !isArg && !isBuff && isTypedArray(value),
 10130            skipIndexes = isArr || isArg || isBuff || isType,
 10131            result = skipIndexes ? baseTimes(value.length, String) : [],
 10132            length = result.length;
 10133  
 10134        for (var key in value) {
 10135          if ((inherited || hasOwnProperty.call(value, key)) &&
 10136              !(skipIndexes && (
 10137                 // Safari 9 has enumerable `arguments.length` in strict mode.
 10138                 key == 'length' ||
 10139                 // Node.js 0.10 has enumerable non-index properties on buffers.
 10140                 (isBuff && (key == 'offset' || key == 'parent')) ||
 10141                 // PhantomJS 2 has enumerable non-index properties on typed arrays.
 10142                 (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
 10143                 // Skip index properties.
 10144                 isIndex(key, length)
 10145              ))) {
 10146            result.push(key);
 10147          }
 10148        }
 10149        return result;
 10150      }
 10151  
 10152      /**
 10153       * A specialized version of `_.sample` for arrays.
 10154       *
 10155       * @private
 10156       * @param {Array} array The array to sample.
 10157       * @returns {*} Returns the random element.
 10158       */
 10159      function arraySample(array) {
 10160        var length = array.length;
 10161        return length ? array[baseRandom(0, length - 1)] : undefined;
 10162      }
 10163  
 10164      /**
 10165       * A specialized version of `_.sampleSize` for arrays.
 10166       *
 10167       * @private
 10168       * @param {Array} array The array to sample.
 10169       * @param {number} n The number of elements to sample.
 10170       * @returns {Array} Returns the random elements.
 10171       */
 10172      function arraySampleSize(array, n) {
 10173        return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
 10174      }
 10175  
 10176      /**
 10177       * A specialized version of `_.shuffle` for arrays.
 10178       *
 10179       * @private
 10180       * @param {Array} array The array to shuffle.
 10181       * @returns {Array} Returns the new shuffled array.
 10182       */
 10183      function arrayShuffle(array) {
 10184        return shuffleSelf(copyArray(array));
 10185      }
 10186  
 10187      /**
 10188       * This function is like `assignValue` except that it doesn't assign
 10189       * `undefined` values.
 10190       *
 10191       * @private
 10192       * @param {Object} object The object to modify.
 10193       * @param {string} key The key of the property to assign.
 10194       * @param {*} value The value to assign.
 10195       */
 10196      function assignMergeValue(object, key, value) {
 10197        if ((value !== undefined && !eq(object[key], value)) ||
 10198            (value === undefined && !(key in object))) {
 10199          baseAssignValue(object, key, value);
 10200        }
 10201      }
 10202  
 10203      /**
 10204       * Assigns `value` to `key` of `object` if the existing value is not equivalent
 10205       * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 10206       * for equality comparisons.
 10207       *
 10208       * @private
 10209       * @param {Object} object The object to modify.
 10210       * @param {string} key The key of the property to assign.
 10211       * @param {*} value The value to assign.
 10212       */
 10213      function assignValue(object, key, value) {
 10214        var objValue = object[key];
 10215        if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
 10216            (value === undefined && !(key in object))) {
 10217          baseAssignValue(object, key, value);
 10218        }
 10219      }
 10220  
 10221      /**
 10222       * Gets the index at which the `key` is found in `array` of key-value pairs.
 10223       *
 10224       * @private
 10225       * @param {Array} array The array to inspect.
 10226       * @param {*} key The key to search for.
 10227       * @returns {number} Returns the index of the matched value, else `-1`.
 10228       */
 10229      function assocIndexOf(array, key) {
 10230        var length = array.length;
 10231        while (length--) {
 10232          if (eq(array[length][0], key)) {
 10233            return length;
 10234          }
 10235        }
 10236        return -1;
 10237      }
 10238  
 10239      /**
 10240       * Aggregates elements of `collection` on `accumulator` with keys transformed
 10241       * by `iteratee` and values set by `setter`.
 10242       *
 10243       * @private
 10244       * @param {Array|Object} collection The collection to iterate over.
 10245       * @param {Function} setter The function to set `accumulator` values.
 10246       * @param {Function} iteratee The iteratee to transform keys.
 10247       * @param {Object} accumulator The initial aggregated object.
 10248       * @returns {Function} Returns `accumulator`.
 10249       */
 10250      function baseAggregator(collection, setter, iteratee, accumulator) {
 10251        baseEach(collection, function(value, key, collection) {
 10252          setter(accumulator, value, iteratee(value), collection);
 10253        });
 10254        return accumulator;
 10255      }
 10256  
 10257      /**
 10258       * The base implementation of `_.assign` without support for multiple sources
 10259       * or `customizer` functions.
 10260       *
 10261       * @private
 10262       * @param {Object} object The destination object.
 10263       * @param {Object} source The source object.
 10264       * @returns {Object} Returns `object`.
 10265       */
 10266      function baseAssign(object, source) {
 10267        return object && copyObject(source, keys(source), object);
 10268      }
 10269  
 10270      /**
 10271       * The base implementation of `_.assignIn` without support for multiple sources
 10272       * or `customizer` functions.
 10273       *
 10274       * @private
 10275       * @param {Object} object The destination object.
 10276       * @param {Object} source The source object.
 10277       * @returns {Object} Returns `object`.
 10278       */
 10279      function baseAssignIn(object, source) {
 10280        return object && copyObject(source, keysIn(source), object);
 10281      }
 10282  
 10283      /**
 10284       * The base implementation of `assignValue` and `assignMergeValue` without
 10285       * value checks.
 10286       *
 10287       * @private
 10288       * @param {Object} object The object to modify.
 10289       * @param {string} key The key of the property to assign.
 10290       * @param {*} value The value to assign.
 10291       */
 10292      function baseAssignValue(object, key, value) {
 10293        if (key == '__proto__' && defineProperty) {
 10294          defineProperty(object, key, {
 10295            'configurable': true,
 10296            'enumerable': true,
 10297            'value': value,
 10298            'writable': true
 10299          });
 10300        } else {
 10301          object[key] = value;
 10302        }
 10303      }
 10304  
 10305      /**
 10306       * The base implementation of `_.at` without support for individual paths.
 10307       *
 10308       * @private
 10309       * @param {Object} object The object to iterate over.
 10310       * @param {string[]} paths The property paths to pick.
 10311       * @returns {Array} Returns the picked elements.
 10312       */
 10313      function baseAt(object, paths) {
 10314        var index = -1,
 10315            length = paths.length,
 10316            result = Array(length),
 10317            skip = object == null;
 10318  
 10319        while (++index < length) {
 10320          result[index] = skip ? undefined : get(object, paths[index]);
 10321        }
 10322        return result;
 10323      }
 10324  
 10325      /**
 10326       * The base implementation of `_.clamp` which doesn't coerce arguments.
 10327       *
 10328       * @private
 10329       * @param {number} number The number to clamp.
 10330       * @param {number} [lower] The lower bound.
 10331       * @param {number} upper The upper bound.
 10332       * @returns {number} Returns the clamped number.
 10333       */
 10334      function baseClamp(number, lower, upper) {
 10335        if (number === number) {
 10336          if (upper !== undefined) {
 10337            number = number <= upper ? number : upper;
 10338          }
 10339          if (lower !== undefined) {
 10340            number = number >= lower ? number : lower;
 10341          }
 10342        }
 10343        return number;
 10344      }
 10345  
 10346      /**
 10347       * The base implementation of `_.clone` and `_.cloneDeep` which tracks
 10348       * traversed objects.
 10349       *
 10350       * @private
 10351       * @param {*} value The value to clone.
 10352       * @param {boolean} bitmask The bitmask flags.
 10353       *  1 - Deep clone
 10354       *  2 - Flatten inherited properties
 10355       *  4 - Clone symbols
 10356       * @param {Function} [customizer] The function to customize cloning.
 10357       * @param {string} [key] The key of `value`.
 10358       * @param {Object} [object] The parent object of `value`.
 10359       * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
 10360       * @returns {*} Returns the cloned value.
 10361       */
 10362      function baseClone(value, bitmask, customizer, key, object, stack) {
 10363        var result,
 10364            isDeep = bitmask & CLONE_DEEP_FLAG,
 10365            isFlat = bitmask & CLONE_FLAT_FLAG,
 10366            isFull = bitmask & CLONE_SYMBOLS_FLAG;
 10367  
 10368        if (customizer) {
 10369          result = object ? customizer(value, key, object, stack) : customizer(value);
 10370        }
 10371        if (result !== undefined) {
 10372          return result;
 10373        }
 10374        if (!isObject(value)) {
 10375          return value;
 10376        }
 10377        var isArr = isArray(value);
 10378        if (isArr) {
 10379          result = initCloneArray(value);
 10380          if (!isDeep) {
 10381            return copyArray(value, result);
 10382          }
 10383        } else {
 10384          var tag = getTag(value),
 10385              isFunc = tag == funcTag || tag == genTag;
 10386  
 10387          if (isBuffer(value)) {
 10388            return cloneBuffer(value, isDeep);
 10389          }
 10390          if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
 10391            result = (isFlat || isFunc) ? {} : initCloneObject(value);
 10392            if (!isDeep) {
 10393              return isFlat
 10394                ? copySymbolsIn(value, baseAssignIn(result, value))
 10395                : copySymbols(value, baseAssign(result, value));
 10396            }
 10397          } else {
 10398            if (!cloneableTags[tag]) {
 10399              return object ? value : {};
 10400            }
 10401            result = initCloneByTag(value, tag, isDeep);
 10402          }
 10403        }
 10404        // Check for circular references and return its corresponding clone.
 10405        stack || (stack = new Stack);
 10406        var stacked = stack.get(value);
 10407        if (stacked) {
 10408          return stacked;
 10409        }
 10410        stack.set(value, result);
 10411  
 10412        if (isSet(value)) {
 10413          value.forEach(function(subValue) {
 10414            result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
 10415          });
 10416  
 10417          return result;
 10418        }
 10419  
 10420        if (isMap(value)) {
 10421          value.forEach(function(subValue, key) {
 10422            result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
 10423          });
 10424  
 10425          return result;
 10426        }
 10427  
 10428        var keysFunc = isFull
 10429          ? (isFlat ? getAllKeysIn : getAllKeys)
 10430          : (isFlat ? keysIn : keys);
 10431  
 10432        var props = isArr ? undefined : keysFunc(value);
 10433        arrayEach(props || value, function(subValue, key) {
 10434          if (props) {
 10435            key = subValue;
 10436            subValue = value[key];
 10437          }
 10438          // Recursively populate clone (susceptible to call stack limits).
 10439          assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
 10440        });
 10441        return result;
 10442      }
 10443  
 10444      /**
 10445       * The base implementation of `_.conforms` which doesn't clone `source`.
 10446       *
 10447       * @private
 10448       * @param {Object} source The object of property predicates to conform to.
 10449       * @returns {Function} Returns the new spec function.
 10450       */
 10451      function baseConforms(source) {
 10452        var props = keys(source);
 10453        return function(object) {
 10454          return baseConformsTo(object, source, props);
 10455        };
 10456      }
 10457  
 10458      /**
 10459       * The base implementation of `_.conformsTo` which accepts `props` to check.
 10460       *
 10461       * @private
 10462       * @param {Object} object The object to inspect.
 10463       * @param {Object} source The object of property predicates to conform to.
 10464       * @returns {boolean} Returns `true` if `object` conforms, else `false`.
 10465       */
 10466      function baseConformsTo(object, source, props) {
 10467        var length = props.length;
 10468        if (object == null) {
 10469          return !length;
 10470        }
 10471        object = Object(object);
 10472        while (length--) {
 10473          var key = props[length],
 10474              predicate = source[key],
 10475              value = object[key];
 10476  
 10477          if ((value === undefined && !(key in object)) || !predicate(value)) {
 10478            return false;
 10479          }
 10480        }
 10481        return true;
 10482      }
 10483  
 10484      /**
 10485       * The base implementation of `_.delay` and `_.defer` which accepts `args`
 10486       * to provide to `func`.
 10487       *
 10488       * @private
 10489       * @param {Function} func The function to delay.
 10490       * @param {number} wait The number of milliseconds to delay invocation.
 10491       * @param {Array} args The arguments to provide to `func`.
 10492       * @returns {number|Object} Returns the timer id or timeout object.
 10493       */
 10494      function baseDelay(func, wait, args) {
 10495        if (typeof func != 'function') {
 10496          throw new TypeError(FUNC_ERROR_TEXT);
 10497        }
 10498        return setTimeout(function() { func.apply(undefined, args); }, wait);
 10499      }
 10500  
 10501      /**
 10502       * The base implementation of methods like `_.difference` without support
 10503       * for excluding multiple arrays or iteratee shorthands.
 10504       *
 10505       * @private
 10506       * @param {Array} array The array to inspect.
 10507       * @param {Array} values The values to exclude.
 10508       * @param {Function} [iteratee] The iteratee invoked per element.
 10509       * @param {Function} [comparator] The comparator invoked per element.
 10510       * @returns {Array} Returns the new array of filtered values.
 10511       */
 10512      function baseDifference(array, values, iteratee, comparator) {
 10513        var index = -1,
 10514            includes = arrayIncludes,
 10515            isCommon = true,
 10516            length = array.length,
 10517            result = [],
 10518            valuesLength = values.length;
 10519  
 10520        if (!length) {
 10521          return result;
 10522        }
 10523        if (iteratee) {
 10524          values = arrayMap(values, baseUnary(iteratee));
 10525        }
 10526        if (comparator) {
 10527          includes = arrayIncludesWith;
 10528          isCommon = false;
 10529        }
 10530        else if (values.length >= LARGE_ARRAY_SIZE) {
 10531          includes = cacheHas;
 10532          isCommon = false;
 10533          values = new SetCache(values);
 10534        }
 10535        outer:
 10536        while (++index < length) {
 10537          var value = array[index],
 10538              computed = iteratee == null ? value : iteratee(value);
 10539  
 10540          value = (comparator || value !== 0) ? value : 0;
 10541          if (isCommon && computed === computed) {
 10542            var valuesIndex = valuesLength;
 10543            while (valuesIndex--) {
 10544              if (values[valuesIndex] === computed) {
 10545                continue outer;
 10546              }
 10547            }
 10548            result.push(value);
 10549          }
 10550          else if (!includes(values, computed, comparator)) {
 10551            result.push(value);
 10552          }
 10553        }
 10554        return result;
 10555      }
 10556  
 10557      /**
 10558       * The base implementation of `_.forEach` without support for iteratee shorthands.
 10559       *
 10560       * @private
 10561       * @param {Array|Object} collection The collection to iterate over.
 10562       * @param {Function} iteratee The function invoked per iteration.
 10563       * @returns {Array|Object} Returns `collection`.
 10564       */
 10565      var baseEach = createBaseEach(baseForOwn);
 10566  
 10567      /**
 10568       * The base implementation of `_.forEachRight` without support for iteratee shorthands.
 10569       *
 10570       * @private
 10571       * @param {Array|Object} collection The collection to iterate over.
 10572       * @param {Function} iteratee The function invoked per iteration.
 10573       * @returns {Array|Object} Returns `collection`.
 10574       */
 10575      var baseEachRight = createBaseEach(baseForOwnRight, true);
 10576  
 10577      /**
 10578       * The base implementation of `_.every` without support for iteratee shorthands.
 10579       *
 10580       * @private
 10581       * @param {Array|Object} collection The collection to iterate over.
 10582       * @param {Function} predicate The function invoked per iteration.
 10583       * @returns {boolean} Returns `true` if all elements pass the predicate check,
 10584       *  else `false`
 10585       */
 10586      function baseEvery(collection, predicate) {
 10587        var result = true;
 10588        baseEach(collection, function(value, index, collection) {
 10589          result = !!predicate(value, index, collection);
 10590          return result;
 10591        });
 10592        return result;
 10593      }
 10594  
 10595      /**
 10596       * The base implementation of methods like `_.max` and `_.min` which accepts a
 10597       * `comparator` to determine the extremum value.
 10598       *
 10599       * @private
 10600       * @param {Array} array The array to iterate over.
 10601       * @param {Function} iteratee The iteratee invoked per iteration.
 10602       * @param {Function} comparator The comparator used to compare values.
 10603       * @returns {*} Returns the extremum value.
 10604       */
 10605      function baseExtremum(array, iteratee, comparator) {
 10606        var index = -1,
 10607            length = array.length;
 10608  
 10609        while (++index < length) {
 10610          var value = array[index],
 10611              current = iteratee(value);
 10612  
 10613          if (current != null && (computed === undefined
 10614                ? (current === current && !isSymbol(current))
 10615                : comparator(current, computed)
 10616              )) {
 10617            var computed = current,
 10618                result = value;
 10619          }
 10620        }
 10621        return result;
 10622      }
 10623  
 10624      /**
 10625       * The base implementation of `_.fill` without an iteratee call guard.
 10626       *
 10627       * @private
 10628       * @param {Array} array The array to fill.
 10629       * @param {*} value The value to fill `array` with.
 10630       * @param {number} [start=0] The start position.
 10631       * @param {number} [end=array.length] The end position.
 10632       * @returns {Array} Returns `array`.
 10633       */
 10634      function baseFill(array, value, start, end) {
 10635        var length = array.length;
 10636  
 10637        start = toInteger(start);
 10638        if (start < 0) {
 10639          start = -start > length ? 0 : (length + start);
 10640        }
 10641        end = (end === undefined || end > length) ? length : toInteger(end);
 10642        if (end < 0) {
 10643          end += length;
 10644        }
 10645        end = start > end ? 0 : toLength(end);
 10646        while (start < end) {
 10647          array[start++] = value;
 10648        }
 10649        return array;
 10650      }
 10651  
 10652      /**
 10653       * The base implementation of `_.filter` without support for iteratee shorthands.
 10654       *
 10655       * @private
 10656       * @param {Array|Object} collection The collection to iterate over.
 10657       * @param {Function} predicate The function invoked per iteration.
 10658       * @returns {Array} Returns the new filtered array.
 10659       */
 10660      function baseFilter(collection, predicate) {
 10661        var result = [];
 10662        baseEach(collection, function(value, index, collection) {
 10663          if (predicate(value, index, collection)) {
 10664            result.push(value);
 10665          }
 10666        });
 10667        return result;
 10668      }
 10669  
 10670      /**
 10671       * The base implementation of `_.flatten` with support for restricting flattening.
 10672       *
 10673       * @private
 10674       * @param {Array} array The array to flatten.
 10675       * @param {number} depth The maximum recursion depth.
 10676       * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
 10677       * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
 10678       * @param {Array} [result=[]] The initial result value.
 10679       * @returns {Array} Returns the new flattened array.
 10680       */
 10681      function baseFlatten(array, depth, predicate, isStrict, result) {
 10682        var index = -1,
 10683            length = array.length;
 10684  
 10685        predicate || (predicate = isFlattenable);
 10686        result || (result = []);
 10687  
 10688        while (++index < length) {
 10689          var value = array[index];
 10690          if (depth > 0 && predicate(value)) {
 10691            if (depth > 1) {
 10692              // Recursively flatten arrays (susceptible to call stack limits).
 10693              baseFlatten(value, depth - 1, predicate, isStrict, result);
 10694            } else {
 10695              arrayPush(result, value);
 10696            }
 10697          } else if (!isStrict) {
 10698            result[result.length] = value;
 10699          }
 10700        }
 10701        return result;
 10702      }
 10703  
 10704      /**
 10705       * The base implementation of `baseForOwn` which iterates over `object`
 10706       * properties returned by `keysFunc` and invokes `iteratee` for each property.
 10707       * Iteratee functions may exit iteration early by explicitly returning `false`.
 10708       *
 10709       * @private
 10710       * @param {Object} object The object to iterate over.
 10711       * @param {Function} iteratee The function invoked per iteration.
 10712       * @param {Function} keysFunc The function to get the keys of `object`.
 10713       * @returns {Object} Returns `object`.
 10714       */
 10715      var baseFor = createBaseFor();
 10716  
 10717      /**
 10718       * This function is like `baseFor` except that it iterates over properties
 10719       * in the opposite order.
 10720       *
 10721       * @private
 10722       * @param {Object} object The object to iterate over.
 10723       * @param {Function} iteratee The function invoked per iteration.
 10724       * @param {Function} keysFunc The function to get the keys of `object`.
 10725       * @returns {Object} Returns `object`.
 10726       */
 10727      var baseForRight = createBaseFor(true);
 10728  
 10729      /**
 10730       * The base implementation of `_.forOwn` without support for iteratee shorthands.
 10731       *
 10732       * @private
 10733       * @param {Object} object The object to iterate over.
 10734       * @param {Function} iteratee The function invoked per iteration.
 10735       * @returns {Object} Returns `object`.
 10736       */
 10737      function baseForOwn(object, iteratee) {
 10738        return object && baseFor(object, iteratee, keys);
 10739      }
 10740  
 10741      /**
 10742       * The base implementation of `_.forOwnRight` without support for iteratee shorthands.
 10743       *
 10744       * @private
 10745       * @param {Object} object The object to iterate over.
 10746       * @param {Function} iteratee The function invoked per iteration.
 10747       * @returns {Object} Returns `object`.
 10748       */
 10749      function baseForOwnRight(object, iteratee) {
 10750        return object && baseForRight(object, iteratee, keys);
 10751      }
 10752  
 10753      /**
 10754       * The base implementation of `_.functions` which creates an array of
 10755       * `object` function property names filtered from `props`.
 10756       *
 10757       * @private
 10758       * @param {Object} object The object to inspect.
 10759       * @param {Array} props The property names to filter.
 10760       * @returns {Array} Returns the function names.
 10761       */
 10762      function baseFunctions(object, props) {
 10763        return arrayFilter(props, function(key) {
 10764          return isFunction(object[key]);
 10765        });
 10766      }
 10767  
 10768      /**
 10769       * The base implementation of `_.get` without support for default values.
 10770       *
 10771       * @private
 10772       * @param {Object} object The object to query.
 10773       * @param {Array|string} path The path of the property to get.
 10774       * @returns {*} Returns the resolved value.
 10775       */
 10776      function baseGet(object, path) {
 10777        path = castPath(path, object);
 10778  
 10779        var index = 0,
 10780            length = path.length;
 10781  
 10782        while (object != null && index < length) {
 10783          object = object[toKey(path[index++])];
 10784        }
 10785        return (index && index == length) ? object : undefined;
 10786      }
 10787  
 10788      /**
 10789       * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
 10790       * `keysFunc` and `symbolsFunc` to get the enumerable property names and
 10791       * symbols of `object`.
 10792       *
 10793       * @private
 10794       * @param {Object} object The object to query.
 10795       * @param {Function} keysFunc The function to get the keys of `object`.
 10796       * @param {Function} symbolsFunc The function to get the symbols of `object`.
 10797       * @returns {Array} Returns the array of property names and symbols.
 10798       */
 10799      function baseGetAllKeys(object, keysFunc, symbolsFunc) {
 10800        var result = keysFunc(object);
 10801        return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
 10802      }
 10803  
 10804      /**
 10805       * The base implementation of `getTag` without fallbacks for buggy environments.
 10806       *
 10807       * @private
 10808       * @param {*} value The value to query.
 10809       * @returns {string} Returns the `toStringTag`.
 10810       */
 10811      function baseGetTag(value) {
 10812        if (value == null) {
 10813          return value === undefined ? undefinedTag : nullTag;
 10814        }
 10815        return (symToStringTag && symToStringTag in Object(value))
 10816          ? getRawTag(value)
 10817          : objectToString(value);
 10818      }
 10819  
 10820      /**
 10821       * The base implementation of `_.gt` which doesn't coerce arguments.
 10822       *
 10823       * @private
 10824       * @param {*} value The value to compare.
 10825       * @param {*} other The other value to compare.
 10826       * @returns {boolean} Returns `true` if `value` is greater than `other`,
 10827       *  else `false`.
 10828       */
 10829      function baseGt(value, other) {
 10830        return value > other;
 10831      }
 10832  
 10833      /**
 10834       * The base implementation of `_.has` without support for deep paths.
 10835       *
 10836       * @private
 10837       * @param {Object} [object] The object to query.
 10838       * @param {Array|string} key The key to check.
 10839       * @returns {boolean} Returns `true` if `key` exists, else `false`.
 10840       */
 10841      function baseHas(object, key) {
 10842        return object != null && hasOwnProperty.call(object, key);
 10843      }
 10844  
 10845      /**
 10846       * The base implementation of `_.hasIn` without support for deep paths.
 10847       *
 10848       * @private
 10849       * @param {Object} [object] The object to query.
 10850       * @param {Array|string} key The key to check.
 10851       * @returns {boolean} Returns `true` if `key` exists, else `false`.
 10852       */
 10853      function baseHasIn(object, key) {
 10854        return object != null && key in Object(object);
 10855      }
 10856  
 10857      /**
 10858       * The base implementation of `_.inRange` which doesn't coerce arguments.
 10859       *
 10860       * @private
 10861       * @param {number} number The number to check.
 10862       * @param {number} start The start of the range.
 10863       * @param {number} end The end of the range.
 10864       * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
 10865       */
 10866      function baseInRange(number, start, end) {
 10867        return number >= nativeMin(start, end) && number < nativeMax(start, end);
 10868      }
 10869  
 10870      /**
 10871       * The base implementation of methods like `_.intersection`, without support
 10872       * for iteratee shorthands, that accepts an array of arrays to inspect.
 10873       *
 10874       * @private
 10875       * @param {Array} arrays The arrays to inspect.
 10876       * @param {Function} [iteratee] The iteratee invoked per element.
 10877       * @param {Function} [comparator] The comparator invoked per element.
 10878       * @returns {Array} Returns the new array of shared values.
 10879       */
 10880      function baseIntersection(arrays, iteratee, comparator) {
 10881        var includes = comparator ? arrayIncludesWith : arrayIncludes,
 10882            length = arrays[0].length,
 10883            othLength = arrays.length,
 10884            othIndex = othLength,
 10885            caches = Array(othLength),
 10886            maxLength = Infinity,
 10887            result = [];
 10888  
 10889        while (othIndex--) {
 10890          var array = arrays[othIndex];
 10891          if (othIndex && iteratee) {
 10892            array = arrayMap(array, baseUnary(iteratee));
 10893          }
 10894          maxLength = nativeMin(array.length, maxLength);
 10895          caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
 10896            ? new SetCache(othIndex && array)
 10897            : undefined;
 10898        }
 10899        array = arrays[0];
 10900  
 10901        var index = -1,
 10902            seen = caches[0];
 10903  
 10904        outer:
 10905        while (++index < length && result.length < maxLength) {
 10906          var value = array[index],
 10907              computed = iteratee ? iteratee(value) : value;
 10908  
 10909          value = (comparator || value !== 0) ? value : 0;
 10910          if (!(seen
 10911                ? cacheHas(seen, computed)
 10912                : includes(result, computed, comparator)
 10913              )) {
 10914            othIndex = othLength;
 10915            while (--othIndex) {
 10916              var cache = caches[othIndex];
 10917              if (!(cache
 10918                    ? cacheHas(cache, computed)
 10919                    : includes(arrays[othIndex], computed, comparator))
 10920                  ) {
 10921                continue outer;
 10922              }
 10923            }
 10924            if (seen) {
 10925              seen.push(computed);
 10926            }
 10927            result.push(value);
 10928          }
 10929        }
 10930        return result;
 10931      }
 10932  
 10933      /**
 10934       * The base implementation of `_.invert` and `_.invertBy` which inverts
 10935       * `object` with values transformed by `iteratee` and set by `setter`.
 10936       *
 10937       * @private
 10938       * @param {Object} object The object to iterate over.
 10939       * @param {Function} setter The function to set `accumulator` values.
 10940       * @param {Function} iteratee The iteratee to transform values.
 10941       * @param {Object} accumulator The initial inverted object.
 10942       * @returns {Function} Returns `accumulator`.
 10943       */
 10944      function baseInverter(object, setter, iteratee, accumulator) {
 10945        baseForOwn(object, function(value, key, object) {
 10946          setter(accumulator, iteratee(value), key, object);
 10947        });
 10948        return accumulator;
 10949      }
 10950  
 10951      /**
 10952       * The base implementation of `_.invoke` without support for individual
 10953       * method arguments.
 10954       *
 10955       * @private
 10956       * @param {Object} object The object to query.
 10957       * @param {Array|string} path The path of the method to invoke.
 10958       * @param {Array} args The arguments to invoke the method with.
 10959       * @returns {*} Returns the result of the invoked method.
 10960       */
 10961      function baseInvoke(object, path, args) {
 10962        path = castPath(path, object);
 10963        object = parent(object, path);
 10964        var func = object == null ? object : object[toKey(last(path))];
 10965        return func == null ? undefined : apply(func, object, args);
 10966      }
 10967  
 10968      /**
 10969       * The base implementation of `_.isArguments`.
 10970       *
 10971       * @private
 10972       * @param {*} value The value to check.
 10973       * @returns {boolean} Returns `true` if `value` is an `arguments` object,
 10974       */
 10975      function baseIsArguments(value) {
 10976        return isObjectLike(value) && baseGetTag(value) == argsTag;
 10977      }
 10978  
 10979      /**
 10980       * The base implementation of `_.isArrayBuffer` without Node.js optimizations.
 10981       *
 10982       * @private
 10983       * @param {*} value The value to check.
 10984       * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
 10985       */
 10986      function baseIsArrayBuffer(value) {
 10987        return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
 10988      }
 10989  
 10990      /**
 10991       * The base implementation of `_.isDate` without Node.js optimizations.
 10992       *
 10993       * @private
 10994       * @param {*} value The value to check.
 10995       * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
 10996       */
 10997      function baseIsDate(value) {
 10998        return isObjectLike(value) && baseGetTag(value) == dateTag;
 10999      }
 11000  
 11001      /**
 11002       * The base implementation of `_.isEqual` which supports partial comparisons
 11003       * and tracks traversed objects.
 11004       *
 11005       * @private
 11006       * @param {*} value The value to compare.
 11007       * @param {*} other The other value to compare.
 11008       * @param {boolean} bitmask The bitmask flags.
 11009       *  1 - Unordered comparison
 11010       *  2 - Partial comparison
 11011       * @param {Function} [customizer] The function to customize comparisons.
 11012       * @param {Object} [stack] Tracks traversed `value` and `other` objects.
 11013       * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
 11014       */
 11015      function baseIsEqual(value, other, bitmask, customizer, stack) {
 11016        if (value === other) {
 11017          return true;
 11018        }
 11019        if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
 11020          return value !== value && other !== other;
 11021        }
 11022        return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
 11023      }
 11024  
 11025      /**
 11026       * A specialized version of `baseIsEqual` for arrays and objects which performs
 11027       * deep comparisons and tracks traversed objects enabling objects with circular
 11028       * references to be compared.
 11029       *
 11030       * @private
 11031       * @param {Object} object The object to compare.
 11032       * @param {Object} other The other object to compare.
 11033       * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 11034       * @param {Function} customizer The function to customize comparisons.
 11035       * @param {Function} equalFunc The function to determine equivalents of values.
 11036       * @param {Object} [stack] Tracks traversed `object` and `other` objects.
 11037       * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 11038       */
 11039      function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
 11040        var objIsArr = isArray(object),
 11041            othIsArr = isArray(other),
 11042            objTag = objIsArr ? arrayTag : getTag(object),
 11043            othTag = othIsArr ? arrayTag : getTag(other);
 11044  
 11045        objTag = objTag == argsTag ? objectTag : objTag;
 11046        othTag = othTag == argsTag ? objectTag : othTag;
 11047  
 11048        var objIsObj = objTag == objectTag,
 11049            othIsObj = othTag == objectTag,
 11050            isSameTag = objTag == othTag;
 11051  
 11052        if (isSameTag && isBuffer(object)) {
 11053          if (!isBuffer(other)) {
 11054            return false;
 11055          }
 11056          objIsArr = true;
 11057          objIsObj = false;
 11058        }
 11059        if (isSameTag && !objIsObj) {
 11060          stack || (stack = new Stack);
 11061          return (objIsArr || isTypedArray(object))
 11062            ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
 11063            : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
 11064        }
 11065        if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
 11066          var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
 11067              othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
 11068  
 11069          if (objIsWrapped || othIsWrapped) {
 11070            var objUnwrapped = objIsWrapped ? object.value() : object,
 11071                othUnwrapped = othIsWrapped ? other.value() : other;
 11072  
 11073            stack || (stack = new Stack);
 11074            return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
 11075          }
 11076        }
 11077        if (!isSameTag) {
 11078          return false;
 11079        }
 11080        stack || (stack = new Stack);
 11081        return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
 11082      }
 11083  
 11084      /**
 11085       * The base implementation of `_.isMap` without Node.js optimizations.
 11086       *
 11087       * @private
 11088       * @param {*} value The value to check.
 11089       * @returns {boolean} Returns `true` if `value` is a map, else `false`.
 11090       */
 11091      function baseIsMap(value) {
 11092        return isObjectLike(value) && getTag(value) == mapTag;
 11093      }
 11094  
 11095      /**
 11096       * The base implementation of `_.isMatch` without support for iteratee shorthands.
 11097       *
 11098       * @private
 11099       * @param {Object} object The object to inspect.
 11100       * @param {Object} source The object of property values to match.
 11101       * @param {Array} matchData The property names, values, and compare flags to match.
 11102       * @param {Function} [customizer] The function to customize comparisons.
 11103       * @returns {boolean} Returns `true` if `object` is a match, else `false`.
 11104       */
 11105      function baseIsMatch(object, source, matchData, customizer) {
 11106        var index = matchData.length,
 11107            length = index,
 11108            noCustomizer = !customizer;
 11109  
 11110        if (object == null) {
 11111          return !length;
 11112        }
 11113        object = Object(object);
 11114        while (index--) {
 11115          var data = matchData[index];
 11116          if ((noCustomizer && data[2])
 11117                ? data[1] !== object[data[0]]
 11118                : !(data[0] in object)
 11119              ) {
 11120            return false;
 11121          }
 11122        }
 11123        while (++index < length) {
 11124          data = matchData[index];
 11125          var key = data[0],
 11126              objValue = object[key],
 11127              srcValue = data[1];
 11128  
 11129          if (noCustomizer && data[2]) {
 11130            if (objValue === undefined && !(key in object)) {
 11131              return false;
 11132            }
 11133          } else {
 11134            var stack = new Stack;
 11135            if (customizer) {
 11136              var result = customizer(objValue, srcValue, key, object, source, stack);
 11137            }
 11138            if (!(result === undefined
 11139                  ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
 11140                  : result
 11141                )) {
 11142              return false;
 11143            }
 11144          }
 11145        }
 11146        return true;
 11147      }
 11148  
 11149      /**
 11150       * The base implementation of `_.isNative` without bad shim checks.
 11151       *
 11152       * @private
 11153       * @param {*} value The value to check.
 11154       * @returns {boolean} Returns `true` if `value` is a native function,
 11155       *  else `false`.
 11156       */
 11157      function baseIsNative(value) {
 11158        if (!isObject(value) || isMasked(value)) {
 11159          return false;
 11160        }
 11161        var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
 11162        return pattern.test(toSource(value));
 11163      }
 11164  
 11165      /**
 11166       * The base implementation of `_.isRegExp` without Node.js optimizations.
 11167       *
 11168       * @private
 11169       * @param {*} value The value to check.
 11170       * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
 11171       */
 11172      function baseIsRegExp(value) {
 11173        return isObjectLike(value) && baseGetTag(value) == regexpTag;
 11174      }
 11175  
 11176      /**
 11177       * The base implementation of `_.isSet` without Node.js optimizations.
 11178       *
 11179       * @private
 11180       * @param {*} value The value to check.
 11181       * @returns {boolean} Returns `true` if `value` is a set, else `false`.
 11182       */
 11183      function baseIsSet(value) {
 11184        return isObjectLike(value) && getTag(value) == setTag;
 11185      }
 11186  
 11187      /**
 11188       * The base implementation of `_.isTypedArray` without Node.js optimizations.
 11189       *
 11190       * @private
 11191       * @param {*} value The value to check.
 11192       * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
 11193       */
 11194      function baseIsTypedArray(value) {
 11195        return isObjectLike(value) &&
 11196          isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
 11197      }
 11198  
 11199      /**
 11200       * The base implementation of `_.iteratee`.
 11201       *
 11202       * @private
 11203       * @param {*} [value=_.identity] The value to convert to an iteratee.
 11204       * @returns {Function} Returns the iteratee.
 11205       */
 11206      function baseIteratee(value) {
 11207        // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
 11208        // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
 11209        if (typeof value == 'function') {
 11210          return value;
 11211        }
 11212        if (value == null) {
 11213          return identity;
 11214        }
 11215        if (typeof value == 'object') {
 11216          return isArray(value)
 11217            ? baseMatchesProperty(value[0], value[1])
 11218            : baseMatches(value);
 11219        }
 11220        return property(value);
 11221      }
 11222  
 11223      /**
 11224       * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
 11225       *
 11226       * @private
 11227       * @param {Object} object The object to query.
 11228       * @returns {Array} Returns the array of property names.
 11229       */
 11230      function baseKeys(object) {
 11231        if (!isPrototype(object)) {
 11232          return nativeKeys(object);
 11233        }
 11234        var result = [];
 11235        for (var key in Object(object)) {
 11236          if (hasOwnProperty.call(object, key) && key != 'constructor') {
 11237            result.push(key);
 11238          }
 11239        }
 11240        return result;
 11241      }
 11242  
 11243      /**
 11244       * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
 11245       *
 11246       * @private
 11247       * @param {Object} object The object to query.
 11248       * @returns {Array} Returns the array of property names.
 11249       */
 11250      function baseKeysIn(object) {
 11251        if (!isObject(object)) {
 11252          return nativeKeysIn(object);
 11253        }
 11254        var isProto = isPrototype(object),
 11255            result = [];
 11256  
 11257        for (var key in object) {
 11258          if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
 11259            result.push(key);
 11260          }
 11261        }
 11262        return result;
 11263      }
 11264  
 11265      /**
 11266       * The base implementation of `_.lt` which doesn't coerce arguments.
 11267       *
 11268       * @private
 11269       * @param {*} value The value to compare.
 11270       * @param {*} other The other value to compare.
 11271       * @returns {boolean} Returns `true` if `value` is less than `other`,
 11272       *  else `false`.
 11273       */
 11274      function baseLt(value, other) {
 11275        return value < other;
 11276      }
 11277  
 11278      /**
 11279       * The base implementation of `_.map` without support for iteratee shorthands.
 11280       *
 11281       * @private
 11282       * @param {Array|Object} collection The collection to iterate over.
 11283       * @param {Function} iteratee The function invoked per iteration.
 11284       * @returns {Array} Returns the new mapped array.
 11285       */
 11286      function baseMap(collection, iteratee) {
 11287        var index = -1,
 11288            result = isArrayLike(collection) ? Array(collection.length) : [];
 11289  
 11290        baseEach(collection, function(value, key, collection) {
 11291          result[++index] = iteratee(value, key, collection);
 11292        });
 11293        return result;
 11294      }
 11295  
 11296      /**
 11297       * The base implementation of `_.matches` which doesn't clone `source`.
 11298       *
 11299       * @private
 11300       * @param {Object} source The object of property values to match.
 11301       * @returns {Function} Returns the new spec function.
 11302       */
 11303      function baseMatches(source) {
 11304        var matchData = getMatchData(source);
 11305        if (matchData.length == 1 && matchData[0][2]) {
 11306          return matchesStrictComparable(matchData[0][0], matchData[0][1]);
 11307        }
 11308        return function(object) {
 11309          return object === source || baseIsMatch(object, source, matchData);
 11310        };
 11311      }
 11312  
 11313      /**
 11314       * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
 11315       *
 11316       * @private
 11317       * @param {string} path The path of the property to get.
 11318       * @param {*} srcValue The value to match.
 11319       * @returns {Function} Returns the new spec function.
 11320       */
 11321      function baseMatchesProperty(path, srcValue) {
 11322        if (isKey(path) && isStrictComparable(srcValue)) {
 11323          return matchesStrictComparable(toKey(path), srcValue);
 11324        }
 11325        return function(object) {
 11326          var objValue = get(object, path);
 11327          return (objValue === undefined && objValue === srcValue)
 11328            ? hasIn(object, path)
 11329            : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
 11330        };
 11331      }
 11332  
 11333      /**
 11334       * The base implementation of `_.merge` without support for multiple sources.
 11335       *
 11336       * @private
 11337       * @param {Object} object The destination object.
 11338       * @param {Object} source The source object.
 11339       * @param {number} srcIndex The index of `source`.
 11340       * @param {Function} [customizer] The function to customize merged values.
 11341       * @param {Object} [stack] Tracks traversed source values and their merged
 11342       *  counterparts.
 11343       */
 11344      function baseMerge(object, source, srcIndex, customizer, stack) {
 11345        if (object === source) {
 11346          return;
 11347        }
 11348        baseFor(source, function(srcValue, key) {
 11349          if (isObject(srcValue)) {
 11350            stack || (stack = new Stack);
 11351            baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
 11352          }
 11353          else {
 11354            var newValue = customizer
 11355              ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
 11356              : undefined;
 11357  
 11358            if (newValue === undefined) {
 11359              newValue = srcValue;
 11360            }
 11361            assignMergeValue(object, key, newValue);
 11362          }
 11363        }, keysIn);
 11364      }
 11365  
 11366      /**
 11367       * A specialized version of `baseMerge` for arrays and objects which performs
 11368       * deep merges and tracks traversed objects enabling objects with circular
 11369       * references to be merged.
 11370       *
 11371       * @private
 11372       * @param {Object} object The destination object.
 11373       * @param {Object} source The source object.
 11374       * @param {string} key The key of the value to merge.
 11375       * @param {number} srcIndex The index of `source`.
 11376       * @param {Function} mergeFunc The function to merge values.
 11377       * @param {Function} [customizer] The function to customize assigned values.
 11378       * @param {Object} [stack] Tracks traversed source values and their merged
 11379       *  counterparts.
 11380       */
 11381      function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
 11382        var objValue = safeGet(object, key),
 11383            srcValue = safeGet(source, key),
 11384            stacked = stack.get(srcValue);
 11385  
 11386        if (stacked) {
 11387          assignMergeValue(object, key, stacked);
 11388          return;
 11389        }
 11390        var newValue = customizer
 11391          ? customizer(objValue, srcValue, (key + ''), object, source, stack)
 11392          : undefined;
 11393  
 11394        var isCommon = newValue === undefined;
 11395  
 11396        if (isCommon) {
 11397          var isArr = isArray(srcValue),
 11398              isBuff = !isArr && isBuffer(srcValue),
 11399              isTyped = !isArr && !isBuff && isTypedArray(srcValue);
 11400  
 11401          newValue = srcValue;
 11402          if (isArr || isBuff || isTyped) {
 11403            if (isArray(objValue)) {
 11404              newValue = objValue;
 11405            }
 11406            else if (isArrayLikeObject(objValue)) {
 11407              newValue = copyArray(objValue);
 11408            }
 11409            else if (isBuff) {
 11410              isCommon = false;
 11411              newValue = cloneBuffer(srcValue, true);
 11412            }
 11413            else if (isTyped) {
 11414              isCommon = false;
 11415              newValue = cloneTypedArray(srcValue, true);
 11416            }
 11417            else {
 11418              newValue = [];
 11419            }
 11420          }
 11421          else if (isPlainObject(srcValue) || isArguments(srcValue)) {
 11422            newValue = objValue;
 11423            if (isArguments(objValue)) {
 11424              newValue = toPlainObject(objValue);
 11425            }
 11426            else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {
 11427              newValue = initCloneObject(srcValue);
 11428            }
 11429          }
 11430          else {
 11431            isCommon = false;
 11432          }
 11433        }
 11434        if (isCommon) {
 11435          // Recursively merge objects and arrays (susceptible to call stack limits).
 11436          stack.set(srcValue, newValue);
 11437          mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
 11438          stack['delete'](srcValue);
 11439        }
 11440        assignMergeValue(object, key, newValue);
 11441      }
 11442  
 11443      /**
 11444       * The base implementation of `_.nth` which doesn't coerce arguments.
 11445       *
 11446       * @private
 11447       * @param {Array} array The array to query.
 11448       * @param {number} n The index of the element to return.
 11449       * @returns {*} Returns the nth element of `array`.
 11450       */
 11451      function baseNth(array, n) {
 11452        var length = array.length;
 11453        if (!length) {
 11454          return;
 11455        }
 11456        n += n < 0 ? length : 0;
 11457        return isIndex(n, length) ? array[n] : undefined;
 11458      }
 11459  
 11460      /**
 11461       * The base implementation of `_.orderBy` without param guards.
 11462       *
 11463       * @private
 11464       * @param {Array|Object} collection The collection to iterate over.
 11465       * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
 11466       * @param {string[]} orders The sort orders of `iteratees`.
 11467       * @returns {Array} Returns the new sorted array.
 11468       */
 11469      function baseOrderBy(collection, iteratees, orders) {
 11470        var index = -1;
 11471        iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));
 11472  
 11473        var result = baseMap(collection, function(value, key, collection) {
 11474          var criteria = arrayMap(iteratees, function(iteratee) {
 11475            return iteratee(value);
 11476          });
 11477          return { 'criteria': criteria, 'index': ++index, 'value': value };
 11478        });
 11479  
 11480        return baseSortBy(result, function(object, other) {
 11481          return compareMultiple(object, other, orders);
 11482        });
 11483      }
 11484  
 11485      /**
 11486       * The base implementation of `_.pick` without support for individual
 11487       * property identifiers.
 11488       *
 11489       * @private
 11490       * @param {Object} object The source object.
 11491       * @param {string[]} paths The property paths to pick.
 11492       * @returns {Object} Returns the new object.
 11493       */
 11494      function basePick(object, paths) {
 11495        return basePickBy(object, paths, function(value, path) {
 11496          return hasIn(object, path);
 11497        });
 11498      }
 11499  
 11500      /**
 11501       * The base implementation of  `_.pickBy` without support for iteratee shorthands.
 11502       *
 11503       * @private
 11504       * @param {Object} object The source object.
 11505       * @param {string[]} paths The property paths to pick.
 11506       * @param {Function} predicate The function invoked per property.
 11507       * @returns {Object} Returns the new object.
 11508       */
 11509      function basePickBy(object, paths, predicate) {
 11510        var index = -1,
 11511            length = paths.length,
 11512            result = {};
 11513  
 11514        while (++index < length) {
 11515          var path = paths[index],
 11516              value = baseGet(object, path);
 11517  
 11518          if (predicate(value, path)) {
 11519            baseSet(result, castPath(path, object), value);
 11520          }
 11521        }
 11522        return result;
 11523      }
 11524  
 11525      /**
 11526       * A specialized version of `baseProperty` which supports deep paths.
 11527       *
 11528       * @private
 11529       * @param {Array|string} path The path of the property to get.
 11530       * @returns {Function} Returns the new accessor function.
 11531       */
 11532      function basePropertyDeep(path) {
 11533        return function(object) {
 11534          return baseGet(object, path);
 11535        };
 11536      }
 11537  
 11538      /**
 11539       * The base implementation of `_.pullAllBy` without support for iteratee
 11540       * shorthands.
 11541       *
 11542       * @private
 11543       * @param {Array} array The array to modify.
 11544       * @param {Array} values The values to remove.
 11545       * @param {Function} [iteratee] The iteratee invoked per element.
 11546       * @param {Function} [comparator] The comparator invoked per element.
 11547       * @returns {Array} Returns `array`.
 11548       */
 11549      function basePullAll(array, values, iteratee, comparator) {
 11550        var indexOf = comparator ? baseIndexOfWith : baseIndexOf,
 11551            index = -1,
 11552            length = values.length,
 11553            seen = array;
 11554  
 11555        if (array === values) {
 11556          values = copyArray(values);
 11557        }
 11558        if (iteratee) {
 11559          seen = arrayMap(array, baseUnary(iteratee));
 11560        }
 11561        while (++index < length) {
 11562          var fromIndex = 0,
 11563              value = values[index],
 11564              computed = iteratee ? iteratee(value) : value;
 11565  
 11566          while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
 11567            if (seen !== array) {
 11568              splice.call(seen, fromIndex, 1);
 11569            }
 11570            splice.call(array, fromIndex, 1);
 11571          }
 11572        }
 11573        return array;
 11574      }
 11575  
 11576      /**
 11577       * The base implementation of `_.pullAt` without support for individual
 11578       * indexes or capturing the removed elements.
 11579       *
 11580       * @private
 11581       * @param {Array} array The array to modify.
 11582       * @param {number[]} indexes The indexes of elements to remove.
 11583       * @returns {Array} Returns `array`.
 11584       */
 11585      function basePullAt(array, indexes) {
 11586        var length = array ? indexes.length : 0,
 11587            lastIndex = length - 1;
 11588  
 11589        while (length--) {
 11590          var index = indexes[length];
 11591          if (length == lastIndex || index !== previous) {
 11592            var previous = index;
 11593            if (isIndex(index)) {
 11594              splice.call(array, index, 1);
 11595            } else {
 11596              baseUnset(array, index);
 11597            }
 11598          }
 11599        }
 11600        return array;
 11601      }
 11602  
 11603      /**
 11604       * The base implementation of `_.random` without support for returning
 11605       * floating-point numbers.
 11606       *
 11607       * @private
 11608       * @param {number} lower The lower bound.
 11609       * @param {number} upper The upper bound.
 11610       * @returns {number} Returns the random number.
 11611       */
 11612      function baseRandom(lower, upper) {
 11613        return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
 11614      }
 11615  
 11616      /**
 11617       * The base implementation of `_.range` and `_.rangeRight` which doesn't
 11618       * coerce arguments.
 11619       *
 11620       * @private
 11621       * @param {number} start The start of the range.
 11622       * @param {number} end The end of the range.
 11623       * @param {number} step The value to increment or decrement by.
 11624       * @param {boolean} [fromRight] Specify iterating from right to left.
 11625       * @returns {Array} Returns the range of numbers.
 11626       */
 11627      function baseRange(start, end, step, fromRight) {
 11628        var index = -1,
 11629            length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
 11630            result = Array(length);
 11631  
 11632        while (length--) {
 11633          result[fromRight ? length : ++index] = start;
 11634          start += step;
 11635        }
 11636        return result;
 11637      }
 11638  
 11639      /**
 11640       * The base implementation of `_.repeat` which doesn't coerce arguments.
 11641       *
 11642       * @private
 11643       * @param {string} string The string to repeat.
 11644       * @param {number} n The number of times to repeat the string.
 11645       * @returns {string} Returns the repeated string.
 11646       */
 11647      function baseRepeat(string, n) {
 11648        var result = '';
 11649        if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
 11650          return result;
 11651        }
 11652        // Leverage the exponentiation by squaring algorithm for a faster repeat.
 11653        // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.
 11654        do {
 11655          if (n % 2) {
 11656            result += string;
 11657          }
 11658          n = nativeFloor(n / 2);
 11659          if (n) {
 11660            string += string;
 11661          }
 11662        } while (n);
 11663  
 11664        return result;
 11665      }
 11666  
 11667      /**
 11668       * The base implementation of `_.rest` which doesn't validate or coerce arguments.
 11669       *
 11670       * @private
 11671       * @param {Function} func The function to apply a rest parameter to.
 11672       * @param {number} [start=func.length-1] The start position of the rest parameter.
 11673       * @returns {Function} Returns the new function.
 11674       */
 11675      function baseRest(func, start) {
 11676        return setToString(overRest(func, start, identity), func + '');
 11677      }
 11678  
 11679      /**
 11680       * The base implementation of `_.sample`.
 11681       *
 11682       * @private
 11683       * @param {Array|Object} collection The collection to sample.
 11684       * @returns {*} Returns the random element.
 11685       */
 11686      function baseSample(collection) {
 11687        return arraySample(values(collection));
 11688      }
 11689  
 11690      /**
 11691       * The base implementation of `_.sampleSize` without param guards.
 11692       *
 11693       * @private
 11694       * @param {Array|Object} collection The collection to sample.
 11695       * @param {number} n The number of elements to sample.
 11696       * @returns {Array} Returns the random elements.
 11697       */
 11698      function baseSampleSize(collection, n) {
 11699        var array = values(collection);
 11700        return shuffleSelf(array, baseClamp(n, 0, array.length));
 11701      }
 11702  
 11703      /**
 11704       * The base implementation of `_.set`.
 11705       *
 11706       * @private
 11707       * @param {Object} object The object to modify.
 11708       * @param {Array|string} path The path of the property to set.
 11709       * @param {*} value The value to set.
 11710       * @param {Function} [customizer] The function to customize path creation.
 11711       * @returns {Object} Returns `object`.
 11712       */
 11713      function baseSet(object, path, value, customizer) {
 11714        if (!isObject(object)) {
 11715          return object;
 11716        }
 11717        path = castPath(path, object);
 11718  
 11719        var index = -1,
 11720            length = path.length,
 11721            lastIndex = length - 1,
 11722            nested = object;
 11723  
 11724        while (nested != null && ++index < length) {
 11725          var key = toKey(path[index]),
 11726              newValue = value;
 11727  
 11728          if (index != lastIndex) {
 11729            var objValue = nested[key];
 11730            newValue = customizer ? customizer(objValue, key, nested) : undefined;
 11731            if (newValue === undefined) {
 11732              newValue = isObject(objValue)
 11733                ? objValue
 11734                : (isIndex(path[index + 1]) ? [] : {});
 11735            }
 11736          }
 11737          assignValue(nested, key, newValue);
 11738          nested = nested[key];
 11739        }
 11740        return object;
 11741      }
 11742  
 11743      /**
 11744       * The base implementation of `setData` without support for hot loop shorting.
 11745       *
 11746       * @private
 11747       * @param {Function} func The function to associate metadata with.
 11748       * @param {*} data The metadata.
 11749       * @returns {Function} Returns `func`.
 11750       */
 11751      var baseSetData = !metaMap ? identity : function(func, data) {
 11752        metaMap.set(func, data);
 11753        return func;
 11754      };
 11755  
 11756      /**
 11757       * The base implementation of `setToString` without support for hot loop shorting.
 11758       *
 11759       * @private
 11760       * @param {Function} func The function to modify.
 11761       * @param {Function} string The `toString` result.
 11762       * @returns {Function} Returns `func`.
 11763       */
 11764      var baseSetToString = !defineProperty ? identity : function(func, string) {
 11765        return defineProperty(func, 'toString', {
 11766          'configurable': true,
 11767          'enumerable': false,
 11768          'value': constant(string),
 11769          'writable': true
 11770        });
 11771      };
 11772  
 11773      /**
 11774       * The base implementation of `_.shuffle`.
 11775       *
 11776       * @private
 11777       * @param {Array|Object} collection The collection to shuffle.
 11778       * @returns {Array} Returns the new shuffled array.
 11779       */
 11780      function baseShuffle(collection) {
 11781        return shuffleSelf(values(collection));
 11782      }
 11783  
 11784      /**
 11785       * The base implementation of `_.slice` without an iteratee call guard.
 11786       *
 11787       * @private
 11788       * @param {Array} array The array to slice.
 11789       * @param {number} [start=0] The start position.
 11790       * @param {number} [end=array.length] The end position.
 11791       * @returns {Array} Returns the slice of `array`.
 11792       */
 11793      function baseSlice(array, start, end) {
 11794        var index = -1,
 11795            length = array.length;
 11796  
 11797        if (start < 0) {
 11798          start = -start > length ? 0 : (length + start);
 11799        }
 11800        end = end > length ? length : end;
 11801        if (end < 0) {
 11802          end += length;
 11803        }
 11804        length = start > end ? 0 : ((end - start) >>> 0);
 11805        start >>>= 0;
 11806  
 11807        var result = Array(length);
 11808        while (++index < length) {
 11809          result[index] = array[index + start];
 11810        }
 11811        return result;
 11812      }
 11813  
 11814      /**
 11815       * The base implementation of `_.some` without support for iteratee shorthands.
 11816       *
 11817       * @private
 11818       * @param {Array|Object} collection The collection to iterate over.
 11819       * @param {Function} predicate The function invoked per iteration.
 11820       * @returns {boolean} Returns `true` if any element passes the predicate check,
 11821       *  else `false`.
 11822       */
 11823      function baseSome(collection, predicate) {
 11824        var result;
 11825  
 11826        baseEach(collection, function(value, index, collection) {
 11827          result = predicate(value, index, collection);
 11828          return !result;
 11829        });
 11830        return !!result;
 11831      }
 11832  
 11833      /**
 11834       * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which
 11835       * performs a binary search of `array` to determine the index at which `value`
 11836       * should be inserted into `array` in order to maintain its sort order.
 11837       *
 11838       * @private
 11839       * @param {Array} array The sorted array to inspect.
 11840       * @param {*} value The value to evaluate.
 11841       * @param {boolean} [retHighest] Specify returning the highest qualified index.
 11842       * @returns {number} Returns the index at which `value` should be inserted
 11843       *  into `array`.
 11844       */
 11845      function baseSortedIndex(array, value, retHighest) {
 11846        var low = 0,
 11847            high = array == null ? low : array.length;
 11848  
 11849        if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
 11850          while (low < high) {
 11851            var mid = (low + high) >>> 1,
 11852                computed = array[mid];
 11853  
 11854            if (computed !== null && !isSymbol(computed) &&
 11855                (retHighest ? (computed <= value) : (computed < value))) {
 11856              low = mid + 1;
 11857            } else {
 11858              high = mid;
 11859            }
 11860          }
 11861          return high;
 11862        }
 11863        return baseSortedIndexBy(array, value, identity, retHighest);
 11864      }
 11865  
 11866      /**
 11867       * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`
 11868       * which invokes `iteratee` for `value` and each element of `array` to compute
 11869       * their sort ranking. The iteratee is invoked with one argument; (value).
 11870       *
 11871       * @private
 11872       * @param {Array} array The sorted array to inspect.
 11873       * @param {*} value The value to evaluate.
 11874       * @param {Function} iteratee The iteratee invoked per element.
 11875       * @param {boolean} [retHighest] Specify returning the highest qualified index.
 11876       * @returns {number} Returns the index at which `value` should be inserted
 11877       *  into `array`.
 11878       */
 11879      function baseSortedIndexBy(array, value, iteratee, retHighest) {
 11880        value = iteratee(value);
 11881  
 11882        var low = 0,
 11883            high = array == null ? 0 : array.length,
 11884            valIsNaN = value !== value,
 11885            valIsNull = value === null,
 11886            valIsSymbol = isSymbol(value),
 11887            valIsUndefined = value === undefined;
 11888  
 11889        while (low < high) {
 11890          var mid = nativeFloor((low + high) / 2),
 11891              computed = iteratee(array[mid]),
 11892              othIsDefined = computed !== undefined,
 11893              othIsNull = computed === null,
 11894              othIsReflexive = computed === computed,
 11895              othIsSymbol = isSymbol(computed);
 11896  
 11897          if (valIsNaN) {
 11898            var setLow = retHighest || othIsReflexive;
 11899          } else if (valIsUndefined) {
 11900            setLow = othIsReflexive && (retHighest || othIsDefined);
 11901          } else if (valIsNull) {
 11902            setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
 11903          } else if (valIsSymbol) {
 11904            setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
 11905          } else if (othIsNull || othIsSymbol) {
 11906            setLow = false;
 11907          } else {
 11908            setLow = retHighest ? (computed <= value) : (computed < value);
 11909          }
 11910          if (setLow) {
 11911            low = mid + 1;
 11912          } else {
 11913            high = mid;
 11914          }
 11915        }
 11916        return nativeMin(high, MAX_ARRAY_INDEX);
 11917      }
 11918  
 11919      /**
 11920       * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without
 11921       * support for iteratee shorthands.
 11922       *
 11923       * @private
 11924       * @param {Array} array The array to inspect.
 11925       * @param {Function} [iteratee] The iteratee invoked per element.
 11926       * @returns {Array} Returns the new duplicate free array.
 11927       */
 11928      function baseSortedUniq(array, iteratee) {
 11929        var index = -1,
 11930            length = array.length,
 11931            resIndex = 0,
 11932            result = [];
 11933  
 11934        while (++index < length) {
 11935          var value = array[index],
 11936              computed = iteratee ? iteratee(value) : value;
 11937  
 11938          if (!index || !eq(computed, seen)) {
 11939            var seen = computed;
 11940            result[resIndex++] = value === 0 ? 0 : value;
 11941          }
 11942        }
 11943        return result;
 11944      }
 11945  
 11946      /**
 11947       * The base implementation of `_.toNumber` which doesn't ensure correct
 11948       * conversions of binary, hexadecimal, or octal string values.
 11949       *
 11950       * @private
 11951       * @param {*} value The value to process.
 11952       * @returns {number} Returns the number.
 11953       */
 11954      function baseToNumber(value) {
 11955        if (typeof value == 'number') {
 11956          return value;
 11957        }
 11958        if (isSymbol(value)) {
 11959          return NAN;
 11960        }
 11961        return +value;
 11962      }
 11963  
 11964      /**
 11965       * The base implementation of `_.toString` which doesn't convert nullish
 11966       * values to empty strings.
 11967       *
 11968       * @private
 11969       * @param {*} value The value to process.
 11970       * @returns {string} Returns the string.
 11971       */
 11972      function baseToString(value) {
 11973        // Exit early for strings to avoid a performance hit in some environments.
 11974        if (typeof value == 'string') {
 11975          return value;
 11976        }
 11977        if (isArray(value)) {
 11978          // Recursively convert values (susceptible to call stack limits).
 11979          return arrayMap(value, baseToString) + '';
 11980        }
 11981        if (isSymbol(value)) {
 11982          return symbolToString ? symbolToString.call(value) : '';
 11983        }
 11984        var result = (value + '');
 11985        return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
 11986      }
 11987  
 11988      /**
 11989       * The base implementation of `_.uniqBy` without support for iteratee shorthands.
 11990       *
 11991       * @private
 11992       * @param {Array} array The array to inspect.
 11993       * @param {Function} [iteratee] The iteratee invoked per element.
 11994       * @param {Function} [comparator] The comparator invoked per element.
 11995       * @returns {Array} Returns the new duplicate free array.
 11996       */
 11997      function baseUniq(array, iteratee, comparator) {
 11998        var index = -1,
 11999            includes = arrayIncludes,
 12000            length = array.length,
 12001            isCommon = true,
 12002            result = [],
 12003            seen = result;
 12004  
 12005        if (comparator) {
 12006          isCommon = false;
 12007          includes = arrayIncludesWith;
 12008        }
 12009        else if (length >= LARGE_ARRAY_SIZE) {
 12010          var set = iteratee ? null : createSet(array);
 12011          if (set) {
 12012            return setToArray(set);
 12013          }
 12014          isCommon = false;
 12015          includes = cacheHas;
 12016          seen = new SetCache;
 12017        }
 12018        else {
 12019          seen = iteratee ? [] : result;
 12020        }
 12021        outer:
 12022        while (++index < length) {
 12023          var value = array[index],
 12024              computed = iteratee ? iteratee(value) : value;
 12025  
 12026          value = (comparator || value !== 0) ? value : 0;
 12027          if (isCommon && computed === computed) {
 12028            var seenIndex = seen.length;
 12029            while (seenIndex--) {
 12030              if (seen[seenIndex] === computed) {
 12031                continue outer;
 12032              }
 12033            }
 12034            if (iteratee) {
 12035              seen.push(computed);
 12036            }
 12037            result.push(value);
 12038          }
 12039          else if (!includes(seen, computed, comparator)) {
 12040            if (seen !== result) {
 12041              seen.push(computed);
 12042            }
 12043            result.push(value);
 12044          }
 12045        }
 12046        return result;
 12047      }
 12048  
 12049      /**
 12050       * The base implementation of `_.unset`.
 12051       *
 12052       * @private
 12053       * @param {Object} object The object to modify.
 12054       * @param {Array|string} path The property path to unset.
 12055       * @returns {boolean} Returns `true` if the property is deleted, else `false`.
 12056       */
 12057      function baseUnset(object, path) {
 12058        path = castPath(path, object);
 12059        object = parent(object, path);
 12060        return object == null || delete object[toKey(last(path))];
 12061      }
 12062  
 12063      /**
 12064       * The base implementation of `_.update`.
 12065       *
 12066       * @private
 12067       * @param {Object} object The object to modify.
 12068       * @param {Array|string} path The path of the property to update.
 12069       * @param {Function} updater The function to produce the updated value.
 12070       * @param {Function} [customizer] The function to customize path creation.
 12071       * @returns {Object} Returns `object`.
 12072       */
 12073      function baseUpdate(object, path, updater, customizer) {
 12074        return baseSet(object, path, updater(baseGet(object, path)), customizer);
 12075      }
 12076  
 12077      /**
 12078       * The base implementation of methods like `_.dropWhile` and `_.takeWhile`
 12079       * without support for iteratee shorthands.
 12080       *
 12081       * @private
 12082       * @param {Array} array The array to query.
 12083       * @param {Function} predicate The function invoked per iteration.
 12084       * @param {boolean} [isDrop] Specify dropping elements instead of taking them.
 12085       * @param {boolean} [fromRight] Specify iterating from right to left.
 12086       * @returns {Array} Returns the slice of `array`.
 12087       */
 12088      function baseWhile(array, predicate, isDrop, fromRight) {
 12089        var length = array.length,
 12090            index = fromRight ? length : -1;
 12091  
 12092        while ((fromRight ? index-- : ++index < length) &&
 12093          predicate(array[index], index, array)) {}
 12094  
 12095        return isDrop
 12096          ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))
 12097          : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));
 12098      }
 12099  
 12100      /**
 12101       * The base implementation of `wrapperValue` which returns the result of
 12102       * performing a sequence of actions on the unwrapped `value`, where each
 12103       * successive action is supplied the return value of the previous.
 12104       *
 12105       * @private
 12106       * @param {*} value The unwrapped value.
 12107       * @param {Array} actions Actions to perform to resolve the unwrapped value.
 12108       * @returns {*} Returns the resolved value.
 12109       */
 12110      function baseWrapperValue(value, actions) {
 12111        var result = value;
 12112        if (result instanceof LazyWrapper) {
 12113          result = result.value();
 12114        }
 12115        return arrayReduce(actions, function(result, action) {
 12116          return action.func.apply(action.thisArg, arrayPush([result], action.args));
 12117        }, result);
 12118      }
 12119  
 12120      /**
 12121       * The base implementation of methods like `_.xor`, without support for
 12122       * iteratee shorthands, that accepts an array of arrays to inspect.
 12123       *
 12124       * @private
 12125       * @param {Array} arrays The arrays to inspect.
 12126       * @param {Function} [iteratee] The iteratee invoked per element.
 12127       * @param {Function} [comparator] The comparator invoked per element.
 12128       * @returns {Array} Returns the new array of values.
 12129       */
 12130      function baseXor(arrays, iteratee, comparator) {
 12131        var length = arrays.length;
 12132        if (length < 2) {
 12133          return length ? baseUniq(arrays[0]) : [];
 12134        }
 12135        var index = -1,
 12136            result = Array(length);
 12137  
 12138        while (++index < length) {
 12139          var array = arrays[index],
 12140              othIndex = -1;
 12141  
 12142          while (++othIndex < length) {
 12143            if (othIndex != index) {
 12144              result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);
 12145            }
 12146          }
 12147        }
 12148        return baseUniq(baseFlatten(result, 1), iteratee, comparator);
 12149      }
 12150  
 12151      /**
 12152       * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
 12153       *
 12154       * @private
 12155       * @param {Array} props The property identifiers.
 12156       * @param {Array} values The property values.
 12157       * @param {Function} assignFunc The function to assign values.
 12158       * @returns {Object} Returns the new object.
 12159       */
 12160      function baseZipObject(props, values, assignFunc) {
 12161        var index = -1,
 12162            length = props.length,
 12163            valsLength = values.length,
 12164            result = {};
 12165  
 12166        while (++index < length) {
 12167          var value = index < valsLength ? values[index] : undefined;
 12168          assignFunc(result, props[index], value);
 12169        }
 12170        return result;
 12171      }
 12172  
 12173      /**
 12174       * Casts `value` to an empty array if it's not an array like object.
 12175       *
 12176       * @private
 12177       * @param {*} value The value to inspect.
 12178       * @returns {Array|Object} Returns the cast array-like object.
 12179       */
 12180      function castArrayLikeObject(value) {
 12181        return isArrayLikeObject(value) ? value : [];
 12182      }
 12183  
 12184      /**
 12185       * Casts `value` to `identity` if it's not a function.
 12186       *
 12187       * @private
 12188       * @param {*} value The value to inspect.
 12189       * @returns {Function} Returns cast function.
 12190       */
 12191      function castFunction(value) {
 12192        return typeof value == 'function' ? value : identity;
 12193      }
 12194  
 12195      /**
 12196       * Casts `value` to a path array if it's not one.
 12197       *
 12198       * @private
 12199       * @param {*} value The value to inspect.
 12200       * @param {Object} [object] The object to query keys on.
 12201       * @returns {Array} Returns the cast property path array.
 12202       */
 12203      function castPath(value, object) {
 12204        if (isArray(value)) {
 12205          return value;
 12206        }
 12207        return isKey(value, object) ? [value] : stringToPath(toString(value));
 12208      }
 12209  
 12210      /**
 12211       * A `baseRest` alias which can be replaced with `identity` by module
 12212       * replacement plugins.
 12213       *
 12214       * @private
 12215       * @type {Function}
 12216       * @param {Function} func The function to apply a rest parameter to.
 12217       * @returns {Function} Returns the new function.
 12218       */
 12219      var castRest = baseRest;
 12220  
 12221      /**
 12222       * Casts `array` to a slice if it's needed.
 12223       *
 12224       * @private
 12225       * @param {Array} array The array to inspect.
 12226       * @param {number} start The start position.
 12227       * @param {number} [end=array.length] The end position.
 12228       * @returns {Array} Returns the cast slice.
 12229       */
 12230      function castSlice(array, start, end) {
 12231        var length = array.length;
 12232        end = end === undefined ? length : end;
 12233        return (!start && end >= length) ? array : baseSlice(array, start, end);
 12234      }
 12235  
 12236      /**
 12237       * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).
 12238       *
 12239       * @private
 12240       * @param {number|Object} id The timer id or timeout object of the timer to clear.
 12241       */
 12242      var clearTimeout = ctxClearTimeout || function(id) {
 12243        return root.clearTimeout(id);
 12244      };
 12245  
 12246      /**
 12247       * Creates a clone of  `buffer`.
 12248       *
 12249       * @private
 12250       * @param {Buffer} buffer The buffer to clone.
 12251       * @param {boolean} [isDeep] Specify a deep clone.
 12252       * @returns {Buffer} Returns the cloned buffer.
 12253       */
 12254      function cloneBuffer(buffer, isDeep) {
 12255        if (isDeep) {
 12256          return buffer.slice();
 12257        }
 12258        var length = buffer.length,
 12259            result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
 12260  
 12261        buffer.copy(result);
 12262        return result;
 12263      }
 12264  
 12265      /**
 12266       * Creates a clone of `arrayBuffer`.
 12267       *
 12268       * @private
 12269       * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
 12270       * @returns {ArrayBuffer} Returns the cloned array buffer.
 12271       */
 12272      function cloneArrayBuffer(arrayBuffer) {
 12273        var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
 12274        new Uint8Array(result).set(new Uint8Array(arrayBuffer));
 12275        return result;
 12276      }
 12277  
 12278      /**
 12279       * Creates a clone of `dataView`.
 12280       *
 12281       * @private
 12282       * @param {Object} dataView The data view to clone.
 12283       * @param {boolean} [isDeep] Specify a deep clone.
 12284       * @returns {Object} Returns the cloned data view.
 12285       */
 12286      function cloneDataView(dataView, isDeep) {
 12287        var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
 12288        return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
 12289      }
 12290  
 12291      /**
 12292       * Creates a clone of `regexp`.
 12293       *
 12294       * @private
 12295       * @param {Object} regexp The regexp to clone.
 12296       * @returns {Object} Returns the cloned regexp.
 12297       */
 12298      function cloneRegExp(regexp) {
 12299        var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
 12300        result.lastIndex = regexp.lastIndex;
 12301        return result;
 12302      }
 12303  
 12304      /**
 12305       * Creates a clone of the `symbol` object.
 12306       *
 12307       * @private
 12308       * @param {Object} symbol The symbol object to clone.
 12309       * @returns {Object} Returns the cloned symbol object.
 12310       */
 12311      function cloneSymbol(symbol) {
 12312        return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
 12313      }
 12314  
 12315      /**
 12316       * Creates a clone of `typedArray`.
 12317       *
 12318       * @private
 12319       * @param {Object} typedArray The typed array to clone.
 12320       * @param {boolean} [isDeep] Specify a deep clone.
 12321       * @returns {Object} Returns the cloned typed array.
 12322       */
 12323      function cloneTypedArray(typedArray, isDeep) {
 12324        var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
 12325        return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
 12326      }
 12327  
 12328      /**
 12329       * Compares values to sort them in ascending order.
 12330       *
 12331       * @private
 12332       * @param {*} value The value to compare.
 12333       * @param {*} other The other value to compare.
 12334       * @returns {number} Returns the sort order indicator for `value`.
 12335       */
 12336      function compareAscending(value, other) {
 12337        if (value !== other) {
 12338          var valIsDefined = value !== undefined,
 12339              valIsNull = value === null,
 12340              valIsReflexive = value === value,
 12341              valIsSymbol = isSymbol(value);
 12342  
 12343          var othIsDefined = other !== undefined,
 12344              othIsNull = other === null,
 12345              othIsReflexive = other === other,
 12346              othIsSymbol = isSymbol(other);
 12347  
 12348          if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
 12349              (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
 12350              (valIsNull && othIsDefined && othIsReflexive) ||
 12351              (!valIsDefined && othIsReflexive) ||
 12352              !valIsReflexive) {
 12353            return 1;
 12354          }
 12355          if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
 12356              (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
 12357              (othIsNull && valIsDefined && valIsReflexive) ||
 12358              (!othIsDefined && valIsReflexive) ||
 12359              !othIsReflexive) {
 12360            return -1;
 12361          }
 12362        }
 12363        return 0;
 12364      }
 12365  
 12366      /**
 12367       * Used by `_.orderBy` to compare multiple properties of a value to another
 12368       * and stable sort them.
 12369       *
 12370       * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
 12371       * specify an order of "desc" for descending or "asc" for ascending sort order
 12372       * of corresponding values.
 12373       *
 12374       * @private
 12375       * @param {Object} object The object to compare.
 12376       * @param {Object} other The other object to compare.
 12377       * @param {boolean[]|string[]} orders The order to sort by for each property.
 12378       * @returns {number} Returns the sort order indicator for `object`.
 12379       */
 12380      function compareMultiple(object, other, orders) {
 12381        var index = -1,
 12382            objCriteria = object.criteria,
 12383            othCriteria = other.criteria,
 12384            length = objCriteria.length,
 12385            ordersLength = orders.length;
 12386  
 12387        while (++index < length) {
 12388          var result = compareAscending(objCriteria[index], othCriteria[index]);
 12389          if (result) {
 12390            if (index >= ordersLength) {
 12391              return result;
 12392            }
 12393            var order = orders[index];
 12394            return result * (order == 'desc' ? -1 : 1);
 12395          }
 12396        }
 12397        // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
 12398        // that causes it, under certain circumstances, to provide the same value for
 12399        // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
 12400        // for more details.
 12401        //
 12402        // This also ensures a stable sort in V8 and other engines.
 12403        // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
 12404        return object.index - other.index;
 12405      }
 12406  
 12407      /**
 12408       * Creates an array that is the composition of partially applied arguments,
 12409       * placeholders, and provided arguments into a single array of arguments.
 12410       *
 12411       * @private
 12412       * @param {Array} args The provided arguments.
 12413       * @param {Array} partials The arguments to prepend to those provided.
 12414       * @param {Array} holders The `partials` placeholder indexes.
 12415       * @params {boolean} [isCurried] Specify composing for a curried function.
 12416       * @returns {Array} Returns the new array of composed arguments.
 12417       */
 12418      function composeArgs(args, partials, holders, isCurried) {
 12419        var argsIndex = -1,
 12420            argsLength = args.length,
 12421            holdersLength = holders.length,
 12422            leftIndex = -1,
 12423            leftLength = partials.length,
 12424            rangeLength = nativeMax(argsLength - holdersLength, 0),
 12425            result = Array(leftLength + rangeLength),
 12426            isUncurried = !isCurried;
 12427  
 12428        while (++leftIndex < leftLength) {
 12429          result[leftIndex] = partials[leftIndex];
 12430        }
 12431        while (++argsIndex < holdersLength) {
 12432          if (isUncurried || argsIndex < argsLength) {
 12433            result[holders[argsIndex]] = args[argsIndex];
 12434          }
 12435        }
 12436        while (rangeLength--) {
 12437          result[leftIndex++] = args[argsIndex++];
 12438        }
 12439        return result;
 12440      }
 12441  
 12442      /**
 12443       * This function is like `composeArgs` except that the arguments composition
 12444       * is tailored for `_.partialRight`.
 12445       *
 12446       * @private
 12447       * @param {Array} args The provided arguments.
 12448       * @param {Array} partials The arguments to append to those provided.
 12449       * @param {Array} holders The `partials` placeholder indexes.
 12450       * @params {boolean} [isCurried] Specify composing for a curried function.
 12451       * @returns {Array} Returns the new array of composed arguments.
 12452       */
 12453      function composeArgsRight(args, partials, holders, isCurried) {
 12454        var argsIndex = -1,
 12455            argsLength = args.length,
 12456            holdersIndex = -1,
 12457            holdersLength = holders.length,
 12458            rightIndex = -1,
 12459            rightLength = partials.length,
 12460            rangeLength = nativeMax(argsLength - holdersLength, 0),
 12461            result = Array(rangeLength + rightLength),
 12462            isUncurried = !isCurried;
 12463  
 12464        while (++argsIndex < rangeLength) {
 12465          result[argsIndex] = args[argsIndex];
 12466        }
 12467        var offset = argsIndex;
 12468        while (++rightIndex < rightLength) {
 12469          result[offset + rightIndex] = partials[rightIndex];
 12470        }
 12471        while (++holdersIndex < holdersLength) {
 12472          if (isUncurried || argsIndex < argsLength) {
 12473            result[offset + holders[holdersIndex]] = args[argsIndex++];
 12474          }
 12475        }
 12476        return result;
 12477      }
 12478  
 12479      /**
 12480       * Copies the values of `source` to `array`.
 12481       *
 12482       * @private
 12483       * @param {Array} source The array to copy values from.
 12484       * @param {Array} [array=[]] The array to copy values to.
 12485       * @returns {Array} Returns `array`.
 12486       */
 12487      function copyArray(source, array) {
 12488        var index = -1,
 12489            length = source.length;
 12490  
 12491        array || (array = Array(length));
 12492        while (++index < length) {
 12493          array[index] = source[index];
 12494        }
 12495        return array;
 12496      }
 12497  
 12498      /**
 12499       * Copies properties of `source` to `object`.
 12500       *
 12501       * @private
 12502       * @param {Object} source The object to copy properties from.
 12503       * @param {Array} props The property identifiers to copy.
 12504       * @param {Object} [object={}] The object to copy properties to.
 12505       * @param {Function} [customizer] The function to customize copied values.
 12506       * @returns {Object} Returns `object`.
 12507       */
 12508      function copyObject(source, props, object, customizer) {
 12509        var isNew = !object;
 12510        object || (object = {});
 12511  
 12512        var index = -1,
 12513            length = props.length;
 12514  
 12515        while (++index < length) {
 12516          var key = props[index];
 12517  
 12518          var newValue = customizer
 12519            ? customizer(object[key], source[key], key, object, source)
 12520            : undefined;
 12521  
 12522          if (newValue === undefined) {
 12523            newValue = source[key];
 12524          }
 12525          if (isNew) {
 12526            baseAssignValue(object, key, newValue);
 12527          } else {
 12528            assignValue(object, key, newValue);
 12529          }
 12530        }
 12531        return object;
 12532      }
 12533  
 12534      /**
 12535       * Copies own symbols of `source` to `object`.
 12536       *
 12537       * @private
 12538       * @param {Object} source The object to copy symbols from.
 12539       * @param {Object} [object={}] The object to copy symbols to.
 12540       * @returns {Object} Returns `object`.
 12541       */
 12542      function copySymbols(source, object) {
 12543        return copyObject(source, getSymbols(source), object);
 12544      }
 12545  
 12546      /**
 12547       * Copies own and inherited symbols of `source` to `object`.
 12548       *
 12549       * @private
 12550       * @param {Object} source The object to copy symbols from.
 12551       * @param {Object} [object={}] The object to copy symbols to.
 12552       * @returns {Object} Returns `object`.
 12553       */
 12554      function copySymbolsIn(source, object) {
 12555        return copyObject(source, getSymbolsIn(source), object);
 12556      }
 12557  
 12558      /**
 12559       * Creates a function like `_.groupBy`.
 12560       *
 12561       * @private
 12562       * @param {Function} setter The function to set accumulator values.
 12563       * @param {Function} [initializer] The accumulator object initializer.
 12564       * @returns {Function} Returns the new aggregator function.
 12565       */
 12566      function createAggregator(setter, initializer) {
 12567        return function(collection, iteratee) {
 12568          var func = isArray(collection) ? arrayAggregator : baseAggregator,
 12569              accumulator = initializer ? initializer() : {};
 12570  
 12571          return func(collection, setter, getIteratee(iteratee, 2), accumulator);
 12572        };
 12573      }
 12574  
 12575      /**
 12576       * Creates a function like `_.assign`.
 12577       *
 12578       * @private
 12579       * @param {Function} assigner The function to assign values.
 12580       * @returns {Function} Returns the new assigner function.
 12581       */
 12582      function createAssigner(assigner) {
 12583        return baseRest(function(object, sources) {
 12584          var index = -1,
 12585              length = sources.length,
 12586              customizer = length > 1 ? sources[length - 1] : undefined,
 12587              guard = length > 2 ? sources[2] : undefined;
 12588  
 12589          customizer = (assigner.length > 3 && typeof customizer == 'function')
 12590            ? (length--, customizer)
 12591            : undefined;
 12592  
 12593          if (guard && isIterateeCall(sources[0], sources[1], guard)) {
 12594            customizer = length < 3 ? undefined : customizer;
 12595            length = 1;
 12596          }
 12597          object = Object(object);
 12598          while (++index < length) {
 12599            var source = sources[index];
 12600            if (source) {
 12601              assigner(object, source, index, customizer);
 12602            }
 12603          }
 12604          return object;
 12605        });
 12606      }
 12607  
 12608      /**
 12609       * Creates a `baseEach` or `baseEachRight` function.
 12610       *
 12611       * @private
 12612       * @param {Function} eachFunc The function to iterate over a collection.
 12613       * @param {boolean} [fromRight] Specify iterating from right to left.
 12614       * @returns {Function} Returns the new base function.
 12615       */
 12616      function createBaseEach(eachFunc, fromRight) {
 12617        return function(collection, iteratee) {
 12618          if (collection == null) {
 12619            return collection;
 12620          }
 12621          if (!isArrayLike(collection)) {
 12622            return eachFunc(collection, iteratee);
 12623          }
 12624          var length = collection.length,
 12625              index = fromRight ? length : -1,
 12626              iterable = Object(collection);
 12627  
 12628          while ((fromRight ? index-- : ++index < length)) {
 12629            if (iteratee(iterable[index], index, iterable) === false) {
 12630              break;
 12631            }
 12632          }
 12633          return collection;
 12634        };
 12635      }
 12636  
 12637      /**
 12638       * Creates a base function for methods like `_.forIn` and `_.forOwn`.
 12639       *
 12640       * @private
 12641       * @param {boolean} [fromRight] Specify iterating from right to left.
 12642       * @returns {Function} Returns the new base function.
 12643       */
 12644      function createBaseFor(fromRight) {
 12645        return function(object, iteratee, keysFunc) {
 12646          var index = -1,
 12647              iterable = Object(object),
 12648              props = keysFunc(object),
 12649              length = props.length;
 12650  
 12651          while (length--) {
 12652            var key = props[fromRight ? length : ++index];
 12653            if (iteratee(iterable[key], key, iterable) === false) {
 12654              break;
 12655            }
 12656          }
 12657          return object;
 12658        };
 12659      }
 12660  
 12661      /**
 12662       * Creates a function that wraps `func` to invoke it with the optional `this`
 12663       * binding of `thisArg`.
 12664       *
 12665       * @private
 12666       * @param {Function} func The function to wrap.
 12667       * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
 12668       * @param {*} [thisArg] The `this` binding of `func`.
 12669       * @returns {Function} Returns the new wrapped function.
 12670       */
 12671      function createBind(func, bitmask, thisArg) {
 12672        var isBind = bitmask & WRAP_BIND_FLAG,
 12673            Ctor = createCtor(func);
 12674  
 12675        function wrapper() {
 12676          var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
 12677          return fn.apply(isBind ? thisArg : this, arguments);
 12678        }
 12679        return wrapper;
 12680      }
 12681  
 12682      /**
 12683       * Creates a function like `_.lowerFirst`.
 12684       *
 12685       * @private
 12686       * @param {string} methodName The name of the `String` case method to use.
 12687       * @returns {Function} Returns the new case function.
 12688       */
 12689      function createCaseFirst(methodName) {
 12690        return function(string) {
 12691          string = toString(string);
 12692  
 12693          var strSymbols = hasUnicode(string)
 12694            ? stringToArray(string)
 12695            : undefined;
 12696  
 12697          var chr = strSymbols
 12698            ? strSymbols[0]
 12699            : string.charAt(0);
 12700  
 12701          var trailing = strSymbols
 12702            ? castSlice(strSymbols, 1).join('')
 12703            : string.slice(1);
 12704  
 12705          return chr[methodName]() + trailing;
 12706        };
 12707      }
 12708  
 12709      /**
 12710       * Creates a function like `_.camelCase`.
 12711       *
 12712       * @private
 12713       * @param {Function} callback The function to combine each word.
 12714       * @returns {Function} Returns the new compounder function.
 12715       */
 12716      function createCompounder(callback) {
 12717        return function(string) {
 12718          return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');
 12719        };
 12720      }
 12721  
 12722      /**
 12723       * Creates a function that produces an instance of `Ctor` regardless of
 12724       * whether it was invoked as part of a `new` expression or by `call` or `apply`.
 12725       *
 12726       * @private
 12727       * @param {Function} Ctor The constructor to wrap.
 12728       * @returns {Function} Returns the new wrapped function.
 12729       */
 12730      function createCtor(Ctor) {
 12731        return function() {
 12732          // Use a `switch` statement to work with class constructors. See
 12733          // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
 12734          // for more details.
 12735          var args = arguments;
 12736          switch (args.length) {
 12737            case 0: return new Ctor;
 12738            case 1: return new Ctor(args[0]);
 12739            case 2: return new Ctor(args[0], args[1]);
 12740            case 3: return new Ctor(args[0], args[1], args[2]);
 12741            case 4: return new Ctor(args[0], args[1], args[2], args[3]);
 12742            case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
 12743            case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
 12744            case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
 12745          }
 12746          var thisBinding = baseCreate(Ctor.prototype),
 12747              result = Ctor.apply(thisBinding, args);
 12748  
 12749          // Mimic the constructor's `return` behavior.
 12750          // See https://es5.github.io/#x13.2.2 for more details.
 12751          return isObject(result) ? result : thisBinding;
 12752        };
 12753      }
 12754  
 12755      /**
 12756       * Creates a function that wraps `func` to enable currying.
 12757       *
 12758       * @private
 12759       * @param {Function} func The function to wrap.
 12760       * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
 12761       * @param {number} arity The arity of `func`.
 12762       * @returns {Function} Returns the new wrapped function.
 12763       */
 12764      function createCurry(func, bitmask, arity) {
 12765        var Ctor = createCtor(func);
 12766  
 12767        function wrapper() {
 12768          var length = arguments.length,
 12769              args = Array(length),
 12770              index = length,
 12771              placeholder = getHolder(wrapper);
 12772  
 12773          while (index--) {
 12774            args[index] = arguments[index];
 12775          }
 12776          var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)
 12777            ? []
 12778            : replaceHolders(args, placeholder);
 12779  
 12780          length -= holders.length;
 12781          if (length < arity) {
 12782            return createRecurry(
 12783              func, bitmask, createHybrid, wrapper.placeholder, undefined,
 12784              args, holders, undefined, undefined, arity - length);
 12785          }
 12786          var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
 12787          return apply(fn, this, args);
 12788        }
 12789        return wrapper;
 12790      }
 12791  
 12792      /**
 12793       * Creates a `_.find` or `_.findLast` function.
 12794       *
 12795       * @private
 12796       * @param {Function} findIndexFunc The function to find the collection index.
 12797       * @returns {Function} Returns the new find function.
 12798       */
 12799      function createFind(findIndexFunc) {
 12800        return function(collection, predicate, fromIndex) {
 12801          var iterable = Object(collection);
 12802          if (!isArrayLike(collection)) {
 12803            var iteratee = getIteratee(predicate, 3);
 12804            collection = keys(collection);
 12805            predicate = function(key) { return iteratee(iterable[key], key, iterable); };
 12806          }
 12807          var index = findIndexFunc(collection, predicate, fromIndex);
 12808          return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
 12809        };
 12810      }
 12811  
 12812      /**
 12813       * Creates a `_.flow` or `_.flowRight` function.
 12814       *
 12815       * @private
 12816       * @param {boolean} [fromRight] Specify iterating from right to left.
 12817       * @returns {Function} Returns the new flow function.
 12818       */
 12819      function createFlow(fromRight) {
 12820        return flatRest(function(funcs) {
 12821          var length = funcs.length,
 12822              index = length,
 12823              prereq = LodashWrapper.prototype.thru;
 12824  
 12825          if (fromRight) {
 12826            funcs.reverse();
 12827          }
 12828          while (index--) {
 12829            var func = funcs[index];
 12830            if (typeof func != 'function') {
 12831              throw new TypeError(FUNC_ERROR_TEXT);
 12832            }
 12833            if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
 12834              var wrapper = new LodashWrapper([], true);
 12835            }
 12836          }
 12837          index = wrapper ? index : length;
 12838          while (++index < length) {
 12839            func = funcs[index];
 12840  
 12841            var funcName = getFuncName(func),
 12842                data = funcName == 'wrapper' ? getData(func) : undefined;
 12843  
 12844            if (data && isLaziable(data[0]) &&
 12845                  data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
 12846                  !data[4].length && data[9] == 1
 12847                ) {
 12848              wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
 12849            } else {
 12850              wrapper = (func.length == 1 && isLaziable(func))
 12851                ? wrapper[funcName]()
 12852                : wrapper.thru(func);
 12853            }
 12854          }
 12855          return function() {
 12856            var args = arguments,
 12857                value = args[0];
 12858  
 12859            if (wrapper && args.length == 1 && isArray(value)) {
 12860              return wrapper.plant(value).value();
 12861            }
 12862            var index = 0,
 12863                result = length ? funcs[index].apply(this, args) : value;
 12864  
 12865            while (++index < length) {
 12866              result = funcs[index].call(this, result);
 12867            }
 12868            return result;
 12869          };
 12870        });
 12871      }
 12872  
 12873      /**
 12874       * Creates a function that wraps `func` to invoke it with optional `this`
 12875       * binding of `thisArg`, partial application, and currying.
 12876       *
 12877       * @private
 12878       * @param {Function|string} func The function or method name to wrap.
 12879       * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
 12880       * @param {*} [thisArg] The `this` binding of `func`.
 12881       * @param {Array} [partials] The arguments to prepend to those provided to
 12882       *  the new function.
 12883       * @param {Array} [holders] The `partials` placeholder indexes.
 12884       * @param {Array} [partialsRight] The arguments to append to those provided
 12885       *  to the new function.
 12886       * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
 12887       * @param {Array} [argPos] The argument positions of the new function.
 12888       * @param {number} [ary] The arity cap of `func`.
 12889       * @param {number} [arity] The arity of `func`.
 12890       * @returns {Function} Returns the new wrapped function.
 12891       */
 12892      function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
 12893        var isAry = bitmask & WRAP_ARY_FLAG,
 12894            isBind = bitmask & WRAP_BIND_FLAG,
 12895            isBindKey = bitmask & WRAP_BIND_KEY_FLAG,
 12896            isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),
 12897            isFlip = bitmask & WRAP_FLIP_FLAG,
 12898            Ctor = isBindKey ? undefined : createCtor(func);
 12899  
 12900        function wrapper() {
 12901          var length = arguments.length,
 12902              args = Array(length),
 12903              index = length;
 12904  
 12905          while (index--) {
 12906            args[index] = arguments[index];
 12907          }
 12908          if (isCurried) {
 12909            var placeholder = getHolder(wrapper),
 12910                holdersCount = countHolders(args, placeholder);
 12911          }
 12912          if (partials) {
 12913            args = composeArgs(args, partials, holders, isCurried);
 12914          }
 12915          if (partialsRight) {
 12916            args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
 12917          }
 12918          length -= holdersCount;
 12919          if (isCurried && length < arity) {
 12920            var newHolders = replaceHolders(args, placeholder);
 12921            return createRecurry(
 12922              func, bitmask, createHybrid, wrapper.placeholder, thisArg,
 12923              args, newHolders, argPos, ary, arity - length
 12924            );
 12925          }
 12926          var thisBinding = isBind ? thisArg : this,
 12927              fn = isBindKey ? thisBinding[func] : func;
 12928  
 12929          length = args.length;
 12930          if (argPos) {
 12931            args = reorder(args, argPos);
 12932          } else if (isFlip && length > 1) {
 12933            args.reverse();
 12934          }
 12935          if (isAry && ary < length) {
 12936            args.length = ary;
 12937          }
 12938          if (this && this !== root && this instanceof wrapper) {
 12939            fn = Ctor || createCtor(fn);
 12940          }
 12941          return fn.apply(thisBinding, args);
 12942        }
 12943        return wrapper;
 12944      }
 12945  
 12946      /**
 12947       * Creates a function like `_.invertBy`.
 12948       *
 12949       * @private
 12950       * @param {Function} setter The function to set accumulator values.
 12951       * @param {Function} toIteratee The function to resolve iteratees.
 12952       * @returns {Function} Returns the new inverter function.
 12953       */
 12954      function createInverter(setter, toIteratee) {
 12955        return function(object, iteratee) {
 12956          return baseInverter(object, setter, toIteratee(iteratee), {});
 12957        };
 12958      }
 12959  
 12960      /**
 12961       * Creates a function that performs a mathematical operation on two values.
 12962       *
 12963       * @private
 12964       * @param {Function} operator The function to perform the operation.
 12965       * @param {number} [defaultValue] The value used for `undefined` arguments.
 12966       * @returns {Function} Returns the new mathematical operation function.
 12967       */
 12968      function createMathOperation(operator, defaultValue) {
 12969        return function(value, other) {
 12970          var result;
 12971          if (value === undefined && other === undefined) {
 12972            return defaultValue;
 12973          }
 12974          if (value !== undefined) {
 12975            result = value;
 12976          }
 12977          if (other !== undefined) {
 12978            if (result === undefined) {
 12979              return other;
 12980            }
 12981            if (typeof value == 'string' || typeof other == 'string') {
 12982              value = baseToString(value);
 12983              other = baseToString(other);
 12984            } else {
 12985              value = baseToNumber(value);
 12986              other = baseToNumber(other);
 12987            }
 12988            result = operator(value, other);
 12989          }
 12990          return result;
 12991        };
 12992      }
 12993  
 12994      /**
 12995       * Creates a function like `_.over`.
 12996       *
 12997       * @private
 12998       * @param {Function} arrayFunc The function to iterate over iteratees.
 12999       * @returns {Function} Returns the new over function.
 13000       */
 13001      function createOver(arrayFunc) {
 13002        return flatRest(function(iteratees) {
 13003          iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
 13004          return baseRest(function(args) {
 13005            var thisArg = this;
 13006            return arrayFunc(iteratees, function(iteratee) {
 13007              return apply(iteratee, thisArg, args);
 13008            });
 13009          });
 13010        });
 13011      }
 13012  
 13013      /**
 13014       * Creates the padding for `string` based on `length`. The `chars` string
 13015       * is truncated if the number of characters exceeds `length`.
 13016       *
 13017       * @private
 13018       * @param {number} length The padding length.
 13019       * @param {string} [chars=' '] The string used as padding.
 13020       * @returns {string} Returns the padding for `string`.
 13021       */
 13022      function createPadding(length, chars) {
 13023        chars = chars === undefined ? ' ' : baseToString(chars);
 13024  
 13025        var charsLength = chars.length;
 13026        if (charsLength < 2) {
 13027          return charsLength ? baseRepeat(chars, length) : chars;
 13028        }
 13029        var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
 13030        return hasUnicode(chars)
 13031          ? castSlice(stringToArray(result), 0, length).join('')
 13032          : result.slice(0, length);
 13033      }
 13034  
 13035      /**
 13036       * Creates a function that wraps `func` to invoke it with the `this` binding
 13037       * of `thisArg` and `partials` prepended to the arguments it receives.
 13038       *
 13039       * @private
 13040       * @param {Function} func The function to wrap.
 13041       * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
 13042       * @param {*} thisArg The `this` binding of `func`.
 13043       * @param {Array} partials The arguments to prepend to those provided to
 13044       *  the new function.
 13045       * @returns {Function} Returns the new wrapped function.
 13046       */
 13047      function createPartial(func, bitmask, thisArg, partials) {
 13048        var isBind = bitmask & WRAP_BIND_FLAG,
 13049            Ctor = createCtor(func);
 13050  
 13051        function wrapper() {
 13052          var argsIndex = -1,
 13053              argsLength = arguments.length,
 13054              leftIndex = -1,
 13055              leftLength = partials.length,
 13056              args = Array(leftLength + argsLength),
 13057              fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
 13058  
 13059          while (++leftIndex < leftLength) {
 13060            args[leftIndex] = partials[leftIndex];
 13061          }
 13062          while (argsLength--) {
 13063            args[leftIndex++] = arguments[++argsIndex];
 13064          }
 13065          return apply(fn, isBind ? thisArg : this, args);
 13066        }
 13067        return wrapper;
 13068      }
 13069  
 13070      /**
 13071       * Creates a `_.range` or `_.rangeRight` function.
 13072       *
 13073       * @private
 13074       * @param {boolean} [fromRight] Specify iterating from right to left.
 13075       * @returns {Function} Returns the new range function.
 13076       */
 13077      function createRange(fromRight) {
 13078        return function(start, end, step) {
 13079          if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {
 13080            end = step = undefined;
 13081          }
 13082          // Ensure the sign of `-0` is preserved.
 13083          start = toFinite(start);
 13084          if (end === undefined) {
 13085            end = start;
 13086            start = 0;
 13087          } else {
 13088            end = toFinite(end);
 13089          }
 13090          step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);
 13091          return baseRange(start, end, step, fromRight);
 13092        };
 13093      }
 13094  
 13095      /**
 13096       * Creates a function that performs a relational operation on two values.
 13097       *
 13098       * @private
 13099       * @param {Function} operator The function to perform the operation.
 13100       * @returns {Function} Returns the new relational operation function.
 13101       */
 13102      function createRelationalOperation(operator) {
 13103        return function(value, other) {
 13104          if (!(typeof value == 'string' && typeof other == 'string')) {
 13105            value = toNumber(value);
 13106            other = toNumber(other);
 13107          }
 13108          return operator(value, other);
 13109        };
 13110      }
 13111  
 13112      /**
 13113       * Creates a function that wraps `func` to continue currying.
 13114       *
 13115       * @private
 13116       * @param {Function} func The function to wrap.
 13117       * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
 13118       * @param {Function} wrapFunc The function to create the `func` wrapper.
 13119       * @param {*} placeholder The placeholder value.
 13120       * @param {*} [thisArg] The `this` binding of `func`.
 13121       * @param {Array} [partials] The arguments to prepend to those provided to
 13122       *  the new function.
 13123       * @param {Array} [holders] The `partials` placeholder indexes.
 13124       * @param {Array} [argPos] The argument positions of the new function.
 13125       * @param {number} [ary] The arity cap of `func`.
 13126       * @param {number} [arity] The arity of `func`.
 13127       * @returns {Function} Returns the new wrapped function.
 13128       */
 13129      function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
 13130        var isCurry = bitmask & WRAP_CURRY_FLAG,
 13131            newHolders = isCurry ? holders : undefined,
 13132            newHoldersRight = isCurry ? undefined : holders,
 13133            newPartials = isCurry ? partials : undefined,
 13134            newPartialsRight = isCurry ? undefined : partials;
 13135  
 13136        bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);
 13137        bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
 13138  
 13139        if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
 13140          bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
 13141        }
 13142        var newData = [
 13143          func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,
 13144          newHoldersRight, argPos, ary, arity
 13145        ];
 13146  
 13147        var result = wrapFunc.apply(undefined, newData);
 13148        if (isLaziable(func)) {
 13149          setData(result, newData);
 13150        }
 13151        result.placeholder = placeholder;
 13152        return setWrapToString(result, func, bitmask);
 13153      }
 13154  
 13155      /**
 13156       * Creates a function like `_.round`.
 13157       *
 13158       * @private
 13159       * @param {string} methodName The name of the `Math` method to use when rounding.
 13160       * @returns {Function} Returns the new round function.
 13161       */
 13162      function createRound(methodName) {
 13163        var func = Math[methodName];
 13164        return function(number, precision) {
 13165          number = toNumber(number);
 13166          precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
 13167          if (precision) {
 13168            // Shift with exponential notation to avoid floating-point issues.
 13169            // See [MDN](https://mdn.io/round#Examples) for more details.
 13170            var pair = (toString(number) + 'e').split('e'),
 13171                value = func(pair[0] + 'e' + (+pair[1] + precision));
 13172  
 13173            pair = (toString(value) + 'e').split('e');
 13174            return +(pair[0] + 'e' + (+pair[1] - precision));
 13175          }
 13176          return func(number);
 13177        };
 13178      }
 13179  
 13180      /**
 13181       * Creates a set object of `values`.
 13182       *
 13183       * @private
 13184       * @param {Array} values The values to add to the set.
 13185       * @returns {Object} Returns the new set.
 13186       */
 13187      var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
 13188        return new Set(values);
 13189      };
 13190  
 13191      /**
 13192       * Creates a `_.toPairs` or `_.toPairsIn` function.
 13193       *
 13194       * @private
 13195       * @param {Function} keysFunc The function to get the keys of a given object.
 13196       * @returns {Function} Returns the new pairs function.
 13197       */
 13198      function createToPairs(keysFunc) {
 13199        return function(object) {
 13200          var tag = getTag(object);
 13201          if (tag == mapTag) {
 13202            return mapToArray(object);
 13203          }
 13204          if (tag == setTag) {
 13205            return setToPairs(object);
 13206          }
 13207          return baseToPairs(object, keysFunc(object));
 13208        };
 13209      }
 13210  
 13211      /**
 13212       * Creates a function that either curries or invokes `func` with optional
 13213       * `this` binding and partially applied arguments.
 13214       *
 13215       * @private
 13216       * @param {Function|string} func The function or method name to wrap.
 13217       * @param {number} bitmask The bitmask flags.
 13218       *    1 - `_.bind`
 13219       *    2 - `_.bindKey`
 13220       *    4 - `_.curry` or `_.curryRight` of a bound function
 13221       *    8 - `_.curry`
 13222       *   16 - `_.curryRight`
 13223       *   32 - `_.partial`
 13224       *   64 - `_.partialRight`
 13225       *  128 - `_.rearg`
 13226       *  256 - `_.ary`
 13227       *  512 - `_.flip`
 13228       * @param {*} [thisArg] The `this` binding of `func`.
 13229       * @param {Array} [partials] The arguments to be partially applied.
 13230       * @param {Array} [holders] The `partials` placeholder indexes.
 13231       * @param {Array} [argPos] The argument positions of the new function.
 13232       * @param {number} [ary] The arity cap of `func`.
 13233       * @param {number} [arity] The arity of `func`.
 13234       * @returns {Function} Returns the new wrapped function.
 13235       */
 13236      function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
 13237        var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
 13238        if (!isBindKey && typeof func != 'function') {
 13239          throw new TypeError(FUNC_ERROR_TEXT);
 13240        }
 13241        var length = partials ? partials.length : 0;
 13242        if (!length) {
 13243          bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
 13244          partials = holders = undefined;
 13245        }
 13246        ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);
 13247        arity = arity === undefined ? arity : toInteger(arity);
 13248        length -= holders ? holders.length : 0;
 13249  
 13250        if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
 13251          var partialsRight = partials,
 13252              holdersRight = holders;
 13253  
 13254          partials = holders = undefined;
 13255        }
 13256        var data = isBindKey ? undefined : getData(func);
 13257  
 13258        var newData = [
 13259          func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,
 13260          argPos, ary, arity
 13261        ];
 13262  
 13263        if (data) {
 13264          mergeData(newData, data);
 13265        }
 13266        func = newData[0];
 13267        bitmask = newData[1];
 13268        thisArg = newData[2];
 13269        partials = newData[3];
 13270        holders = newData[4];
 13271        arity = newData[9] = newData[9] === undefined
 13272          ? (isBindKey ? 0 : func.length)
 13273          : nativeMax(newData[9] - length, 0);
 13274  
 13275        if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
 13276          bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
 13277        }
 13278        if (!bitmask || bitmask == WRAP_BIND_FLAG) {
 13279          var result = createBind(func, bitmask, thisArg);
 13280        } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
 13281          result = createCurry(func, bitmask, arity);
 13282        } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
 13283          result = createPartial(func, bitmask, thisArg, partials);
 13284        } else {
 13285          result = createHybrid.apply(undefined, newData);
 13286        }
 13287        var setter = data ? baseSetData : setData;
 13288        return setWrapToString(setter(result, newData), func, bitmask);
 13289      }
 13290  
 13291      /**
 13292       * Used by `_.defaults` to customize its `_.assignIn` use to assign properties
 13293       * of source objects to the destination object for all destination properties
 13294       * that resolve to `undefined`.
 13295       *
 13296       * @private
 13297       * @param {*} objValue The destination value.
 13298       * @param {*} srcValue The source value.
 13299       * @param {string} key The key of the property to assign.
 13300       * @param {Object} object The parent object of `objValue`.
 13301       * @returns {*} Returns the value to assign.
 13302       */
 13303      function customDefaultsAssignIn(objValue, srcValue, key, object) {
 13304        if (objValue === undefined ||
 13305            (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
 13306          return srcValue;
 13307        }
 13308        return objValue;
 13309      }
 13310  
 13311      /**
 13312       * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source
 13313       * objects into destination objects that are passed thru.
 13314       *
 13315       * @private
 13316       * @param {*} objValue The destination value.
 13317       * @param {*} srcValue The source value.
 13318       * @param {string} key The key of the property to merge.
 13319       * @param {Object} object The parent object of `objValue`.
 13320       * @param {Object} source The parent object of `srcValue`.
 13321       * @param {Object} [stack] Tracks traversed source values and their merged
 13322       *  counterparts.
 13323       * @returns {*} Returns the value to assign.
 13324       */
 13325      function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
 13326        if (isObject(objValue) && isObject(srcValue)) {
 13327          // Recursively merge objects and arrays (susceptible to call stack limits).
 13328          stack.set(srcValue, objValue);
 13329          baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
 13330          stack['delete'](srcValue);
 13331        }
 13332        return objValue;
 13333      }
 13334  
 13335      /**
 13336       * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain
 13337       * objects.
 13338       *
 13339       * @private
 13340       * @param {*} value The value to inspect.
 13341       * @param {string} key The key of the property to inspect.
 13342       * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
 13343       */
 13344      function customOmitClone(value) {
 13345        return isPlainObject(value) ? undefined : value;
 13346      }
 13347  
 13348      /**
 13349       * A specialized version of `baseIsEqualDeep` for arrays with support for
 13350       * partial deep comparisons.
 13351       *
 13352       * @private
 13353       * @param {Array} array The array to compare.
 13354       * @param {Array} other The other array to compare.
 13355       * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 13356       * @param {Function} customizer The function to customize comparisons.
 13357       * @param {Function} equalFunc The function to determine equivalents of values.
 13358       * @param {Object} stack Tracks traversed `array` and `other` objects.
 13359       * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
 13360       */
 13361      function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
 13362        var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
 13363            arrLength = array.length,
 13364            othLength = other.length;
 13365  
 13366        if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
 13367          return false;
 13368        }
 13369        // Assume cyclic values are equal.
 13370        var stacked = stack.get(array);
 13371        if (stacked && stack.get(other)) {
 13372          return stacked == other;
 13373        }
 13374        var index = -1,
 13375            result = true,
 13376            seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
 13377  
 13378        stack.set(array, other);
 13379        stack.set(other, array);
 13380  
 13381        // Ignore non-index properties.
 13382        while (++index < arrLength) {
 13383          var arrValue = array[index],
 13384              othValue = other[index];
 13385  
 13386          if (customizer) {
 13387            var compared = isPartial
 13388              ? customizer(othValue, arrValue, index, other, array, stack)
 13389              : customizer(arrValue, othValue, index, array, other, stack);
 13390          }
 13391          if (compared !== undefined) {
 13392            if (compared) {
 13393              continue;
 13394            }
 13395            result = false;
 13396            break;
 13397          }
 13398          // Recursively compare arrays (susceptible to call stack limits).
 13399          if (seen) {
 13400            if (!arraySome(other, function(othValue, othIndex) {
 13401                  if (!cacheHas(seen, othIndex) &&
 13402                      (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
 13403                    return seen.push(othIndex);
 13404                  }
 13405                })) {
 13406              result = false;
 13407              break;
 13408            }
 13409          } else if (!(
 13410                arrValue === othValue ||
 13411                  equalFunc(arrValue, othValue, bitmask, customizer, stack)
 13412              )) {
 13413            result = false;
 13414            break;
 13415          }
 13416        }
 13417        stack['delete'](array);
 13418        stack['delete'](other);
 13419        return result;
 13420      }
 13421  
 13422      /**
 13423       * A specialized version of `baseIsEqualDeep` for comparing objects of
 13424       * the same `toStringTag`.
 13425       *
 13426       * **Note:** This function only supports comparing values with tags of
 13427       * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
 13428       *
 13429       * @private
 13430       * @param {Object} object The object to compare.
 13431       * @param {Object} other The other object to compare.
 13432       * @param {string} tag The `toStringTag` of the objects to compare.
 13433       * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 13434       * @param {Function} customizer The function to customize comparisons.
 13435       * @param {Function} equalFunc The function to determine equivalents of values.
 13436       * @param {Object} stack Tracks traversed `object` and `other` objects.
 13437       * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 13438       */
 13439      function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
 13440        switch (tag) {
 13441          case dataViewTag:
 13442            if ((object.byteLength != other.byteLength) ||
 13443                (object.byteOffset != other.byteOffset)) {
 13444              return false;
 13445            }
 13446            object = object.buffer;
 13447            other = other.buffer;
 13448  
 13449          case arrayBufferTag:
 13450            if ((object.byteLength != other.byteLength) ||
 13451                !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
 13452              return false;
 13453            }
 13454            return true;
 13455  
 13456          case boolTag:
 13457          case dateTag:
 13458          case numberTag:
 13459            // Coerce booleans to `1` or `0` and dates to milliseconds.
 13460            // Invalid dates are coerced to `NaN`.
 13461            return eq(+object, +other);
 13462  
 13463          case errorTag:
 13464            return object.name == other.name && object.message == other.message;
 13465  
 13466          case regexpTag:
 13467          case stringTag:
 13468            // Coerce regexes to strings and treat strings, primitives and objects,
 13469            // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
 13470            // for more details.
 13471            return object == (other + '');
 13472  
 13473          case mapTag:
 13474            var convert = mapToArray;
 13475  
 13476          case setTag:
 13477            var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
 13478            convert || (convert = setToArray);
 13479  
 13480            if (object.size != other.size && !isPartial) {
 13481              return false;
 13482            }
 13483            // Assume cyclic values are equal.
 13484            var stacked = stack.get(object);
 13485            if (stacked) {
 13486              return stacked == other;
 13487            }
 13488            bitmask |= COMPARE_UNORDERED_FLAG;
 13489  
 13490            // Recursively compare objects (susceptible to call stack limits).
 13491            stack.set(object, other);
 13492            var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
 13493            stack['delete'](object);
 13494            return result;
 13495  
 13496          case symbolTag:
 13497            if (symbolValueOf) {
 13498              return symbolValueOf.call(object) == symbolValueOf.call(other);
 13499            }
 13500        }
 13501        return false;
 13502      }
 13503  
 13504      /**
 13505       * A specialized version of `baseIsEqualDeep` for objects with support for
 13506       * partial deep comparisons.
 13507       *
 13508       * @private
 13509       * @param {Object} object The object to compare.
 13510       * @param {Object} other The other object to compare.
 13511       * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 13512       * @param {Function} customizer The function to customize comparisons.
 13513       * @param {Function} equalFunc The function to determine equivalents of values.
 13514       * @param {Object} stack Tracks traversed `object` and `other` objects.
 13515       * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 13516       */
 13517      function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
 13518        var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
 13519            objProps = getAllKeys(object),
 13520            objLength = objProps.length,
 13521            othProps = getAllKeys(other),
 13522            othLength = othProps.length;
 13523  
 13524        if (objLength != othLength && !isPartial) {
 13525          return false;
 13526        }
 13527        var index = objLength;
 13528        while (index--) {
 13529          var key = objProps[index];
 13530          if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
 13531            return false;
 13532          }
 13533        }
 13534        // Assume cyclic values are equal.
 13535        var stacked = stack.get(object);
 13536        if (stacked && stack.get(other)) {
 13537          return stacked == other;
 13538        }
 13539        var result = true;
 13540        stack.set(object, other);
 13541        stack.set(other, object);
 13542  
 13543        var skipCtor = isPartial;
 13544        while (++index < objLength) {
 13545          key = objProps[index];
 13546          var objValue = object[key],
 13547              othValue = other[key];
 13548  
 13549          if (customizer) {
 13550            var compared = isPartial
 13551              ? customizer(othValue, objValue, key, other, object, stack)
 13552              : customizer(objValue, othValue, key, object, other, stack);
 13553          }
 13554          // Recursively compare objects (susceptible to call stack limits).
 13555          if (!(compared === undefined
 13556                ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
 13557                : compared
 13558              )) {
 13559            result = false;
 13560            break;
 13561          }
 13562          skipCtor || (skipCtor = key == 'constructor');
 13563        }
 13564        if (result && !skipCtor) {
 13565          var objCtor = object.constructor,
 13566              othCtor = other.constructor;
 13567  
 13568          // Non `Object` object instances with different constructors are not equal.
 13569          if (objCtor != othCtor &&
 13570              ('constructor' in object && 'constructor' in other) &&
 13571              !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
 13572                typeof othCtor == 'function' && othCtor instanceof othCtor)) {
 13573            result = false;
 13574          }
 13575        }
 13576        stack['delete'](object);
 13577        stack['delete'](other);
 13578        return result;
 13579      }
 13580  
 13581      /**
 13582       * A specialized version of `baseRest` which flattens the rest array.
 13583       *
 13584       * @private
 13585       * @param {Function} func The function to apply a rest parameter to.
 13586       * @returns {Function} Returns the new function.
 13587       */
 13588      function flatRest(func) {
 13589        return setToString(overRest(func, undefined, flatten), func + '');
 13590      }
 13591  
 13592      /**
 13593       * Creates an array of own enumerable property names and symbols of `object`.
 13594       *
 13595       * @private
 13596       * @param {Object} object The object to query.
 13597       * @returns {Array} Returns the array of property names and symbols.
 13598       */
 13599      function getAllKeys(object) {
 13600        return baseGetAllKeys(object, keys, getSymbols);
 13601      }
 13602  
 13603      /**
 13604       * Creates an array of own and inherited enumerable property names and
 13605       * symbols of `object`.
 13606       *
 13607       * @private
 13608       * @param {Object} object The object to query.
 13609       * @returns {Array} Returns the array of property names and symbols.
 13610       */
 13611      function getAllKeysIn(object) {
 13612        return baseGetAllKeys(object, keysIn, getSymbolsIn);
 13613      }
 13614  
 13615      /**
 13616       * Gets metadata for `func`.
 13617       *
 13618       * @private
 13619       * @param {Function} func The function to query.
 13620       * @returns {*} Returns the metadata for `func`.
 13621       */
 13622      var getData = !metaMap ? noop : function(func) {
 13623        return metaMap.get(func);
 13624      };
 13625  
 13626      /**
 13627       * Gets the name of `func`.
 13628       *
 13629       * @private
 13630       * @param {Function} func The function to query.
 13631       * @returns {string} Returns the function name.
 13632       */
 13633      function getFuncName(func) {
 13634        var result = (func.name + ''),
 13635            array = realNames[result],
 13636            length = hasOwnProperty.call(realNames, result) ? array.length : 0;
 13637  
 13638        while (length--) {
 13639          var data = array[length],
 13640              otherFunc = data.func;
 13641          if (otherFunc == null || otherFunc == func) {
 13642            return data.name;
 13643          }
 13644        }
 13645        return result;
 13646      }
 13647  
 13648      /**
 13649       * Gets the argument placeholder value for `func`.
 13650       *
 13651       * @private
 13652       * @param {Function} func The function to inspect.
 13653       * @returns {*} Returns the placeholder value.
 13654       */
 13655      function getHolder(func) {
 13656        var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;
 13657        return object.placeholder;
 13658      }
 13659  
 13660      /**
 13661       * Gets the appropriate "iteratee" function. If `_.iteratee` is customized,
 13662       * this function returns the custom method, otherwise it returns `baseIteratee`.
 13663       * If arguments are provided, the chosen function is invoked with them and
 13664       * its result is returned.
 13665       *
 13666       * @private
 13667       * @param {*} [value] The value to convert to an iteratee.
 13668       * @param {number} [arity] The arity of the created iteratee.
 13669       * @returns {Function} Returns the chosen function or its result.
 13670       */
 13671      function getIteratee() {
 13672        var result = lodash.iteratee || iteratee;
 13673        result = result === iteratee ? baseIteratee : result;
 13674        return arguments.length ? result(arguments[0], arguments[1]) : result;
 13675      }
 13676  
 13677      /**
 13678       * Gets the data for `map`.
 13679       *
 13680       * @private
 13681       * @param {Object} map The map to query.
 13682       * @param {string} key The reference key.
 13683       * @returns {*} Returns the map data.
 13684       */
 13685      function getMapData(map, key) {
 13686        var data = map.__data__;
 13687        return isKeyable(key)
 13688          ? data[typeof key == 'string' ? 'string' : 'hash']
 13689          : data.map;
 13690      }
 13691  
 13692      /**
 13693       * Gets the property names, values, and compare flags of `object`.
 13694       *
 13695       * @private
 13696       * @param {Object} object The object to query.
 13697       * @returns {Array} Returns the match data of `object`.
 13698       */
 13699      function getMatchData(object) {
 13700        var result = keys(object),
 13701            length = result.length;
 13702  
 13703        while (length--) {
 13704          var key = result[length],
 13705              value = object[key];
 13706  
 13707          result[length] = [key, value, isStrictComparable(value)];
 13708        }
 13709        return result;
 13710      }
 13711  
 13712      /**
 13713       * Gets the native function at `key` of `object`.
 13714       *
 13715       * @private
 13716       * @param {Object} object The object to query.
 13717       * @param {string} key The key of the method to get.
 13718       * @returns {*} Returns the function if it's native, else `undefined`.
 13719       */
 13720      function getNative(object, key) {
 13721        var value = getValue(object, key);
 13722        return baseIsNative(value) ? value : undefined;
 13723      }
 13724  
 13725      /**
 13726       * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
 13727       *
 13728       * @private
 13729       * @param {*} value The value to query.
 13730       * @returns {string} Returns the raw `toStringTag`.
 13731       */
 13732      function getRawTag(value) {
 13733        var isOwn = hasOwnProperty.call(value, symToStringTag),
 13734            tag = value[symToStringTag];
 13735  
 13736        try {
 13737          value[symToStringTag] = undefined;
 13738          var unmasked = true;
 13739        } catch (e) {}
 13740  
 13741        var result = nativeObjectToString.call(value);
 13742        if (unmasked) {
 13743          if (isOwn) {
 13744            value[symToStringTag] = tag;
 13745          } else {
 13746            delete value[symToStringTag];
 13747          }
 13748        }
 13749        return result;
 13750      }
 13751  
 13752      /**
 13753       * Creates an array of the own enumerable symbols of `object`.
 13754       *
 13755       * @private
 13756       * @param {Object} object The object to query.
 13757       * @returns {Array} Returns the array of symbols.
 13758       */
 13759      var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
 13760        if (object == null) {
 13761          return [];
 13762        }
 13763        object = Object(object);
 13764        return arrayFilter(nativeGetSymbols(object), function(symbol) {
 13765          return propertyIsEnumerable.call(object, symbol);
 13766        });
 13767      };
 13768  
 13769      /**
 13770       * Creates an array of the own and inherited enumerable symbols of `object`.
 13771       *
 13772       * @private
 13773       * @param {Object} object The object to query.
 13774       * @returns {Array} Returns the array of symbols.
 13775       */
 13776      var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
 13777        var result = [];
 13778        while (object) {
 13779          arrayPush(result, getSymbols(object));
 13780          object = getPrototype(object);
 13781        }
 13782        return result;
 13783      };
 13784  
 13785      /**
 13786       * Gets the `toStringTag` of `value`.
 13787       *
 13788       * @private
 13789       * @param {*} value The value to query.
 13790       * @returns {string} Returns the `toStringTag`.
 13791       */
 13792      var getTag = baseGetTag;
 13793  
 13794      // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
 13795      if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
 13796          (Map && getTag(new Map) != mapTag) ||
 13797          (Promise && getTag(Promise.resolve()) != promiseTag) ||
 13798          (Set && getTag(new Set) != setTag) ||
 13799          (WeakMap && getTag(new WeakMap) != weakMapTag)) {
 13800        getTag = function(value) {
 13801          var result = baseGetTag(value),
 13802              Ctor = result == objectTag ? value.constructor : undefined,
 13803              ctorString = Ctor ? toSource(Ctor) : '';
 13804  
 13805          if (ctorString) {
 13806            switch (ctorString) {
 13807              case dataViewCtorString: return dataViewTag;
 13808              case mapCtorString: return mapTag;
 13809              case promiseCtorString: return promiseTag;
 13810              case setCtorString: return setTag;
 13811              case weakMapCtorString: return weakMapTag;
 13812            }
 13813          }
 13814          return result;
 13815        };
 13816      }
 13817  
 13818      /**
 13819       * Gets the view, applying any `transforms` to the `start` and `end` positions.
 13820       *
 13821       * @private
 13822       * @param {number} start The start of the view.
 13823       * @param {number} end The end of the view.
 13824       * @param {Array} transforms The transformations to apply to the view.
 13825       * @returns {Object} Returns an object containing the `start` and `end`
 13826       *  positions of the view.
 13827       */
 13828      function getView(start, end, transforms) {
 13829        var index = -1,
 13830            length = transforms.length;
 13831  
 13832        while (++index < length) {
 13833          var data = transforms[index],
 13834              size = data.size;
 13835  
 13836          switch (data.type) {
 13837            case 'drop':      start += size; break;
 13838            case 'dropRight': end -= size; break;
 13839            case 'take':      end = nativeMin(end, start + size); break;
 13840            case 'takeRight': start = nativeMax(start, end - size); break;
 13841          }
 13842        }
 13843        return { 'start': start, 'end': end };
 13844      }
 13845  
 13846      /**
 13847       * Extracts wrapper details from the `source` body comment.
 13848       *
 13849       * @private
 13850       * @param {string} source The source to inspect.
 13851       * @returns {Array} Returns the wrapper details.
 13852       */
 13853      function getWrapDetails(source) {
 13854        var match = source.match(reWrapDetails);
 13855        return match ? match[1].split(reSplitDetails) : [];
 13856      }
 13857  
 13858      /**
 13859       * Checks if `path` exists on `object`.
 13860       *
 13861       * @private
 13862       * @param {Object} object The object to query.
 13863       * @param {Array|string} path The path to check.
 13864       * @param {Function} hasFunc The function to check properties.
 13865       * @returns {boolean} Returns `true` if `path` exists, else `false`.
 13866       */
 13867      function hasPath(object, path, hasFunc) {
 13868        path = castPath(path, object);
 13869  
 13870        var index = -1,
 13871            length = path.length,
 13872            result = false;
 13873  
 13874        while (++index < length) {
 13875          var key = toKey(path[index]);
 13876          if (!(result = object != null && hasFunc(object, key))) {
 13877            break;
 13878          }
 13879          object = object[key];
 13880        }
 13881        if (result || ++index != length) {
 13882          return result;
 13883        }
 13884        length = object == null ? 0 : object.length;
 13885        return !!length && isLength(length) && isIndex(key, length) &&
 13886          (isArray(object) || isArguments(object));
 13887      }
 13888  
 13889      /**
 13890       * Initializes an array clone.
 13891       *
 13892       * @private
 13893       * @param {Array} array The array to clone.
 13894       * @returns {Array} Returns the initialized clone.
 13895       */
 13896      function initCloneArray(array) {
 13897        var length = array.length,
 13898            result = new array.constructor(length);
 13899  
 13900        // Add properties assigned by `RegExp#exec`.
 13901        if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
 13902          result.index = array.index;
 13903          result.input = array.input;
 13904        }
 13905        return result;
 13906      }
 13907  
 13908      /**
 13909       * Initializes an object clone.
 13910       *
 13911       * @private
 13912       * @param {Object} object The object to clone.
 13913       * @returns {Object} Returns the initialized clone.
 13914       */
 13915      function initCloneObject(object) {
 13916        return (typeof object.constructor == 'function' && !isPrototype(object))
 13917          ? baseCreate(getPrototype(object))
 13918          : {};
 13919      }
 13920  
 13921      /**
 13922       * Initializes an object clone based on its `toStringTag`.
 13923       *
 13924       * **Note:** This function only supports cloning values with tags of
 13925       * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
 13926       *
 13927       * @private
 13928       * @param {Object} object The object to clone.
 13929       * @param {string} tag The `toStringTag` of the object to clone.
 13930       * @param {boolean} [isDeep] Specify a deep clone.
 13931       * @returns {Object} Returns the initialized clone.
 13932       */
 13933      function initCloneByTag(object, tag, isDeep) {
 13934        var Ctor = object.constructor;
 13935        switch (tag) {
 13936          case arrayBufferTag:
 13937            return cloneArrayBuffer(object);
 13938  
 13939          case boolTag:
 13940          case dateTag:
 13941            return new Ctor(+object);
 13942  
 13943          case dataViewTag:
 13944            return cloneDataView(object, isDeep);
 13945  
 13946          case float32Tag: case float64Tag:
 13947          case int8Tag: case int16Tag: case int32Tag:
 13948          case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
 13949            return cloneTypedArray(object, isDeep);
 13950  
 13951          case mapTag:
 13952            return new Ctor;
 13953  
 13954          case numberTag:
 13955          case stringTag:
 13956            return new Ctor(object);
 13957  
 13958          case regexpTag:
 13959            return cloneRegExp(object);
 13960  
 13961          case setTag:
 13962            return new Ctor;
 13963  
 13964          case symbolTag:
 13965            return cloneSymbol(object);
 13966        }
 13967      }
 13968  
 13969      /**
 13970       * Inserts wrapper `details` in a comment at the top of the `source` body.
 13971       *
 13972       * @private
 13973       * @param {string} source The source to modify.
 13974       * @returns {Array} details The details to insert.
 13975       * @returns {string} Returns the modified source.
 13976       */
 13977      function insertWrapDetails(source, details) {
 13978        var length = details.length;
 13979        if (!length) {
 13980          return source;
 13981        }
 13982        var lastIndex = length - 1;
 13983        details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];
 13984        details = details.join(length > 2 ? ', ' : ' ');
 13985        return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n');
 13986      }
 13987  
 13988      /**
 13989       * Checks if `value` is a flattenable `arguments` object or array.
 13990       *
 13991       * @private
 13992       * @param {*} value The value to check.
 13993       * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
 13994       */
 13995      function isFlattenable(value) {
 13996        return isArray(value) || isArguments(value) ||
 13997          !!(spreadableSymbol && value && value[spreadableSymbol]);
 13998      }
 13999  
 14000      /**
 14001       * Checks if `value` is a valid array-like index.
 14002       *
 14003       * @private
 14004       * @param {*} value The value to check.
 14005       * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
 14006       * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
 14007       */
 14008      function isIndex(value, length) {
 14009        var type = typeof value;
 14010        length = length == null ? MAX_SAFE_INTEGER : length;
 14011  
 14012        return !!length &&
 14013          (type == 'number' ||
 14014            (type != 'symbol' && reIsUint.test(value))) &&
 14015              (value > -1 && value % 1 == 0 && value < length);
 14016      }
 14017  
 14018      /**
 14019       * Checks if the given arguments are from an iteratee call.
 14020       *
 14021       * @private
 14022       * @param {*} value The potential iteratee value argument.
 14023       * @param {*} index The potential iteratee index or key argument.
 14024       * @param {*} object The potential iteratee object argument.
 14025       * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
 14026       *  else `false`.
 14027       */
 14028      function isIterateeCall(value, index, object) {
 14029        if (!isObject(object)) {
 14030          return false;
 14031        }
 14032        var type = typeof index;
 14033        if (type == 'number'
 14034              ? (isArrayLike(object) && isIndex(index, object.length))
 14035              : (type == 'string' && index in object)
 14036            ) {
 14037          return eq(object[index], value);
 14038        }
 14039        return false;
 14040      }
 14041  
 14042      /**
 14043       * Checks if `value` is a property name and not a property path.
 14044       *
 14045       * @private
 14046       * @param {*} value The value to check.
 14047       * @param {Object} [object] The object to query keys on.
 14048       * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
 14049       */
 14050      function isKey(value, object) {
 14051        if (isArray(value)) {
 14052          return false;
 14053        }
 14054        var type = typeof value;
 14055        if (type == 'number' || type == 'symbol' || type == 'boolean' ||
 14056            value == null || isSymbol(value)) {
 14057          return true;
 14058        }
 14059        return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
 14060          (object != null && value in Object(object));
 14061      }
 14062  
 14063      /**
 14064       * Checks if `value` is suitable for use as unique object key.
 14065       *
 14066       * @private
 14067       * @param {*} value The value to check.
 14068       * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
 14069       */
 14070      function isKeyable(value) {
 14071        var type = typeof value;
 14072        return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
 14073          ? (value !== '__proto__')
 14074          : (value === null);
 14075      }
 14076  
 14077      /**
 14078       * Checks if `func` has a lazy counterpart.
 14079       *
 14080       * @private
 14081       * @param {Function} func The function to check.
 14082       * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
 14083       *  else `false`.
 14084       */
 14085      function isLaziable(func) {
 14086        var funcName = getFuncName(func),
 14087            other = lodash[funcName];
 14088  
 14089        if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
 14090          return false;
 14091        }
 14092        if (func === other) {
 14093          return true;
 14094        }
 14095        var data = getData(other);
 14096        return !!data && func === data[0];
 14097      }
 14098  
 14099      /**
 14100       * Checks if `func` has its source masked.
 14101       *
 14102       * @private
 14103       * @param {Function} func The function to check.
 14104       * @returns {boolean} Returns `true` if `func` is masked, else `false`.
 14105       */
 14106      function isMasked(func) {
 14107        return !!maskSrcKey && (maskSrcKey in func);
 14108      }
 14109  
 14110      /**
 14111       * Checks if `func` is capable of being masked.
 14112       *
 14113       * @private
 14114       * @param {*} value The value to check.
 14115       * @returns {boolean} Returns `true` if `func` is maskable, else `false`.
 14116       */
 14117      var isMaskable = coreJsData ? isFunction : stubFalse;
 14118  
 14119      /**
 14120       * Checks if `value` is likely a prototype object.
 14121       *
 14122       * @private
 14123       * @param {*} value The value to check.
 14124       * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
 14125       */
 14126      function isPrototype(value) {
 14127        var Ctor = value && value.constructor,
 14128            proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
 14129  
 14130        return value === proto;
 14131      }
 14132  
 14133      /**
 14134       * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
 14135       *
 14136       * @private
 14137       * @param {*} value The value to check.
 14138       * @returns {boolean} Returns `true` if `value` if suitable for strict
 14139       *  equality comparisons, else `false`.
 14140       */
 14141      function isStrictComparable(value) {
 14142        return value === value && !isObject(value);
 14143      }
 14144  
 14145      /**
 14146       * A specialized version of `matchesProperty` for source values suitable
 14147       * for strict equality comparisons, i.e. `===`.
 14148       *
 14149       * @private
 14150       * @param {string} key The key of the property to get.
 14151       * @param {*} srcValue The value to match.
 14152       * @returns {Function} Returns the new spec function.
 14153       */
 14154      function matchesStrictComparable(key, srcValue) {
 14155        return function(object) {
 14156          if (object == null) {
 14157            return false;
 14158          }
 14159          return object[key] === srcValue &&
 14160            (srcValue !== undefined || (key in Object(object)));
 14161        };
 14162      }
 14163  
 14164      /**
 14165       * A specialized version of `_.memoize` which clears the memoized function's
 14166       * cache when it exceeds `MAX_MEMOIZE_SIZE`.
 14167       *
 14168       * @private
 14169       * @param {Function} func The function to have its output memoized.
 14170       * @returns {Function} Returns the new memoized function.
 14171       */
 14172      function memoizeCapped(func) {
 14173        var result = memoize(func, function(key) {
 14174          if (cache.size === MAX_MEMOIZE_SIZE) {
 14175            cache.clear();
 14176          }
 14177          return key;
 14178        });
 14179  
 14180        var cache = result.cache;
 14181        return result;
 14182      }
 14183  
 14184      /**
 14185       * Merges the function metadata of `source` into `data`.
 14186       *
 14187       * Merging metadata reduces the number of wrappers used to invoke a function.
 14188       * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
 14189       * may be applied regardless of execution order. Methods like `_.ary` and
 14190       * `_.rearg` modify function arguments, making the order in which they are
 14191       * executed important, preventing the merging of metadata. However, we make
 14192       * an exception for a safe combined case where curried functions have `_.ary`
 14193       * and or `_.rearg` applied.
 14194       *
 14195       * @private
 14196       * @param {Array} data The destination metadata.
 14197       * @param {Array} source The source metadata.
 14198       * @returns {Array} Returns `data`.
 14199       */
 14200      function mergeData(data, source) {
 14201        var bitmask = data[1],
 14202            srcBitmask = source[1],
 14203            newBitmask = bitmask | srcBitmask,
 14204            isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
 14205  
 14206        var isCombo =
 14207          ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||
 14208          ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||
 14209          ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));
 14210  
 14211        // Exit early if metadata can't be merged.
 14212        if (!(isCommon || isCombo)) {
 14213          return data;
 14214        }
 14215        // Use source `thisArg` if available.
 14216        if (srcBitmask & WRAP_BIND_FLAG) {
 14217          data[2] = source[2];
 14218          // Set when currying a bound function.
 14219          newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
 14220        }
 14221        // Compose partial arguments.
 14222        var value = source[3];
 14223        if (value) {
 14224          var partials = data[3];
 14225          data[3] = partials ? composeArgs(partials, value, source[4]) : value;
 14226          data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
 14227        }
 14228        // Compose partial right arguments.
 14229        value = source[5];
 14230        if (value) {
 14231          partials = data[5];
 14232          data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
 14233          data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
 14234        }
 14235        // Use source `argPos` if available.
 14236        value = source[7];
 14237        if (value) {
 14238          data[7] = value;
 14239        }
 14240        // Use source `ary` if it's smaller.
 14241        if (srcBitmask & WRAP_ARY_FLAG) {
 14242          data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
 14243        }
 14244        // Use source `arity` if one is not provided.
 14245        if (data[9] == null) {
 14246          data[9] = source[9];
 14247        }
 14248        // Use source `func` and merge bitmasks.
 14249        data[0] = source[0];
 14250        data[1] = newBitmask;
 14251  
 14252        return data;
 14253      }
 14254  
 14255      /**
 14256       * This function is like
 14257       * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
 14258       * except that it includes inherited enumerable properties.
 14259       *
 14260       * @private
 14261       * @param {Object} object The object to query.
 14262       * @returns {Array} Returns the array of property names.
 14263       */
 14264      function nativeKeysIn(object) {
 14265        var result = [];
 14266        if (object != null) {
 14267          for (var key in Object(object)) {
 14268            result.push(key);
 14269          }
 14270        }
 14271        return result;
 14272      }
 14273  
 14274      /**
 14275       * Converts `value` to a string using `Object.prototype.toString`.
 14276       *
 14277       * @private
 14278       * @param {*} value The value to convert.
 14279       * @returns {string} Returns the converted string.
 14280       */
 14281      function objectToString(value) {
 14282        return nativeObjectToString.call(value);
 14283      }
 14284  
 14285      /**
 14286       * A specialized version of `baseRest` which transforms the rest array.
 14287       *
 14288       * @private
 14289       * @param {Function} func The function to apply a rest parameter to.
 14290       * @param {number} [start=func.length-1] The start position of the rest parameter.
 14291       * @param {Function} transform The rest array transform.
 14292       * @returns {Function} Returns the new function.
 14293       */
 14294      function overRest(func, start, transform) {
 14295        start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
 14296        return function() {
 14297          var args = arguments,
 14298              index = -1,
 14299              length = nativeMax(args.length - start, 0),
 14300              array = Array(length);
 14301  
 14302          while (++index < length) {
 14303            array[index] = args[start + index];
 14304          }
 14305          index = -1;
 14306          var otherArgs = Array(start + 1);
 14307          while (++index < start) {
 14308            otherArgs[index] = args[index];
 14309          }
 14310          otherArgs[start] = transform(array);
 14311          return apply(func, this, otherArgs);
 14312        };
 14313      }
 14314  
 14315      /**
 14316       * Gets the parent value at `path` of `object`.
 14317       *
 14318       * @private
 14319       * @param {Object} object The object to query.
 14320       * @param {Array} path The path to get the parent value of.
 14321       * @returns {*} Returns the parent value.
 14322       */
 14323      function parent(object, path) {
 14324        return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
 14325      }
 14326  
 14327      /**
 14328       * Reorder `array` according to the specified indexes where the element at
 14329       * the first index is assigned as the first element, the element at
 14330       * the second index is assigned as the second element, and so on.
 14331       *
 14332       * @private
 14333       * @param {Array} array The array to reorder.
 14334       * @param {Array} indexes The arranged array indexes.
 14335       * @returns {Array} Returns `array`.
 14336       */
 14337      function reorder(array, indexes) {
 14338        var arrLength = array.length,
 14339            length = nativeMin(indexes.length, arrLength),
 14340            oldArray = copyArray(array);
 14341  
 14342        while (length--) {
 14343          var index = indexes[length];
 14344          array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
 14345        }
 14346        return array;
 14347      }
 14348  
 14349      /**
 14350       * Sets metadata for `func`.
 14351       *
 14352       * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
 14353       * period of time, it will trip its breaker and transition to an identity
 14354       * function to avoid garbage collection pauses in V8. See
 14355       * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)
 14356       * for more details.
 14357       *
 14358       * @private
 14359       * @param {Function} func The function to associate metadata with.
 14360       * @param {*} data The metadata.
 14361       * @returns {Function} Returns `func`.
 14362       */
 14363      var setData = shortOut(baseSetData);
 14364  
 14365      /**
 14366       * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).
 14367       *
 14368       * @private
 14369       * @param {Function} func The function to delay.
 14370       * @param {number} wait The number of milliseconds to delay invocation.
 14371       * @returns {number|Object} Returns the timer id or timeout object.
 14372       */
 14373      var setTimeout = ctxSetTimeout || function(func, wait) {
 14374        return root.setTimeout(func, wait);
 14375      };
 14376  
 14377      /**
 14378       * Sets the `toString` method of `func` to return `string`.
 14379       *
 14380       * @private
 14381       * @param {Function} func The function to modify.
 14382       * @param {Function} string The `toString` result.
 14383       * @returns {Function} Returns `func`.
 14384       */
 14385      var setToString = shortOut(baseSetToString);
 14386  
 14387      /**
 14388       * Sets the `toString` method of `wrapper` to mimic the source of `reference`
 14389       * with wrapper details in a comment at the top of the source body.
 14390       *
 14391       * @private
 14392       * @param {Function} wrapper The function to modify.
 14393       * @param {Function} reference The reference function.
 14394       * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
 14395       * @returns {Function} Returns `wrapper`.
 14396       */
 14397      function setWrapToString(wrapper, reference, bitmask) {
 14398        var source = (reference + '');
 14399        return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
 14400      }
 14401  
 14402      /**
 14403       * Creates a function that'll short out and invoke `identity` instead
 14404       * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
 14405       * milliseconds.
 14406       *
 14407       * @private
 14408       * @param {Function} func The function to restrict.
 14409       * @returns {Function} Returns the new shortable function.
 14410       */
 14411      function shortOut(func) {
 14412        var count = 0,
 14413            lastCalled = 0;
 14414  
 14415        return function() {
 14416          var stamp = nativeNow(),
 14417              remaining = HOT_SPAN - (stamp - lastCalled);
 14418  
 14419          lastCalled = stamp;
 14420          if (remaining > 0) {
 14421            if (++count >= HOT_COUNT) {
 14422              return arguments[0];
 14423            }
 14424          } else {
 14425            count = 0;
 14426          }
 14427          return func.apply(undefined, arguments);
 14428        };
 14429      }
 14430  
 14431      /**
 14432       * A specialized version of `_.shuffle` which mutates and sets the size of `array`.
 14433       *
 14434       * @private
 14435       * @param {Array} array The array to shuffle.
 14436       * @param {number} [size=array.length] The size of `array`.
 14437       * @returns {Array} Returns `array`.
 14438       */
 14439      function shuffleSelf(array, size) {
 14440        var index = -1,
 14441            length = array.length,
 14442            lastIndex = length - 1;
 14443  
 14444        size = size === undefined ? length : size;
 14445        while (++index < size) {
 14446          var rand = baseRandom(index, lastIndex),
 14447              value = array[rand];
 14448  
 14449          array[rand] = array[index];
 14450          array[index] = value;
 14451        }
 14452        array.length = size;
 14453        return array;
 14454      }
 14455  
 14456      /**
 14457       * Converts `string` to a property path array.
 14458       *
 14459       * @private
 14460       * @param {string} string The string to convert.
 14461       * @returns {Array} Returns the property path array.
 14462       */
 14463      var stringToPath = memoizeCapped(function(string) {
 14464        var result = [];
 14465        if (string.charCodeAt(0) === 46 /* . */) {
 14466          result.push('');
 14467        }
 14468        string.replace(rePropName, function(match, number, quote, subString) {
 14469          result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
 14470        });
 14471        return result;
 14472      });
 14473  
 14474      /**
 14475       * Converts `value` to a string key if it's not a string or symbol.
 14476       *
 14477       * @private
 14478       * @param {*} value The value to inspect.
 14479       * @returns {string|symbol} Returns the key.
 14480       */
 14481      function toKey(value) {
 14482        if (typeof value == 'string' || isSymbol(value)) {
 14483          return value;
 14484        }
 14485        var result = (value + '');
 14486        return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
 14487      }
 14488  
 14489      /**
 14490       * Converts `func` to its source code.
 14491       *
 14492       * @private
 14493       * @param {Function} func The function to convert.
 14494       * @returns {string} Returns the source code.
 14495       */
 14496      function toSource(func) {
 14497        if (func != null) {
 14498          try {
 14499            return funcToString.call(func);
 14500          } catch (e) {}
 14501          try {
 14502            return (func + '');
 14503          } catch (e) {}
 14504        }
 14505        return '';
 14506      }
 14507  
 14508      /**
 14509       * Updates wrapper `details` based on `bitmask` flags.
 14510       *
 14511       * @private
 14512       * @returns {Array} details The details to modify.
 14513       * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
 14514       * @returns {Array} Returns `details`.
 14515       */
 14516      function updateWrapDetails(details, bitmask) {
 14517        arrayEach(wrapFlags, function(pair) {
 14518          var value = '_.' + pair[0];
 14519          if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {
 14520            details.push(value);
 14521          }
 14522        });
 14523        return details.sort();
 14524      }
 14525  
 14526      /**
 14527       * Creates a clone of `wrapper`.
 14528       *
 14529       * @private
 14530       * @param {Object} wrapper The wrapper to clone.
 14531       * @returns {Object} Returns the cloned wrapper.
 14532       */
 14533      function wrapperClone(wrapper) {
 14534        if (wrapper instanceof LazyWrapper) {
 14535          return wrapper.clone();
 14536        }
 14537        var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
 14538        result.__actions__ = copyArray(wrapper.__actions__);
 14539        result.__index__  = wrapper.__index__;
 14540        result.__values__ = wrapper.__values__;
 14541        return result;
 14542      }
 14543  
 14544      /*------------------------------------------------------------------------*/
 14545  
 14546      /**
 14547       * Creates an array of elements split into groups the length of `size`.
 14548       * If `array` can't be split evenly, the final chunk will be the remaining
 14549       * elements.
 14550       *
 14551       * @static
 14552       * @memberOf _
 14553       * @since 3.0.0
 14554       * @category Array
 14555       * @param {Array} array The array to process.
 14556       * @param {number} [size=1] The length of each chunk
 14557       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 14558       * @returns {Array} Returns the new array of chunks.
 14559       * @example
 14560       *
 14561       * _.chunk(['a', 'b', 'c', 'd'], 2);
 14562       * // => [['a', 'b'], ['c', 'd']]
 14563       *
 14564       * _.chunk(['a', 'b', 'c', 'd'], 3);
 14565       * // => [['a', 'b', 'c'], ['d']]
 14566       */
 14567      function chunk(array, size, guard) {
 14568        if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {
 14569          size = 1;
 14570        } else {
 14571          size = nativeMax(toInteger(size), 0);
 14572        }
 14573        var length = array == null ? 0 : array.length;
 14574        if (!length || size < 1) {
 14575          return [];
 14576        }
 14577        var index = 0,
 14578            resIndex = 0,
 14579            result = Array(nativeCeil(length / size));
 14580  
 14581        while (index < length) {
 14582          result[resIndex++] = baseSlice(array, index, (index += size));
 14583        }
 14584        return result;
 14585      }
 14586  
 14587      /**
 14588       * Creates an array with all falsey values removed. The values `false`, `null`,
 14589       * `0`, `""`, `undefined`, and `NaN` are falsey.
 14590       *
 14591       * @static
 14592       * @memberOf _
 14593       * @since 0.1.0
 14594       * @category Array
 14595       * @param {Array} array The array to compact.
 14596       * @returns {Array} Returns the new array of filtered values.
 14597       * @example
 14598       *
 14599       * _.compact([0, 1, false, 2, '', 3]);
 14600       * // => [1, 2, 3]
 14601       */
 14602      function compact(array) {
 14603        var index = -1,
 14604            length = array == null ? 0 : array.length,
 14605            resIndex = 0,
 14606            result = [];
 14607  
 14608        while (++index < length) {
 14609          var value = array[index];
 14610          if (value) {
 14611            result[resIndex++] = value;
 14612          }
 14613        }
 14614        return result;
 14615      }
 14616  
 14617      /**
 14618       * Creates a new array concatenating `array` with any additional arrays
 14619       * and/or values.
 14620       *
 14621       * @static
 14622       * @memberOf _
 14623       * @since 4.0.0
 14624       * @category Array
 14625       * @param {Array} array The array to concatenate.
 14626       * @param {...*} [values] The values to concatenate.
 14627       * @returns {Array} Returns the new concatenated array.
 14628       * @example
 14629       *
 14630       * var array = [1];
 14631       * var other = _.concat(array, 2, [3], [[4]]);
 14632       *
 14633       * console.log(other);
 14634       * // => [1, 2, 3, [4]]
 14635       *
 14636       * console.log(array);
 14637       * // => [1]
 14638       */
 14639      function concat() {
 14640        var length = arguments.length;
 14641        if (!length) {
 14642          return [];
 14643        }
 14644        var args = Array(length - 1),
 14645            array = arguments[0],
 14646            index = length;
 14647  
 14648        while (index--) {
 14649          args[index - 1] = arguments[index];
 14650        }
 14651        return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
 14652      }
 14653  
 14654      /**
 14655       * Creates an array of `array` values not included in the other given arrays
 14656       * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 14657       * for equality comparisons. The order and references of result values are
 14658       * determined by the first array.
 14659       *
 14660       * **Note:** Unlike `_.pullAll`, this method returns a new array.
 14661       *
 14662       * @static
 14663       * @memberOf _
 14664       * @since 0.1.0
 14665       * @category Array
 14666       * @param {Array} array The array to inspect.
 14667       * @param {...Array} [values] The values to exclude.
 14668       * @returns {Array} Returns the new array of filtered values.
 14669       * @see _.without, _.xor
 14670       * @example
 14671       *
 14672       * _.difference([2, 1], [2, 3]);
 14673       * // => [1]
 14674       */
 14675      var difference = baseRest(function(array, values) {
 14676        return isArrayLikeObject(array)
 14677          ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))
 14678          : [];
 14679      });
 14680  
 14681      /**
 14682       * This method is like `_.difference` except that it accepts `iteratee` which
 14683       * is invoked for each element of `array` and `values` to generate the criterion
 14684       * by which they're compared. The order and references of result values are
 14685       * determined by the first array. The iteratee is invoked with one argument:
 14686       * (value).
 14687       *
 14688       * **Note:** Unlike `_.pullAllBy`, this method returns a new array.
 14689       *
 14690       * @static
 14691       * @memberOf _
 14692       * @since 4.0.0
 14693       * @category Array
 14694       * @param {Array} array The array to inspect.
 14695       * @param {...Array} [values] The values to exclude.
 14696       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
 14697       * @returns {Array} Returns the new array of filtered values.
 14698       * @example
 14699       *
 14700       * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
 14701       * // => [1.2]
 14702       *
 14703       * // The `_.property` iteratee shorthand.
 14704       * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
 14705       * // => [{ 'x': 2 }]
 14706       */
 14707      var differenceBy = baseRest(function(array, values) {
 14708        var iteratee = last(values);
 14709        if (isArrayLikeObject(iteratee)) {
 14710          iteratee = undefined;
 14711        }
 14712        return isArrayLikeObject(array)
 14713          ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))
 14714          : [];
 14715      });
 14716  
 14717      /**
 14718       * This method is like `_.difference` except that it accepts `comparator`
 14719       * which is invoked to compare elements of `array` to `values`. The order and
 14720       * references of result values are determined by the first array. The comparator
 14721       * is invoked with two arguments: (arrVal, othVal).
 14722       *
 14723       * **Note:** Unlike `_.pullAllWith`, this method returns a new array.
 14724       *
 14725       * @static
 14726       * @memberOf _
 14727       * @since 4.0.0
 14728       * @category Array
 14729       * @param {Array} array The array to inspect.
 14730       * @param {...Array} [values] The values to exclude.
 14731       * @param {Function} [comparator] The comparator invoked per element.
 14732       * @returns {Array} Returns the new array of filtered values.
 14733       * @example
 14734       *
 14735       * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
 14736       *
 14737       * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);
 14738       * // => [{ 'x': 2, 'y': 1 }]
 14739       */
 14740      var differenceWith = baseRest(function(array, values) {
 14741        var comparator = last(values);
 14742        if (isArrayLikeObject(comparator)) {
 14743          comparator = undefined;
 14744        }
 14745        return isArrayLikeObject(array)
 14746          ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)
 14747          : [];
 14748      });
 14749  
 14750      /**
 14751       * Creates a slice of `array` with `n` elements dropped from the beginning.
 14752       *
 14753       * @static
 14754       * @memberOf _
 14755       * @since 0.5.0
 14756       * @category Array
 14757       * @param {Array} array The array to query.
 14758       * @param {number} [n=1] The number of elements to drop.
 14759       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 14760       * @returns {Array} Returns the slice of `array`.
 14761       * @example
 14762       *
 14763       * _.drop([1, 2, 3]);
 14764       * // => [2, 3]
 14765       *
 14766       * _.drop([1, 2, 3], 2);
 14767       * // => [3]
 14768       *
 14769       * _.drop([1, 2, 3], 5);
 14770       * // => []
 14771       *
 14772       * _.drop([1, 2, 3], 0);
 14773       * // => [1, 2, 3]
 14774       */
 14775      function drop(array, n, guard) {
 14776        var length = array == null ? 0 : array.length;
 14777        if (!length) {
 14778          return [];
 14779        }
 14780        n = (guard || n === undefined) ? 1 : toInteger(n);
 14781        return baseSlice(array, n < 0 ? 0 : n, length);
 14782      }
 14783  
 14784      /**
 14785       * Creates a slice of `array` with `n` elements dropped from the end.
 14786       *
 14787       * @static
 14788       * @memberOf _
 14789       * @since 3.0.0
 14790       * @category Array
 14791       * @param {Array} array The array to query.
 14792       * @param {number} [n=1] The number of elements to drop.
 14793       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 14794       * @returns {Array} Returns the slice of `array`.
 14795       * @example
 14796       *
 14797       * _.dropRight([1, 2, 3]);
 14798       * // => [1, 2]
 14799       *
 14800       * _.dropRight([1, 2, 3], 2);
 14801       * // => [1]
 14802       *
 14803       * _.dropRight([1, 2, 3], 5);
 14804       * // => []
 14805       *
 14806       * _.dropRight([1, 2, 3], 0);
 14807       * // => [1, 2, 3]
 14808       */
 14809      function dropRight(array, n, guard) {
 14810        var length = array == null ? 0 : array.length;
 14811        if (!length) {
 14812          return [];
 14813        }
 14814        n = (guard || n === undefined) ? 1 : toInteger(n);
 14815        n = length - n;
 14816        return baseSlice(array, 0, n < 0 ? 0 : n);
 14817      }
 14818  
 14819      /**
 14820       * Creates a slice of `array` excluding elements dropped from the end.
 14821       * Elements are dropped until `predicate` returns falsey. The predicate is
 14822       * invoked with three arguments: (value, index, array).
 14823       *
 14824       * @static
 14825       * @memberOf _
 14826       * @since 3.0.0
 14827       * @category Array
 14828       * @param {Array} array The array to query.
 14829       * @param {Function} [predicate=_.identity] The function invoked per iteration.
 14830       * @returns {Array} Returns the slice of `array`.
 14831       * @example
 14832       *
 14833       * var users = [
 14834       *   { 'user': 'barney',  'active': true },
 14835       *   { 'user': 'fred',    'active': false },
 14836       *   { 'user': 'pebbles', 'active': false }
 14837       * ];
 14838       *
 14839       * _.dropRightWhile(users, function(o) { return !o.active; });
 14840       * // => objects for ['barney']
 14841       *
 14842       * // The `_.matches` iteratee shorthand.
 14843       * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });
 14844       * // => objects for ['barney', 'fred']
 14845       *
 14846       * // The `_.matchesProperty` iteratee shorthand.
 14847       * _.dropRightWhile(users, ['active', false]);
 14848       * // => objects for ['barney']
 14849       *
 14850       * // The `_.property` iteratee shorthand.
 14851       * _.dropRightWhile(users, 'active');
 14852       * // => objects for ['barney', 'fred', 'pebbles']
 14853       */
 14854      function dropRightWhile(array, predicate) {
 14855        return (array && array.length)
 14856          ? baseWhile(array, getIteratee(predicate, 3), true, true)
 14857          : [];
 14858      }
 14859  
 14860      /**
 14861       * Creates a slice of `array` excluding elements dropped from the beginning.
 14862       * Elements are dropped until `predicate` returns falsey. The predicate is
 14863       * invoked with three arguments: (value, index, array).
 14864       *
 14865       * @static
 14866       * @memberOf _
 14867       * @since 3.0.0
 14868       * @category Array
 14869       * @param {Array} array The array to query.
 14870       * @param {Function} [predicate=_.identity] The function invoked per iteration.
 14871       * @returns {Array} Returns the slice of `array`.
 14872       * @example
 14873       *
 14874       * var users = [
 14875       *   { 'user': 'barney',  'active': false },
 14876       *   { 'user': 'fred',    'active': false },
 14877       *   { 'user': 'pebbles', 'active': true }
 14878       * ];
 14879       *
 14880       * _.dropWhile(users, function(o) { return !o.active; });
 14881       * // => objects for ['pebbles']
 14882       *
 14883       * // The `_.matches` iteratee shorthand.
 14884       * _.dropWhile(users, { 'user': 'barney', 'active': false });
 14885       * // => objects for ['fred', 'pebbles']
 14886       *
 14887       * // The `_.matchesProperty` iteratee shorthand.
 14888       * _.dropWhile(users, ['active', false]);
 14889       * // => objects for ['pebbles']
 14890       *
 14891       * // The `_.property` iteratee shorthand.
 14892       * _.dropWhile(users, 'active');
 14893       * // => objects for ['barney', 'fred', 'pebbles']
 14894       */
 14895      function dropWhile(array, predicate) {
 14896        return (array && array.length)
 14897          ? baseWhile(array, getIteratee(predicate, 3), true)
 14898          : [];
 14899      }
 14900  
 14901      /**
 14902       * Fills elements of `array` with `value` from `start` up to, but not
 14903       * including, `end`.
 14904       *
 14905       * **Note:** This method mutates `array`.
 14906       *
 14907       * @static
 14908       * @memberOf _
 14909       * @since 3.2.0
 14910       * @category Array
 14911       * @param {Array} array The array to fill.
 14912       * @param {*} value The value to fill `array` with.
 14913       * @param {number} [start=0] The start position.
 14914       * @param {number} [end=array.length] The end position.
 14915       * @returns {Array} Returns `array`.
 14916       * @example
 14917       *
 14918       * var array = [1, 2, 3];
 14919       *
 14920       * _.fill(array, 'a');
 14921       * console.log(array);
 14922       * // => ['a', 'a', 'a']
 14923       *
 14924       * _.fill(Array(3), 2);
 14925       * // => [2, 2, 2]
 14926       *
 14927       * _.fill([4, 6, 8, 10], '*', 1, 3);
 14928       * // => [4, '*', '*', 10]
 14929       */
 14930      function fill(array, value, start, end) {
 14931        var length = array == null ? 0 : array.length;
 14932        if (!length) {
 14933          return [];
 14934        }
 14935        if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {
 14936          start = 0;
 14937          end = length;
 14938        }
 14939        return baseFill(array, value, start, end);
 14940      }
 14941  
 14942      /**
 14943       * This method is like `_.find` except that it returns the index of the first
 14944       * element `predicate` returns truthy for instead of the element itself.
 14945       *
 14946       * @static
 14947       * @memberOf _
 14948       * @since 1.1.0
 14949       * @category Array
 14950       * @param {Array} array The array to inspect.
 14951       * @param {Function} [predicate=_.identity] The function invoked per iteration.
 14952       * @param {number} [fromIndex=0] The index to search from.
 14953       * @returns {number} Returns the index of the found element, else `-1`.
 14954       * @example
 14955       *
 14956       * var users = [
 14957       *   { 'user': 'barney',  'active': false },
 14958       *   { 'user': 'fred',    'active': false },
 14959       *   { 'user': 'pebbles', 'active': true }
 14960       * ];
 14961       *
 14962       * _.findIndex(users, function(o) { return o.user == 'barney'; });
 14963       * // => 0
 14964       *
 14965       * // The `_.matches` iteratee shorthand.
 14966       * _.findIndex(users, { 'user': 'fred', 'active': false });
 14967       * // => 1
 14968       *
 14969       * // The `_.matchesProperty` iteratee shorthand.
 14970       * _.findIndex(users, ['active', false]);
 14971       * // => 0
 14972       *
 14973       * // The `_.property` iteratee shorthand.
 14974       * _.findIndex(users, 'active');
 14975       * // => 2
 14976       */
 14977      function findIndex(array, predicate, fromIndex) {
 14978        var length = array == null ? 0 : array.length;
 14979        if (!length) {
 14980          return -1;
 14981        }
 14982        var index = fromIndex == null ? 0 : toInteger(fromIndex);
 14983        if (index < 0) {
 14984          index = nativeMax(length + index, 0);
 14985        }
 14986        return baseFindIndex(array, getIteratee(predicate, 3), index);
 14987      }
 14988  
 14989      /**
 14990       * This method is like `_.findIndex` except that it iterates over elements
 14991       * of `collection` from right to left.
 14992       *
 14993       * @static
 14994       * @memberOf _
 14995       * @since 2.0.0
 14996       * @category Array
 14997       * @param {Array} array The array to inspect.
 14998       * @param {Function} [predicate=_.identity] The function invoked per iteration.
 14999       * @param {number} [fromIndex=array.length-1] The index to search from.
 15000       * @returns {number} Returns the index of the found element, else `-1`.
 15001       * @example
 15002       *
 15003       * var users = [
 15004       *   { 'user': 'barney',  'active': true },
 15005       *   { 'user': 'fred',    'active': false },
 15006       *   { 'user': 'pebbles', 'active': false }
 15007       * ];
 15008       *
 15009       * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
 15010       * // => 2
 15011       *
 15012       * // The `_.matches` iteratee shorthand.
 15013       * _.findLastIndex(users, { 'user': 'barney', 'active': true });
 15014       * // => 0
 15015       *
 15016       * // The `_.matchesProperty` iteratee shorthand.
 15017       * _.findLastIndex(users, ['active', false]);
 15018       * // => 2
 15019       *
 15020       * // The `_.property` iteratee shorthand.
 15021       * _.findLastIndex(users, 'active');
 15022       * // => 0
 15023       */
 15024      function findLastIndex(array, predicate, fromIndex) {
 15025        var length = array == null ? 0 : array.length;
 15026        if (!length) {
 15027          return -1;
 15028        }
 15029        var index = length - 1;
 15030        if (fromIndex !== undefined) {
 15031          index = toInteger(fromIndex);
 15032          index = fromIndex < 0
 15033            ? nativeMax(length + index, 0)
 15034            : nativeMin(index, length - 1);
 15035        }
 15036        return baseFindIndex(array, getIteratee(predicate, 3), index, true);
 15037      }
 15038  
 15039      /**
 15040       * Flattens `array` a single level deep.
 15041       *
 15042       * @static
 15043       * @memberOf _
 15044       * @since 0.1.0
 15045       * @category Array
 15046       * @param {Array} array The array to flatten.
 15047       * @returns {Array} Returns the new flattened array.
 15048       * @example
 15049       *
 15050       * _.flatten([1, [2, [3, [4]], 5]]);
 15051       * // => [1, 2, [3, [4]], 5]
 15052       */
 15053      function flatten(array) {
 15054        var length = array == null ? 0 : array.length;
 15055        return length ? baseFlatten(array, 1) : [];
 15056      }
 15057  
 15058      /**
 15059       * Recursively flattens `array`.
 15060       *
 15061       * @static
 15062       * @memberOf _
 15063       * @since 3.0.0
 15064       * @category Array
 15065       * @param {Array} array The array to flatten.
 15066       * @returns {Array} Returns the new flattened array.
 15067       * @example
 15068       *
 15069       * _.flattenDeep([1, [2, [3, [4]], 5]]);
 15070       * // => [1, 2, 3, 4, 5]
 15071       */
 15072      function flattenDeep(array) {
 15073        var length = array == null ? 0 : array.length;
 15074        return length ? baseFlatten(array, INFINITY) : [];
 15075      }
 15076  
 15077      /**
 15078       * Recursively flatten `array` up to `depth` times.
 15079       *
 15080       * @static
 15081       * @memberOf _
 15082       * @since 4.4.0
 15083       * @category Array
 15084       * @param {Array} array The array to flatten.
 15085       * @param {number} [depth=1] The maximum recursion depth.
 15086       * @returns {Array} Returns the new flattened array.
 15087       * @example
 15088       *
 15089       * var array = [1, [2, [3, [4]], 5]];
 15090       *
 15091       * _.flattenDepth(array, 1);
 15092       * // => [1, 2, [3, [4]], 5]
 15093       *
 15094       * _.flattenDepth(array, 2);
 15095       * // => [1, 2, 3, [4], 5]
 15096       */
 15097      function flattenDepth(array, depth) {
 15098        var length = array == null ? 0 : array.length;
 15099        if (!length) {
 15100          return [];
 15101        }
 15102        depth = depth === undefined ? 1 : toInteger(depth);
 15103        return baseFlatten(array, depth);
 15104      }
 15105  
 15106      /**
 15107       * The inverse of `_.toPairs`; this method returns an object composed
 15108       * from key-value `pairs`.
 15109       *
 15110       * @static
 15111       * @memberOf _
 15112       * @since 4.0.0
 15113       * @category Array
 15114       * @param {Array} pairs The key-value pairs.
 15115       * @returns {Object} Returns the new object.
 15116       * @example
 15117       *
 15118       * _.fromPairs([['a', 1], ['b', 2]]);
 15119       * // => { 'a': 1, 'b': 2 }
 15120       */
 15121      function fromPairs(pairs) {
 15122        var index = -1,
 15123            length = pairs == null ? 0 : pairs.length,
 15124            result = {};
 15125  
 15126        while (++index < length) {
 15127          var pair = pairs[index];
 15128          result[pair[0]] = pair[1];
 15129        }
 15130        return result;
 15131      }
 15132  
 15133      /**
 15134       * Gets the first element of `array`.
 15135       *
 15136       * @static
 15137       * @memberOf _
 15138       * @since 0.1.0
 15139       * @alias first
 15140       * @category Array
 15141       * @param {Array} array The array to query.
 15142       * @returns {*} Returns the first element of `array`.
 15143       * @example
 15144       *
 15145       * _.head([1, 2, 3]);
 15146       * // => 1
 15147       *
 15148       * _.head([]);
 15149       * // => undefined
 15150       */
 15151      function head(array) {
 15152        return (array && array.length) ? array[0] : undefined;
 15153      }
 15154  
 15155      /**
 15156       * Gets the index at which the first occurrence of `value` is found in `array`
 15157       * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 15158       * for equality comparisons. If `fromIndex` is negative, it's used as the
 15159       * offset from the end of `array`.
 15160       *
 15161       * @static
 15162       * @memberOf _
 15163       * @since 0.1.0
 15164       * @category Array
 15165       * @param {Array} array The array to inspect.
 15166       * @param {*} value The value to search for.
 15167       * @param {number} [fromIndex=0] The index to search from.
 15168       * @returns {number} Returns the index of the matched value, else `-1`.
 15169       * @example
 15170       *
 15171       * _.indexOf([1, 2, 1, 2], 2);
 15172       * // => 1
 15173       *
 15174       * // Search from the `fromIndex`.
 15175       * _.indexOf([1, 2, 1, 2], 2, 2);
 15176       * // => 3
 15177       */
 15178      function indexOf(array, value, fromIndex) {
 15179        var length = array == null ? 0 : array.length;
 15180        if (!length) {
 15181          return -1;
 15182        }
 15183        var index = fromIndex == null ? 0 : toInteger(fromIndex);
 15184        if (index < 0) {
 15185          index = nativeMax(length + index, 0);
 15186        }
 15187        return baseIndexOf(array, value, index);
 15188      }
 15189  
 15190      /**
 15191       * Gets all but the last element of `array`.
 15192       *
 15193       * @static
 15194       * @memberOf _
 15195       * @since 0.1.0
 15196       * @category Array
 15197       * @param {Array} array The array to query.
 15198       * @returns {Array} Returns the slice of `array`.
 15199       * @example
 15200       *
 15201       * _.initial([1, 2, 3]);
 15202       * // => [1, 2]
 15203       */
 15204      function initial(array) {
 15205        var length = array == null ? 0 : array.length;
 15206        return length ? baseSlice(array, 0, -1) : [];
 15207      }
 15208  
 15209      /**
 15210       * Creates an array of unique values that are included in all given arrays
 15211       * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 15212       * for equality comparisons. The order and references of result values are
 15213       * determined by the first array.
 15214       *
 15215       * @static
 15216       * @memberOf _
 15217       * @since 0.1.0
 15218       * @category Array
 15219       * @param {...Array} [arrays] The arrays to inspect.
 15220       * @returns {Array} Returns the new array of intersecting values.
 15221       * @example
 15222       *
 15223       * _.intersection([2, 1], [2, 3]);
 15224       * // => [2]
 15225       */
 15226      var intersection = baseRest(function(arrays) {
 15227        var mapped = arrayMap(arrays, castArrayLikeObject);
 15228        return (mapped.length && mapped[0] === arrays[0])
 15229          ? baseIntersection(mapped)
 15230          : [];
 15231      });
 15232  
 15233      /**
 15234       * This method is like `_.intersection` except that it accepts `iteratee`
 15235       * which is invoked for each element of each `arrays` to generate the criterion
 15236       * by which they're compared. The order and references of result values are
 15237       * determined by the first array. The iteratee is invoked with one argument:
 15238       * (value).
 15239       *
 15240       * @static
 15241       * @memberOf _
 15242       * @since 4.0.0
 15243       * @category Array
 15244       * @param {...Array} [arrays] The arrays to inspect.
 15245       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
 15246       * @returns {Array} Returns the new array of intersecting values.
 15247       * @example
 15248       *
 15249       * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
 15250       * // => [2.1]
 15251       *
 15252       * // The `_.property` iteratee shorthand.
 15253       * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
 15254       * // => [{ 'x': 1 }]
 15255       */
 15256      var intersectionBy = baseRest(function(arrays) {
 15257        var iteratee = last(arrays),
 15258            mapped = arrayMap(arrays, castArrayLikeObject);
 15259  
 15260        if (iteratee === last(mapped)) {
 15261          iteratee = undefined;
 15262        } else {
 15263          mapped.pop();
 15264        }
 15265        return (mapped.length && mapped[0] === arrays[0])
 15266          ? baseIntersection(mapped, getIteratee(iteratee, 2))
 15267          : [];
 15268      });
 15269  
 15270      /**
 15271       * This method is like `_.intersection` except that it accepts `comparator`
 15272       * which is invoked to compare elements of `arrays`. The order and references
 15273       * of result values are determined by the first array. The comparator is
 15274       * invoked with two arguments: (arrVal, othVal).
 15275       *
 15276       * @static
 15277       * @memberOf _
 15278       * @since 4.0.0
 15279       * @category Array
 15280       * @param {...Array} [arrays] The arrays to inspect.
 15281       * @param {Function} [comparator] The comparator invoked per element.
 15282       * @returns {Array} Returns the new array of intersecting values.
 15283       * @example
 15284       *
 15285       * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
 15286       * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
 15287       *
 15288       * _.intersectionWith(objects, others, _.isEqual);
 15289       * // => [{ 'x': 1, 'y': 2 }]
 15290       */
 15291      var intersectionWith = baseRest(function(arrays) {
 15292        var comparator = last(arrays),
 15293            mapped = arrayMap(arrays, castArrayLikeObject);
 15294  
 15295        comparator = typeof comparator == 'function' ? comparator : undefined;
 15296        if (comparator) {
 15297          mapped.pop();
 15298        }
 15299        return (mapped.length && mapped[0] === arrays[0])
 15300          ? baseIntersection(mapped, undefined, comparator)
 15301          : [];
 15302      });
 15303  
 15304      /**
 15305       * Converts all elements in `array` into a string separated by `separator`.
 15306       *
 15307       * @static
 15308       * @memberOf _
 15309       * @since 4.0.0
 15310       * @category Array
 15311       * @param {Array} array The array to convert.
 15312       * @param {string} [separator=','] The element separator.
 15313       * @returns {string} Returns the joined string.
 15314       * @example
 15315       *
 15316       * _.join(['a', 'b', 'c'], '~');
 15317       * // => 'a~b~c'
 15318       */
 15319      function join(array, separator) {
 15320        return array == null ? '' : nativeJoin.call(array, separator);
 15321      }
 15322  
 15323      /**
 15324       * Gets the last element of `array`.
 15325       *
 15326       * @static
 15327       * @memberOf _
 15328       * @since 0.1.0
 15329       * @category Array
 15330       * @param {Array} array The array to query.
 15331       * @returns {*} Returns the last element of `array`.
 15332       * @example
 15333       *
 15334       * _.last([1, 2, 3]);
 15335       * // => 3
 15336       */
 15337      function last(array) {
 15338        var length = array == null ? 0 : array.length;
 15339        return length ? array[length - 1] : undefined;
 15340      }
 15341  
 15342      /**
 15343       * This method is like `_.indexOf` except that it iterates over elements of
 15344       * `array` from right to left.
 15345       *
 15346       * @static
 15347       * @memberOf _
 15348       * @since 0.1.0
 15349       * @category Array
 15350       * @param {Array} array The array to inspect.
 15351       * @param {*} value The value to search for.
 15352       * @param {number} [fromIndex=array.length-1] The index to search from.
 15353       * @returns {number} Returns the index of the matched value, else `-1`.
 15354       * @example
 15355       *
 15356       * _.lastIndexOf([1, 2, 1, 2], 2);
 15357       * // => 3
 15358       *
 15359       * // Search from the `fromIndex`.
 15360       * _.lastIndexOf([1, 2, 1, 2], 2, 2);
 15361       * // => 1
 15362       */
 15363      function lastIndexOf(array, value, fromIndex) {
 15364        var length = array == null ? 0 : array.length;
 15365        if (!length) {
 15366          return -1;
 15367        }
 15368        var index = length;
 15369        if (fromIndex !== undefined) {
 15370          index = toInteger(fromIndex);
 15371          index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
 15372        }
 15373        return value === value
 15374          ? strictLastIndexOf(array, value, index)
 15375          : baseFindIndex(array, baseIsNaN, index, true);
 15376      }
 15377  
 15378      /**
 15379       * Gets the element at index `n` of `array`. If `n` is negative, the nth
 15380       * element from the end is returned.
 15381       *
 15382       * @static
 15383       * @memberOf _
 15384       * @since 4.11.0
 15385       * @category Array
 15386       * @param {Array} array The array to query.
 15387       * @param {number} [n=0] The index of the element to return.
 15388       * @returns {*} Returns the nth element of `array`.
 15389       * @example
 15390       *
 15391       * var array = ['a', 'b', 'c', 'd'];
 15392       *
 15393       * _.nth(array, 1);
 15394       * // => 'b'
 15395       *
 15396       * _.nth(array, -2);
 15397       * // => 'c';
 15398       */
 15399      function nth(array, n) {
 15400        return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;
 15401      }
 15402  
 15403      /**
 15404       * Removes all given values from `array` using
 15405       * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 15406       * for equality comparisons.
 15407       *
 15408       * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`
 15409       * to remove elements from an array by predicate.
 15410       *
 15411       * @static
 15412       * @memberOf _
 15413       * @since 2.0.0
 15414       * @category Array
 15415       * @param {Array} array The array to modify.
 15416       * @param {...*} [values] The values to remove.
 15417       * @returns {Array} Returns `array`.
 15418       * @example
 15419       *
 15420       * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
 15421       *
 15422       * _.pull(array, 'a', 'c');
 15423       * console.log(array);
 15424       * // => ['b', 'b']
 15425       */
 15426      var pull = baseRest(pullAll);
 15427  
 15428      /**
 15429       * This method is like `_.pull` except that it accepts an array of values to remove.
 15430       *
 15431       * **Note:** Unlike `_.difference`, this method mutates `array`.
 15432       *
 15433       * @static
 15434       * @memberOf _
 15435       * @since 4.0.0
 15436       * @category Array
 15437       * @param {Array} array The array to modify.
 15438       * @param {Array} values The values to remove.
 15439       * @returns {Array} Returns `array`.
 15440       * @example
 15441       *
 15442       * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
 15443       *
 15444       * _.pullAll(array, ['a', 'c']);
 15445       * console.log(array);
 15446       * // => ['b', 'b']
 15447       */
 15448      function pullAll(array, values) {
 15449        return (array && array.length && values && values.length)
 15450          ? basePullAll(array, values)
 15451          : array;
 15452      }
 15453  
 15454      /**
 15455       * This method is like `_.pullAll` except that it accepts `iteratee` which is
 15456       * invoked for each element of `array` and `values` to generate the criterion
 15457       * by which they're compared. The iteratee is invoked with one argument: (value).
 15458       *
 15459       * **Note:** Unlike `_.differenceBy`, this method mutates `array`.
 15460       *
 15461       * @static
 15462       * @memberOf _
 15463       * @since 4.0.0
 15464       * @category Array
 15465       * @param {Array} array The array to modify.
 15466       * @param {Array} values The values to remove.
 15467       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
 15468       * @returns {Array} Returns `array`.
 15469       * @example
 15470       *
 15471       * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];
 15472       *
 15473       * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');
 15474       * console.log(array);
 15475       * // => [{ 'x': 2 }]
 15476       */
 15477      function pullAllBy(array, values, iteratee) {
 15478        return (array && array.length && values && values.length)
 15479          ? basePullAll(array, values, getIteratee(iteratee, 2))
 15480          : array;
 15481      }
 15482  
 15483      /**
 15484       * This method is like `_.pullAll` except that it accepts `comparator` which
 15485       * is invoked to compare elements of `array` to `values`. The comparator is
 15486       * invoked with two arguments: (arrVal, othVal).
 15487       *
 15488       * **Note:** Unlike `_.differenceWith`, this method mutates `array`.
 15489       *
 15490       * @static
 15491       * @memberOf _
 15492       * @since 4.6.0
 15493       * @category Array
 15494       * @param {Array} array The array to modify.
 15495       * @param {Array} values The values to remove.
 15496       * @param {Function} [comparator] The comparator invoked per element.
 15497       * @returns {Array} Returns `array`.
 15498       * @example
 15499       *
 15500       * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];
 15501       *
 15502       * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);
 15503       * console.log(array);
 15504       * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]
 15505       */
 15506      function pullAllWith(array, values, comparator) {
 15507        return (array && array.length && values && values.length)
 15508          ? basePullAll(array, values, undefined, comparator)
 15509          : array;
 15510      }
 15511  
 15512      /**
 15513       * Removes elements from `array` corresponding to `indexes` and returns an
 15514       * array of removed elements.
 15515       *
 15516       * **Note:** Unlike `_.at`, this method mutates `array`.
 15517       *
 15518       * @static
 15519       * @memberOf _
 15520       * @since 3.0.0
 15521       * @category Array
 15522       * @param {Array} array The array to modify.
 15523       * @param {...(number|number[])} [indexes] The indexes of elements to remove.
 15524       * @returns {Array} Returns the new array of removed elements.
 15525       * @example
 15526       *
 15527       * var array = ['a', 'b', 'c', 'd'];
 15528       * var pulled = _.pullAt(array, [1, 3]);
 15529       *
 15530       * console.log(array);
 15531       * // => ['a', 'c']
 15532       *
 15533       * console.log(pulled);
 15534       * // => ['b', 'd']
 15535       */
 15536      var pullAt = flatRest(function(array, indexes) {
 15537        var length = array == null ? 0 : array.length,
 15538            result = baseAt(array, indexes);
 15539  
 15540        basePullAt(array, arrayMap(indexes, function(index) {
 15541          return isIndex(index, length) ? +index : index;
 15542        }).sort(compareAscending));
 15543  
 15544        return result;
 15545      });
 15546  
 15547      /**
 15548       * Removes all elements from `array` that `predicate` returns truthy for
 15549       * and returns an array of the removed elements. The predicate is invoked
 15550       * with three arguments: (value, index, array).
 15551       *
 15552       * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`
 15553       * to pull elements from an array by value.
 15554       *
 15555       * @static
 15556       * @memberOf _
 15557       * @since 2.0.0
 15558       * @category Array
 15559       * @param {Array} array The array to modify.
 15560       * @param {Function} [predicate=_.identity] The function invoked per iteration.
 15561       * @returns {Array} Returns the new array of removed elements.
 15562       * @example
 15563       *
 15564       * var array = [1, 2, 3, 4];
 15565       * var evens = _.remove(array, function(n) {
 15566       *   return n % 2 == 0;
 15567       * });
 15568       *
 15569       * console.log(array);
 15570       * // => [1, 3]
 15571       *
 15572       * console.log(evens);
 15573       * // => [2, 4]
 15574       */
 15575      function remove(array, predicate) {
 15576        var result = [];
 15577        if (!(array && array.length)) {
 15578          return result;
 15579        }
 15580        var index = -1,
 15581            indexes = [],
 15582            length = array.length;
 15583  
 15584        predicate = getIteratee(predicate, 3);
 15585        while (++index < length) {
 15586          var value = array[index];
 15587          if (predicate(value, index, array)) {
 15588            result.push(value);
 15589            indexes.push(index);
 15590          }
 15591        }
 15592        basePullAt(array, indexes);
 15593        return result;
 15594      }
 15595  
 15596      /**
 15597       * Reverses `array` so that the first element becomes the last, the second
 15598       * element becomes the second to last, and so on.
 15599       *
 15600       * **Note:** This method mutates `array` and is based on
 15601       * [`Array#reverse`](https://mdn.io/Array/reverse).
 15602       *
 15603       * @static
 15604       * @memberOf _
 15605       * @since 4.0.0
 15606       * @category Array
 15607       * @param {Array} array The array to modify.
 15608       * @returns {Array} Returns `array`.
 15609       * @example
 15610       *
 15611       * var array = [1, 2, 3];
 15612       *
 15613       * _.reverse(array);
 15614       * // => [3, 2, 1]
 15615       *
 15616       * console.log(array);
 15617       * // => [3, 2, 1]
 15618       */
 15619      function reverse(array) {
 15620        return array == null ? array : nativeReverse.call(array);
 15621      }
 15622  
 15623      /**
 15624       * Creates a slice of `array` from `start` up to, but not including, `end`.
 15625       *
 15626       * **Note:** This method is used instead of
 15627       * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
 15628       * returned.
 15629       *
 15630       * @static
 15631       * @memberOf _
 15632       * @since 3.0.0
 15633       * @category Array
 15634       * @param {Array} array The array to slice.
 15635       * @param {number} [start=0] The start position.
 15636       * @param {number} [end=array.length] The end position.
 15637       * @returns {Array} Returns the slice of `array`.
 15638       */
 15639      function slice(array, start, end) {
 15640        var length = array == null ? 0 : array.length;
 15641        if (!length) {
 15642          return [];
 15643        }
 15644        if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {
 15645          start = 0;
 15646          end = length;
 15647        }
 15648        else {
 15649          start = start == null ? 0 : toInteger(start);
 15650          end = end === undefined ? length : toInteger(end);
 15651        }
 15652        return baseSlice(array, start, end);
 15653      }
 15654  
 15655      /**
 15656       * Uses a binary search to determine the lowest index at which `value`
 15657       * should be inserted into `array` in order to maintain its sort order.
 15658       *
 15659       * @static
 15660       * @memberOf _
 15661       * @since 0.1.0
 15662       * @category Array
 15663       * @param {Array} array The sorted array to inspect.
 15664       * @param {*} value The value to evaluate.
 15665       * @returns {number} Returns the index at which `value` should be inserted
 15666       *  into `array`.
 15667       * @example
 15668       *
 15669       * _.sortedIndex([30, 50], 40);
 15670       * // => 1
 15671       */
 15672      function sortedIndex(array, value) {
 15673        return baseSortedIndex(array, value);
 15674      }
 15675  
 15676      /**
 15677       * This method is like `_.sortedIndex` except that it accepts `iteratee`
 15678       * which is invoked for `value` and each element of `array` to compute their
 15679       * sort ranking. The iteratee is invoked with one argument: (value).
 15680       *
 15681       * @static
 15682       * @memberOf _
 15683       * @since 4.0.0
 15684       * @category Array
 15685       * @param {Array} array The sorted array to inspect.
 15686       * @param {*} value The value to evaluate.
 15687       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
 15688       * @returns {number} Returns the index at which `value` should be inserted
 15689       *  into `array`.
 15690       * @example
 15691       *
 15692       * var objects = [{ 'x': 4 }, { 'x': 5 }];
 15693       *
 15694       * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
 15695       * // => 0
 15696       *
 15697       * // The `_.property` iteratee shorthand.
 15698       * _.sortedIndexBy(objects, { 'x': 4 }, 'x');
 15699       * // => 0
 15700       */
 15701      function sortedIndexBy(array, value, iteratee) {
 15702        return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));
 15703      }
 15704  
 15705      /**
 15706       * This method is like `_.indexOf` except that it performs a binary
 15707       * search on a sorted `array`.
 15708       *
 15709       * @static
 15710       * @memberOf _
 15711       * @since 4.0.0
 15712       * @category Array
 15713       * @param {Array} array The array to inspect.
 15714       * @param {*} value The value to search for.
 15715       * @returns {number} Returns the index of the matched value, else `-1`.
 15716       * @example
 15717       *
 15718       * _.sortedIndexOf([4, 5, 5, 5, 6], 5);
 15719       * // => 1
 15720       */
 15721      function sortedIndexOf(array, value) {
 15722        var length = array == null ? 0 : array.length;
 15723        if (length) {
 15724          var index = baseSortedIndex(array, value);
 15725          if (index < length && eq(array[index], value)) {
 15726            return index;
 15727          }
 15728        }
 15729        return -1;
 15730      }
 15731  
 15732      /**
 15733       * This method is like `_.sortedIndex` except that it returns the highest
 15734       * index at which `value` should be inserted into `array` in order to
 15735       * maintain its sort order.
 15736       *
 15737       * @static
 15738       * @memberOf _
 15739       * @since 3.0.0
 15740       * @category Array
 15741       * @param {Array} array The sorted array to inspect.
 15742       * @param {*} value The value to evaluate.
 15743       * @returns {number} Returns the index at which `value` should be inserted
 15744       *  into `array`.
 15745       * @example
 15746       *
 15747       * _.sortedLastIndex([4, 5, 5, 5, 6], 5);
 15748       * // => 4
 15749       */
 15750      function sortedLastIndex(array, value) {
 15751        return baseSortedIndex(array, value, true);
 15752      }
 15753  
 15754      /**
 15755       * This method is like `_.sortedLastIndex` except that it accepts `iteratee`
 15756       * which is invoked for `value` and each element of `array` to compute their
 15757       * sort ranking. The iteratee is invoked with one argument: (value).
 15758       *
 15759       * @static
 15760       * @memberOf _
 15761       * @since 4.0.0
 15762       * @category Array
 15763       * @param {Array} array The sorted array to inspect.
 15764       * @param {*} value The value to evaluate.
 15765       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
 15766       * @returns {number} Returns the index at which `value` should be inserted
 15767       *  into `array`.
 15768       * @example
 15769       *
 15770       * var objects = [{ 'x': 4 }, { 'x': 5 }];
 15771       *
 15772       * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
 15773       * // => 1
 15774       *
 15775       * // The `_.property` iteratee shorthand.
 15776       * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');
 15777       * // => 1
 15778       */
 15779      function sortedLastIndexBy(array, value, iteratee) {
 15780        return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);
 15781      }
 15782  
 15783      /**
 15784       * This method is like `_.lastIndexOf` except that it performs a binary
 15785       * search on a sorted `array`.
 15786       *
 15787       * @static
 15788       * @memberOf _
 15789       * @since 4.0.0
 15790       * @category Array
 15791       * @param {Array} array The array to inspect.
 15792       * @param {*} value The value to search for.
 15793       * @returns {number} Returns the index of the matched value, else `-1`.
 15794       * @example
 15795       *
 15796       * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);
 15797       * // => 3
 15798       */
 15799      function sortedLastIndexOf(array, value) {
 15800        var length = array == null ? 0 : array.length;
 15801        if (length) {
 15802          var index = baseSortedIndex(array, value, true) - 1;
 15803          if (eq(array[index], value)) {
 15804            return index;
 15805          }
 15806        }
 15807        return -1;
 15808      }
 15809  
 15810      /**
 15811       * This method is like `_.uniq` except that it's designed and optimized
 15812       * for sorted arrays.
 15813       *
 15814       * @static
 15815       * @memberOf _
 15816       * @since 4.0.0
 15817       * @category Array
 15818       * @param {Array} array The array to inspect.
 15819       * @returns {Array} Returns the new duplicate free array.
 15820       * @example
 15821       *
 15822       * _.sortedUniq([1, 1, 2]);
 15823       * // => [1, 2]
 15824       */
 15825      function sortedUniq(array) {
 15826        return (array && array.length)
 15827          ? baseSortedUniq(array)
 15828          : [];
 15829      }
 15830  
 15831      /**
 15832       * This method is like `_.uniqBy` except that it's designed and optimized
 15833       * for sorted arrays.
 15834       *
 15835       * @static
 15836       * @memberOf _
 15837       * @since 4.0.0
 15838       * @category Array
 15839       * @param {Array} array The array to inspect.
 15840       * @param {Function} [iteratee] The iteratee invoked per element.
 15841       * @returns {Array} Returns the new duplicate free array.
 15842       * @example
 15843       *
 15844       * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);
 15845       * // => [1.1, 2.3]
 15846       */
 15847      function sortedUniqBy(array, iteratee) {
 15848        return (array && array.length)
 15849          ? baseSortedUniq(array, getIteratee(iteratee, 2))
 15850          : [];
 15851      }
 15852  
 15853      /**
 15854       * Gets all but the first element of `array`.
 15855       *
 15856       * @static
 15857       * @memberOf _
 15858       * @since 4.0.0
 15859       * @category Array
 15860       * @param {Array} array The array to query.
 15861       * @returns {Array} Returns the slice of `array`.
 15862       * @example
 15863       *
 15864       * _.tail([1, 2, 3]);
 15865       * // => [2, 3]
 15866       */
 15867      function tail(array) {
 15868        var length = array == null ? 0 : array.length;
 15869        return length ? baseSlice(array, 1, length) : [];
 15870      }
 15871  
 15872      /**
 15873       * Creates a slice of `array` with `n` elements taken from the beginning.
 15874       *
 15875       * @static
 15876       * @memberOf _
 15877       * @since 0.1.0
 15878       * @category Array
 15879       * @param {Array} array The array to query.
 15880       * @param {number} [n=1] The number of elements to take.
 15881       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 15882       * @returns {Array} Returns the slice of `array`.
 15883       * @example
 15884       *
 15885       * _.take([1, 2, 3]);
 15886       * // => [1]
 15887       *
 15888       * _.take([1, 2, 3], 2);
 15889       * // => [1, 2]
 15890       *
 15891       * _.take([1, 2, 3], 5);
 15892       * // => [1, 2, 3]
 15893       *
 15894       * _.take([1, 2, 3], 0);
 15895       * // => []
 15896       */
 15897      function take(array, n, guard) {
 15898        if (!(array && array.length)) {
 15899          return [];
 15900        }
 15901        n = (guard || n === undefined) ? 1 : toInteger(n);
 15902        return baseSlice(array, 0, n < 0 ? 0 : n);
 15903      }
 15904  
 15905      /**
 15906       * Creates a slice of `array` with `n` elements taken from the end.
 15907       *
 15908       * @static
 15909       * @memberOf _
 15910       * @since 3.0.0
 15911       * @category Array
 15912       * @param {Array} array The array to query.
 15913       * @param {number} [n=1] The number of elements to take.
 15914       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 15915       * @returns {Array} Returns the slice of `array`.
 15916       * @example
 15917       *
 15918       * _.takeRight([1, 2, 3]);
 15919       * // => [3]
 15920       *
 15921       * _.takeRight([1, 2, 3], 2);
 15922       * // => [2, 3]
 15923       *
 15924       * _.takeRight([1, 2, 3], 5);
 15925       * // => [1, 2, 3]
 15926       *
 15927       * _.takeRight([1, 2, 3], 0);
 15928       * // => []
 15929       */
 15930      function takeRight(array, n, guard) {
 15931        var length = array == null ? 0 : array.length;
 15932        if (!length) {
 15933          return [];
 15934        }
 15935        n = (guard || n === undefined) ? 1 : toInteger(n);
 15936        n = length - n;
 15937        return baseSlice(array, n < 0 ? 0 : n, length);
 15938      }
 15939  
 15940      /**
 15941       * Creates a slice of `array` with elements taken from the end. Elements are
 15942       * taken until `predicate` returns falsey. The predicate is invoked with
 15943       * three arguments: (value, index, array).
 15944       *
 15945       * @static
 15946       * @memberOf _
 15947       * @since 3.0.0
 15948       * @category Array
 15949       * @param {Array} array The array to query.
 15950       * @param {Function} [predicate=_.identity] The function invoked per iteration.
 15951       * @returns {Array} Returns the slice of `array`.
 15952       * @example
 15953       *
 15954       * var users = [
 15955       *   { 'user': 'barney',  'active': true },
 15956       *   { 'user': 'fred',    'active': false },
 15957       *   { 'user': 'pebbles', 'active': false }
 15958       * ];
 15959       *
 15960       * _.takeRightWhile(users, function(o) { return !o.active; });
 15961       * // => objects for ['fred', 'pebbles']
 15962       *
 15963       * // The `_.matches` iteratee shorthand.
 15964       * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });
 15965       * // => objects for ['pebbles']
 15966       *
 15967       * // The `_.matchesProperty` iteratee shorthand.
 15968       * _.takeRightWhile(users, ['active', false]);
 15969       * // => objects for ['fred', 'pebbles']
 15970       *
 15971       * // The `_.property` iteratee shorthand.
 15972       * _.takeRightWhile(users, 'active');
 15973       * // => []
 15974       */
 15975      function takeRightWhile(array, predicate) {
 15976        return (array && array.length)
 15977          ? baseWhile(array, getIteratee(predicate, 3), false, true)
 15978          : [];
 15979      }
 15980  
 15981      /**
 15982       * Creates a slice of `array` with elements taken from the beginning. Elements
 15983       * are taken until `predicate` returns falsey. The predicate is invoked with
 15984       * three arguments: (value, index, array).
 15985       *
 15986       * @static
 15987       * @memberOf _
 15988       * @since 3.0.0
 15989       * @category Array
 15990       * @param {Array} array The array to query.
 15991       * @param {Function} [predicate=_.identity] The function invoked per iteration.
 15992       * @returns {Array} Returns the slice of `array`.
 15993       * @example
 15994       *
 15995       * var users = [
 15996       *   { 'user': 'barney',  'active': false },
 15997       *   { 'user': 'fred',    'active': false },
 15998       *   { 'user': 'pebbles', 'active': true }
 15999       * ];
 16000       *
 16001       * _.takeWhile(users, function(o) { return !o.active; });
 16002       * // => objects for ['barney', 'fred']
 16003       *
 16004       * // The `_.matches` iteratee shorthand.
 16005       * _.takeWhile(users, { 'user': 'barney', 'active': false });
 16006       * // => objects for ['barney']
 16007       *
 16008       * // The `_.matchesProperty` iteratee shorthand.
 16009       * _.takeWhile(users, ['active', false]);
 16010       * // => objects for ['barney', 'fred']
 16011       *
 16012       * // The `_.property` iteratee shorthand.
 16013       * _.takeWhile(users, 'active');
 16014       * // => []
 16015       */
 16016      function takeWhile(array, predicate) {
 16017        return (array && array.length)
 16018          ? baseWhile(array, getIteratee(predicate, 3))
 16019          : [];
 16020      }
 16021  
 16022      /**
 16023       * Creates an array of unique values, in order, from all given arrays using
 16024       * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 16025       * for equality comparisons.
 16026       *
 16027       * @static
 16028       * @memberOf _
 16029       * @since 0.1.0
 16030       * @category Array
 16031       * @param {...Array} [arrays] The arrays to inspect.
 16032       * @returns {Array} Returns the new array of combined values.
 16033       * @example
 16034       *
 16035       * _.union([2], [1, 2]);
 16036       * // => [2, 1]
 16037       */
 16038      var union = baseRest(function(arrays) {
 16039        return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
 16040      });
 16041  
 16042      /**
 16043       * This method is like `_.union` except that it accepts `iteratee` which is
 16044       * invoked for each element of each `arrays` to generate the criterion by
 16045       * which uniqueness is computed. Result values are chosen from the first
 16046       * array in which the value occurs. The iteratee is invoked with one argument:
 16047       * (value).
 16048       *
 16049       * @static
 16050       * @memberOf _
 16051       * @since 4.0.0
 16052       * @category Array
 16053       * @param {...Array} [arrays] The arrays to inspect.
 16054       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
 16055       * @returns {Array} Returns the new array of combined values.
 16056       * @example
 16057       *
 16058       * _.unionBy([2.1], [1.2, 2.3], Math.floor);
 16059       * // => [2.1, 1.2]
 16060       *
 16061       * // The `_.property` iteratee shorthand.
 16062       * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
 16063       * // => [{ 'x': 1 }, { 'x': 2 }]
 16064       */
 16065      var unionBy = baseRest(function(arrays) {
 16066        var iteratee = last(arrays);
 16067        if (isArrayLikeObject(iteratee)) {
 16068          iteratee = undefined;
 16069        }
 16070        return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));
 16071      });
 16072  
 16073      /**
 16074       * This method is like `_.union` except that it accepts `comparator` which
 16075       * is invoked to compare elements of `arrays`. Result values are chosen from
 16076       * the first array in which the value occurs. The comparator is invoked
 16077       * with two arguments: (arrVal, othVal).
 16078       *
 16079       * @static
 16080       * @memberOf _
 16081       * @since 4.0.0
 16082       * @category Array
 16083       * @param {...Array} [arrays] The arrays to inspect.
 16084       * @param {Function} [comparator] The comparator invoked per element.
 16085       * @returns {Array} Returns the new array of combined values.
 16086       * @example
 16087       *
 16088       * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
 16089       * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
 16090       *
 16091       * _.unionWith(objects, others, _.isEqual);
 16092       * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
 16093       */
 16094      var unionWith = baseRest(function(arrays) {
 16095        var comparator = last(arrays);
 16096        comparator = typeof comparator == 'function' ? comparator : undefined;
 16097        return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);
 16098      });
 16099  
 16100      /**
 16101       * Creates a duplicate-free version of an array, using
 16102       * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 16103       * for equality comparisons, in which only the first occurrence of each element
 16104       * is kept. The order of result values is determined by the order they occur
 16105       * in the array.
 16106       *
 16107       * @static
 16108       * @memberOf _
 16109       * @since 0.1.0
 16110       * @category Array
 16111       * @param {Array} array The array to inspect.
 16112       * @returns {Array} Returns the new duplicate free array.
 16113       * @example
 16114       *
 16115       * _.uniq([2, 1, 2]);
 16116       * // => [2, 1]
 16117       */
 16118      function uniq(array) {
 16119        return (array && array.length) ? baseUniq(array) : [];
 16120      }
 16121  
 16122      /**
 16123       * This method is like `_.uniq` except that it accepts `iteratee` which is
 16124       * invoked for each element in `array` to generate the criterion by which
 16125       * uniqueness is computed. The order of result values is determined by the
 16126       * order they occur in the array. The iteratee is invoked with one argument:
 16127       * (value).
 16128       *
 16129       * @static
 16130       * @memberOf _
 16131       * @since 4.0.0
 16132       * @category Array
 16133       * @param {Array} array The array to inspect.
 16134       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
 16135       * @returns {Array} Returns the new duplicate free array.
 16136       * @example
 16137       *
 16138       * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
 16139       * // => [2.1, 1.2]
 16140       *
 16141       * // The `_.property` iteratee shorthand.
 16142       * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
 16143       * // => [{ 'x': 1 }, { 'x': 2 }]
 16144       */
 16145      function uniqBy(array, iteratee) {
 16146        return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];
 16147      }
 16148  
 16149      /**
 16150       * This method is like `_.uniq` except that it accepts `comparator` which
 16151       * is invoked to compare elements of `array`. The order of result values is
 16152       * determined by the order they occur in the array.The comparator is invoked
 16153       * with two arguments: (arrVal, othVal).
 16154       *
 16155       * @static
 16156       * @memberOf _
 16157       * @since 4.0.0
 16158       * @category Array
 16159       * @param {Array} array The array to inspect.
 16160       * @param {Function} [comparator] The comparator invoked per element.
 16161       * @returns {Array} Returns the new duplicate free array.
 16162       * @example
 16163       *
 16164       * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
 16165       *
 16166       * _.uniqWith(objects, _.isEqual);
 16167       * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
 16168       */
 16169      function uniqWith(array, comparator) {
 16170        comparator = typeof comparator == 'function' ? comparator : undefined;
 16171        return (array && array.length) ? baseUniq(array, undefined, comparator) : [];
 16172      }
 16173  
 16174      /**
 16175       * This method is like `_.zip` except that it accepts an array of grouped
 16176       * elements and creates an array regrouping the elements to their pre-zip
 16177       * configuration.
 16178       *
 16179       * @static
 16180       * @memberOf _
 16181       * @since 1.2.0
 16182       * @category Array
 16183       * @param {Array} array The array of grouped elements to process.
 16184       * @returns {Array} Returns the new array of regrouped elements.
 16185       * @example
 16186       *
 16187       * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);
 16188       * // => [['a', 1, true], ['b', 2, false]]
 16189       *
 16190       * _.unzip(zipped);
 16191       * // => [['a', 'b'], [1, 2], [true, false]]
 16192       */
 16193      function unzip(array) {
 16194        if (!(array && array.length)) {
 16195          return [];
 16196        }
 16197        var length = 0;
 16198        array = arrayFilter(array, function(group) {
 16199          if (isArrayLikeObject(group)) {
 16200            length = nativeMax(group.length, length);
 16201            return true;
 16202          }
 16203        });
 16204        return baseTimes(length, function(index) {
 16205          return arrayMap(array, baseProperty(index));
 16206        });
 16207      }
 16208  
 16209      /**
 16210       * This method is like `_.unzip` except that it accepts `iteratee` to specify
 16211       * how regrouped values should be combined. The iteratee is invoked with the
 16212       * elements of each group: (...group).
 16213       *
 16214       * @static
 16215       * @memberOf _
 16216       * @since 3.8.0
 16217       * @category Array
 16218       * @param {Array} array The array of grouped elements to process.
 16219       * @param {Function} [iteratee=_.identity] The function to combine
 16220       *  regrouped values.
 16221       * @returns {Array} Returns the new array of regrouped elements.
 16222       * @example
 16223       *
 16224       * var zipped = _.zip([1, 2], [10, 20], [100, 200]);
 16225       * // => [[1, 10, 100], [2, 20, 200]]
 16226       *
 16227       * _.unzipWith(zipped, _.add);
 16228       * // => [3, 30, 300]
 16229       */
 16230      function unzipWith(array, iteratee) {
 16231        if (!(array && array.length)) {
 16232          return [];
 16233        }
 16234        var result = unzip(array);
 16235        if (iteratee == null) {
 16236          return result;
 16237        }
 16238        return arrayMap(result, function(group) {
 16239          return apply(iteratee, undefined, group);
 16240        });
 16241      }
 16242  
 16243      /**
 16244       * Creates an array excluding all given values using
 16245       * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 16246       * for equality comparisons.
 16247       *
 16248       * **Note:** Unlike `_.pull`, this method returns a new array.
 16249       *
 16250       * @static
 16251       * @memberOf _
 16252       * @since 0.1.0
 16253       * @category Array
 16254       * @param {Array} array The array to inspect.
 16255       * @param {...*} [values] The values to exclude.
 16256       * @returns {Array} Returns the new array of filtered values.
 16257       * @see _.difference, _.xor
 16258       * @example
 16259       *
 16260       * _.without([2, 1, 2, 3], 1, 2);
 16261       * // => [3]
 16262       */
 16263      var without = baseRest(function(array, values) {
 16264        return isArrayLikeObject(array)
 16265          ? baseDifference(array, values)
 16266          : [];
 16267      });
 16268  
 16269      /**
 16270       * Creates an array of unique values that is the
 16271       * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)
 16272       * of the given arrays. The order of result values is determined by the order
 16273       * they occur in the arrays.
 16274       *
 16275       * @static
 16276       * @memberOf _
 16277       * @since 2.4.0
 16278       * @category Array
 16279       * @param {...Array} [arrays] The arrays to inspect.
 16280       * @returns {Array} Returns the new array of filtered values.
 16281       * @see _.difference, _.without
 16282       * @example
 16283       *
 16284       * _.xor([2, 1], [2, 3]);
 16285       * // => [1, 3]
 16286       */
 16287      var xor = baseRest(function(arrays) {
 16288        return baseXor(arrayFilter(arrays, isArrayLikeObject));
 16289      });
 16290  
 16291      /**
 16292       * This method is like `_.xor` except that it accepts `iteratee` which is
 16293       * invoked for each element of each `arrays` to generate the criterion by
 16294       * which by which they're compared. The order of result values is determined
 16295       * by the order they occur in the arrays. The iteratee is invoked with one
 16296       * argument: (value).
 16297       *
 16298       * @static
 16299       * @memberOf _
 16300       * @since 4.0.0
 16301       * @category Array
 16302       * @param {...Array} [arrays] The arrays to inspect.
 16303       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
 16304       * @returns {Array} Returns the new array of filtered values.
 16305       * @example
 16306       *
 16307       * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);
 16308       * // => [1.2, 3.4]
 16309       *
 16310       * // The `_.property` iteratee shorthand.
 16311       * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
 16312       * // => [{ 'x': 2 }]
 16313       */
 16314      var xorBy = baseRest(function(arrays) {
 16315        var iteratee = last(arrays);
 16316        if (isArrayLikeObject(iteratee)) {
 16317          iteratee = undefined;
 16318        }
 16319        return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));
 16320      });
 16321  
 16322      /**
 16323       * This method is like `_.xor` except that it accepts `comparator` which is
 16324       * invoked to compare elements of `arrays`. The order of result values is
 16325       * determined by the order they occur in the arrays. The comparator is invoked
 16326       * with two arguments: (arrVal, othVal).
 16327       *
 16328       * @static
 16329       * @memberOf _
 16330       * @since 4.0.0
 16331       * @category Array
 16332       * @param {...Array} [arrays] The arrays to inspect.
 16333       * @param {Function} [comparator] The comparator invoked per element.
 16334       * @returns {Array} Returns the new array of filtered values.
 16335       * @example
 16336       *
 16337       * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
 16338       * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
 16339       *
 16340       * _.xorWith(objects, others, _.isEqual);
 16341       * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
 16342       */
 16343      var xorWith = baseRest(function(arrays) {
 16344        var comparator = last(arrays);
 16345        comparator = typeof comparator == 'function' ? comparator : undefined;
 16346        return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);
 16347      });
 16348  
 16349      /**
 16350       * Creates an array of grouped elements, the first of which contains the
 16351       * first elements of the given arrays, the second of which contains the
 16352       * second elements of the given arrays, and so on.
 16353       *
 16354       * @static
 16355       * @memberOf _
 16356       * @since 0.1.0
 16357       * @category Array
 16358       * @param {...Array} [arrays] The arrays to process.
 16359       * @returns {Array} Returns the new array of grouped elements.
 16360       * @example
 16361       *
 16362       * _.zip(['a', 'b'], [1, 2], [true, false]);
 16363       * // => [['a', 1, true], ['b', 2, false]]
 16364       */
 16365      var zip = baseRest(unzip);
 16366  
 16367      /**
 16368       * This method is like `_.fromPairs` except that it accepts two arrays,
 16369       * one of property identifiers and one of corresponding values.
 16370       *
 16371       * @static
 16372       * @memberOf _
 16373       * @since 0.4.0
 16374       * @category Array
 16375       * @param {Array} [props=[]] The property identifiers.
 16376       * @param {Array} [values=[]] The property values.
 16377       * @returns {Object} Returns the new object.
 16378       * @example
 16379       *
 16380       * _.zipObject(['a', 'b'], [1, 2]);
 16381       * // => { 'a': 1, 'b': 2 }
 16382       */
 16383      function zipObject(props, values) {
 16384        return baseZipObject(props || [], values || [], assignValue);
 16385      }
 16386  
 16387      /**
 16388       * This method is like `_.zipObject` except that it supports property paths.
 16389       *
 16390       * @static
 16391       * @memberOf _
 16392       * @since 4.1.0
 16393       * @category Array
 16394       * @param {Array} [props=[]] The property identifiers.
 16395       * @param {Array} [values=[]] The property values.
 16396       * @returns {Object} Returns the new object.
 16397       * @example
 16398       *
 16399       * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);
 16400       * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }
 16401       */
 16402      function zipObjectDeep(props, values) {
 16403        return baseZipObject(props || [], values || [], baseSet);
 16404      }
 16405  
 16406      /**
 16407       * This method is like `_.zip` except that it accepts `iteratee` to specify
 16408       * how grouped values should be combined. The iteratee is invoked with the
 16409       * elements of each group: (...group).
 16410       *
 16411       * @static
 16412       * @memberOf _
 16413       * @since 3.8.0
 16414       * @category Array
 16415       * @param {...Array} [arrays] The arrays to process.
 16416       * @param {Function} [iteratee=_.identity] The function to combine
 16417       *  grouped values.
 16418       * @returns {Array} Returns the new array of grouped elements.
 16419       * @example
 16420       *
 16421       * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {
 16422       *   return a + b + c;
 16423       * });
 16424       * // => [111, 222]
 16425       */
 16426      var zipWith = baseRest(function(arrays) {
 16427        var length = arrays.length,
 16428            iteratee = length > 1 ? arrays[length - 1] : undefined;
 16429  
 16430        iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;
 16431        return unzipWith(arrays, iteratee);
 16432      });
 16433  
 16434      /*------------------------------------------------------------------------*/
 16435  
 16436      /**
 16437       * Creates a `lodash` wrapper instance that wraps `value` with explicit method
 16438       * chain sequences enabled. The result of such sequences must be unwrapped
 16439       * with `_#value`.
 16440       *
 16441       * @static
 16442       * @memberOf _
 16443       * @since 1.3.0
 16444       * @category Seq
 16445       * @param {*} value The value to wrap.
 16446       * @returns {Object} Returns the new `lodash` wrapper instance.
 16447       * @example
 16448       *
 16449       * var users = [
 16450       *   { 'user': 'barney',  'age': 36 },
 16451       *   { 'user': 'fred',    'age': 40 },
 16452       *   { 'user': 'pebbles', 'age': 1 }
 16453       * ];
 16454       *
 16455       * var youngest = _
 16456       *   .chain(users)
 16457       *   .sortBy('age')
 16458       *   .map(function(o) {
 16459       *     return o.user + ' is ' + o.age;
 16460       *   })
 16461       *   .head()
 16462       *   .value();
 16463       * // => 'pebbles is 1'
 16464       */
 16465      function chain(value) {
 16466        var result = lodash(value);
 16467        result.__chain__ = true;
 16468        return result;
 16469      }
 16470  
 16471      /**
 16472       * This method invokes `interceptor` and returns `value`. The interceptor
 16473       * is invoked with one argument; (value). The purpose of this method is to
 16474       * "tap into" a method chain sequence in order to modify intermediate results.
 16475       *
 16476       * @static
 16477       * @memberOf _
 16478       * @since 0.1.0
 16479       * @category Seq
 16480       * @param {*} value The value to provide to `interceptor`.
 16481       * @param {Function} interceptor The function to invoke.
 16482       * @returns {*} Returns `value`.
 16483       * @example
 16484       *
 16485       * _([1, 2, 3])
 16486       *  .tap(function(array) {
 16487       *    // Mutate input array.
 16488       *    array.pop();
 16489       *  })
 16490       *  .reverse()
 16491       *  .value();
 16492       * // => [2, 1]
 16493       */
 16494      function tap(value, interceptor) {
 16495        interceptor(value);
 16496        return value;
 16497      }
 16498  
 16499      /**
 16500       * This method is like `_.tap` except that it returns the result of `interceptor`.
 16501       * The purpose of this method is to "pass thru" values replacing intermediate
 16502       * results in a method chain sequence.
 16503       *
 16504       * @static
 16505       * @memberOf _
 16506       * @since 3.0.0
 16507       * @category Seq
 16508       * @param {*} value The value to provide to `interceptor`.
 16509       * @param {Function} interceptor The function to invoke.
 16510       * @returns {*} Returns the result of `interceptor`.
 16511       * @example
 16512       *
 16513       * _('  abc  ')
 16514       *  .chain()
 16515       *  .trim()
 16516       *  .thru(function(value) {
 16517       *    return [value];
 16518       *  })
 16519       *  .value();
 16520       * // => ['abc']
 16521       */
 16522      function thru(value, interceptor) {
 16523        return interceptor(value);
 16524      }
 16525  
 16526      /**
 16527       * This method is the wrapper version of `_.at`.
 16528       *
 16529       * @name at
 16530       * @memberOf _
 16531       * @since 1.0.0
 16532       * @category Seq
 16533       * @param {...(string|string[])} [paths] The property paths to pick.
 16534       * @returns {Object} Returns the new `lodash` wrapper instance.
 16535       * @example
 16536       *
 16537       * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
 16538       *
 16539       * _(object).at(['a[0].b.c', 'a[1]']).value();
 16540       * // => [3, 4]
 16541       */
 16542      var wrapperAt = flatRest(function(paths) {
 16543        var length = paths.length,
 16544            start = length ? paths[0] : 0,
 16545            value = this.__wrapped__,
 16546            interceptor = function(object) { return baseAt(object, paths); };
 16547  
 16548        if (length > 1 || this.__actions__.length ||
 16549            !(value instanceof LazyWrapper) || !isIndex(start)) {
 16550          return this.thru(interceptor);
 16551        }
 16552        value = value.slice(start, +start + (length ? 1 : 0));
 16553        value.__actions__.push({
 16554          'func': thru,
 16555          'args': [interceptor],
 16556          'thisArg': undefined
 16557        });
 16558        return new LodashWrapper(value, this.__chain__).thru(function(array) {
 16559          if (length && !array.length) {
 16560            array.push(undefined);
 16561          }
 16562          return array;
 16563        });
 16564      });
 16565  
 16566      /**
 16567       * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.
 16568       *
 16569       * @name chain
 16570       * @memberOf _
 16571       * @since 0.1.0
 16572       * @category Seq
 16573       * @returns {Object} Returns the new `lodash` wrapper instance.
 16574       * @example
 16575       *
 16576       * var users = [
 16577       *   { 'user': 'barney', 'age': 36 },
 16578       *   { 'user': 'fred',   'age': 40 }
 16579       * ];
 16580       *
 16581       * // A sequence without explicit chaining.
 16582       * _(users).head();
 16583       * // => { 'user': 'barney', 'age': 36 }
 16584       *
 16585       * // A sequence with explicit chaining.
 16586       * _(users)
 16587       *   .chain()
 16588       *   .head()
 16589       *   .pick('user')
 16590       *   .value();
 16591       * // => { 'user': 'barney' }
 16592       */
 16593      function wrapperChain() {
 16594        return chain(this);
 16595      }
 16596  
 16597      /**
 16598       * Executes the chain sequence and returns the wrapped result.
 16599       *
 16600       * @name commit
 16601       * @memberOf _
 16602       * @since 3.2.0
 16603       * @category Seq
 16604       * @returns {Object} Returns the new `lodash` wrapper instance.
 16605       * @example
 16606       *
 16607       * var array = [1, 2];
 16608       * var wrapped = _(array).push(3);
 16609       *
 16610       * console.log(array);
 16611       * // => [1, 2]
 16612       *
 16613       * wrapped = wrapped.commit();
 16614       * console.log(array);
 16615       * // => [1, 2, 3]
 16616       *
 16617       * wrapped.last();
 16618       * // => 3
 16619       *
 16620       * console.log(array);
 16621       * // => [1, 2, 3]
 16622       */
 16623      function wrapperCommit() {
 16624        return new LodashWrapper(this.value(), this.__chain__);
 16625      }
 16626  
 16627      /**
 16628       * Gets the next value on a wrapped object following the
 16629       * [iterator protocol](https://mdn.io/iteration_protocols#iterator).
 16630       *
 16631       * @name next
 16632       * @memberOf _
 16633       * @since 4.0.0
 16634       * @category Seq
 16635       * @returns {Object} Returns the next iterator value.
 16636       * @example
 16637       *
 16638       * var wrapped = _([1, 2]);
 16639       *
 16640       * wrapped.next();
 16641       * // => { 'done': false, 'value': 1 }
 16642       *
 16643       * wrapped.next();
 16644       * // => { 'done': false, 'value': 2 }
 16645       *
 16646       * wrapped.next();
 16647       * // => { 'done': true, 'value': undefined }
 16648       */
 16649      function wrapperNext() {
 16650        if (this.__values__ === undefined) {
 16651          this.__values__ = toArray(this.value());
 16652        }
 16653        var done = this.__index__ >= this.__values__.length,
 16654            value = done ? undefined : this.__values__[this.__index__++];
 16655  
 16656        return { 'done': done, 'value': value };
 16657      }
 16658  
 16659      /**
 16660       * Enables the wrapper to be iterable.
 16661       *
 16662       * @name Symbol.iterator
 16663       * @memberOf _
 16664       * @since 4.0.0
 16665       * @category Seq
 16666       * @returns {Object} Returns the wrapper object.
 16667       * @example
 16668       *
 16669       * var wrapped = _([1, 2]);
 16670       *
 16671       * wrapped[Symbol.iterator]() === wrapped;
 16672       * // => true
 16673       *
 16674       * Array.from(wrapped);
 16675       * // => [1, 2]
 16676       */
 16677      function wrapperToIterator() {
 16678        return this;
 16679      }
 16680  
 16681      /**
 16682       * Creates a clone of the chain sequence planting `value` as the wrapped value.
 16683       *
 16684       * @name plant
 16685       * @memberOf _
 16686       * @since 3.2.0
 16687       * @category Seq
 16688       * @param {*} value The value to plant.
 16689       * @returns {Object} Returns the new `lodash` wrapper instance.
 16690       * @example
 16691       *
 16692       * function square(n) {
 16693       *   return n * n;
 16694       * }
 16695       *
 16696       * var wrapped = _([1, 2]).map(square);
 16697       * var other = wrapped.plant([3, 4]);
 16698       *
 16699       * other.value();
 16700       * // => [9, 16]
 16701       *
 16702       * wrapped.value();
 16703       * // => [1, 4]
 16704       */
 16705      function wrapperPlant(value) {
 16706        var result,
 16707            parent = this;
 16708  
 16709        while (parent instanceof baseLodash) {
 16710          var clone = wrapperClone(parent);
 16711          clone.__index__ = 0;
 16712          clone.__values__ = undefined;
 16713          if (result) {
 16714            previous.__wrapped__ = clone;
 16715          } else {
 16716            result = clone;
 16717          }
 16718          var previous = clone;
 16719          parent = parent.__wrapped__;
 16720        }
 16721        previous.__wrapped__ = value;
 16722        return result;
 16723      }
 16724  
 16725      /**
 16726       * This method is the wrapper version of `_.reverse`.
 16727       *
 16728       * **Note:** This method mutates the wrapped array.
 16729       *
 16730       * @name reverse
 16731       * @memberOf _
 16732       * @since 0.1.0
 16733       * @category Seq
 16734       * @returns {Object} Returns the new `lodash` wrapper instance.
 16735       * @example
 16736       *
 16737       * var array = [1, 2, 3];
 16738       *
 16739       * _(array).reverse().value()
 16740       * // => [3, 2, 1]
 16741       *
 16742       * console.log(array);
 16743       * // => [3, 2, 1]
 16744       */
 16745      function wrapperReverse() {
 16746        var value = this.__wrapped__;
 16747        if (value instanceof LazyWrapper) {
 16748          var wrapped = value;
 16749          if (this.__actions__.length) {
 16750            wrapped = new LazyWrapper(this);
 16751          }
 16752          wrapped = wrapped.reverse();
 16753          wrapped.__actions__.push({
 16754            'func': thru,
 16755            'args': [reverse],
 16756            'thisArg': undefined
 16757          });
 16758          return new LodashWrapper(wrapped, this.__chain__);
 16759        }
 16760        return this.thru(reverse);
 16761      }
 16762  
 16763      /**
 16764       * Executes the chain sequence to resolve the unwrapped value.
 16765       *
 16766       * @name value
 16767       * @memberOf _
 16768       * @since 0.1.0
 16769       * @alias toJSON, valueOf
 16770       * @category Seq
 16771       * @returns {*} Returns the resolved unwrapped value.
 16772       * @example
 16773       *
 16774       * _([1, 2, 3]).value();
 16775       * // => [1, 2, 3]
 16776       */
 16777      function wrapperValue() {
 16778        return baseWrapperValue(this.__wrapped__, this.__actions__);
 16779      }
 16780  
 16781      /*------------------------------------------------------------------------*/
 16782  
 16783      /**
 16784       * Creates an object composed of keys generated from the results of running
 16785       * each element of `collection` thru `iteratee`. The corresponding value of
 16786       * each key is the number of times the key was returned by `iteratee`. The
 16787       * iteratee is invoked with one argument: (value).
 16788       *
 16789       * @static
 16790       * @memberOf _
 16791       * @since 0.5.0
 16792       * @category Collection
 16793       * @param {Array|Object} collection The collection to iterate over.
 16794       * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
 16795       * @returns {Object} Returns the composed aggregate object.
 16796       * @example
 16797       *
 16798       * _.countBy([6.1, 4.2, 6.3], Math.floor);
 16799       * // => { '4': 1, '6': 2 }
 16800       *
 16801       * // The `_.property` iteratee shorthand.
 16802       * _.countBy(['one', 'two', 'three'], 'length');
 16803       * // => { '3': 2, '5': 1 }
 16804       */
 16805      var countBy = createAggregator(function(result, value, key) {
 16806        if (hasOwnProperty.call(result, key)) {
 16807          ++result[key];
 16808        } else {
 16809          baseAssignValue(result, key, 1);
 16810        }
 16811      });
 16812  
 16813      /**
 16814       * Checks if `predicate` returns truthy for **all** elements of `collection`.
 16815       * Iteration is stopped once `predicate` returns falsey. The predicate is
 16816       * invoked with three arguments: (value, index|key, collection).
 16817       *
 16818       * **Note:** This method returns `true` for
 16819       * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
 16820       * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
 16821       * elements of empty collections.
 16822       *
 16823       * @static
 16824       * @memberOf _
 16825       * @since 0.1.0
 16826       * @category Collection
 16827       * @param {Array|Object} collection The collection to iterate over.
 16828       * @param {Function} [predicate=_.identity] The function invoked per iteration.
 16829       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 16830       * @returns {boolean} Returns `true` if all elements pass the predicate check,
 16831       *  else `false`.
 16832       * @example
 16833       *
 16834       * _.every([true, 1, null, 'yes'], Boolean);
 16835       * // => false
 16836       *
 16837       * var users = [
 16838       *   { 'user': 'barney', 'age': 36, 'active': false },
 16839       *   { 'user': 'fred',   'age': 40, 'active': false }
 16840       * ];
 16841       *
 16842       * // The `_.matches` iteratee shorthand.
 16843       * _.every(users, { 'user': 'barney', 'active': false });
 16844       * // => false
 16845       *
 16846       * // The `_.matchesProperty` iteratee shorthand.
 16847       * _.every(users, ['active', false]);
 16848       * // => true
 16849       *
 16850       * // The `_.property` iteratee shorthand.
 16851       * _.every(users, 'active');
 16852       * // => false
 16853       */
 16854      function every(collection, predicate, guard) {
 16855        var func = isArray(collection) ? arrayEvery : baseEvery;
 16856        if (guard && isIterateeCall(collection, predicate, guard)) {
 16857          predicate = undefined;
 16858        }
 16859        return func(collection, getIteratee(predicate, 3));
 16860      }
 16861  
 16862      /**
 16863       * Iterates over elements of `collection`, returning an array of all elements
 16864       * `predicate` returns truthy for. The predicate is invoked with three
 16865       * arguments: (value, index|key, collection).
 16866       *
 16867       * **Note:** Unlike `_.remove`, this method returns a new array.
 16868       *
 16869       * @static
 16870       * @memberOf _
 16871       * @since 0.1.0
 16872       * @category Collection
 16873       * @param {Array|Object} collection The collection to iterate over.
 16874       * @param {Function} [predicate=_.identity] The function invoked per iteration.
 16875       * @returns {Array} Returns the new filtered array.
 16876       * @see _.reject
 16877       * @example
 16878       *
 16879       * var users = [
 16880       *   { 'user': 'barney', 'age': 36, 'active': true },
 16881       *   { 'user': 'fred',   'age': 40, 'active': false }
 16882       * ];
 16883       *
 16884       * _.filter(users, function(o) { return !o.active; });
 16885       * // => objects for ['fred']
 16886       *
 16887       * // The `_.matches` iteratee shorthand.
 16888       * _.filter(users, { 'age': 36, 'active': true });
 16889       * // => objects for ['barney']
 16890       *
 16891       * // The `_.matchesProperty` iteratee shorthand.
 16892       * _.filter(users, ['active', false]);
 16893       * // => objects for ['fred']
 16894       *
 16895       * // The `_.property` iteratee shorthand.
 16896       * _.filter(users, 'active');
 16897       * // => objects for ['barney']
 16898       */
 16899      function filter(collection, predicate) {
 16900        var func = isArray(collection) ? arrayFilter : baseFilter;
 16901        return func(collection, getIteratee(predicate, 3));
 16902      }
 16903  
 16904      /**
 16905       * Iterates over elements of `collection`, returning the first element
 16906       * `predicate` returns truthy for. The predicate is invoked with three
 16907       * arguments: (value, index|key, collection).
 16908       *
 16909       * @static
 16910       * @memberOf _
 16911       * @since 0.1.0
 16912       * @category Collection
 16913       * @param {Array|Object} collection The collection to inspect.
 16914       * @param {Function} [predicate=_.identity] The function invoked per iteration.
 16915       * @param {number} [fromIndex=0] The index to search from.
 16916       * @returns {*} Returns the matched element, else `undefined`.
 16917       * @example
 16918       *
 16919       * var users = [
 16920       *   { 'user': 'barney',  'age': 36, 'active': true },
 16921       *   { 'user': 'fred',    'age': 40, 'active': false },
 16922       *   { 'user': 'pebbles', 'age': 1,  'active': true }
 16923       * ];
 16924       *
 16925       * _.find(users, function(o) { return o.age < 40; });
 16926       * // => object for 'barney'
 16927       *
 16928       * // The `_.matches` iteratee shorthand.
 16929       * _.find(users, { 'age': 1, 'active': true });
 16930       * // => object for 'pebbles'
 16931       *
 16932       * // The `_.matchesProperty` iteratee shorthand.
 16933       * _.find(users, ['active', false]);
 16934       * // => object for 'fred'
 16935       *
 16936       * // The `_.property` iteratee shorthand.
 16937       * _.find(users, 'active');
 16938       * // => object for 'barney'
 16939       */
 16940      var find = createFind(findIndex);
 16941  
 16942      /**
 16943       * This method is like `_.find` except that it iterates over elements of
 16944       * `collection` from right to left.
 16945       *
 16946       * @static
 16947       * @memberOf _
 16948       * @since 2.0.0
 16949       * @category Collection
 16950       * @param {Array|Object} collection The collection to inspect.
 16951       * @param {Function} [predicate=_.identity] The function invoked per iteration.
 16952       * @param {number} [fromIndex=collection.length-1] The index to search from.
 16953       * @returns {*} Returns the matched element, else `undefined`.
 16954       * @example
 16955       *
 16956       * _.findLast([1, 2, 3, 4], function(n) {
 16957       *   return n % 2 == 1;
 16958       * });
 16959       * // => 3
 16960       */
 16961      var findLast = createFind(findLastIndex);
 16962  
 16963      /**
 16964       * Creates a flattened array of values by running each element in `collection`
 16965       * thru `iteratee` and flattening the mapped results. The iteratee is invoked
 16966       * with three arguments: (value, index|key, collection).
 16967       *
 16968       * @static
 16969       * @memberOf _
 16970       * @since 4.0.0
 16971       * @category Collection
 16972       * @param {Array|Object} collection The collection to iterate over.
 16973       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 16974       * @returns {Array} Returns the new flattened array.
 16975       * @example
 16976       *
 16977       * function duplicate(n) {
 16978       *   return [n, n];
 16979       * }
 16980       *
 16981       * _.flatMap([1, 2], duplicate);
 16982       * // => [1, 1, 2, 2]
 16983       */
 16984      function flatMap(collection, iteratee) {
 16985        return baseFlatten(map(collection, iteratee), 1);
 16986      }
 16987  
 16988      /**
 16989       * This method is like `_.flatMap` except that it recursively flattens the
 16990       * mapped results.
 16991       *
 16992       * @static
 16993       * @memberOf _
 16994       * @since 4.7.0
 16995       * @category Collection
 16996       * @param {Array|Object} collection The collection to iterate over.
 16997       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 16998       * @returns {Array} Returns the new flattened array.
 16999       * @example
 17000       *
 17001       * function duplicate(n) {
 17002       *   return [[[n, n]]];
 17003       * }
 17004       *
 17005       * _.flatMapDeep([1, 2], duplicate);
 17006       * // => [1, 1, 2, 2]
 17007       */
 17008      function flatMapDeep(collection, iteratee) {
 17009        return baseFlatten(map(collection, iteratee), INFINITY);
 17010      }
 17011  
 17012      /**
 17013       * This method is like `_.flatMap` except that it recursively flattens the
 17014       * mapped results up to `depth` times.
 17015       *
 17016       * @static
 17017       * @memberOf _
 17018       * @since 4.7.0
 17019       * @category Collection
 17020       * @param {Array|Object} collection The collection to iterate over.
 17021       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 17022       * @param {number} [depth=1] The maximum recursion depth.
 17023       * @returns {Array} Returns the new flattened array.
 17024       * @example
 17025       *
 17026       * function duplicate(n) {
 17027       *   return [[[n, n]]];
 17028       * }
 17029       *
 17030       * _.flatMapDepth([1, 2], duplicate, 2);
 17031       * // => [[1, 1], [2, 2]]
 17032       */
 17033      function flatMapDepth(collection, iteratee, depth) {
 17034        depth = depth === undefined ? 1 : toInteger(depth);
 17035        return baseFlatten(map(collection, iteratee), depth);
 17036      }
 17037  
 17038      /**
 17039       * Iterates over elements of `collection` and invokes `iteratee` for each element.
 17040       * The iteratee is invoked with three arguments: (value, index|key, collection).
 17041       * Iteratee functions may exit iteration early by explicitly returning `false`.
 17042       *
 17043       * **Note:** As with other "Collections" methods, objects with a "length"
 17044       * property are iterated like arrays. To avoid this behavior use `_.forIn`
 17045       * or `_.forOwn` for object iteration.
 17046       *
 17047       * @static
 17048       * @memberOf _
 17049       * @since 0.1.0
 17050       * @alias each
 17051       * @category Collection
 17052       * @param {Array|Object} collection The collection to iterate over.
 17053       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 17054       * @returns {Array|Object} Returns `collection`.
 17055       * @see _.forEachRight
 17056       * @example
 17057       *
 17058       * _.forEach([1, 2], function(value) {
 17059       *   console.log(value);
 17060       * });
 17061       * // => Logs `1` then `2`.
 17062       *
 17063       * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
 17064       *   console.log(key);
 17065       * });
 17066       * // => Logs 'a' then 'b' (iteration order is not guaranteed).
 17067       */
 17068      function forEach(collection, iteratee) {
 17069        var func = isArray(collection) ? arrayEach : baseEach;
 17070        return func(collection, getIteratee(iteratee, 3));
 17071      }
 17072  
 17073      /**
 17074       * This method is like `_.forEach` except that it iterates over elements of
 17075       * `collection` from right to left.
 17076       *
 17077       * @static
 17078       * @memberOf _
 17079       * @since 2.0.0
 17080       * @alias eachRight
 17081       * @category Collection
 17082       * @param {Array|Object} collection The collection to iterate over.
 17083       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 17084       * @returns {Array|Object} Returns `collection`.
 17085       * @see _.forEach
 17086       * @example
 17087       *
 17088       * _.forEachRight([1, 2], function(value) {
 17089       *   console.log(value);
 17090       * });
 17091       * // => Logs `2` then `1`.
 17092       */
 17093      function forEachRight(collection, iteratee) {
 17094        var func = isArray(collection) ? arrayEachRight : baseEachRight;
 17095        return func(collection, getIteratee(iteratee, 3));
 17096      }
 17097  
 17098      /**
 17099       * Creates an object composed of keys generated from the results of running
 17100       * each element of `collection` thru `iteratee`. The order of grouped values
 17101       * is determined by the order they occur in `collection`. The corresponding
 17102       * value of each key is an array of elements responsible for generating the
 17103       * key. The iteratee is invoked with one argument: (value).
 17104       *
 17105       * @static
 17106       * @memberOf _
 17107       * @since 0.1.0
 17108       * @category Collection
 17109       * @param {Array|Object} collection The collection to iterate over.
 17110       * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
 17111       * @returns {Object} Returns the composed aggregate object.
 17112       * @example
 17113       *
 17114       * _.groupBy([6.1, 4.2, 6.3], Math.floor);
 17115       * // => { '4': [4.2], '6': [6.1, 6.3] }
 17116       *
 17117       * // The `_.property` iteratee shorthand.
 17118       * _.groupBy(['one', 'two', 'three'], 'length');
 17119       * // => { '3': ['one', 'two'], '5': ['three'] }
 17120       */
 17121      var groupBy = createAggregator(function(result, value, key) {
 17122        if (hasOwnProperty.call(result, key)) {
 17123          result[key].push(value);
 17124        } else {
 17125          baseAssignValue(result, key, [value]);
 17126        }
 17127      });
 17128  
 17129      /**
 17130       * Checks if `value` is in `collection`. If `collection` is a string, it's
 17131       * checked for a substring of `value`, otherwise
 17132       * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 17133       * is used for equality comparisons. If `fromIndex` is negative, it's used as
 17134       * the offset from the end of `collection`.
 17135       *
 17136       * @static
 17137       * @memberOf _
 17138       * @since 0.1.0
 17139       * @category Collection
 17140       * @param {Array|Object|string} collection The collection to inspect.
 17141       * @param {*} value The value to search for.
 17142       * @param {number} [fromIndex=0] The index to search from.
 17143       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
 17144       * @returns {boolean} Returns `true` if `value` is found, else `false`.
 17145       * @example
 17146       *
 17147       * _.includes([1, 2, 3], 1);
 17148       * // => true
 17149       *
 17150       * _.includes([1, 2, 3], 1, 2);
 17151       * // => false
 17152       *
 17153       * _.includes({ 'a': 1, 'b': 2 }, 1);
 17154       * // => true
 17155       *
 17156       * _.includes('abcd', 'bc');
 17157       * // => true
 17158       */
 17159      function includes(collection, value, fromIndex, guard) {
 17160        collection = isArrayLike(collection) ? collection : values(collection);
 17161        fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;
 17162  
 17163        var length = collection.length;
 17164        if (fromIndex < 0) {
 17165          fromIndex = nativeMax(length + fromIndex, 0);
 17166        }
 17167        return isString(collection)
 17168          ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)
 17169          : (!!length && baseIndexOf(collection, value, fromIndex) > -1);
 17170      }
 17171  
 17172      /**
 17173       * Invokes the method at `path` of each element in `collection`, returning
 17174       * an array of the results of each invoked method. Any additional arguments
 17175       * are provided to each invoked method. If `path` is a function, it's invoked
 17176       * for, and `this` bound to, each element in `collection`.
 17177       *
 17178       * @static
 17179       * @memberOf _
 17180       * @since 4.0.0
 17181       * @category Collection
 17182       * @param {Array|Object} collection The collection to iterate over.
 17183       * @param {Array|Function|string} path The path of the method to invoke or
 17184       *  the function invoked per iteration.
 17185       * @param {...*} [args] The arguments to invoke each method with.
 17186       * @returns {Array} Returns the array of results.
 17187       * @example
 17188       *
 17189       * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');
 17190       * // => [[1, 5, 7], [1, 2, 3]]
 17191       *
 17192       * _.invokeMap([123, 456], String.prototype.split, '');
 17193       * // => [['1', '2', '3'], ['4', '5', '6']]
 17194       */
 17195      var invokeMap = baseRest(function(collection, path, args) {
 17196        var index = -1,
 17197            isFunc = typeof path == 'function',
 17198            result = isArrayLike(collection) ? Array(collection.length) : [];
 17199  
 17200        baseEach(collection, function(value) {
 17201          result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
 17202        });
 17203        return result;
 17204      });
 17205  
 17206      /**
 17207       * Creates an object composed of keys generated from the results of running
 17208       * each element of `collection` thru `iteratee`. The corresponding value of
 17209       * each key is the last element responsible for generating the key. The
 17210       * iteratee is invoked with one argument: (value).
 17211       *
 17212       * @static
 17213       * @memberOf _
 17214       * @since 4.0.0
 17215       * @category Collection
 17216       * @param {Array|Object} collection The collection to iterate over.
 17217       * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
 17218       * @returns {Object} Returns the composed aggregate object.
 17219       * @example
 17220       *
 17221       * var array = [
 17222       *   { 'dir': 'left', 'code': 97 },
 17223       *   { 'dir': 'right', 'code': 100 }
 17224       * ];
 17225       *
 17226       * _.keyBy(array, function(o) {
 17227       *   return String.fromCharCode(o.code);
 17228       * });
 17229       * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
 17230       *
 17231       * _.keyBy(array, 'dir');
 17232       * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
 17233       */
 17234      var keyBy = createAggregator(function(result, value, key) {
 17235        baseAssignValue(result, key, value);
 17236      });
 17237  
 17238      /**
 17239       * Creates an array of values by running each element in `collection` thru
 17240       * `iteratee`. The iteratee is invoked with three arguments:
 17241       * (value, index|key, collection).
 17242       *
 17243       * Many lodash methods are guarded to work as iteratees for methods like
 17244       * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
 17245       *
 17246       * The guarded methods are:
 17247       * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
 17248       * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
 17249       * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
 17250       * `template`, `trim`, `trimEnd`, `trimStart`, and `words`
 17251       *
 17252       * @static
 17253       * @memberOf _
 17254       * @since 0.1.0
 17255       * @category Collection
 17256       * @param {Array|Object} collection The collection to iterate over.
 17257       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 17258       * @returns {Array} Returns the new mapped array.
 17259       * @example
 17260       *
 17261       * function square(n) {
 17262       *   return n * n;
 17263       * }
 17264       *
 17265       * _.map([4, 8], square);
 17266       * // => [16, 64]
 17267       *
 17268       * _.map({ 'a': 4, 'b': 8 }, square);
 17269       * // => [16, 64] (iteration order is not guaranteed)
 17270       *
 17271       * var users = [
 17272       *   { 'user': 'barney' },
 17273       *   { 'user': 'fred' }
 17274       * ];
 17275       *
 17276       * // The `_.property` iteratee shorthand.
 17277       * _.map(users, 'user');
 17278       * // => ['barney', 'fred']
 17279       */
 17280      function map(collection, iteratee) {
 17281        var func = isArray(collection) ? arrayMap : baseMap;
 17282        return func(collection, getIteratee(iteratee, 3));
 17283      }
 17284  
 17285      /**
 17286       * This method is like `_.sortBy` except that it allows specifying the sort
 17287       * orders of the iteratees to sort by. If `orders` is unspecified, all values
 17288       * are sorted in ascending order. Otherwise, specify an order of "desc" for
 17289       * descending or "asc" for ascending sort order of corresponding values.
 17290       *
 17291       * @static
 17292       * @memberOf _
 17293       * @since 4.0.0
 17294       * @category Collection
 17295       * @param {Array|Object} collection The collection to iterate over.
 17296       * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]
 17297       *  The iteratees to sort by.
 17298       * @param {string[]} [orders] The sort orders of `iteratees`.
 17299       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
 17300       * @returns {Array} Returns the new sorted array.
 17301       * @example
 17302       *
 17303       * var users = [
 17304       *   { 'user': 'fred',   'age': 48 },
 17305       *   { 'user': 'barney', 'age': 34 },
 17306       *   { 'user': 'fred',   'age': 40 },
 17307       *   { 'user': 'barney', 'age': 36 }
 17308       * ];
 17309       *
 17310       * // Sort by `user` in ascending order and by `age` in descending order.
 17311       * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
 17312       * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
 17313       */
 17314      function orderBy(collection, iteratees, orders, guard) {
 17315        if (collection == null) {
 17316          return [];
 17317        }
 17318        if (!isArray(iteratees)) {
 17319          iteratees = iteratees == null ? [] : [iteratees];
 17320        }
 17321        orders = guard ? undefined : orders;
 17322        if (!isArray(orders)) {
 17323          orders = orders == null ? [] : [orders];
 17324        }
 17325        return baseOrderBy(collection, iteratees, orders);
 17326      }
 17327  
 17328      /**
 17329       * Creates an array of elements split into two groups, the first of which
 17330       * contains elements `predicate` returns truthy for, the second of which
 17331       * contains elements `predicate` returns falsey for. The predicate is
 17332       * invoked with one argument: (value).
 17333       *
 17334       * @static
 17335       * @memberOf _
 17336       * @since 3.0.0
 17337       * @category Collection
 17338       * @param {Array|Object} collection The collection to iterate over.
 17339       * @param {Function} [predicate=_.identity] The function invoked per iteration.
 17340       * @returns {Array} Returns the array of grouped elements.
 17341       * @example
 17342       *
 17343       * var users = [
 17344       *   { 'user': 'barney',  'age': 36, 'active': false },
 17345       *   { 'user': 'fred',    'age': 40, 'active': true },
 17346       *   { 'user': 'pebbles', 'age': 1,  'active': false }
 17347       * ];
 17348       *
 17349       * _.partition(users, function(o) { return o.active; });
 17350       * // => objects for [['fred'], ['barney', 'pebbles']]
 17351       *
 17352       * // The `_.matches` iteratee shorthand.
 17353       * _.partition(users, { 'age': 1, 'active': false });
 17354       * // => objects for [['pebbles'], ['barney', 'fred']]
 17355       *
 17356       * // The `_.matchesProperty` iteratee shorthand.
 17357       * _.partition(users, ['active', false]);
 17358       * // => objects for [['barney', 'pebbles'], ['fred']]
 17359       *
 17360       * // The `_.property` iteratee shorthand.
 17361       * _.partition(users, 'active');
 17362       * // => objects for [['fred'], ['barney', 'pebbles']]
 17363       */
 17364      var partition = createAggregator(function(result, value, key) {
 17365        result[key ? 0 : 1].push(value);
 17366      }, function() { return [[], []]; });
 17367  
 17368      /**
 17369       * Reduces `collection` to a value which is the accumulated result of running
 17370       * each element in `collection` thru `iteratee`, where each successive
 17371       * invocation is supplied the return value of the previous. If `accumulator`
 17372       * is not given, the first element of `collection` is used as the initial
 17373       * value. The iteratee is invoked with four arguments:
 17374       * (accumulator, value, index|key, collection).
 17375       *
 17376       * Many lodash methods are guarded to work as iteratees for methods like
 17377       * `_.reduce`, `_.reduceRight`, and `_.transform`.
 17378       *
 17379       * The guarded methods are:
 17380       * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
 17381       * and `sortBy`
 17382       *
 17383       * @static
 17384       * @memberOf _
 17385       * @since 0.1.0
 17386       * @category Collection
 17387       * @param {Array|Object} collection The collection to iterate over.
 17388       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 17389       * @param {*} [accumulator] The initial value.
 17390       * @returns {*} Returns the accumulated value.
 17391       * @see _.reduceRight
 17392       * @example
 17393       *
 17394       * _.reduce([1, 2], function(sum, n) {
 17395       *   return sum + n;
 17396       * }, 0);
 17397       * // => 3
 17398       *
 17399       * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
 17400       *   (result[value] || (result[value] = [])).push(key);
 17401       *   return result;
 17402       * }, {});
 17403       * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
 17404       */
 17405      function reduce(collection, iteratee, accumulator) {
 17406        var func = isArray(collection) ? arrayReduce : baseReduce,
 17407            initAccum = arguments.length < 3;
 17408  
 17409        return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);
 17410      }
 17411  
 17412      /**
 17413       * This method is like `_.reduce` except that it iterates over elements of
 17414       * `collection` from right to left.
 17415       *
 17416       * @static
 17417       * @memberOf _
 17418       * @since 0.1.0
 17419       * @category Collection
 17420       * @param {Array|Object} collection The collection to iterate over.
 17421       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 17422       * @param {*} [accumulator] The initial value.
 17423       * @returns {*} Returns the accumulated value.
 17424       * @see _.reduce
 17425       * @example
 17426       *
 17427       * var array = [[0, 1], [2, 3], [4, 5]];
 17428       *
 17429       * _.reduceRight(array, function(flattened, other) {
 17430       *   return flattened.concat(other);
 17431       * }, []);
 17432       * // => [4, 5, 2, 3, 0, 1]
 17433       */
 17434      function reduceRight(collection, iteratee, accumulator) {
 17435        var func = isArray(collection) ? arrayReduceRight : baseReduce,
 17436            initAccum = arguments.length < 3;
 17437  
 17438        return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);
 17439      }
 17440  
 17441      /**
 17442       * The opposite of `_.filter`; this method returns the elements of `collection`
 17443       * that `predicate` does **not** return truthy for.
 17444       *
 17445       * @static
 17446       * @memberOf _
 17447       * @since 0.1.0
 17448       * @category Collection
 17449       * @param {Array|Object} collection The collection to iterate over.
 17450       * @param {Function} [predicate=_.identity] The function invoked per iteration.
 17451       * @returns {Array} Returns the new filtered array.
 17452       * @see _.filter
 17453       * @example
 17454       *
 17455       * var users = [
 17456       *   { 'user': 'barney', 'age': 36, 'active': false },
 17457       *   { 'user': 'fred',   'age': 40, 'active': true }
 17458       * ];
 17459       *
 17460       * _.reject(users, function(o) { return !o.active; });
 17461       * // => objects for ['fred']
 17462       *
 17463       * // The `_.matches` iteratee shorthand.
 17464       * _.reject(users, { 'age': 40, 'active': true });
 17465       * // => objects for ['barney']
 17466       *
 17467       * // The `_.matchesProperty` iteratee shorthand.
 17468       * _.reject(users, ['active', false]);
 17469       * // => objects for ['fred']
 17470       *
 17471       * // The `_.property` iteratee shorthand.
 17472       * _.reject(users, 'active');
 17473       * // => objects for ['barney']
 17474       */
 17475      function reject(collection, predicate) {
 17476        var func = isArray(collection) ? arrayFilter : baseFilter;
 17477        return func(collection, negate(getIteratee(predicate, 3)));
 17478      }
 17479  
 17480      /**
 17481       * Gets a random element from `collection`.
 17482       *
 17483       * @static
 17484       * @memberOf _
 17485       * @since 2.0.0
 17486       * @category Collection
 17487       * @param {Array|Object} collection The collection to sample.
 17488       * @returns {*} Returns the random element.
 17489       * @example
 17490       *
 17491       * _.sample([1, 2, 3, 4]);
 17492       * // => 2
 17493       */
 17494      function sample(collection) {
 17495        var func = isArray(collection) ? arraySample : baseSample;
 17496        return func(collection);
 17497      }
 17498  
 17499      /**
 17500       * Gets `n` random elements at unique keys from `collection` up to the
 17501       * size of `collection`.
 17502       *
 17503       * @static
 17504       * @memberOf _
 17505       * @since 4.0.0
 17506       * @category Collection
 17507       * @param {Array|Object} collection The collection to sample.
 17508       * @param {number} [n=1] The number of elements to sample.
 17509       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 17510       * @returns {Array} Returns the random elements.
 17511       * @example
 17512       *
 17513       * _.sampleSize([1, 2, 3], 2);
 17514       * // => [3, 1]
 17515       *
 17516       * _.sampleSize([1, 2, 3], 4);
 17517       * // => [2, 3, 1]
 17518       */
 17519      function sampleSize(collection, n, guard) {
 17520        if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {
 17521          n = 1;
 17522        } else {
 17523          n = toInteger(n);
 17524        }
 17525        var func = isArray(collection) ? arraySampleSize : baseSampleSize;
 17526        return func(collection, n);
 17527      }
 17528  
 17529      /**
 17530       * Creates an array of shuffled values, using a version of the
 17531       * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).
 17532       *
 17533       * @static
 17534       * @memberOf _
 17535       * @since 0.1.0
 17536       * @category Collection
 17537       * @param {Array|Object} collection The collection to shuffle.
 17538       * @returns {Array} Returns the new shuffled array.
 17539       * @example
 17540       *
 17541       * _.shuffle([1, 2, 3, 4]);
 17542       * // => [4, 1, 3, 2]
 17543       */
 17544      function shuffle(collection) {
 17545        var func = isArray(collection) ? arrayShuffle : baseShuffle;
 17546        return func(collection);
 17547      }
 17548  
 17549      /**
 17550       * Gets the size of `collection` by returning its length for array-like
 17551       * values or the number of own enumerable string keyed properties for objects.
 17552       *
 17553       * @static
 17554       * @memberOf _
 17555       * @since 0.1.0
 17556       * @category Collection
 17557       * @param {Array|Object|string} collection The collection to inspect.
 17558       * @returns {number} Returns the collection size.
 17559       * @example
 17560       *
 17561       * _.size([1, 2, 3]);
 17562       * // => 3
 17563       *
 17564       * _.size({ 'a': 1, 'b': 2 });
 17565       * // => 2
 17566       *
 17567       * _.size('pebbles');
 17568       * // => 7
 17569       */
 17570      function size(collection) {
 17571        if (collection == null) {
 17572          return 0;
 17573        }
 17574        if (isArrayLike(collection)) {
 17575          return isString(collection) ? stringSize(collection) : collection.length;
 17576        }
 17577        var tag = getTag(collection);
 17578        if (tag == mapTag || tag == setTag) {
 17579          return collection.size;
 17580        }
 17581        return baseKeys(collection).length;
 17582      }
 17583  
 17584      /**
 17585       * Checks if `predicate` returns truthy for **any** element of `collection`.
 17586       * Iteration is stopped once `predicate` returns truthy. The predicate is
 17587       * invoked with three arguments: (value, index|key, collection).
 17588       *
 17589       * @static
 17590       * @memberOf _
 17591       * @since 0.1.0
 17592       * @category Collection
 17593       * @param {Array|Object} collection The collection to iterate over.
 17594       * @param {Function} [predicate=_.identity] The function invoked per iteration.
 17595       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 17596       * @returns {boolean} Returns `true` if any element passes the predicate check,
 17597       *  else `false`.
 17598       * @example
 17599       *
 17600       * _.some([null, 0, 'yes', false], Boolean);
 17601       * // => true
 17602       *
 17603       * var users = [
 17604       *   { 'user': 'barney', 'active': true },
 17605       *   { 'user': 'fred',   'active': false }
 17606       * ];
 17607       *
 17608       * // The `_.matches` iteratee shorthand.
 17609       * _.some(users, { 'user': 'barney', 'active': false });
 17610       * // => false
 17611       *
 17612       * // The `_.matchesProperty` iteratee shorthand.
 17613       * _.some(users, ['active', false]);
 17614       * // => true
 17615       *
 17616       * // The `_.property` iteratee shorthand.
 17617       * _.some(users, 'active');
 17618       * // => true
 17619       */
 17620      function some(collection, predicate, guard) {
 17621        var func = isArray(collection) ? arraySome : baseSome;
 17622        if (guard && isIterateeCall(collection, predicate, guard)) {
 17623          predicate = undefined;
 17624        }
 17625        return func(collection, getIteratee(predicate, 3));
 17626      }
 17627  
 17628      /**
 17629       * Creates an array of elements, sorted in ascending order by the results of
 17630       * running each element in a collection thru each iteratee. This method
 17631       * performs a stable sort, that is, it preserves the original sort order of
 17632       * equal elements. The iteratees are invoked with one argument: (value).
 17633       *
 17634       * @static
 17635       * @memberOf _
 17636       * @since 0.1.0
 17637       * @category Collection
 17638       * @param {Array|Object} collection The collection to iterate over.
 17639       * @param {...(Function|Function[])} [iteratees=[_.identity]]
 17640       *  The iteratees to sort by.
 17641       * @returns {Array} Returns the new sorted array.
 17642       * @example
 17643       *
 17644       * var users = [
 17645       *   { 'user': 'fred',   'age': 48 },
 17646       *   { 'user': 'barney', 'age': 36 },
 17647       *   { 'user': 'fred',   'age': 40 },
 17648       *   { 'user': 'barney', 'age': 34 }
 17649       * ];
 17650       *
 17651       * _.sortBy(users, [function(o) { return o.user; }]);
 17652       * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
 17653       *
 17654       * _.sortBy(users, ['user', 'age']);
 17655       * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]
 17656       */
 17657      var sortBy = baseRest(function(collection, iteratees) {
 17658        if (collection == null) {
 17659          return [];
 17660        }
 17661        var length = iteratees.length;
 17662        if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
 17663          iteratees = [];
 17664        } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
 17665          iteratees = [iteratees[0]];
 17666        }
 17667        return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
 17668      });
 17669  
 17670      /*------------------------------------------------------------------------*/
 17671  
 17672      /**
 17673       * Gets the timestamp of the number of milliseconds that have elapsed since
 17674       * the Unix epoch (1 January 1970 00:00:00 UTC).
 17675       *
 17676       * @static
 17677       * @memberOf _
 17678       * @since 2.4.0
 17679       * @category Date
 17680       * @returns {number} Returns the timestamp.
 17681       * @example
 17682       *
 17683       * _.defer(function(stamp) {
 17684       *   console.log(_.now() - stamp);
 17685       * }, _.now());
 17686       * // => Logs the number of milliseconds it took for the deferred invocation.
 17687       */
 17688      var now = ctxNow || function() {
 17689        return root.Date.now();
 17690      };
 17691  
 17692      /*------------------------------------------------------------------------*/
 17693  
 17694      /**
 17695       * The opposite of `_.before`; this method creates a function that invokes
 17696       * `func` once it's called `n` or more times.
 17697       *
 17698       * @static
 17699       * @memberOf _
 17700       * @since 0.1.0
 17701       * @category Function
 17702       * @param {number} n The number of calls before `func` is invoked.
 17703       * @param {Function} func The function to restrict.
 17704       * @returns {Function} Returns the new restricted function.
 17705       * @example
 17706       *
 17707       * var saves = ['profile', 'settings'];
 17708       *
 17709       * var done = _.after(saves.length, function() {
 17710       *   console.log('done saving!');
 17711       * });
 17712       *
 17713       * _.forEach(saves, function(type) {
 17714       *   asyncSave({ 'type': type, 'complete': done });
 17715       * });
 17716       * // => Logs 'done saving!' after the two async saves have completed.
 17717       */
 17718      function after(n, func) {
 17719        if (typeof func != 'function') {
 17720          throw new TypeError(FUNC_ERROR_TEXT);
 17721        }
 17722        n = toInteger(n);
 17723        return function() {
 17724          if (--n < 1) {
 17725            return func.apply(this, arguments);
 17726          }
 17727        };
 17728      }
 17729  
 17730      /**
 17731       * Creates a function that invokes `func`, with up to `n` arguments,
 17732       * ignoring any additional arguments.
 17733       *
 17734       * @static
 17735       * @memberOf _
 17736       * @since 3.0.0
 17737       * @category Function
 17738       * @param {Function} func The function to cap arguments for.
 17739       * @param {number} [n=func.length] The arity cap.
 17740       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 17741       * @returns {Function} Returns the new capped function.
 17742       * @example
 17743       *
 17744       * _.map(['6', '8', '10'], _.ary(parseInt, 1));
 17745       * // => [6, 8, 10]
 17746       */
 17747      function ary(func, n, guard) {
 17748        n = guard ? undefined : n;
 17749        n = (func && n == null) ? func.length : n;
 17750        return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);
 17751      }
 17752  
 17753      /**
 17754       * Creates a function that invokes `func`, with the `this` binding and arguments
 17755       * of the created function, while it's called less than `n` times. Subsequent
 17756       * calls to the created function return the result of the last `func` invocation.
 17757       *
 17758       * @static
 17759       * @memberOf _
 17760       * @since 3.0.0
 17761       * @category Function
 17762       * @param {number} n The number of calls at which `func` is no longer invoked.
 17763       * @param {Function} func The function to restrict.
 17764       * @returns {Function} Returns the new restricted function.
 17765       * @example
 17766       *
 17767       * jQuery(element).on('click', _.before(5, addContactToList));
 17768       * // => Allows adding up to 4 contacts to the list.
 17769       */
 17770      function before(n, func) {
 17771        var result;
 17772        if (typeof func != 'function') {
 17773          throw new TypeError(FUNC_ERROR_TEXT);
 17774        }
 17775        n = toInteger(n);
 17776        return function() {
 17777          if (--n > 0) {
 17778            result = func.apply(this, arguments);
 17779          }
 17780          if (n <= 1) {
 17781            func = undefined;
 17782          }
 17783          return result;
 17784        };
 17785      }
 17786  
 17787      /**
 17788       * Creates a function that invokes `func` with the `this` binding of `thisArg`
 17789       * and `partials` prepended to the arguments it receives.
 17790       *
 17791       * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
 17792       * may be used as a placeholder for partially applied arguments.
 17793       *
 17794       * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
 17795       * property of bound functions.
 17796       *
 17797       * @static
 17798       * @memberOf _
 17799       * @since 0.1.0
 17800       * @category Function
 17801       * @param {Function} func The function to bind.
 17802       * @param {*} thisArg The `this` binding of `func`.
 17803       * @param {...*} [partials] The arguments to be partially applied.
 17804       * @returns {Function} Returns the new bound function.
 17805       * @example
 17806       *
 17807       * function greet(greeting, punctuation) {
 17808       *   return greeting + ' ' + this.user + punctuation;
 17809       * }
 17810       *
 17811       * var object = { 'user': 'fred' };
 17812       *
 17813       * var bound = _.bind(greet, object, 'hi');
 17814       * bound('!');
 17815       * // => 'hi fred!'
 17816       *
 17817       * // Bound with placeholders.
 17818       * var bound = _.bind(greet, object, _, '!');
 17819       * bound('hi');
 17820       * // => 'hi fred!'
 17821       */
 17822      var bind = baseRest(function(func, thisArg, partials) {
 17823        var bitmask = WRAP_BIND_FLAG;
 17824        if (partials.length) {
 17825          var holders = replaceHolders(partials, getHolder(bind));
 17826          bitmask |= WRAP_PARTIAL_FLAG;
 17827        }
 17828        return createWrap(func, bitmask, thisArg, partials, holders);
 17829      });
 17830  
 17831      /**
 17832       * Creates a function that invokes the method at `object[key]` with `partials`
 17833       * prepended to the arguments it receives.
 17834       *
 17835       * This method differs from `_.bind` by allowing bound functions to reference
 17836       * methods that may be redefined or don't yet exist. See
 17837       * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)
 17838       * for more details.
 17839       *
 17840       * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic
 17841       * builds, may be used as a placeholder for partially applied arguments.
 17842       *
 17843       * @static
 17844       * @memberOf _
 17845       * @since 0.10.0
 17846       * @category Function
 17847       * @param {Object} object The object to invoke the method on.
 17848       * @param {string} key The key of the method.
 17849       * @param {...*} [partials] The arguments to be partially applied.
 17850       * @returns {Function} Returns the new bound function.
 17851       * @example
 17852       *
 17853       * var object = {
 17854       *   'user': 'fred',
 17855       *   'greet': function(greeting, punctuation) {
 17856       *     return greeting + ' ' + this.user + punctuation;
 17857       *   }
 17858       * };
 17859       *
 17860       * var bound = _.bindKey(object, 'greet', 'hi');
 17861       * bound('!');
 17862       * // => 'hi fred!'
 17863       *
 17864       * object.greet = function(greeting, punctuation) {
 17865       *   return greeting + 'ya ' + this.user + punctuation;
 17866       * };
 17867       *
 17868       * bound('!');
 17869       * // => 'hiya fred!'
 17870       *
 17871       * // Bound with placeholders.
 17872       * var bound = _.bindKey(object, 'greet', _, '!');
 17873       * bound('hi');
 17874       * // => 'hiya fred!'
 17875       */
 17876      var bindKey = baseRest(function(object, key, partials) {
 17877        var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
 17878        if (partials.length) {
 17879          var holders = replaceHolders(partials, getHolder(bindKey));
 17880          bitmask |= WRAP_PARTIAL_FLAG;
 17881        }
 17882        return createWrap(key, bitmask, object, partials, holders);
 17883      });
 17884  
 17885      /**
 17886       * Creates a function that accepts arguments of `func` and either invokes
 17887       * `func` returning its result, if at least `arity` number of arguments have
 17888       * been provided, or returns a function that accepts the remaining `func`
 17889       * arguments, and so on. The arity of `func` may be specified if `func.length`
 17890       * is not sufficient.
 17891       *
 17892       * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
 17893       * may be used as a placeholder for provided arguments.
 17894       *
 17895       * **Note:** This method doesn't set the "length" property of curried functions.
 17896       *
 17897       * @static
 17898       * @memberOf _
 17899       * @since 2.0.0
 17900       * @category Function
 17901       * @param {Function} func The function to curry.
 17902       * @param {number} [arity=func.length] The arity of `func`.
 17903       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 17904       * @returns {Function} Returns the new curried function.
 17905       * @example
 17906       *
 17907       * var abc = function(a, b, c) {
 17908       *   return [a, b, c];
 17909       * };
 17910       *
 17911       * var curried = _.curry(abc);
 17912       *
 17913       * curried(1)(2)(3);
 17914       * // => [1, 2, 3]
 17915       *
 17916       * curried(1, 2)(3);
 17917       * // => [1, 2, 3]
 17918       *
 17919       * curried(1, 2, 3);
 17920       * // => [1, 2, 3]
 17921       *
 17922       * // Curried with placeholders.
 17923       * curried(1)(_, 3)(2);
 17924       * // => [1, 2, 3]
 17925       */
 17926      function curry(func, arity, guard) {
 17927        arity = guard ? undefined : arity;
 17928        var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
 17929        result.placeholder = curry.placeholder;
 17930        return result;
 17931      }
 17932  
 17933      /**
 17934       * This method is like `_.curry` except that arguments are applied to `func`
 17935       * in the manner of `_.partialRight` instead of `_.partial`.
 17936       *
 17937       * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic
 17938       * builds, may be used as a placeholder for provided arguments.
 17939       *
 17940       * **Note:** This method doesn't set the "length" property of curried functions.
 17941       *
 17942       * @static
 17943       * @memberOf _
 17944       * @since 3.0.0
 17945       * @category Function
 17946       * @param {Function} func The function to curry.
 17947       * @param {number} [arity=func.length] The arity of `func`.
 17948       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 17949       * @returns {Function} Returns the new curried function.
 17950       * @example
 17951       *
 17952       * var abc = function(a, b, c) {
 17953       *   return [a, b, c];
 17954       * };
 17955       *
 17956       * var curried = _.curryRight(abc);
 17957       *
 17958       * curried(3)(2)(1);
 17959       * // => [1, 2, 3]
 17960       *
 17961       * curried(2, 3)(1);
 17962       * // => [1, 2, 3]
 17963       *
 17964       * curried(1, 2, 3);
 17965       * // => [1, 2, 3]
 17966       *
 17967       * // Curried with placeholders.
 17968       * curried(3)(1, _)(2);
 17969       * // => [1, 2, 3]
 17970       */
 17971      function curryRight(func, arity, guard) {
 17972        arity = guard ? undefined : arity;
 17973        var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
 17974        result.placeholder = curryRight.placeholder;
 17975        return result;
 17976      }
 17977  
 17978      /**
 17979       * Creates a debounced function that delays invoking `func` until after `wait`
 17980       * milliseconds have elapsed since the last time the debounced function was
 17981       * invoked. The debounced function comes with a `cancel` method to cancel
 17982       * delayed `func` invocations and a `flush` method to immediately invoke them.
 17983       * Provide `options` to indicate whether `func` should be invoked on the
 17984       * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
 17985       * with the last arguments provided to the debounced function. Subsequent
 17986       * calls to the debounced function return the result of the last `func`
 17987       * invocation.
 17988       *
 17989       * **Note:** If `leading` and `trailing` options are `true`, `func` is
 17990       * invoked on the trailing edge of the timeout only if the debounced function
 17991       * is invoked more than once during the `wait` timeout.
 17992       *
 17993       * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
 17994       * until to the next tick, similar to `setTimeout` with a timeout of `0`.
 17995       *
 17996       * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
 17997       * for details over the differences between `_.debounce` and `_.throttle`.
 17998       *
 17999       * @static
 18000       * @memberOf _
 18001       * @since 0.1.0
 18002       * @category Function
 18003       * @param {Function} func The function to debounce.
 18004       * @param {number} [wait=0] The number of milliseconds to delay.
 18005       * @param {Object} [options={}] The options object.
 18006       * @param {boolean} [options.leading=false]
 18007       *  Specify invoking on the leading edge of the timeout.
 18008       * @param {number} [options.maxWait]
 18009       *  The maximum time `func` is allowed to be delayed before it's invoked.
 18010       * @param {boolean} [options.trailing=true]
 18011       *  Specify invoking on the trailing edge of the timeout.
 18012       * @returns {Function} Returns the new debounced function.
 18013       * @example
 18014       *
 18015       * // Avoid costly calculations while the window size is in flux.
 18016       * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
 18017       *
 18018       * // Invoke `sendMail` when clicked, debouncing subsequent calls.
 18019       * jQuery(element).on('click', _.debounce(sendMail, 300, {
 18020       *   'leading': true,
 18021       *   'trailing': false
 18022       * }));
 18023       *
 18024       * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
 18025       * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
 18026       * var source = new EventSource('/stream');
 18027       * jQuery(source).on('message', debounced);
 18028       *
 18029       * // Cancel the trailing debounced invocation.
 18030       * jQuery(window).on('popstate', debounced.cancel);
 18031       */
 18032      function debounce(func, wait, options) {
 18033        var lastArgs,
 18034            lastThis,
 18035            maxWait,
 18036            result,
 18037            timerId,
 18038            lastCallTime,
 18039            lastInvokeTime = 0,
 18040            leading = false,
 18041            maxing = false,
 18042            trailing = true;
 18043  
 18044        if (typeof func != 'function') {
 18045          throw new TypeError(FUNC_ERROR_TEXT);
 18046        }
 18047        wait = toNumber(wait) || 0;
 18048        if (isObject(options)) {
 18049          leading = !!options.leading;
 18050          maxing = 'maxWait' in options;
 18051          maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
 18052          trailing = 'trailing' in options ? !!options.trailing : trailing;
 18053        }
 18054  
 18055        function invokeFunc(time) {
 18056          var args = lastArgs,
 18057              thisArg = lastThis;
 18058  
 18059          lastArgs = lastThis = undefined;
 18060          lastInvokeTime = time;
 18061          result = func.apply(thisArg, args);
 18062          return result;
 18063        }
 18064  
 18065        function leadingEdge(time) {
 18066          // Reset any `maxWait` timer.
 18067          lastInvokeTime = time;
 18068          // Start the timer for the trailing edge.
 18069          timerId = setTimeout(timerExpired, wait);
 18070          // Invoke the leading edge.
 18071          return leading ? invokeFunc(time) : result;
 18072        }
 18073  
 18074        function remainingWait(time) {
 18075          var timeSinceLastCall = time - lastCallTime,
 18076              timeSinceLastInvoke = time - lastInvokeTime,
 18077              timeWaiting = wait - timeSinceLastCall;
 18078  
 18079          return maxing
 18080            ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
 18081            : timeWaiting;
 18082        }
 18083  
 18084        function shouldInvoke(time) {
 18085          var timeSinceLastCall = time - lastCallTime,
 18086              timeSinceLastInvoke = time - lastInvokeTime;
 18087  
 18088          // Either this is the first call, activity has stopped and we're at the
 18089          // trailing edge, the system time has gone backwards and we're treating
 18090          // it as the trailing edge, or we've hit the `maxWait` limit.
 18091          return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
 18092            (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
 18093        }
 18094  
 18095        function timerExpired() {
 18096          var time = now();
 18097          if (shouldInvoke(time)) {
 18098            return trailingEdge(time);
 18099          }
 18100          // Restart the timer.
 18101          timerId = setTimeout(timerExpired, remainingWait(time));
 18102        }
 18103  
 18104        function trailingEdge(time) {
 18105          timerId = undefined;
 18106  
 18107          // Only invoke if we have `lastArgs` which means `func` has been
 18108          // debounced at least once.
 18109          if (trailing && lastArgs) {
 18110            return invokeFunc(time);
 18111          }
 18112          lastArgs = lastThis = undefined;
 18113          return result;
 18114        }
 18115  
 18116        function cancel() {
 18117          if (timerId !== undefined) {
 18118            clearTimeout(timerId);
 18119          }
 18120          lastInvokeTime = 0;
 18121          lastArgs = lastCallTime = lastThis = timerId = undefined;
 18122        }
 18123  
 18124        function flush() {
 18125          return timerId === undefined ? result : trailingEdge(now());
 18126        }
 18127  
 18128        function debounced() {
 18129          var time = now(),
 18130              isInvoking = shouldInvoke(time);
 18131  
 18132          lastArgs = arguments;
 18133          lastThis = this;
 18134          lastCallTime = time;
 18135  
 18136          if (isInvoking) {
 18137            if (timerId === undefined) {
 18138              return leadingEdge(lastCallTime);
 18139            }
 18140            if (maxing) {
 18141              // Handle invocations in a tight loop.
 18142              timerId = setTimeout(timerExpired, wait);
 18143              return invokeFunc(lastCallTime);
 18144            }
 18145          }
 18146          if (timerId === undefined) {
 18147            timerId = setTimeout(timerExpired, wait);
 18148          }
 18149          return result;
 18150        }
 18151        debounced.cancel = cancel;
 18152        debounced.flush = flush;
 18153        return debounced;
 18154      }
 18155  
 18156      /**
 18157       * Defers invoking the `func` until the current call stack has cleared. Any
 18158       * additional arguments are provided to `func` when it's invoked.
 18159       *
 18160       * @static
 18161       * @memberOf _
 18162       * @since 0.1.0
 18163       * @category Function
 18164       * @param {Function} func The function to defer.
 18165       * @param {...*} [args] The arguments to invoke `func` with.
 18166       * @returns {number} Returns the timer id.
 18167       * @example
 18168       *
 18169       * _.defer(function(text) {
 18170       *   console.log(text);
 18171       * }, 'deferred');
 18172       * // => Logs 'deferred' after one millisecond.
 18173       */
 18174      var defer = baseRest(function(func, args) {
 18175        return baseDelay(func, 1, args);
 18176      });
 18177  
 18178      /**
 18179       * Invokes `func` after `wait` milliseconds. Any additional arguments are
 18180       * provided to `func` when it's invoked.
 18181       *
 18182       * @static
 18183       * @memberOf _
 18184       * @since 0.1.0
 18185       * @category Function
 18186       * @param {Function} func The function to delay.
 18187       * @param {number} wait The number of milliseconds to delay invocation.
 18188       * @param {...*} [args] The arguments to invoke `func` with.
 18189       * @returns {number} Returns the timer id.
 18190       * @example
 18191       *
 18192       * _.delay(function(text) {
 18193       *   console.log(text);
 18194       * }, 1000, 'later');
 18195       * // => Logs 'later' after one second.
 18196       */
 18197      var delay = baseRest(function(func, wait, args) {
 18198        return baseDelay(func, toNumber(wait) || 0, args);
 18199      });
 18200  
 18201      /**
 18202       * Creates a function that invokes `func` with arguments reversed.
 18203       *
 18204       * @static
 18205       * @memberOf _
 18206       * @since 4.0.0
 18207       * @category Function
 18208       * @param {Function} func The function to flip arguments for.
 18209       * @returns {Function} Returns the new flipped function.
 18210       * @example
 18211       *
 18212       * var flipped = _.flip(function() {
 18213       *   return _.toArray(arguments);
 18214       * });
 18215       *
 18216       * flipped('a', 'b', 'c', 'd');
 18217       * // => ['d', 'c', 'b', 'a']
 18218       */
 18219      function flip(func) {
 18220        return createWrap(func, WRAP_FLIP_FLAG);
 18221      }
 18222  
 18223      /**
 18224       * Creates a function that memoizes the result of `func`. If `resolver` is
 18225       * provided, it determines the cache key for storing the result based on the
 18226       * arguments provided to the memoized function. By default, the first argument
 18227       * provided to the memoized function is used as the map cache key. The `func`
 18228       * is invoked with the `this` binding of the memoized function.
 18229       *
 18230       * **Note:** The cache is exposed as the `cache` property on the memoized
 18231       * function. Its creation may be customized by replacing the `_.memoize.Cache`
 18232       * constructor with one whose instances implement the
 18233       * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
 18234       * method interface of `clear`, `delete`, `get`, `has`, and `set`.
 18235       *
 18236       * @static
 18237       * @memberOf _
 18238       * @since 0.1.0
 18239       * @category Function
 18240       * @param {Function} func The function to have its output memoized.
 18241       * @param {Function} [resolver] The function to resolve the cache key.
 18242       * @returns {Function} Returns the new memoized function.
 18243       * @example
 18244       *
 18245       * var object = { 'a': 1, 'b': 2 };
 18246       * var other = { 'c': 3, 'd': 4 };
 18247       *
 18248       * var values = _.memoize(_.values);
 18249       * values(object);
 18250       * // => [1, 2]
 18251       *
 18252       * values(other);
 18253       * // => [3, 4]
 18254       *
 18255       * object.a = 2;
 18256       * values(object);
 18257       * // => [1, 2]
 18258       *
 18259       * // Modify the result cache.
 18260       * values.cache.set(object, ['a', 'b']);
 18261       * values(object);
 18262       * // => ['a', 'b']
 18263       *
 18264       * // Replace `_.memoize.Cache`.
 18265       * _.memoize.Cache = WeakMap;
 18266       */
 18267      function memoize(func, resolver) {
 18268        if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
 18269          throw new TypeError(FUNC_ERROR_TEXT);
 18270        }
 18271        var memoized = function() {
 18272          var args = arguments,
 18273              key = resolver ? resolver.apply(this, args) : args[0],
 18274              cache = memoized.cache;
 18275  
 18276          if (cache.has(key)) {
 18277            return cache.get(key);
 18278          }
 18279          var result = func.apply(this, args);
 18280          memoized.cache = cache.set(key, result) || cache;
 18281          return result;
 18282        };
 18283        memoized.cache = new (memoize.Cache || MapCache);
 18284        return memoized;
 18285      }
 18286  
 18287      // Expose `MapCache`.
 18288      memoize.Cache = MapCache;
 18289  
 18290      /**
 18291       * Creates a function that negates the result of the predicate `func`. The
 18292       * `func` predicate is invoked with the `this` binding and arguments of the
 18293       * created function.
 18294       *
 18295       * @static
 18296       * @memberOf _
 18297       * @since 3.0.0
 18298       * @category Function
 18299       * @param {Function} predicate The predicate to negate.
 18300       * @returns {Function} Returns the new negated function.
 18301       * @example
 18302       *
 18303       * function isEven(n) {
 18304       *   return n % 2 == 0;
 18305       * }
 18306       *
 18307       * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
 18308       * // => [1, 3, 5]
 18309       */
 18310      function negate(predicate) {
 18311        if (typeof predicate != 'function') {
 18312          throw new TypeError(FUNC_ERROR_TEXT);
 18313        }
 18314        return function() {
 18315          var args = arguments;
 18316          switch (args.length) {
 18317            case 0: return !predicate.call(this);
 18318            case 1: return !predicate.call(this, args[0]);
 18319            case 2: return !predicate.call(this, args[0], args[1]);
 18320            case 3: return !predicate.call(this, args[0], args[1], args[2]);
 18321          }
 18322          return !predicate.apply(this, args);
 18323        };
 18324      }
 18325  
 18326      /**
 18327       * Creates a function that is restricted to invoking `func` once. Repeat calls
 18328       * to the function return the value of the first invocation. The `func` is
 18329       * invoked with the `this` binding and arguments of the created function.
 18330       *
 18331       * @static
 18332       * @memberOf _
 18333       * @since 0.1.0
 18334       * @category Function
 18335       * @param {Function} func The function to restrict.
 18336       * @returns {Function} Returns the new restricted function.
 18337       * @example
 18338       *
 18339       * var initialize = _.once(createApplication);
 18340       * initialize();
 18341       * initialize();
 18342       * // => `createApplication` is invoked once
 18343       */
 18344      function once(func) {
 18345        return before(2, func);
 18346      }
 18347  
 18348      /**
 18349       * Creates a function that invokes `func` with its arguments transformed.
 18350       *
 18351       * @static
 18352       * @since 4.0.0
 18353       * @memberOf _
 18354       * @category Function
 18355       * @param {Function} func The function to wrap.
 18356       * @param {...(Function|Function[])} [transforms=[_.identity]]
 18357       *  The argument transforms.
 18358       * @returns {Function} Returns the new function.
 18359       * @example
 18360       *
 18361       * function doubled(n) {
 18362       *   return n * 2;
 18363       * }
 18364       *
 18365       * function square(n) {
 18366       *   return n * n;
 18367       * }
 18368       *
 18369       * var func = _.overArgs(function(x, y) {
 18370       *   return [x, y];
 18371       * }, [square, doubled]);
 18372       *
 18373       * func(9, 3);
 18374       * // => [81, 6]
 18375       *
 18376       * func(10, 5);
 18377       * // => [100, 10]
 18378       */
 18379      var overArgs = castRest(function(func, transforms) {
 18380        transforms = (transforms.length == 1 && isArray(transforms[0]))
 18381          ? arrayMap(transforms[0], baseUnary(getIteratee()))
 18382          : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
 18383  
 18384        var funcsLength = transforms.length;
 18385        return baseRest(function(args) {
 18386          var index = -1,
 18387              length = nativeMin(args.length, funcsLength);
 18388  
 18389          while (++index < length) {
 18390            args[index] = transforms[index].call(this, args[index]);
 18391          }
 18392          return apply(func, this, args);
 18393        });
 18394      });
 18395  
 18396      /**
 18397       * Creates a function that invokes `func` with `partials` prepended to the
 18398       * arguments it receives. This method is like `_.bind` except it does **not**
 18399       * alter the `this` binding.
 18400       *
 18401       * The `_.partial.placeholder` value, which defaults to `_` in monolithic
 18402       * builds, may be used as a placeholder for partially applied arguments.
 18403       *
 18404       * **Note:** This method doesn't set the "length" property of partially
 18405       * applied functions.
 18406       *
 18407       * @static
 18408       * @memberOf _
 18409       * @since 0.2.0
 18410       * @category Function
 18411       * @param {Function} func The function to partially apply arguments to.
 18412       * @param {...*} [partials] The arguments to be partially applied.
 18413       * @returns {Function} Returns the new partially applied function.
 18414       * @example
 18415       *
 18416       * function greet(greeting, name) {
 18417       *   return greeting + ' ' + name;
 18418       * }
 18419       *
 18420       * var sayHelloTo = _.partial(greet, 'hello');
 18421       * sayHelloTo('fred');
 18422       * // => 'hello fred'
 18423       *
 18424       * // Partially applied with placeholders.
 18425       * var greetFred = _.partial(greet, _, 'fred');
 18426       * greetFred('hi');
 18427       * // => 'hi fred'
 18428       */
 18429      var partial = baseRest(function(func, partials) {
 18430        var holders = replaceHolders(partials, getHolder(partial));
 18431        return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);
 18432      });
 18433  
 18434      /**
 18435       * This method is like `_.partial` except that partially applied arguments
 18436       * are appended to the arguments it receives.
 18437       *
 18438       * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
 18439       * builds, may be used as a placeholder for partially applied arguments.
 18440       *
 18441       * **Note:** This method doesn't set the "length" property of partially
 18442       * applied functions.
 18443       *
 18444       * @static
 18445       * @memberOf _
 18446       * @since 1.0.0
 18447       * @category Function
 18448       * @param {Function} func The function to partially apply arguments to.
 18449       * @param {...*} [partials] The arguments to be partially applied.
 18450       * @returns {Function} Returns the new partially applied function.
 18451       * @example
 18452       *
 18453       * function greet(greeting, name) {
 18454       *   return greeting + ' ' + name;
 18455       * }
 18456       *
 18457       * var greetFred = _.partialRight(greet, 'fred');
 18458       * greetFred('hi');
 18459       * // => 'hi fred'
 18460       *
 18461       * // Partially applied with placeholders.
 18462       * var sayHelloTo = _.partialRight(greet, 'hello', _);
 18463       * sayHelloTo('fred');
 18464       * // => 'hello fred'
 18465       */
 18466      var partialRight = baseRest(function(func, partials) {
 18467        var holders = replaceHolders(partials, getHolder(partialRight));
 18468        return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);
 18469      });
 18470  
 18471      /**
 18472       * Creates a function that invokes `func` with arguments arranged according
 18473       * to the specified `indexes` where the argument value at the first index is
 18474       * provided as the first argument, the argument value at the second index is
 18475       * provided as the second argument, and so on.
 18476       *
 18477       * @static
 18478       * @memberOf _
 18479       * @since 3.0.0
 18480       * @category Function
 18481       * @param {Function} func The function to rearrange arguments for.
 18482       * @param {...(number|number[])} indexes The arranged argument indexes.
 18483       * @returns {Function} Returns the new function.
 18484       * @example
 18485       *
 18486       * var rearged = _.rearg(function(a, b, c) {
 18487       *   return [a, b, c];
 18488       * }, [2, 0, 1]);
 18489       *
 18490       * rearged('b', 'c', 'a')
 18491       * // => ['a', 'b', 'c']
 18492       */
 18493      var rearg = flatRest(function(func, indexes) {
 18494        return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);
 18495      });
 18496  
 18497      /**
 18498       * Creates a function that invokes `func` with the `this` binding of the
 18499       * created function and arguments from `start` and beyond provided as
 18500       * an array.
 18501       *
 18502       * **Note:** This method is based on the
 18503       * [rest parameter](https://mdn.io/rest_parameters).
 18504       *
 18505       * @static
 18506       * @memberOf _
 18507       * @since 4.0.0
 18508       * @category Function
 18509       * @param {Function} func The function to apply a rest parameter to.
 18510       * @param {number} [start=func.length-1] The start position of the rest parameter.
 18511       * @returns {Function} Returns the new function.
 18512       * @example
 18513       *
 18514       * var say = _.rest(function(what, names) {
 18515       *   return what + ' ' + _.initial(names).join(', ') +
 18516       *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);
 18517       * });
 18518       *
 18519       * say('hello', 'fred', 'barney', 'pebbles');
 18520       * // => 'hello fred, barney, & pebbles'
 18521       */
 18522      function rest(func, start) {
 18523        if (typeof func != 'function') {
 18524          throw new TypeError(FUNC_ERROR_TEXT);
 18525        }
 18526        start = start === undefined ? start : toInteger(start);
 18527        return baseRest(func, start);
 18528      }
 18529  
 18530      /**
 18531       * Creates a function that invokes `func` with the `this` binding of the
 18532       * create function and an array of arguments much like
 18533       * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).
 18534       *
 18535       * **Note:** This method is based on the
 18536       * [spread operator](https://mdn.io/spread_operator).
 18537       *
 18538       * @static
 18539       * @memberOf _
 18540       * @since 3.2.0
 18541       * @category Function
 18542       * @param {Function} func The function to spread arguments over.
 18543       * @param {number} [start=0] The start position of the spread.
 18544       * @returns {Function} Returns the new function.
 18545       * @example
 18546       *
 18547       * var say = _.spread(function(who, what) {
 18548       *   return who + ' says ' + what;
 18549       * });
 18550       *
 18551       * say(['fred', 'hello']);
 18552       * // => 'fred says hello'
 18553       *
 18554       * var numbers = Promise.all([
 18555       *   Promise.resolve(40),
 18556       *   Promise.resolve(36)
 18557       * ]);
 18558       *
 18559       * numbers.then(_.spread(function(x, y) {
 18560       *   return x + y;
 18561       * }));
 18562       * // => a Promise of 76
 18563       */
 18564      function spread(func, start) {
 18565        if (typeof func != 'function') {
 18566          throw new TypeError(FUNC_ERROR_TEXT);
 18567        }
 18568        start = start == null ? 0 : nativeMax(toInteger(start), 0);
 18569        return baseRest(function(args) {
 18570          var array = args[start],
 18571              otherArgs = castSlice(args, 0, start);
 18572  
 18573          if (array) {
 18574            arrayPush(otherArgs, array);
 18575          }
 18576          return apply(func, this, otherArgs);
 18577        });
 18578      }
 18579  
 18580      /**
 18581       * Creates a throttled function that only invokes `func` at most once per
 18582       * every `wait` milliseconds. The throttled function comes with a `cancel`
 18583       * method to cancel delayed `func` invocations and a `flush` method to
 18584       * immediately invoke them. Provide `options` to indicate whether `func`
 18585       * should be invoked on the leading and/or trailing edge of the `wait`
 18586       * timeout. The `func` is invoked with the last arguments provided to the
 18587       * throttled function. Subsequent calls to the throttled function return the
 18588       * result of the last `func` invocation.
 18589       *
 18590       * **Note:** If `leading` and `trailing` options are `true`, `func` is
 18591       * invoked on the trailing edge of the timeout only if the throttled function
 18592       * is invoked more than once during the `wait` timeout.
 18593       *
 18594       * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
 18595       * until to the next tick, similar to `setTimeout` with a timeout of `0`.
 18596       *
 18597       * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
 18598       * for details over the differences between `_.throttle` and `_.debounce`.
 18599       *
 18600       * @static
 18601       * @memberOf _
 18602       * @since 0.1.0
 18603       * @category Function
 18604       * @param {Function} func The function to throttle.
 18605       * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
 18606       * @param {Object} [options={}] The options object.
 18607       * @param {boolean} [options.leading=true]
 18608       *  Specify invoking on the leading edge of the timeout.
 18609       * @param {boolean} [options.trailing=true]
 18610       *  Specify invoking on the trailing edge of the timeout.
 18611       * @returns {Function} Returns the new throttled function.
 18612       * @example
 18613       *
 18614       * // Avoid excessively updating the position while scrolling.
 18615       * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
 18616       *
 18617       * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
 18618       * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
 18619       * jQuery(element).on('click', throttled);
 18620       *
 18621       * // Cancel the trailing throttled invocation.
 18622       * jQuery(window).on('popstate', throttled.cancel);
 18623       */
 18624      function throttle(func, wait, options) {
 18625        var leading = true,
 18626            trailing = true;
 18627  
 18628        if (typeof func != 'function') {
 18629          throw new TypeError(FUNC_ERROR_TEXT);
 18630        }
 18631        if (isObject(options)) {
 18632          leading = 'leading' in options ? !!options.leading : leading;
 18633          trailing = 'trailing' in options ? !!options.trailing : trailing;
 18634        }
 18635        return debounce(func, wait, {
 18636          'leading': leading,
 18637          'maxWait': wait,
 18638          'trailing': trailing
 18639        });
 18640      }
 18641  
 18642      /**
 18643       * Creates a function that accepts up to one argument, ignoring any
 18644       * additional arguments.
 18645       *
 18646       * @static
 18647       * @memberOf _
 18648       * @since 4.0.0
 18649       * @category Function
 18650       * @param {Function} func The function to cap arguments for.
 18651       * @returns {Function} Returns the new capped function.
 18652       * @example
 18653       *
 18654       * _.map(['6', '8', '10'], _.unary(parseInt));
 18655       * // => [6, 8, 10]
 18656       */
 18657      function unary(func) {
 18658        return ary(func, 1);
 18659      }
 18660  
 18661      /**
 18662       * Creates a function that provides `value` to `wrapper` as its first
 18663       * argument. Any additional arguments provided to the function are appended
 18664       * to those provided to the `wrapper`. The wrapper is invoked with the `this`
 18665       * binding of the created function.
 18666       *
 18667       * @static
 18668       * @memberOf _
 18669       * @since 0.1.0
 18670       * @category Function
 18671       * @param {*} value The value to wrap.
 18672       * @param {Function} [wrapper=identity] The wrapper function.
 18673       * @returns {Function} Returns the new function.
 18674       * @example
 18675       *
 18676       * var p = _.wrap(_.escape, function(func, text) {
 18677       *   return '<p>' + func(text) + '</p>';
 18678       * });
 18679       *
 18680       * p('fred, barney, & pebbles');
 18681       * // => '<p>fred, barney, &amp; pebbles</p>'
 18682       */
 18683      function wrap(value, wrapper) {
 18684        return partial(castFunction(wrapper), value);
 18685      }
 18686  
 18687      /*------------------------------------------------------------------------*/
 18688  
 18689      /**
 18690       * Casts `value` as an array if it's not one.
 18691       *
 18692       * @static
 18693       * @memberOf _
 18694       * @since 4.4.0
 18695       * @category Lang
 18696       * @param {*} value The value to inspect.
 18697       * @returns {Array} Returns the cast array.
 18698       * @example
 18699       *
 18700       * _.castArray(1);
 18701       * // => [1]
 18702       *
 18703       * _.castArray({ 'a': 1 });
 18704       * // => [{ 'a': 1 }]
 18705       *
 18706       * _.castArray('abc');
 18707       * // => ['abc']
 18708       *
 18709       * _.castArray(null);
 18710       * // => [null]
 18711       *
 18712       * _.castArray(undefined);
 18713       * // => [undefined]
 18714       *
 18715       * _.castArray();
 18716       * // => []
 18717       *
 18718       * var array = [1, 2, 3];
 18719       * console.log(_.castArray(array) === array);
 18720       * // => true
 18721       */
 18722      function castArray() {
 18723        if (!arguments.length) {
 18724          return [];
 18725        }
 18726        var value = arguments[0];
 18727        return isArray(value) ? value : [value];
 18728      }
 18729  
 18730      /**
 18731       * Creates a shallow clone of `value`.
 18732       *
 18733       * **Note:** This method is loosely based on the
 18734       * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
 18735       * and supports cloning arrays, array buffers, booleans, date objects, maps,
 18736       * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
 18737       * arrays. The own enumerable properties of `arguments` objects are cloned
 18738       * as plain objects. An empty object is returned for uncloneable values such
 18739       * as error objects, functions, DOM nodes, and WeakMaps.
 18740       *
 18741       * @static
 18742       * @memberOf _
 18743       * @since 0.1.0
 18744       * @category Lang
 18745       * @param {*} value The value to clone.
 18746       * @returns {*} Returns the cloned value.
 18747       * @see _.cloneDeep
 18748       * @example
 18749       *
 18750       * var objects = [{ 'a': 1 }, { 'b': 2 }];
 18751       *
 18752       * var shallow = _.clone(objects);
 18753       * console.log(shallow[0] === objects[0]);
 18754       * // => true
 18755       */
 18756      function clone(value) {
 18757        return baseClone(value, CLONE_SYMBOLS_FLAG);
 18758      }
 18759  
 18760      /**
 18761       * This method is like `_.clone` except that it accepts `customizer` which
 18762       * is invoked to produce the cloned value. If `customizer` returns `undefined`,
 18763       * cloning is handled by the method instead. The `customizer` is invoked with
 18764       * up to four arguments; (value [, index|key, object, stack]).
 18765       *
 18766       * @static
 18767       * @memberOf _
 18768       * @since 4.0.0
 18769       * @category Lang
 18770       * @param {*} value The value to clone.
 18771       * @param {Function} [customizer] The function to customize cloning.
 18772       * @returns {*} Returns the cloned value.
 18773       * @see _.cloneDeepWith
 18774       * @example
 18775       *
 18776       * function customizer(value) {
 18777       *   if (_.isElement(value)) {
 18778       *     return value.cloneNode(false);
 18779       *   }
 18780       * }
 18781       *
 18782       * var el = _.cloneWith(document.body, customizer);
 18783       *
 18784       * console.log(el === document.body);
 18785       * // => false
 18786       * console.log(el.nodeName);
 18787       * // => 'BODY'
 18788       * console.log(el.childNodes.length);
 18789       * // => 0
 18790       */
 18791      function cloneWith(value, customizer) {
 18792        customizer = typeof customizer == 'function' ? customizer : undefined;
 18793        return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
 18794      }
 18795  
 18796      /**
 18797       * This method is like `_.clone` except that it recursively clones `value`.
 18798       *
 18799       * @static
 18800       * @memberOf _
 18801       * @since 1.0.0
 18802       * @category Lang
 18803       * @param {*} value The value to recursively clone.
 18804       * @returns {*} Returns the deep cloned value.
 18805       * @see _.clone
 18806       * @example
 18807       *
 18808       * var objects = [{ 'a': 1 }, { 'b': 2 }];
 18809       *
 18810       * var deep = _.cloneDeep(objects);
 18811       * console.log(deep[0] === objects[0]);
 18812       * // => false
 18813       */
 18814      function cloneDeep(value) {
 18815        return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
 18816      }
 18817  
 18818      /**
 18819       * This method is like `_.cloneWith` except that it recursively clones `value`.
 18820       *
 18821       * @static
 18822       * @memberOf _
 18823       * @since 4.0.0
 18824       * @category Lang
 18825       * @param {*} value The value to recursively clone.
 18826       * @param {Function} [customizer] The function to customize cloning.
 18827       * @returns {*} Returns the deep cloned value.
 18828       * @see _.cloneWith
 18829       * @example
 18830       *
 18831       * function customizer(value) {
 18832       *   if (_.isElement(value)) {
 18833       *     return value.cloneNode(true);
 18834       *   }
 18835       * }
 18836       *
 18837       * var el = _.cloneDeepWith(document.body, customizer);
 18838       *
 18839       * console.log(el === document.body);
 18840       * // => false
 18841       * console.log(el.nodeName);
 18842       * // => 'BODY'
 18843       * console.log(el.childNodes.length);
 18844       * // => 20
 18845       */
 18846      function cloneDeepWith(value, customizer) {
 18847        customizer = typeof customizer == 'function' ? customizer : undefined;
 18848        return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
 18849      }
 18850  
 18851      /**
 18852       * Checks if `object` conforms to `source` by invoking the predicate
 18853       * properties of `source` with the corresponding property values of `object`.
 18854       *
 18855       * **Note:** This method is equivalent to `_.conforms` when `source` is
 18856       * partially applied.
 18857       *
 18858       * @static
 18859       * @memberOf _
 18860       * @since 4.14.0
 18861       * @category Lang
 18862       * @param {Object} object The object to inspect.
 18863       * @param {Object} source The object of property predicates to conform to.
 18864       * @returns {boolean} Returns `true` if `object` conforms, else `false`.
 18865       * @example
 18866       *
 18867       * var object = { 'a': 1, 'b': 2 };
 18868       *
 18869       * _.conformsTo(object, { 'b': function(n) { return n > 1; } });
 18870       * // => true
 18871       *
 18872       * _.conformsTo(object, { 'b': function(n) { return n > 2; } });
 18873       * // => false
 18874       */
 18875      function conformsTo(object, source) {
 18876        return source == null || baseConformsTo(object, source, keys(source));
 18877      }
 18878  
 18879      /**
 18880       * Performs a
 18881       * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 18882       * comparison between two values to determine if they are equivalent.
 18883       *
 18884       * @static
 18885       * @memberOf _
 18886       * @since 4.0.0
 18887       * @category Lang
 18888       * @param {*} value The value to compare.
 18889       * @param {*} other The other value to compare.
 18890       * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
 18891       * @example
 18892       *
 18893       * var object = { 'a': 1 };
 18894       * var other = { 'a': 1 };
 18895       *
 18896       * _.eq(object, object);
 18897       * // => true
 18898       *
 18899       * _.eq(object, other);
 18900       * // => false
 18901       *
 18902       * _.eq('a', 'a');
 18903       * // => true
 18904       *
 18905       * _.eq('a', Object('a'));
 18906       * // => false
 18907       *
 18908       * _.eq(NaN, NaN);
 18909       * // => true
 18910       */
 18911      function eq(value, other) {
 18912        return value === other || (value !== value && other !== other);
 18913      }
 18914  
 18915      /**
 18916       * Checks if `value` is greater than `other`.
 18917       *
 18918       * @static
 18919       * @memberOf _
 18920       * @since 3.9.0
 18921       * @category Lang
 18922       * @param {*} value The value to compare.
 18923       * @param {*} other The other value to compare.
 18924       * @returns {boolean} Returns `true` if `value` is greater than `other`,
 18925       *  else `false`.
 18926       * @see _.lt
 18927       * @example
 18928       *
 18929       * _.gt(3, 1);
 18930       * // => true
 18931       *
 18932       * _.gt(3, 3);
 18933       * // => false
 18934       *
 18935       * _.gt(1, 3);
 18936       * // => false
 18937       */
 18938      var gt = createRelationalOperation(baseGt);
 18939  
 18940      /**
 18941       * Checks if `value` is greater than or equal to `other`.
 18942       *
 18943       * @static
 18944       * @memberOf _
 18945       * @since 3.9.0
 18946       * @category Lang
 18947       * @param {*} value The value to compare.
 18948       * @param {*} other The other value to compare.
 18949       * @returns {boolean} Returns `true` if `value` is greater than or equal to
 18950       *  `other`, else `false`.
 18951       * @see _.lte
 18952       * @example
 18953       *
 18954       * _.gte(3, 1);
 18955       * // => true
 18956       *
 18957       * _.gte(3, 3);
 18958       * // => true
 18959       *
 18960       * _.gte(1, 3);
 18961       * // => false
 18962       */
 18963      var gte = createRelationalOperation(function(value, other) {
 18964        return value >= other;
 18965      });
 18966  
 18967      /**
 18968       * Checks if `value` is likely an `arguments` object.
 18969       *
 18970       * @static
 18971       * @memberOf _
 18972       * @since 0.1.0
 18973       * @category Lang
 18974       * @param {*} value The value to check.
 18975       * @returns {boolean} Returns `true` if `value` is an `arguments` object,
 18976       *  else `false`.
 18977       * @example
 18978       *
 18979       * _.isArguments(function() { return arguments; }());
 18980       * // => true
 18981       *
 18982       * _.isArguments([1, 2, 3]);
 18983       * // => false
 18984       */
 18985      var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
 18986        return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
 18987          !propertyIsEnumerable.call(value, 'callee');
 18988      };
 18989  
 18990      /**
 18991       * Checks if `value` is classified as an `Array` object.
 18992       *
 18993       * @static
 18994       * @memberOf _
 18995       * @since 0.1.0
 18996       * @category Lang
 18997       * @param {*} value The value to check.
 18998       * @returns {boolean} Returns `true` if `value` is an array, else `false`.
 18999       * @example
 19000       *
 19001       * _.isArray([1, 2, 3]);
 19002       * // => true
 19003       *
 19004       * _.isArray(document.body.children);
 19005       * // => false
 19006       *
 19007       * _.isArray('abc');
 19008       * // => false
 19009       *
 19010       * _.isArray(_.noop);
 19011       * // => false
 19012       */
 19013      var isArray = Array.isArray;
 19014  
 19015      /**
 19016       * Checks if `value` is classified as an `ArrayBuffer` object.
 19017       *
 19018       * @static
 19019       * @memberOf _
 19020       * @since 4.3.0
 19021       * @category Lang
 19022       * @param {*} value The value to check.
 19023       * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
 19024       * @example
 19025       *
 19026       * _.isArrayBuffer(new ArrayBuffer(2));
 19027       * // => true
 19028       *
 19029       * _.isArrayBuffer(new Array(2));
 19030       * // => false
 19031       */
 19032      var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
 19033  
 19034      /**
 19035       * Checks if `value` is array-like. A value is considered array-like if it's
 19036       * not a function and has a `value.length` that's an integer greater than or
 19037       * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
 19038       *
 19039       * @static
 19040       * @memberOf _
 19041       * @since 4.0.0
 19042       * @category Lang
 19043       * @param {*} value The value to check.
 19044       * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
 19045       * @example
 19046       *
 19047       * _.isArrayLike([1, 2, 3]);
 19048       * // => true
 19049       *
 19050       * _.isArrayLike(document.body.children);
 19051       * // => true
 19052       *
 19053       * _.isArrayLike('abc');
 19054       * // => true
 19055       *
 19056       * _.isArrayLike(_.noop);
 19057       * // => false
 19058       */
 19059      function isArrayLike(value) {
 19060        return value != null && isLength(value.length) && !isFunction(value);
 19061      }
 19062  
 19063      /**
 19064       * This method is like `_.isArrayLike` except that it also checks if `value`
 19065       * is an object.
 19066       *
 19067       * @static
 19068       * @memberOf _
 19069       * @since 4.0.0
 19070       * @category Lang
 19071       * @param {*} value The value to check.
 19072       * @returns {boolean} Returns `true` if `value` is an array-like object,
 19073       *  else `false`.
 19074       * @example
 19075       *
 19076       * _.isArrayLikeObject([1, 2, 3]);
 19077       * // => true
 19078       *
 19079       * _.isArrayLikeObject(document.body.children);
 19080       * // => true
 19081       *
 19082       * _.isArrayLikeObject('abc');
 19083       * // => false
 19084       *
 19085       * _.isArrayLikeObject(_.noop);
 19086       * // => false
 19087       */
 19088      function isArrayLikeObject(value) {
 19089        return isObjectLike(value) && isArrayLike(value);
 19090      }
 19091  
 19092      /**
 19093       * Checks if `value` is classified as a boolean primitive or object.
 19094       *
 19095       * @static
 19096       * @memberOf _
 19097       * @since 0.1.0
 19098       * @category Lang
 19099       * @param {*} value The value to check.
 19100       * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
 19101       * @example
 19102       *
 19103       * _.isBoolean(false);
 19104       * // => true
 19105       *
 19106       * _.isBoolean(null);
 19107       * // => false
 19108       */
 19109      function isBoolean(value) {
 19110        return value === true || value === false ||
 19111          (isObjectLike(value) && baseGetTag(value) == boolTag);
 19112      }
 19113  
 19114      /**
 19115       * Checks if `value` is a buffer.
 19116       *
 19117       * @static
 19118       * @memberOf _
 19119       * @since 4.3.0
 19120       * @category Lang
 19121       * @param {*} value The value to check.
 19122       * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
 19123       * @example
 19124       *
 19125       * _.isBuffer(new Buffer(2));
 19126       * // => true
 19127       *
 19128       * _.isBuffer(new Uint8Array(2));
 19129       * // => false
 19130       */
 19131      var isBuffer = nativeIsBuffer || stubFalse;
 19132  
 19133      /**
 19134       * Checks if `value` is classified as a `Date` object.
 19135       *
 19136       * @static
 19137       * @memberOf _
 19138       * @since 0.1.0
 19139       * @category Lang
 19140       * @param {*} value The value to check.
 19141       * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
 19142       * @example
 19143       *
 19144       * _.isDate(new Date);
 19145       * // => true
 19146       *
 19147       * _.isDate('Mon April 23 2012');
 19148       * // => false
 19149       */
 19150      var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
 19151  
 19152      /**
 19153       * Checks if `value` is likely a DOM element.
 19154       *
 19155       * @static
 19156       * @memberOf _
 19157       * @since 0.1.0
 19158       * @category Lang
 19159       * @param {*} value The value to check.
 19160       * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.
 19161       * @example
 19162       *
 19163       * _.isElement(document.body);
 19164       * // => true
 19165       *
 19166       * _.isElement('<body>');
 19167       * // => false
 19168       */
 19169      function isElement(value) {
 19170        return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
 19171      }
 19172  
 19173      /**
 19174       * Checks if `value` is an empty object, collection, map, or set.
 19175       *
 19176       * Objects are considered empty if they have no own enumerable string keyed
 19177       * properties.
 19178       *
 19179       * Array-like values such as `arguments` objects, arrays, buffers, strings, or
 19180       * jQuery-like collections are considered empty if they have a `length` of `0`.
 19181       * Similarly, maps and sets are considered empty if they have a `size` of `0`.
 19182       *
 19183       * @static
 19184       * @memberOf _
 19185       * @since 0.1.0
 19186       * @category Lang
 19187       * @param {*} value The value to check.
 19188       * @returns {boolean} Returns `true` if `value` is empty, else `false`.
 19189       * @example
 19190       *
 19191       * _.isEmpty(null);
 19192       * // => true
 19193       *
 19194       * _.isEmpty(true);
 19195       * // => true
 19196       *
 19197       * _.isEmpty(1);
 19198       * // => true
 19199       *
 19200       * _.isEmpty([1, 2, 3]);
 19201       * // => false
 19202       *
 19203       * _.isEmpty({ 'a': 1 });
 19204       * // => false
 19205       */
 19206      function isEmpty(value) {
 19207        if (value == null) {
 19208          return true;
 19209        }
 19210        if (isArrayLike(value) &&
 19211            (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
 19212              isBuffer(value) || isTypedArray(value) || isArguments(value))) {
 19213          return !value.length;
 19214        }
 19215        var tag = getTag(value);
 19216        if (tag == mapTag || tag == setTag) {
 19217          return !value.size;
 19218        }
 19219        if (isPrototype(value)) {
 19220          return !baseKeys(value).length;
 19221        }
 19222        for (var key in value) {
 19223          if (hasOwnProperty.call(value, key)) {
 19224            return false;
 19225          }
 19226        }
 19227        return true;
 19228      }
 19229  
 19230      /**
 19231       * Performs a deep comparison between two values to determine if they are
 19232       * equivalent.
 19233       *
 19234       * **Note:** This method supports comparing arrays, array buffers, booleans,
 19235       * date objects, error objects, maps, numbers, `Object` objects, regexes,
 19236       * sets, strings, symbols, and typed arrays. `Object` objects are compared
 19237       * by their own, not inherited, enumerable properties. Functions and DOM
 19238       * nodes are compared by strict equality, i.e. `===`.
 19239       *
 19240       * @static
 19241       * @memberOf _
 19242       * @since 0.1.0
 19243       * @category Lang
 19244       * @param {*} value The value to compare.
 19245       * @param {*} other The other value to compare.
 19246       * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
 19247       * @example
 19248       *
 19249       * var object = { 'a': 1 };
 19250       * var other = { 'a': 1 };
 19251       *
 19252       * _.isEqual(object, other);
 19253       * // => true
 19254       *
 19255       * object === other;
 19256       * // => false
 19257       */
 19258      function isEqual(value, other) {
 19259        return baseIsEqual(value, other);
 19260      }
 19261  
 19262      /**
 19263       * This method is like `_.isEqual` except that it accepts `customizer` which
 19264       * is invoked to compare values. If `customizer` returns `undefined`, comparisons
 19265       * are handled by the method instead. The `customizer` is invoked with up to
 19266       * six arguments: (objValue, othValue [, index|key, object, other, stack]).
 19267       *
 19268       * @static
 19269       * @memberOf _
 19270       * @since 4.0.0
 19271       * @category Lang
 19272       * @param {*} value The value to compare.
 19273       * @param {*} other The other value to compare.
 19274       * @param {Function} [customizer] The function to customize comparisons.
 19275       * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
 19276       * @example
 19277       *
 19278       * function isGreeting(value) {
 19279       *   return /^h(?:i|ello)$/.test(value);
 19280       * }
 19281       *
 19282       * function customizer(objValue, othValue) {
 19283       *   if (isGreeting(objValue) && isGreeting(othValue)) {
 19284       *     return true;
 19285       *   }
 19286       * }
 19287       *
 19288       * var array = ['hello', 'goodbye'];
 19289       * var other = ['hi', 'goodbye'];
 19290       *
 19291       * _.isEqualWith(array, other, customizer);
 19292       * // => true
 19293       */
 19294      function isEqualWith(value, other, customizer) {
 19295        customizer = typeof customizer == 'function' ? customizer : undefined;
 19296        var result = customizer ? customizer(value, other) : undefined;
 19297        return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;
 19298      }
 19299  
 19300      /**
 19301       * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
 19302       * `SyntaxError`, `TypeError`, or `URIError` object.
 19303       *
 19304       * @static
 19305       * @memberOf _
 19306       * @since 3.0.0
 19307       * @category Lang
 19308       * @param {*} value The value to check.
 19309       * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
 19310       * @example
 19311       *
 19312       * _.isError(new Error);
 19313       * // => true
 19314       *
 19315       * _.isError(Error);
 19316       * // => false
 19317       */
 19318      function isError(value) {
 19319        if (!isObjectLike(value)) {
 19320          return false;
 19321        }
 19322        var tag = baseGetTag(value);
 19323        return tag == errorTag || tag == domExcTag ||
 19324          (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));
 19325      }
 19326  
 19327      /**
 19328       * Checks if `value` is a finite primitive number.
 19329       *
 19330       * **Note:** This method is based on
 19331       * [`Number.isFinite`](https://mdn.io/Number/isFinite).
 19332       *
 19333       * @static
 19334       * @memberOf _
 19335       * @since 0.1.0
 19336       * @category Lang
 19337       * @param {*} value The value to check.
 19338       * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
 19339       * @example
 19340       *
 19341       * _.isFinite(3);
 19342       * // => true
 19343       *
 19344       * _.isFinite(Number.MIN_VALUE);
 19345       * // => true
 19346       *
 19347       * _.isFinite(Infinity);
 19348       * // => false
 19349       *
 19350       * _.isFinite('3');
 19351       * // => false
 19352       */
 19353      function isFinite(value) {
 19354        return typeof value == 'number' && nativeIsFinite(value);
 19355      }
 19356  
 19357      /**
 19358       * Checks if `value` is classified as a `Function` object.
 19359       *
 19360       * @static
 19361       * @memberOf _
 19362       * @since 0.1.0
 19363       * @category Lang
 19364       * @param {*} value The value to check.
 19365       * @returns {boolean} Returns `true` if `value` is a function, else `false`.
 19366       * @example
 19367       *
 19368       * _.isFunction(_);
 19369       * // => true
 19370       *
 19371       * _.isFunction(/abc/);
 19372       * // => false
 19373       */
 19374      function isFunction(value) {
 19375        if (!isObject(value)) {
 19376          return false;
 19377        }
 19378        // The use of `Object#toString` avoids issues with the `typeof` operator
 19379        // in Safari 9 which returns 'object' for typed arrays and other constructors.
 19380        var tag = baseGetTag(value);
 19381        return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
 19382      }
 19383  
 19384      /**
 19385       * Checks if `value` is an integer.
 19386       *
 19387       * **Note:** This method is based on
 19388       * [`Number.isInteger`](https://mdn.io/Number/isInteger).
 19389       *
 19390       * @static
 19391       * @memberOf _
 19392       * @since 4.0.0
 19393       * @category Lang
 19394       * @param {*} value The value to check.
 19395       * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
 19396       * @example
 19397       *
 19398       * _.isInteger(3);
 19399       * // => true
 19400       *
 19401       * _.isInteger(Number.MIN_VALUE);
 19402       * // => false
 19403       *
 19404       * _.isInteger(Infinity);
 19405       * // => false
 19406       *
 19407       * _.isInteger('3');
 19408       * // => false
 19409       */
 19410      function isInteger(value) {
 19411        return typeof value == 'number' && value == toInteger(value);
 19412      }
 19413  
 19414      /**
 19415       * Checks if `value` is a valid array-like length.
 19416       *
 19417       * **Note:** This method is loosely based on
 19418       * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
 19419       *
 19420       * @static
 19421       * @memberOf _
 19422       * @since 4.0.0
 19423       * @category Lang
 19424       * @param {*} value The value to check.
 19425       * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
 19426       * @example
 19427       *
 19428       * _.isLength(3);
 19429       * // => true
 19430       *
 19431       * _.isLength(Number.MIN_VALUE);
 19432       * // => false
 19433       *
 19434       * _.isLength(Infinity);
 19435       * // => false
 19436       *
 19437       * _.isLength('3');
 19438       * // => false
 19439       */
 19440      function isLength(value) {
 19441        return typeof value == 'number' &&
 19442          value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
 19443      }
 19444  
 19445      /**
 19446       * Checks if `value` is the
 19447       * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
 19448       * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
 19449       *
 19450       * @static
 19451       * @memberOf _
 19452       * @since 0.1.0
 19453       * @category Lang
 19454       * @param {*} value The value to check.
 19455       * @returns {boolean} Returns `true` if `value` is an object, else `false`.
 19456       * @example
 19457       *
 19458       * _.isObject({});
 19459       * // => true
 19460       *
 19461       * _.isObject([1, 2, 3]);
 19462       * // => true
 19463       *
 19464       * _.isObject(_.noop);
 19465       * // => true
 19466       *
 19467       * _.isObject(null);
 19468       * // => false
 19469       */
 19470      function isObject(value) {
 19471        var type = typeof value;
 19472        return value != null && (type == 'object' || type == 'function');
 19473      }
 19474  
 19475      /**
 19476       * Checks if `value` is object-like. A value is object-like if it's not `null`
 19477       * and has a `typeof` result of "object".
 19478       *
 19479       * @static
 19480       * @memberOf _
 19481       * @since 4.0.0
 19482       * @category Lang
 19483       * @param {*} value The value to check.
 19484       * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
 19485       * @example
 19486       *
 19487       * _.isObjectLike({});
 19488       * // => true
 19489       *
 19490       * _.isObjectLike([1, 2, 3]);
 19491       * // => true
 19492       *
 19493       * _.isObjectLike(_.noop);
 19494       * // => false
 19495       *
 19496       * _.isObjectLike(null);
 19497       * // => false
 19498       */
 19499      function isObjectLike(value) {
 19500        return value != null && typeof value == 'object';
 19501      }
 19502  
 19503      /**
 19504       * Checks if `value` is classified as a `Map` object.
 19505       *
 19506       * @static
 19507       * @memberOf _
 19508       * @since 4.3.0
 19509       * @category Lang
 19510       * @param {*} value The value to check.
 19511       * @returns {boolean} Returns `true` if `value` is a map, else `false`.
 19512       * @example
 19513       *
 19514       * _.isMap(new Map);
 19515       * // => true
 19516       *
 19517       * _.isMap(new WeakMap);
 19518       * // => false
 19519       */
 19520      var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
 19521  
 19522      /**
 19523       * Performs a partial deep comparison between `object` and `source` to
 19524       * determine if `object` contains equivalent property values.
 19525       *
 19526       * **Note:** This method is equivalent to `_.matches` when `source` is
 19527       * partially applied.
 19528       *
 19529       * Partial comparisons will match empty array and empty object `source`
 19530       * values against any array or object value, respectively. See `_.isEqual`
 19531       * for a list of supported value comparisons.
 19532       *
 19533       * @static
 19534       * @memberOf _
 19535       * @since 3.0.0
 19536       * @category Lang
 19537       * @param {Object} object The object to inspect.
 19538       * @param {Object} source The object of property values to match.
 19539       * @returns {boolean} Returns `true` if `object` is a match, else `false`.
 19540       * @example
 19541       *
 19542       * var object = { 'a': 1, 'b': 2 };
 19543       *
 19544       * _.isMatch(object, { 'b': 2 });
 19545       * // => true
 19546       *
 19547       * _.isMatch(object, { 'b': 1 });
 19548       * // => false
 19549       */
 19550      function isMatch(object, source) {
 19551        return object === source || baseIsMatch(object, source, getMatchData(source));
 19552      }
 19553  
 19554      /**
 19555       * This method is like `_.isMatch` except that it accepts `customizer` which
 19556       * is invoked to compare values. If `customizer` returns `undefined`, comparisons
 19557       * are handled by the method instead. The `customizer` is invoked with five
 19558       * arguments: (objValue, srcValue, index|key, object, source).
 19559       *
 19560       * @static
 19561       * @memberOf _
 19562       * @since 4.0.0
 19563       * @category Lang
 19564       * @param {Object} object The object to inspect.
 19565       * @param {Object} source The object of property values to match.
 19566       * @param {Function} [customizer] The function to customize comparisons.
 19567       * @returns {boolean} Returns `true` if `object` is a match, else `false`.
 19568       * @example
 19569       *
 19570       * function isGreeting(value) {
 19571       *   return /^h(?:i|ello)$/.test(value);
 19572       * }
 19573       *
 19574       * function customizer(objValue, srcValue) {
 19575       *   if (isGreeting(objValue) && isGreeting(srcValue)) {
 19576       *     return true;
 19577       *   }
 19578       * }
 19579       *
 19580       * var object = { 'greeting': 'hello' };
 19581       * var source = { 'greeting': 'hi' };
 19582       *
 19583       * _.isMatchWith(object, source, customizer);
 19584       * // => true
 19585       */
 19586      function isMatchWith(object, source, customizer) {
 19587        customizer = typeof customizer == 'function' ? customizer : undefined;
 19588        return baseIsMatch(object, source, getMatchData(source), customizer);
 19589      }
 19590  
 19591      /**
 19592       * Checks if `value` is `NaN`.
 19593       *
 19594       * **Note:** This method is based on
 19595       * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
 19596       * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
 19597       * `undefined` and other non-number values.
 19598       *
 19599       * @static
 19600       * @memberOf _
 19601       * @since 0.1.0
 19602       * @category Lang
 19603       * @param {*} value The value to check.
 19604       * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
 19605       * @example
 19606       *
 19607       * _.isNaN(NaN);
 19608       * // => true
 19609       *
 19610       * _.isNaN(new Number(NaN));
 19611       * // => true
 19612       *
 19613       * isNaN(undefined);
 19614       * // => true
 19615       *
 19616       * _.isNaN(undefined);
 19617       * // => false
 19618       */
 19619      function isNaN(value) {
 19620        // An `NaN` primitive is the only value that is not equal to itself.
 19621        // Perform the `toStringTag` check first to avoid errors with some
 19622        // ActiveX objects in IE.
 19623        return isNumber(value) && value != +value;
 19624      }
 19625  
 19626      /**
 19627       * Checks if `value` is a pristine native function.
 19628       *
 19629       * **Note:** This method can't reliably detect native functions in the presence
 19630       * of the core-js package because core-js circumvents this kind of detection.
 19631       * Despite multiple requests, the core-js maintainer has made it clear: any
 19632       * attempt to fix the detection will be obstructed. As a result, we're left
 19633       * with little choice but to throw an error. Unfortunately, this also affects
 19634       * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),
 19635       * which rely on core-js.
 19636       *
 19637       * @static
 19638       * @memberOf _
 19639       * @since 3.0.0
 19640       * @category Lang
 19641       * @param {*} value The value to check.
 19642       * @returns {boolean} Returns `true` if `value` is a native function,
 19643       *  else `false`.
 19644       * @example
 19645       *
 19646       * _.isNative(Array.prototype.push);
 19647       * // => true
 19648       *
 19649       * _.isNative(_);
 19650       * // => false
 19651       */
 19652      function isNative(value) {
 19653        if (isMaskable(value)) {
 19654          throw new Error(CORE_ERROR_TEXT);
 19655        }
 19656        return baseIsNative(value);
 19657      }
 19658  
 19659      /**
 19660       * Checks if `value` is `null`.
 19661       *
 19662       * @static
 19663       * @memberOf _
 19664       * @since 0.1.0
 19665       * @category Lang
 19666       * @param {*} value The value to check.
 19667       * @returns {boolean} Returns `true` if `value` is `null`, else `false`.
 19668       * @example
 19669       *
 19670       * _.isNull(null);
 19671       * // => true
 19672       *
 19673       * _.isNull(void 0);
 19674       * // => false
 19675       */
 19676      function isNull(value) {
 19677        return value === null;
 19678      }
 19679  
 19680      /**
 19681       * Checks if `value` is `null` or `undefined`.
 19682       *
 19683       * @static
 19684       * @memberOf _
 19685       * @since 4.0.0
 19686       * @category Lang
 19687       * @param {*} value The value to check.
 19688       * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
 19689       * @example
 19690       *
 19691       * _.isNil(null);
 19692       * // => true
 19693       *
 19694       * _.isNil(void 0);
 19695       * // => true
 19696       *
 19697       * _.isNil(NaN);
 19698       * // => false
 19699       */
 19700      function isNil(value) {
 19701        return value == null;
 19702      }
 19703  
 19704      /**
 19705       * Checks if `value` is classified as a `Number` primitive or object.
 19706       *
 19707       * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
 19708       * classified as numbers, use the `_.isFinite` method.
 19709       *
 19710       * @static
 19711       * @memberOf _
 19712       * @since 0.1.0
 19713       * @category Lang
 19714       * @param {*} value The value to check.
 19715       * @returns {boolean} Returns `true` if `value` is a number, else `false`.
 19716       * @example
 19717       *
 19718       * _.isNumber(3);
 19719       * // => true
 19720       *
 19721       * _.isNumber(Number.MIN_VALUE);
 19722       * // => true
 19723       *
 19724       * _.isNumber(Infinity);
 19725       * // => true
 19726       *
 19727       * _.isNumber('3');
 19728       * // => false
 19729       */
 19730      function isNumber(value) {
 19731        return typeof value == 'number' ||
 19732          (isObjectLike(value) && baseGetTag(value) == numberTag);
 19733      }
 19734  
 19735      /**
 19736       * Checks if `value` is a plain object, that is, an object created by the
 19737       * `Object` constructor or one with a `[[Prototype]]` of `null`.
 19738       *
 19739       * @static
 19740       * @memberOf _
 19741       * @since 0.8.0
 19742       * @category Lang
 19743       * @param {*} value The value to check.
 19744       * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
 19745       * @example
 19746       *
 19747       * function Foo() {
 19748       *   this.a = 1;
 19749       * }
 19750       *
 19751       * _.isPlainObject(new Foo);
 19752       * // => false
 19753       *
 19754       * _.isPlainObject([1, 2, 3]);
 19755       * // => false
 19756       *
 19757       * _.isPlainObject({ 'x': 0, 'y': 0 });
 19758       * // => true
 19759       *
 19760       * _.isPlainObject(Object.create(null));
 19761       * // => true
 19762       */
 19763      function isPlainObject(value) {
 19764        if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
 19765          return false;
 19766        }
 19767        var proto = getPrototype(value);
 19768        if (proto === null) {
 19769          return true;
 19770        }
 19771        var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
 19772        return typeof Ctor == 'function' && Ctor instanceof Ctor &&
 19773          funcToString.call(Ctor) == objectCtorString;
 19774      }
 19775  
 19776      /**
 19777       * Checks if `value` is classified as a `RegExp` object.
 19778       *
 19779       * @static
 19780       * @memberOf _
 19781       * @since 0.1.0
 19782       * @category Lang
 19783       * @param {*} value The value to check.
 19784       * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
 19785       * @example
 19786       *
 19787       * _.isRegExp(/abc/);
 19788       * // => true
 19789       *
 19790       * _.isRegExp('/abc/');
 19791       * // => false
 19792       */
 19793      var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
 19794  
 19795      /**
 19796       * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754
 19797       * double precision number which isn't the result of a rounded unsafe integer.
 19798       *
 19799       * **Note:** This method is based on
 19800       * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).
 19801       *
 19802       * @static
 19803       * @memberOf _
 19804       * @since 4.0.0
 19805       * @category Lang
 19806       * @param {*} value The value to check.
 19807       * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.
 19808       * @example
 19809       *
 19810       * _.isSafeInteger(3);
 19811       * // => true
 19812       *
 19813       * _.isSafeInteger(Number.MIN_VALUE);
 19814       * // => false
 19815       *
 19816       * _.isSafeInteger(Infinity);
 19817       * // => false
 19818       *
 19819       * _.isSafeInteger('3');
 19820       * // => false
 19821       */
 19822      function isSafeInteger(value) {
 19823        return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
 19824      }
 19825  
 19826      /**
 19827       * Checks if `value` is classified as a `Set` object.
 19828       *
 19829       * @static
 19830       * @memberOf _
 19831       * @since 4.3.0
 19832       * @category Lang
 19833       * @param {*} value The value to check.
 19834       * @returns {boolean} Returns `true` if `value` is a set, else `false`.
 19835       * @example
 19836       *
 19837       * _.isSet(new Set);
 19838       * // => true
 19839       *
 19840       * _.isSet(new WeakSet);
 19841       * // => false
 19842       */
 19843      var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
 19844  
 19845      /**
 19846       * Checks if `value` is classified as a `String` primitive or object.
 19847       *
 19848       * @static
 19849       * @since 0.1.0
 19850       * @memberOf _
 19851       * @category Lang
 19852       * @param {*} value The value to check.
 19853       * @returns {boolean} Returns `true` if `value` is a string, else `false`.
 19854       * @example
 19855       *
 19856       * _.isString('abc');
 19857       * // => true
 19858       *
 19859       * _.isString(1);
 19860       * // => false
 19861       */
 19862      function isString(value) {
 19863        return typeof value == 'string' ||
 19864          (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
 19865      }
 19866  
 19867      /**
 19868       * Checks if `value` is classified as a `Symbol` primitive or object.
 19869       *
 19870       * @static
 19871       * @memberOf _
 19872       * @since 4.0.0
 19873       * @category Lang
 19874       * @param {*} value The value to check.
 19875       * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
 19876       * @example
 19877       *
 19878       * _.isSymbol(Symbol.iterator);
 19879       * // => true
 19880       *
 19881       * _.isSymbol('abc');
 19882       * // => false
 19883       */
 19884      function isSymbol(value) {
 19885        return typeof value == 'symbol' ||
 19886          (isObjectLike(value) && baseGetTag(value) == symbolTag);
 19887      }
 19888  
 19889      /**
 19890       * Checks if `value` is classified as a typed array.
 19891       *
 19892       * @static
 19893       * @memberOf _
 19894       * @since 3.0.0
 19895       * @category Lang
 19896       * @param {*} value The value to check.
 19897       * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
 19898       * @example
 19899       *
 19900       * _.isTypedArray(new Uint8Array);
 19901       * // => true
 19902       *
 19903       * _.isTypedArray([]);
 19904       * // => false
 19905       */
 19906      var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
 19907  
 19908      /**
 19909       * Checks if `value` is `undefined`.
 19910       *
 19911       * @static
 19912       * @since 0.1.0
 19913       * @memberOf _
 19914       * @category Lang
 19915       * @param {*} value The value to check.
 19916       * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
 19917       * @example
 19918       *
 19919       * _.isUndefined(void 0);
 19920       * // => true
 19921       *
 19922       * _.isUndefined(null);
 19923       * // => false
 19924       */
 19925      function isUndefined(value) {
 19926        return value === undefined;
 19927      }
 19928  
 19929      /**
 19930       * Checks if `value` is classified as a `WeakMap` object.
 19931       *
 19932       * @static
 19933       * @memberOf _
 19934       * @since 4.3.0
 19935       * @category Lang
 19936       * @param {*} value The value to check.
 19937       * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.
 19938       * @example
 19939       *
 19940       * _.isWeakMap(new WeakMap);
 19941       * // => true
 19942       *
 19943       * _.isWeakMap(new Map);
 19944       * // => false
 19945       */
 19946      function isWeakMap(value) {
 19947        return isObjectLike(value) && getTag(value) == weakMapTag;
 19948      }
 19949  
 19950      /**
 19951       * Checks if `value` is classified as a `WeakSet` object.
 19952       *
 19953       * @static
 19954       * @memberOf _
 19955       * @since 4.3.0
 19956       * @category Lang
 19957       * @param {*} value The value to check.
 19958       * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.
 19959       * @example
 19960       *
 19961       * _.isWeakSet(new WeakSet);
 19962       * // => true
 19963       *
 19964       * _.isWeakSet(new Set);
 19965       * // => false
 19966       */
 19967      function isWeakSet(value) {
 19968        return isObjectLike(value) && baseGetTag(value) == weakSetTag;
 19969      }
 19970  
 19971      /**
 19972       * Checks if `value` is less than `other`.
 19973       *
 19974       * @static
 19975       * @memberOf _
 19976       * @since 3.9.0
 19977       * @category Lang
 19978       * @param {*} value The value to compare.
 19979       * @param {*} other The other value to compare.
 19980       * @returns {boolean} Returns `true` if `value` is less than `other`,
 19981       *  else `false`.
 19982       * @see _.gt
 19983       * @example
 19984       *
 19985       * _.lt(1, 3);
 19986       * // => true
 19987       *
 19988       * _.lt(3, 3);
 19989       * // => false
 19990       *
 19991       * _.lt(3, 1);
 19992       * // => false
 19993       */
 19994      var lt = createRelationalOperation(baseLt);
 19995  
 19996      /**
 19997       * Checks if `value` is less than or equal to `other`.
 19998       *
 19999       * @static
 20000       * @memberOf _
 20001       * @since 3.9.0
 20002       * @category Lang
 20003       * @param {*} value The value to compare.
 20004       * @param {*} other The other value to compare.
 20005       * @returns {boolean} Returns `true` if `value` is less than or equal to
 20006       *  `other`, else `false`.
 20007       * @see _.gte
 20008       * @example
 20009       *
 20010       * _.lte(1, 3);
 20011       * // => true
 20012       *
 20013       * _.lte(3, 3);
 20014       * // => true
 20015       *
 20016       * _.lte(3, 1);
 20017       * // => false
 20018       */
 20019      var lte = createRelationalOperation(function(value, other) {
 20020        return value <= other;
 20021      });
 20022  
 20023      /**
 20024       * Converts `value` to an array.
 20025       *
 20026       * @static
 20027       * @since 0.1.0
 20028       * @memberOf _
 20029       * @category Lang
 20030       * @param {*} value The value to convert.
 20031       * @returns {Array} Returns the converted array.
 20032       * @example
 20033       *
 20034       * _.toArray({ 'a': 1, 'b': 2 });
 20035       * // => [1, 2]
 20036       *
 20037       * _.toArray('abc');
 20038       * // => ['a', 'b', 'c']
 20039       *
 20040       * _.toArray(1);
 20041       * // => []
 20042       *
 20043       * _.toArray(null);
 20044       * // => []
 20045       */
 20046      function toArray(value) {
 20047        if (!value) {
 20048          return [];
 20049        }
 20050        if (isArrayLike(value)) {
 20051          return isString(value) ? stringToArray(value) : copyArray(value);
 20052        }
 20053        if (symIterator && value[symIterator]) {
 20054          return iteratorToArray(value[symIterator]());
 20055        }
 20056        var tag = getTag(value),
 20057            func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);
 20058  
 20059        return func(value);
 20060      }
 20061  
 20062      /**
 20063       * Converts `value` to a finite number.
 20064       *
 20065       * @static
 20066       * @memberOf _
 20067       * @since 4.12.0
 20068       * @category Lang
 20069       * @param {*} value The value to convert.
 20070       * @returns {number} Returns the converted number.
 20071       * @example
 20072       *
 20073       * _.toFinite(3.2);
 20074       * // => 3.2
 20075       *
 20076       * _.toFinite(Number.MIN_VALUE);
 20077       * // => 5e-324
 20078       *
 20079       * _.toFinite(Infinity);
 20080       * // => 1.7976931348623157e+308
 20081       *
 20082       * _.toFinite('3.2');
 20083       * // => 3.2
 20084       */
 20085      function toFinite(value) {
 20086        if (!value) {
 20087          return value === 0 ? value : 0;
 20088        }
 20089        value = toNumber(value);
 20090        if (value === INFINITY || value === -INFINITY) {
 20091          var sign = (value < 0 ? -1 : 1);
 20092          return sign * MAX_INTEGER;
 20093        }
 20094        return value === value ? value : 0;
 20095      }
 20096  
 20097      /**
 20098       * Converts `value` to an integer.
 20099       *
 20100       * **Note:** This method is loosely based on
 20101       * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
 20102       *
 20103       * @static
 20104       * @memberOf _
 20105       * @since 4.0.0
 20106       * @category Lang
 20107       * @param {*} value The value to convert.
 20108       * @returns {number} Returns the converted integer.
 20109       * @example
 20110       *
 20111       * _.toInteger(3.2);
 20112       * // => 3
 20113       *
 20114       * _.toInteger(Number.MIN_VALUE);
 20115       * // => 0
 20116       *
 20117       * _.toInteger(Infinity);
 20118       * // => 1.7976931348623157e+308
 20119       *
 20120       * _.toInteger('3.2');
 20121       * // => 3
 20122       */
 20123      function toInteger(value) {
 20124        var result = toFinite(value),
 20125            remainder = result % 1;
 20126  
 20127        return result === result ? (remainder ? result - remainder : result) : 0;
 20128      }
 20129  
 20130      /**
 20131       * Converts `value` to an integer suitable for use as the length of an
 20132       * array-like object.
 20133       *
 20134       * **Note:** This method is based on
 20135       * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
 20136       *
 20137       * @static
 20138       * @memberOf _
 20139       * @since 4.0.0
 20140       * @category Lang
 20141       * @param {*} value The value to convert.
 20142       * @returns {number} Returns the converted integer.
 20143       * @example
 20144       *
 20145       * _.toLength(3.2);
 20146       * // => 3
 20147       *
 20148       * _.toLength(Number.MIN_VALUE);
 20149       * // => 0
 20150       *
 20151       * _.toLength(Infinity);
 20152       * // => 4294967295
 20153       *
 20154       * _.toLength('3.2');
 20155       * // => 3
 20156       */
 20157      function toLength(value) {
 20158        return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
 20159      }
 20160  
 20161      /**
 20162       * Converts `value` to a number.
 20163       *
 20164       * @static
 20165       * @memberOf _
 20166       * @since 4.0.0
 20167       * @category Lang
 20168       * @param {*} value The value to process.
 20169       * @returns {number} Returns the number.
 20170       * @example
 20171       *
 20172       * _.toNumber(3.2);
 20173       * // => 3.2
 20174       *
 20175       * _.toNumber(Number.MIN_VALUE);
 20176       * // => 5e-324
 20177       *
 20178       * _.toNumber(Infinity);
 20179       * // => Infinity
 20180       *
 20181       * _.toNumber('3.2');
 20182       * // => 3.2
 20183       */
 20184      function toNumber(value) {
 20185        if (typeof value == 'number') {
 20186          return value;
 20187        }
 20188        if (isSymbol(value)) {
 20189          return NAN;
 20190        }
 20191        if (isObject(value)) {
 20192          var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
 20193          value = isObject(other) ? (other + '') : other;
 20194        }
 20195        if (typeof value != 'string') {
 20196          return value === 0 ? value : +value;
 20197        }
 20198        value = value.replace(reTrim, '');
 20199        var isBinary = reIsBinary.test(value);
 20200        return (isBinary || reIsOctal.test(value))
 20201          ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
 20202          : (reIsBadHex.test(value) ? NAN : +value);
 20203      }
 20204  
 20205      /**
 20206       * Converts `value` to a plain object flattening inherited enumerable string
 20207       * keyed properties of `value` to own properties of the plain object.
 20208       *
 20209       * @static
 20210       * @memberOf _
 20211       * @since 3.0.0
 20212       * @category Lang
 20213       * @param {*} value The value to convert.
 20214       * @returns {Object} Returns the converted plain object.
 20215       * @example
 20216       *
 20217       * function Foo() {
 20218       *   this.b = 2;
 20219       * }
 20220       *
 20221       * Foo.prototype.c = 3;
 20222       *
 20223       * _.assign({ 'a': 1 }, new Foo);
 20224       * // => { 'a': 1, 'b': 2 }
 20225       *
 20226       * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
 20227       * // => { 'a': 1, 'b': 2, 'c': 3 }
 20228       */
 20229      function toPlainObject(value) {
 20230        return copyObject(value, keysIn(value));
 20231      }
 20232  
 20233      /**
 20234       * Converts `value` to a safe integer. A safe integer can be compared and
 20235       * represented correctly.
 20236       *
 20237       * @static
 20238       * @memberOf _
 20239       * @since 4.0.0
 20240       * @category Lang
 20241       * @param {*} value The value to convert.
 20242       * @returns {number} Returns the converted integer.
 20243       * @example
 20244       *
 20245       * _.toSafeInteger(3.2);
 20246       * // => 3
 20247       *
 20248       * _.toSafeInteger(Number.MIN_VALUE);
 20249       * // => 0
 20250       *
 20251       * _.toSafeInteger(Infinity);
 20252       * // => 9007199254740991
 20253       *
 20254       * _.toSafeInteger('3.2');
 20255       * // => 3
 20256       */
 20257      function toSafeInteger(value) {
 20258        return value
 20259          ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)
 20260          : (value === 0 ? value : 0);
 20261      }
 20262  
 20263      /**
 20264       * Converts `value` to a string. An empty string is returned for `null`
 20265       * and `undefined` values. The sign of `-0` is preserved.
 20266       *
 20267       * @static
 20268       * @memberOf _
 20269       * @since 4.0.0
 20270       * @category Lang
 20271       * @param {*} value The value to convert.
 20272       * @returns {string} Returns the converted string.
 20273       * @example
 20274       *
 20275       * _.toString(null);
 20276       * // => ''
 20277       *
 20278       * _.toString(-0);
 20279       * // => '-0'
 20280       *
 20281       * _.toString([1, 2, 3]);
 20282       * // => '1,2,3'
 20283       */
 20284      function toString(value) {
 20285        return value == null ? '' : baseToString(value);
 20286      }
 20287  
 20288      /*------------------------------------------------------------------------*/
 20289  
 20290      /**
 20291       * Assigns own enumerable string keyed properties of source objects to the
 20292       * destination object. Source objects are applied from left to right.
 20293       * Subsequent sources overwrite property assignments of previous sources.
 20294       *
 20295       * **Note:** This method mutates `object` and is loosely based on
 20296       * [`Object.assign`](https://mdn.io/Object/assign).
 20297       *
 20298       * @static
 20299       * @memberOf _
 20300       * @since 0.10.0
 20301       * @category Object
 20302       * @param {Object} object The destination object.
 20303       * @param {...Object} [sources] The source objects.
 20304       * @returns {Object} Returns `object`.
 20305       * @see _.assignIn
 20306       * @example
 20307       *
 20308       * function Foo() {
 20309       *   this.a = 1;
 20310       * }
 20311       *
 20312       * function Bar() {
 20313       *   this.c = 3;
 20314       * }
 20315       *
 20316       * Foo.prototype.b = 2;
 20317       * Bar.prototype.d = 4;
 20318       *
 20319       * _.assign({ 'a': 0 }, new Foo, new Bar);
 20320       * // => { 'a': 1, 'c': 3 }
 20321       */
 20322      var assign = createAssigner(function(object, source) {
 20323        if (isPrototype(source) || isArrayLike(source)) {
 20324          copyObject(source, keys(source), object);
 20325          return;
 20326        }
 20327        for (var key in source) {
 20328          if (hasOwnProperty.call(source, key)) {
 20329            assignValue(object, key, source[key]);
 20330          }
 20331        }
 20332      });
 20333  
 20334      /**
 20335       * This method is like `_.assign` except that it iterates over own and
 20336       * inherited source properties.
 20337       *
 20338       * **Note:** This method mutates `object`.
 20339       *
 20340       * @static
 20341       * @memberOf _
 20342       * @since 4.0.0
 20343       * @alias extend
 20344       * @category Object
 20345       * @param {Object} object The destination object.
 20346       * @param {...Object} [sources] The source objects.
 20347       * @returns {Object} Returns `object`.
 20348       * @see _.assign
 20349       * @example
 20350       *
 20351       * function Foo() {
 20352       *   this.a = 1;
 20353       * }
 20354       *
 20355       * function Bar() {
 20356       *   this.c = 3;
 20357       * }
 20358       *
 20359       * Foo.prototype.b = 2;
 20360       * Bar.prototype.d = 4;
 20361       *
 20362       * _.assignIn({ 'a': 0 }, new Foo, new Bar);
 20363       * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
 20364       */
 20365      var assignIn = createAssigner(function(object, source) {
 20366        copyObject(source, keysIn(source), object);
 20367      });
 20368  
 20369      /**
 20370       * This method is like `_.assignIn` except that it accepts `customizer`
 20371       * which is invoked to produce the assigned values. If `customizer` returns
 20372       * `undefined`, assignment is handled by the method instead. The `customizer`
 20373       * is invoked with five arguments: (objValue, srcValue, key, object, source).
 20374       *
 20375       * **Note:** This method mutates `object`.
 20376       *
 20377       * @static
 20378       * @memberOf _
 20379       * @since 4.0.0
 20380       * @alias extendWith
 20381       * @category Object
 20382       * @param {Object} object The destination object.
 20383       * @param {...Object} sources The source objects.
 20384       * @param {Function} [customizer] The function to customize assigned values.
 20385       * @returns {Object} Returns `object`.
 20386       * @see _.assignWith
 20387       * @example
 20388       *
 20389       * function customizer(objValue, srcValue) {
 20390       *   return _.isUndefined(objValue) ? srcValue : objValue;
 20391       * }
 20392       *
 20393       * var defaults = _.partialRight(_.assignInWith, customizer);
 20394       *
 20395       * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
 20396       * // => { 'a': 1, 'b': 2 }
 20397       */
 20398      var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
 20399        copyObject(source, keysIn(source), object, customizer);
 20400      });
 20401  
 20402      /**
 20403       * This method is like `_.assign` except that it accepts `customizer`
 20404       * which is invoked to produce the assigned values. If `customizer` returns
 20405       * `undefined`, assignment is handled by the method instead. The `customizer`
 20406       * is invoked with five arguments: (objValue, srcValue, key, object, source).
 20407       *
 20408       * **Note:** This method mutates `object`.
 20409       *
 20410       * @static
 20411       * @memberOf _
 20412       * @since 4.0.0
 20413       * @category Object
 20414       * @param {Object} object The destination object.
 20415       * @param {...Object} sources The source objects.
 20416       * @param {Function} [customizer] The function to customize assigned values.
 20417       * @returns {Object} Returns `object`.
 20418       * @see _.assignInWith
 20419       * @example
 20420       *
 20421       * function customizer(objValue, srcValue) {
 20422       *   return _.isUndefined(objValue) ? srcValue : objValue;
 20423       * }
 20424       *
 20425       * var defaults = _.partialRight(_.assignWith, customizer);
 20426       *
 20427       * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
 20428       * // => { 'a': 1, 'b': 2 }
 20429       */
 20430      var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
 20431        copyObject(source, keys(source), object, customizer);
 20432      });
 20433  
 20434      /**
 20435       * Creates an array of values corresponding to `paths` of `object`.
 20436       *
 20437       * @static
 20438       * @memberOf _
 20439       * @since 1.0.0
 20440       * @category Object
 20441       * @param {Object} object The object to iterate over.
 20442       * @param {...(string|string[])} [paths] The property paths to pick.
 20443       * @returns {Array} Returns the picked values.
 20444       * @example
 20445       *
 20446       * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
 20447       *
 20448       * _.at(object, ['a[0].b.c', 'a[1]']);
 20449       * // => [3, 4]
 20450       */
 20451      var at = flatRest(baseAt);
 20452  
 20453      /**
 20454       * Creates an object that inherits from the `prototype` object. If a
 20455       * `properties` object is given, its own enumerable string keyed properties
 20456       * are assigned to the created object.
 20457       *
 20458       * @static
 20459       * @memberOf _
 20460       * @since 2.3.0
 20461       * @category Object
 20462       * @param {Object} prototype The object to inherit from.
 20463       * @param {Object} [properties] The properties to assign to the object.
 20464       * @returns {Object} Returns the new object.
 20465       * @example
 20466       *
 20467       * function Shape() {
 20468       *   this.x = 0;
 20469       *   this.y = 0;
 20470       * }
 20471       *
 20472       * function Circle() {
 20473       *   Shape.call(this);
 20474       * }
 20475       *
 20476       * Circle.prototype = _.create(Shape.prototype, {
 20477       *   'constructor': Circle
 20478       * });
 20479       *
 20480       * var circle = new Circle;
 20481       * circle instanceof Circle;
 20482       * // => true
 20483       *
 20484       * circle instanceof Shape;
 20485       * // => true
 20486       */
 20487      function create(prototype, properties) {
 20488        var result = baseCreate(prototype);
 20489        return properties == null ? result : baseAssign(result, properties);
 20490      }
 20491  
 20492      /**
 20493       * Assigns own and inherited enumerable string keyed properties of source
 20494       * objects to the destination object for all destination properties that
 20495       * resolve to `undefined`. Source objects are applied from left to right.
 20496       * Once a property is set, additional values of the same property are ignored.
 20497       *
 20498       * **Note:** This method mutates `object`.
 20499       *
 20500       * @static
 20501       * @since 0.1.0
 20502       * @memberOf _
 20503       * @category Object
 20504       * @param {Object} object The destination object.
 20505       * @param {...Object} [sources] The source objects.
 20506       * @returns {Object} Returns `object`.
 20507       * @see _.defaultsDeep
 20508       * @example
 20509       *
 20510       * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
 20511       * // => { 'a': 1, 'b': 2 }
 20512       */
 20513      var defaults = baseRest(function(object, sources) {
 20514        object = Object(object);
 20515  
 20516        var index = -1;
 20517        var length = sources.length;
 20518        var guard = length > 2 ? sources[2] : undefined;
 20519  
 20520        if (guard && isIterateeCall(sources[0], sources[1], guard)) {
 20521          length = 1;
 20522        }
 20523  
 20524        while (++index < length) {
 20525          var source = sources[index];
 20526          var props = keysIn(source);
 20527          var propsIndex = -1;
 20528          var propsLength = props.length;
 20529  
 20530          while (++propsIndex < propsLength) {
 20531            var key = props[propsIndex];
 20532            var value = object[key];
 20533  
 20534            if (value === undefined ||
 20535                (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
 20536              object[key] = source[key];
 20537            }
 20538          }
 20539        }
 20540  
 20541        return object;
 20542      });
 20543  
 20544      /**
 20545       * This method is like `_.defaults` except that it recursively assigns
 20546       * default properties.
 20547       *
 20548       * **Note:** This method mutates `object`.
 20549       *
 20550       * @static
 20551       * @memberOf _
 20552       * @since 3.10.0
 20553       * @category Object
 20554       * @param {Object} object The destination object.
 20555       * @param {...Object} [sources] The source objects.
 20556       * @returns {Object} Returns `object`.
 20557       * @see _.defaults
 20558       * @example
 20559       *
 20560       * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });
 20561       * // => { 'a': { 'b': 2, 'c': 3 } }
 20562       */
 20563      var defaultsDeep = baseRest(function(args) {
 20564        args.push(undefined, customDefaultsMerge);
 20565        return apply(mergeWith, undefined, args);
 20566      });
 20567  
 20568      /**
 20569       * This method is like `_.find` except that it returns the key of the first
 20570       * element `predicate` returns truthy for instead of the element itself.
 20571       *
 20572       * @static
 20573       * @memberOf _
 20574       * @since 1.1.0
 20575       * @category Object
 20576       * @param {Object} object The object to inspect.
 20577       * @param {Function} [predicate=_.identity] The function invoked per iteration.
 20578       * @returns {string|undefined} Returns the key of the matched element,
 20579       *  else `undefined`.
 20580       * @example
 20581       *
 20582       * var users = {
 20583       *   'barney':  { 'age': 36, 'active': true },
 20584       *   'fred':    { 'age': 40, 'active': false },
 20585       *   'pebbles': { 'age': 1,  'active': true }
 20586       * };
 20587       *
 20588       * _.findKey(users, function(o) { return o.age < 40; });
 20589       * // => 'barney' (iteration order is not guaranteed)
 20590       *
 20591       * // The `_.matches` iteratee shorthand.
 20592       * _.findKey(users, { 'age': 1, 'active': true });
 20593       * // => 'pebbles'
 20594       *
 20595       * // The `_.matchesProperty` iteratee shorthand.
 20596       * _.findKey(users, ['active', false]);
 20597       * // => 'fred'
 20598       *
 20599       * // The `_.property` iteratee shorthand.
 20600       * _.findKey(users, 'active');
 20601       * // => 'barney'
 20602       */
 20603      function findKey(object, predicate) {
 20604        return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
 20605      }
 20606  
 20607      /**
 20608       * This method is like `_.findKey` except that it iterates over elements of
 20609       * a collection in the opposite order.
 20610       *
 20611       * @static
 20612       * @memberOf _
 20613       * @since 2.0.0
 20614       * @category Object
 20615       * @param {Object} object The object to inspect.
 20616       * @param {Function} [predicate=_.identity] The function invoked per iteration.
 20617       * @returns {string|undefined} Returns the key of the matched element,
 20618       *  else `undefined`.
 20619       * @example
 20620       *
 20621       * var users = {
 20622       *   'barney':  { 'age': 36, 'active': true },
 20623       *   'fred':    { 'age': 40, 'active': false },
 20624       *   'pebbles': { 'age': 1,  'active': true }
 20625       * };
 20626       *
 20627       * _.findLastKey(users, function(o) { return o.age < 40; });
 20628       * // => returns 'pebbles' assuming `_.findKey` returns 'barney'
 20629       *
 20630       * // The `_.matches` iteratee shorthand.
 20631       * _.findLastKey(users, { 'age': 36, 'active': true });
 20632       * // => 'barney'
 20633       *
 20634       * // The `_.matchesProperty` iteratee shorthand.
 20635       * _.findLastKey(users, ['active', false]);
 20636       * // => 'fred'
 20637       *
 20638       * // The `_.property` iteratee shorthand.
 20639       * _.findLastKey(users, 'active');
 20640       * // => 'pebbles'
 20641       */
 20642      function findLastKey(object, predicate) {
 20643        return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
 20644      }
 20645  
 20646      /**
 20647       * Iterates over own and inherited enumerable string keyed properties of an
 20648       * object and invokes `iteratee` for each property. The iteratee is invoked
 20649       * with three arguments: (value, key, object). Iteratee functions may exit
 20650       * iteration early by explicitly returning `false`.
 20651       *
 20652       * @static
 20653       * @memberOf _
 20654       * @since 0.3.0
 20655       * @category Object
 20656       * @param {Object} object The object to iterate over.
 20657       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 20658       * @returns {Object} Returns `object`.
 20659       * @see _.forInRight
 20660       * @example
 20661       *
 20662       * function Foo() {
 20663       *   this.a = 1;
 20664       *   this.b = 2;
 20665       * }
 20666       *
 20667       * Foo.prototype.c = 3;
 20668       *
 20669       * _.forIn(new Foo, function(value, key) {
 20670       *   console.log(key);
 20671       * });
 20672       * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).
 20673       */
 20674      function forIn(object, iteratee) {
 20675        return object == null
 20676          ? object
 20677          : baseFor(object, getIteratee(iteratee, 3), keysIn);
 20678      }
 20679  
 20680      /**
 20681       * This method is like `_.forIn` except that it iterates over properties of
 20682       * `object` in the opposite order.
 20683       *
 20684       * @static
 20685       * @memberOf _
 20686       * @since 2.0.0
 20687       * @category Object
 20688       * @param {Object} object The object to iterate over.
 20689       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 20690       * @returns {Object} Returns `object`.
 20691       * @see _.forIn
 20692       * @example
 20693       *
 20694       * function Foo() {
 20695       *   this.a = 1;
 20696       *   this.b = 2;
 20697       * }
 20698       *
 20699       * Foo.prototype.c = 3;
 20700       *
 20701       * _.forInRight(new Foo, function(value, key) {
 20702       *   console.log(key);
 20703       * });
 20704       * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.
 20705       */
 20706      function forInRight(object, iteratee) {
 20707        return object == null
 20708          ? object
 20709          : baseForRight(object, getIteratee(iteratee, 3), keysIn);
 20710      }
 20711  
 20712      /**
 20713       * Iterates over own enumerable string keyed properties of an object and
 20714       * invokes `iteratee` for each property. The iteratee is invoked with three
 20715       * arguments: (value, key, object). Iteratee functions may exit iteration
 20716       * early by explicitly returning `false`.
 20717       *
 20718       * @static
 20719       * @memberOf _
 20720       * @since 0.3.0
 20721       * @category Object
 20722       * @param {Object} object The object to iterate over.
 20723       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 20724       * @returns {Object} Returns `object`.
 20725       * @see _.forOwnRight
 20726       * @example
 20727       *
 20728       * function Foo() {
 20729       *   this.a = 1;
 20730       *   this.b = 2;
 20731       * }
 20732       *
 20733       * Foo.prototype.c = 3;
 20734       *
 20735       * _.forOwn(new Foo, function(value, key) {
 20736       *   console.log(key);
 20737       * });
 20738       * // => Logs 'a' then 'b' (iteration order is not guaranteed).
 20739       */
 20740      function forOwn(object, iteratee) {
 20741        return object && baseForOwn(object, getIteratee(iteratee, 3));
 20742      }
 20743  
 20744      /**
 20745       * This method is like `_.forOwn` except that it iterates over properties of
 20746       * `object` in the opposite order.
 20747       *
 20748       * @static
 20749       * @memberOf _
 20750       * @since 2.0.0
 20751       * @category Object
 20752       * @param {Object} object The object to iterate over.
 20753       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 20754       * @returns {Object} Returns `object`.
 20755       * @see _.forOwn
 20756       * @example
 20757       *
 20758       * function Foo() {
 20759       *   this.a = 1;
 20760       *   this.b = 2;
 20761       * }
 20762       *
 20763       * Foo.prototype.c = 3;
 20764       *
 20765       * _.forOwnRight(new Foo, function(value, key) {
 20766       *   console.log(key);
 20767       * });
 20768       * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.
 20769       */
 20770      function forOwnRight(object, iteratee) {
 20771        return object && baseForOwnRight(object, getIteratee(iteratee, 3));
 20772      }
 20773  
 20774      /**
 20775       * Creates an array of function property names from own enumerable properties
 20776       * of `object`.
 20777       *
 20778       * @static
 20779       * @since 0.1.0
 20780       * @memberOf _
 20781       * @category Object
 20782       * @param {Object} object The object to inspect.
 20783       * @returns {Array} Returns the function names.
 20784       * @see _.functionsIn
 20785       * @example
 20786       *
 20787       * function Foo() {
 20788       *   this.a = _.constant('a');
 20789       *   this.b = _.constant('b');
 20790       * }
 20791       *
 20792       * Foo.prototype.c = _.constant('c');
 20793       *
 20794       * _.functions(new Foo);
 20795       * // => ['a', 'b']
 20796       */
 20797      function functions(object) {
 20798        return object == null ? [] : baseFunctions(object, keys(object));
 20799      }
 20800  
 20801      /**
 20802       * Creates an array of function property names from own and inherited
 20803       * enumerable properties of `object`.
 20804       *
 20805       * @static
 20806       * @memberOf _
 20807       * @since 4.0.0
 20808       * @category Object
 20809       * @param {Object} object The object to inspect.
 20810       * @returns {Array} Returns the function names.
 20811       * @see _.functions
 20812       * @example
 20813       *
 20814       * function Foo() {
 20815       *   this.a = _.constant('a');
 20816       *   this.b = _.constant('b');
 20817       * }
 20818       *
 20819       * Foo.prototype.c = _.constant('c');
 20820       *
 20821       * _.functionsIn(new Foo);
 20822       * // => ['a', 'b', 'c']
 20823       */
 20824      function functionsIn(object) {
 20825        return object == null ? [] : baseFunctions(object, keysIn(object));
 20826      }
 20827  
 20828      /**
 20829       * Gets the value at `path` of `object`. If the resolved value is
 20830       * `undefined`, the `defaultValue` is returned in its place.
 20831       *
 20832       * @static
 20833       * @memberOf _
 20834       * @since 3.7.0
 20835       * @category Object
 20836       * @param {Object} object The object to query.
 20837       * @param {Array|string} path The path of the property to get.
 20838       * @param {*} [defaultValue] The value returned for `undefined` resolved values.
 20839       * @returns {*} Returns the resolved value.
 20840       * @example
 20841       *
 20842       * var object = { 'a': [{ 'b': { 'c': 3 } }] };
 20843       *
 20844       * _.get(object, 'a[0].b.c');
 20845       * // => 3
 20846       *
 20847       * _.get(object, ['a', '0', 'b', 'c']);
 20848       * // => 3
 20849       *
 20850       * _.get(object, 'a.b.c', 'default');
 20851       * // => 'default'
 20852       */
 20853      function get(object, path, defaultValue) {
 20854        var result = object == null ? undefined : baseGet(object, path);
 20855        return result === undefined ? defaultValue : result;
 20856      }
 20857  
 20858      /**
 20859       * Checks if `path` is a direct property of `object`.
 20860       *
 20861       * @static
 20862       * @since 0.1.0
 20863       * @memberOf _
 20864       * @category Object
 20865       * @param {Object} object The object to query.
 20866       * @param {Array|string} path The path to check.
 20867       * @returns {boolean} Returns `true` if `path` exists, else `false`.
 20868       * @example
 20869       *
 20870       * var object = { 'a': { 'b': 2 } };
 20871       * var other = _.create({ 'a': _.create({ 'b': 2 }) });
 20872       *
 20873       * _.has(object, 'a');
 20874       * // => true
 20875       *
 20876       * _.has(object, 'a.b');
 20877       * // => true
 20878       *
 20879       * _.has(object, ['a', 'b']);
 20880       * // => true
 20881       *
 20882       * _.has(other, 'a');
 20883       * // => false
 20884       */
 20885      function has(object, path) {
 20886        return object != null && hasPath(object, path, baseHas);
 20887      }
 20888  
 20889      /**
 20890       * Checks if `path` is a direct or inherited property of `object`.
 20891       *
 20892       * @static
 20893       * @memberOf _
 20894       * @since 4.0.0
 20895       * @category Object
 20896       * @param {Object} object The object to query.
 20897       * @param {Array|string} path The path to check.
 20898       * @returns {boolean} Returns `true` if `path` exists, else `false`.
 20899       * @example
 20900       *
 20901       * var object = _.create({ 'a': _.create({ 'b': 2 }) });
 20902       *
 20903       * _.hasIn(object, 'a');
 20904       * // => true
 20905       *
 20906       * _.hasIn(object, 'a.b');
 20907       * // => true
 20908       *
 20909       * _.hasIn(object, ['a', 'b']);
 20910       * // => true
 20911       *
 20912       * _.hasIn(object, 'b');
 20913       * // => false
 20914       */
 20915      function hasIn(object, path) {
 20916        return object != null && hasPath(object, path, baseHasIn);
 20917      }
 20918  
 20919      /**
 20920       * Creates an object composed of the inverted keys and values of `object`.
 20921       * If `object` contains duplicate values, subsequent values overwrite
 20922       * property assignments of previous values.
 20923       *
 20924       * @static
 20925       * @memberOf _
 20926       * @since 0.7.0
 20927       * @category Object
 20928       * @param {Object} object The object to invert.
 20929       * @returns {Object} Returns the new inverted object.
 20930       * @example
 20931       *
 20932       * var object = { 'a': 1, 'b': 2, 'c': 1 };
 20933       *
 20934       * _.invert(object);
 20935       * // => { '1': 'c', '2': 'b' }
 20936       */
 20937      var invert = createInverter(function(result, value, key) {
 20938        if (value != null &&
 20939            typeof value.toString != 'function') {
 20940          value = nativeObjectToString.call(value);
 20941        }
 20942  
 20943        result[value] = key;
 20944      }, constant(identity));
 20945  
 20946      /**
 20947       * This method is like `_.invert` except that the inverted object is generated
 20948       * from the results of running each element of `object` thru `iteratee`. The
 20949       * corresponding inverted value of each inverted key is an array of keys
 20950       * responsible for generating the inverted value. The iteratee is invoked
 20951       * with one argument: (value).
 20952       *
 20953       * @static
 20954       * @memberOf _
 20955       * @since 4.1.0
 20956       * @category Object
 20957       * @param {Object} object The object to invert.
 20958       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
 20959       * @returns {Object} Returns the new inverted object.
 20960       * @example
 20961       *
 20962       * var object = { 'a': 1, 'b': 2, 'c': 1 };
 20963       *
 20964       * _.invertBy(object);
 20965       * // => { '1': ['a', 'c'], '2': ['b'] }
 20966       *
 20967       * _.invertBy(object, function(value) {
 20968       *   return 'group' + value;
 20969       * });
 20970       * // => { 'group1': ['a', 'c'], 'group2': ['b'] }
 20971       */
 20972      var invertBy = createInverter(function(result, value, key) {
 20973        if (value != null &&
 20974            typeof value.toString != 'function') {
 20975          value = nativeObjectToString.call(value);
 20976        }
 20977  
 20978        if (hasOwnProperty.call(result, value)) {
 20979          result[value].push(key);
 20980        } else {
 20981          result[value] = [key];
 20982        }
 20983      }, getIteratee);
 20984  
 20985      /**
 20986       * Invokes the method at `path` of `object`.
 20987       *
 20988       * @static
 20989       * @memberOf _
 20990       * @since 4.0.0
 20991       * @category Object
 20992       * @param {Object} object The object to query.
 20993       * @param {Array|string} path The path of the method to invoke.
 20994       * @param {...*} [args] The arguments to invoke the method with.
 20995       * @returns {*} Returns the result of the invoked method.
 20996       * @example
 20997       *
 20998       * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };
 20999       *
 21000       * _.invoke(object, 'a[0].b.c.slice', 1, 3);
 21001       * // => [2, 3]
 21002       */
 21003      var invoke = baseRest(baseInvoke);
 21004  
 21005      /**
 21006       * Creates an array of the own enumerable property names of `object`.
 21007       *
 21008       * **Note:** Non-object values are coerced to objects. See the
 21009       * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
 21010       * for more details.
 21011       *
 21012       * @static
 21013       * @since 0.1.0
 21014       * @memberOf _
 21015       * @category Object
 21016       * @param {Object} object The object to query.
 21017       * @returns {Array} Returns the array of property names.
 21018       * @example
 21019       *
 21020       * function Foo() {
 21021       *   this.a = 1;
 21022       *   this.b = 2;
 21023       * }
 21024       *
 21025       * Foo.prototype.c = 3;
 21026       *
 21027       * _.keys(new Foo);
 21028       * // => ['a', 'b'] (iteration order is not guaranteed)
 21029       *
 21030       * _.keys('hi');
 21031       * // => ['0', '1']
 21032       */
 21033      function keys(object) {
 21034        return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
 21035      }
 21036  
 21037      /**
 21038       * Creates an array of the own and inherited enumerable property names of `object`.
 21039       *
 21040       * **Note:** Non-object values are coerced to objects.
 21041       *
 21042       * @static
 21043       * @memberOf _
 21044       * @since 3.0.0
 21045       * @category Object
 21046       * @param {Object} object The object to query.
 21047       * @returns {Array} Returns the array of property names.
 21048       * @example
 21049       *
 21050       * function Foo() {
 21051       *   this.a = 1;
 21052       *   this.b = 2;
 21053       * }
 21054       *
 21055       * Foo.prototype.c = 3;
 21056       *
 21057       * _.keysIn(new Foo);
 21058       * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
 21059       */
 21060      function keysIn(object) {
 21061        return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
 21062      }
 21063  
 21064      /**
 21065       * The opposite of `_.mapValues`; this method creates an object with the
 21066       * same values as `object` and keys generated by running each own enumerable
 21067       * string keyed property of `object` thru `iteratee`. The iteratee is invoked
 21068       * with three arguments: (value, key, object).
 21069       *
 21070       * @static
 21071       * @memberOf _
 21072       * @since 3.8.0
 21073       * @category Object
 21074       * @param {Object} object The object to iterate over.
 21075       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 21076       * @returns {Object} Returns the new mapped object.
 21077       * @see _.mapValues
 21078       * @example
 21079       *
 21080       * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {
 21081       *   return key + value;
 21082       * });
 21083       * // => { 'a1': 1, 'b2': 2 }
 21084       */
 21085      function mapKeys(object, iteratee) {
 21086        var result = {};
 21087        iteratee = getIteratee(iteratee, 3);
 21088  
 21089        baseForOwn(object, function(value, key, object) {
 21090          baseAssignValue(result, iteratee(value, key, object), value);
 21091        });
 21092        return result;
 21093      }
 21094  
 21095      /**
 21096       * Creates an object with the same keys as `object` and values generated
 21097       * by running each own enumerable string keyed property of `object` thru
 21098       * `iteratee`. The iteratee is invoked with three arguments:
 21099       * (value, key, object).
 21100       *
 21101       * @static
 21102       * @memberOf _
 21103       * @since 2.4.0
 21104       * @category Object
 21105       * @param {Object} object The object to iterate over.
 21106       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 21107       * @returns {Object} Returns the new mapped object.
 21108       * @see _.mapKeys
 21109       * @example
 21110       *
 21111       * var users = {
 21112       *   'fred':    { 'user': 'fred',    'age': 40 },
 21113       *   'pebbles': { 'user': 'pebbles', 'age': 1 }
 21114       * };
 21115       *
 21116       * _.mapValues(users, function(o) { return o.age; });
 21117       * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
 21118       *
 21119       * // The `_.property` iteratee shorthand.
 21120       * _.mapValues(users, 'age');
 21121       * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
 21122       */
 21123      function mapValues(object, iteratee) {
 21124        var result = {};
 21125        iteratee = getIteratee(iteratee, 3);
 21126  
 21127        baseForOwn(object, function(value, key, object) {
 21128          baseAssignValue(result, key, iteratee(value, key, object));
 21129        });
 21130        return result;
 21131      }
 21132  
 21133      /**
 21134       * This method is like `_.assign` except that it recursively merges own and
 21135       * inherited enumerable string keyed properties of source objects into the
 21136       * destination object. Source properties that resolve to `undefined` are
 21137       * skipped if a destination value exists. Array and plain object properties
 21138       * are merged recursively. Other objects and value types are overridden by
 21139       * assignment. Source objects are applied from left to right. Subsequent
 21140       * sources overwrite property assignments of previous sources.
 21141       *
 21142       * **Note:** This method mutates `object`.
 21143       *
 21144       * @static
 21145       * @memberOf _
 21146       * @since 0.5.0
 21147       * @category Object
 21148       * @param {Object} object The destination object.
 21149       * @param {...Object} [sources] The source objects.
 21150       * @returns {Object} Returns `object`.
 21151       * @example
 21152       *
 21153       * var object = {
 21154       *   'a': [{ 'b': 2 }, { 'd': 4 }]
 21155       * };
 21156       *
 21157       * var other = {
 21158       *   'a': [{ 'c': 3 }, { 'e': 5 }]
 21159       * };
 21160       *
 21161       * _.merge(object, other);
 21162       * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
 21163       */
 21164      var merge = createAssigner(function(object, source, srcIndex) {
 21165        baseMerge(object, source, srcIndex);
 21166      });
 21167  
 21168      /**
 21169       * This method is like `_.merge` except that it accepts `customizer` which
 21170       * is invoked to produce the merged values of the destination and source
 21171       * properties. If `customizer` returns `undefined`, merging is handled by the
 21172       * method instead. The `customizer` is invoked with six arguments:
 21173       * (objValue, srcValue, key, object, source, stack).
 21174       *
 21175       * **Note:** This method mutates `object`.
 21176       *
 21177       * @static
 21178       * @memberOf _
 21179       * @since 4.0.0
 21180       * @category Object
 21181       * @param {Object} object The destination object.
 21182       * @param {...Object} sources The source objects.
 21183       * @param {Function} customizer The function to customize assigned values.
 21184       * @returns {Object} Returns `object`.
 21185       * @example
 21186       *
 21187       * function customizer(objValue, srcValue) {
 21188       *   if (_.isArray(objValue)) {
 21189       *     return objValue.concat(srcValue);
 21190       *   }
 21191       * }
 21192       *
 21193       * var object = { 'a': [1], 'b': [2] };
 21194       * var other = { 'a': [3], 'b': [4] };
 21195       *
 21196       * _.mergeWith(object, other, customizer);
 21197       * // => { 'a': [1, 3], 'b': [2, 4] }
 21198       */
 21199      var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
 21200        baseMerge(object, source, srcIndex, customizer);
 21201      });
 21202  
 21203      /**
 21204       * The opposite of `_.pick`; this method creates an object composed of the
 21205       * own and inherited enumerable property paths of `object` that are not omitted.
 21206       *
 21207       * **Note:** This method is considerably slower than `_.pick`.
 21208       *
 21209       * @static
 21210       * @since 0.1.0
 21211       * @memberOf _
 21212       * @category Object
 21213       * @param {Object} object The source object.
 21214       * @param {...(string|string[])} [paths] The property paths to omit.
 21215       * @returns {Object} Returns the new object.
 21216       * @example
 21217       *
 21218       * var object = { 'a': 1, 'b': '2', 'c': 3 };
 21219       *
 21220       * _.omit(object, ['a', 'c']);
 21221       * // => { 'b': '2' }
 21222       */
 21223      var omit = flatRest(function(object, paths) {
 21224        var result = {};
 21225        if (object == null) {
 21226          return result;
 21227        }
 21228        var isDeep = false;
 21229        paths = arrayMap(paths, function(path) {
 21230          path = castPath(path, object);
 21231          isDeep || (isDeep = path.length > 1);
 21232          return path;
 21233        });
 21234        copyObject(object, getAllKeysIn(object), result);
 21235        if (isDeep) {
 21236          result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
 21237        }
 21238        var length = paths.length;
 21239        while (length--) {
 21240          baseUnset(result, paths[length]);
 21241        }
 21242        return result;
 21243      });
 21244  
 21245      /**
 21246       * The opposite of `_.pickBy`; this method creates an object composed of
 21247       * the own and inherited enumerable string keyed properties of `object` that
 21248       * `predicate` doesn't return truthy for. The predicate is invoked with two
 21249       * arguments: (value, key).
 21250       *
 21251       * @static
 21252       * @memberOf _
 21253       * @since 4.0.0
 21254       * @category Object
 21255       * @param {Object} object The source object.
 21256       * @param {Function} [predicate=_.identity] The function invoked per property.
 21257       * @returns {Object} Returns the new object.
 21258       * @example
 21259       *
 21260       * var object = { 'a': 1, 'b': '2', 'c': 3 };
 21261       *
 21262       * _.omitBy(object, _.isNumber);
 21263       * // => { 'b': '2' }
 21264       */
 21265      function omitBy(object, predicate) {
 21266        return pickBy(object, negate(getIteratee(predicate)));
 21267      }
 21268  
 21269      /**
 21270       * Creates an object composed of the picked `object` properties.
 21271       *
 21272       * @static
 21273       * @since 0.1.0
 21274       * @memberOf _
 21275       * @category Object
 21276       * @param {Object} object The source object.
 21277       * @param {...(string|string[])} [paths] The property paths to pick.
 21278       * @returns {Object} Returns the new object.
 21279       * @example
 21280       *
 21281       * var object = { 'a': 1, 'b': '2', 'c': 3 };
 21282       *
 21283       * _.pick(object, ['a', 'c']);
 21284       * // => { 'a': 1, 'c': 3 }
 21285       */
 21286      var pick = flatRest(function(object, paths) {
 21287        return object == null ? {} : basePick(object, paths);
 21288      });
 21289  
 21290      /**
 21291       * Creates an object composed of the `object` properties `predicate` returns
 21292       * truthy for. The predicate is invoked with two arguments: (value, key).
 21293       *
 21294       * @static
 21295       * @memberOf _
 21296       * @since 4.0.0
 21297       * @category Object
 21298       * @param {Object} object The source object.
 21299       * @param {Function} [predicate=_.identity] The function invoked per property.
 21300       * @returns {Object} Returns the new object.
 21301       * @example
 21302       *
 21303       * var object = { 'a': 1, 'b': '2', 'c': 3 };
 21304       *
 21305       * _.pickBy(object, _.isNumber);
 21306       * // => { 'a': 1, 'c': 3 }
 21307       */
 21308      function pickBy(object, predicate) {
 21309        if (object == null) {
 21310          return {};
 21311        }
 21312        var props = arrayMap(getAllKeysIn(object), function(prop) {
 21313          return [prop];
 21314        });
 21315        predicate = getIteratee(predicate);
 21316        return basePickBy(object, props, function(value, path) {
 21317          return predicate(value, path[0]);
 21318        });
 21319      }
 21320  
 21321      /**
 21322       * This method is like `_.get` except that if the resolved value is a
 21323       * function it's invoked with the `this` binding of its parent object and
 21324       * its result is returned.
 21325       *
 21326       * @static
 21327       * @since 0.1.0
 21328       * @memberOf _
 21329       * @category Object
 21330       * @param {Object} object The object to query.
 21331       * @param {Array|string} path The path of the property to resolve.
 21332       * @param {*} [defaultValue] The value returned for `undefined` resolved values.
 21333       * @returns {*} Returns the resolved value.
 21334       * @example
 21335       *
 21336       * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
 21337       *
 21338       * _.result(object, 'a[0].b.c1');
 21339       * // => 3
 21340       *
 21341       * _.result(object, 'a[0].b.c2');
 21342       * // => 4
 21343       *
 21344       * _.result(object, 'a[0].b.c3', 'default');
 21345       * // => 'default'
 21346       *
 21347       * _.result(object, 'a[0].b.c3', _.constant('default'));
 21348       * // => 'default'
 21349       */
 21350      function result(object, path, defaultValue) {
 21351        path = castPath(path, object);
 21352  
 21353        var index = -1,
 21354            length = path.length;
 21355  
 21356        // Ensure the loop is entered when path is empty.
 21357        if (!length) {
 21358          length = 1;
 21359          object = undefined;
 21360        }
 21361        while (++index < length) {
 21362          var value = object == null ? undefined : object[toKey(path[index])];
 21363          if (value === undefined) {
 21364            index = length;
 21365            value = defaultValue;
 21366          }
 21367          object = isFunction(value) ? value.call(object) : value;
 21368        }
 21369        return object;
 21370      }
 21371  
 21372      /**
 21373       * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
 21374       * it's created. Arrays are created for missing index properties while objects
 21375       * are created for all other missing properties. Use `_.setWith` to customize
 21376       * `path` creation.
 21377       *
 21378       * **Note:** This method mutates `object`.
 21379       *
 21380       * @static
 21381       * @memberOf _
 21382       * @since 3.7.0
 21383       * @category Object
 21384       * @param {Object} object The object to modify.
 21385       * @param {Array|string} path The path of the property to set.
 21386       * @param {*} value The value to set.
 21387       * @returns {Object} Returns `object`.
 21388       * @example
 21389       *
 21390       * var object = { 'a': [{ 'b': { 'c': 3 } }] };
 21391       *
 21392       * _.set(object, 'a[0].b.c', 4);
 21393       * console.log(object.a[0].b.c);
 21394       * // => 4
 21395       *
 21396       * _.set(object, ['x', '0', 'y', 'z'], 5);
 21397       * console.log(object.x[0].y.z);
 21398       * // => 5
 21399       */
 21400      function set(object, path, value) {
 21401        return object == null ? object : baseSet(object, path, value);
 21402      }
 21403  
 21404      /**
 21405       * This method is like `_.set` except that it accepts `customizer` which is
 21406       * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
 21407       * path creation is handled by the method instead. The `customizer` is invoked
 21408       * with three arguments: (nsValue, key, nsObject).
 21409       *
 21410       * **Note:** This method mutates `object`.
 21411       *
 21412       * @static
 21413       * @memberOf _
 21414       * @since 4.0.0
 21415       * @category Object
 21416       * @param {Object} object The object to modify.
 21417       * @param {Array|string} path The path of the property to set.
 21418       * @param {*} value The value to set.
 21419       * @param {Function} [customizer] The function to customize assigned values.
 21420       * @returns {Object} Returns `object`.
 21421       * @example
 21422       *
 21423       * var object = {};
 21424       *
 21425       * _.setWith(object, '[0][1]', 'a', Object);
 21426       * // => { '0': { '1': 'a' } }
 21427       */
 21428      function setWith(object, path, value, customizer) {
 21429        customizer = typeof customizer == 'function' ? customizer : undefined;
 21430        return object == null ? object : baseSet(object, path, value, customizer);
 21431      }
 21432  
 21433      /**
 21434       * Creates an array of own enumerable string keyed-value pairs for `object`
 21435       * which can be consumed by `_.fromPairs`. If `object` is a map or set, its
 21436       * entries are returned.
 21437       *
 21438       * @static
 21439       * @memberOf _
 21440       * @since 4.0.0
 21441       * @alias entries
 21442       * @category Object
 21443       * @param {Object} object The object to query.
 21444       * @returns {Array} Returns the key-value pairs.
 21445       * @example
 21446       *
 21447       * function Foo() {
 21448       *   this.a = 1;
 21449       *   this.b = 2;
 21450       * }
 21451       *
 21452       * Foo.prototype.c = 3;
 21453       *
 21454       * _.toPairs(new Foo);
 21455       * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
 21456       */
 21457      var toPairs = createToPairs(keys);
 21458  
 21459      /**
 21460       * Creates an array of own and inherited enumerable string keyed-value pairs
 21461       * for `object` which can be consumed by `_.fromPairs`. If `object` is a map
 21462       * or set, its entries are returned.
 21463       *
 21464       * @static
 21465       * @memberOf _
 21466       * @since 4.0.0
 21467       * @alias entriesIn
 21468       * @category Object
 21469       * @param {Object} object The object to query.
 21470       * @returns {Array} Returns the key-value pairs.
 21471       * @example
 21472       *
 21473       * function Foo() {
 21474       *   this.a = 1;
 21475       *   this.b = 2;
 21476       * }
 21477       *
 21478       * Foo.prototype.c = 3;
 21479       *
 21480       * _.toPairsIn(new Foo);
 21481       * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)
 21482       */
 21483      var toPairsIn = createToPairs(keysIn);
 21484  
 21485      /**
 21486       * An alternative to `_.reduce`; this method transforms `object` to a new
 21487       * `accumulator` object which is the result of running each of its own
 21488       * enumerable string keyed properties thru `iteratee`, with each invocation
 21489       * potentially mutating the `accumulator` object. If `accumulator` is not
 21490       * provided, a new object with the same `[[Prototype]]` will be used. The
 21491       * iteratee is invoked with four arguments: (accumulator, value, key, object).
 21492       * Iteratee functions may exit iteration early by explicitly returning `false`.
 21493       *
 21494       * @static
 21495       * @memberOf _
 21496       * @since 1.3.0
 21497       * @category Object
 21498       * @param {Object} object The object to iterate over.
 21499       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 21500       * @param {*} [accumulator] The custom accumulator value.
 21501       * @returns {*} Returns the accumulated value.
 21502       * @example
 21503       *
 21504       * _.transform([2, 3, 4], function(result, n) {
 21505       *   result.push(n *= n);
 21506       *   return n % 2 == 0;
 21507       * }, []);
 21508       * // => [4, 9]
 21509       *
 21510       * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
 21511       *   (result[value] || (result[value] = [])).push(key);
 21512       * }, {});
 21513       * // => { '1': ['a', 'c'], '2': ['b'] }
 21514       */
 21515      function transform(object, iteratee, accumulator) {
 21516        var isArr = isArray(object),
 21517            isArrLike = isArr || isBuffer(object) || isTypedArray(object);
 21518  
 21519        iteratee = getIteratee(iteratee, 4);
 21520        if (accumulator == null) {
 21521          var Ctor = object && object.constructor;
 21522          if (isArrLike) {
 21523            accumulator = isArr ? new Ctor : [];
 21524          }
 21525          else if (isObject(object)) {
 21526            accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
 21527          }
 21528          else {
 21529            accumulator = {};
 21530          }
 21531        }
 21532        (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
 21533          return iteratee(accumulator, value, index, object);
 21534        });
 21535        return accumulator;
 21536      }
 21537  
 21538      /**
 21539       * Removes the property at `path` of `object`.
 21540       *
 21541       * **Note:** This method mutates `object`.
 21542       *
 21543       * @static
 21544       * @memberOf _
 21545       * @since 4.0.0
 21546       * @category Object
 21547       * @param {Object} object The object to modify.
 21548       * @param {Array|string} path The path of the property to unset.
 21549       * @returns {boolean} Returns `true` if the property is deleted, else `false`.
 21550       * @example
 21551       *
 21552       * var object = { 'a': [{ 'b': { 'c': 7 } }] };
 21553       * _.unset(object, 'a[0].b.c');
 21554       * // => true
 21555       *
 21556       * console.log(object);
 21557       * // => { 'a': [{ 'b': {} }] };
 21558       *
 21559       * _.unset(object, ['a', '0', 'b', 'c']);
 21560       * // => true
 21561       *
 21562       * console.log(object);
 21563       * // => { 'a': [{ 'b': {} }] };
 21564       */
 21565      function unset(object, path) {
 21566        return object == null ? true : baseUnset(object, path);
 21567      }
 21568  
 21569      /**
 21570       * This method is like `_.set` except that accepts `updater` to produce the
 21571       * value to set. Use `_.updateWith` to customize `path` creation. The `updater`
 21572       * is invoked with one argument: (value).
 21573       *
 21574       * **Note:** This method mutates `object`.
 21575       *
 21576       * @static
 21577       * @memberOf _
 21578       * @since 4.6.0
 21579       * @category Object
 21580       * @param {Object} object The object to modify.
 21581       * @param {Array|string} path The path of the property to set.
 21582       * @param {Function} updater The function to produce the updated value.
 21583       * @returns {Object} Returns `object`.
 21584       * @example
 21585       *
 21586       * var object = { 'a': [{ 'b': { 'c': 3 } }] };
 21587       *
 21588       * _.update(object, 'a[0].b.c', function(n) { return n * n; });
 21589       * console.log(object.a[0].b.c);
 21590       * // => 9
 21591       *
 21592       * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });
 21593       * console.log(object.x[0].y.z);
 21594       * // => 0
 21595       */
 21596      function update(object, path, updater) {
 21597        return object == null ? object : baseUpdate(object, path, castFunction(updater));
 21598      }
 21599  
 21600      /**
 21601       * This method is like `_.update` except that it accepts `customizer` which is
 21602       * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
 21603       * path creation is handled by the method instead. The `customizer` is invoked
 21604       * with three arguments: (nsValue, key, nsObject).
 21605       *
 21606       * **Note:** This method mutates `object`.
 21607       *
 21608       * @static
 21609       * @memberOf _
 21610       * @since 4.6.0
 21611       * @category Object
 21612       * @param {Object} object The object to modify.
 21613       * @param {Array|string} path The path of the property to set.
 21614       * @param {Function} updater The function to produce the updated value.
 21615       * @param {Function} [customizer] The function to customize assigned values.
 21616       * @returns {Object} Returns `object`.
 21617       * @example
 21618       *
 21619       * var object = {};
 21620       *
 21621       * _.updateWith(object, '[0][1]', _.constant('a'), Object);
 21622       * // => { '0': { '1': 'a' } }
 21623       */
 21624      function updateWith(object, path, updater, customizer) {
 21625        customizer = typeof customizer == 'function' ? customizer : undefined;
 21626        return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
 21627      }
 21628  
 21629      /**
 21630       * Creates an array of the own enumerable string keyed property values of `object`.
 21631       *
 21632       * **Note:** Non-object values are coerced to objects.
 21633       *
 21634       * @static
 21635       * @since 0.1.0
 21636       * @memberOf _
 21637       * @category Object
 21638       * @param {Object} object The object to query.
 21639       * @returns {Array} Returns the array of property values.
 21640       * @example
 21641       *
 21642       * function Foo() {
 21643       *   this.a = 1;
 21644       *   this.b = 2;
 21645       * }
 21646       *
 21647       * Foo.prototype.c = 3;
 21648       *
 21649       * _.values(new Foo);
 21650       * // => [1, 2] (iteration order is not guaranteed)
 21651       *
 21652       * _.values('hi');
 21653       * // => ['h', 'i']
 21654       */
 21655      function values(object) {
 21656        return object == null ? [] : baseValues(object, keys(object));
 21657      }
 21658  
 21659      /**
 21660       * Creates an array of the own and inherited enumerable string keyed property
 21661       * values of `object`.
 21662       *
 21663       * **Note:** Non-object values are coerced to objects.
 21664       *
 21665       * @static
 21666       * @memberOf _
 21667       * @since 3.0.0
 21668       * @category Object
 21669       * @param {Object} object The object to query.
 21670       * @returns {Array} Returns the array of property values.
 21671       * @example
 21672       *
 21673       * function Foo() {
 21674       *   this.a = 1;
 21675       *   this.b = 2;
 21676       * }
 21677       *
 21678       * Foo.prototype.c = 3;
 21679       *
 21680       * _.valuesIn(new Foo);
 21681       * // => [1, 2, 3] (iteration order is not guaranteed)
 21682       */
 21683      function valuesIn(object) {
 21684        return object == null ? [] : baseValues(object, keysIn(object));
 21685      }
 21686  
 21687      /*------------------------------------------------------------------------*/
 21688  
 21689      /**
 21690       * Clamps `number` within the inclusive `lower` and `upper` bounds.
 21691       *
 21692       * @static
 21693       * @memberOf _
 21694       * @since 4.0.0
 21695       * @category Number
 21696       * @param {number} number The number to clamp.
 21697       * @param {number} [lower] The lower bound.
 21698       * @param {number} upper The upper bound.
 21699       * @returns {number} Returns the clamped number.
 21700       * @example
 21701       *
 21702       * _.clamp(-10, -5, 5);
 21703       * // => -5
 21704       *
 21705       * _.clamp(10, -5, 5);
 21706       * // => 5
 21707       */
 21708      function clamp(number, lower, upper) {
 21709        if (upper === undefined) {
 21710          upper = lower;
 21711          lower = undefined;
 21712        }
 21713        if (upper !== undefined) {
 21714          upper = toNumber(upper);
 21715          upper = upper === upper ? upper : 0;
 21716        }
 21717        if (lower !== undefined) {
 21718          lower = toNumber(lower);
 21719          lower = lower === lower ? lower : 0;
 21720        }
 21721        return baseClamp(toNumber(number), lower, upper);
 21722      }
 21723  
 21724      /**
 21725       * Checks if `n` is between `start` and up to, but not including, `end`. If
 21726       * `end` is not specified, it's set to `start` with `start` then set to `0`.
 21727       * If `start` is greater than `end` the params are swapped to support
 21728       * negative ranges.
 21729       *
 21730       * @static
 21731       * @memberOf _
 21732       * @since 3.3.0
 21733       * @category Number
 21734       * @param {number} number The number to check.
 21735       * @param {number} [start=0] The start of the range.
 21736       * @param {number} end The end of the range.
 21737       * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
 21738       * @see _.range, _.rangeRight
 21739       * @example
 21740       *
 21741       * _.inRange(3, 2, 4);
 21742       * // => true
 21743       *
 21744       * _.inRange(4, 8);
 21745       * // => true
 21746       *
 21747       * _.inRange(4, 2);
 21748       * // => false
 21749       *
 21750       * _.inRange(2, 2);
 21751       * // => false
 21752       *
 21753       * _.inRange(1.2, 2);
 21754       * // => true
 21755       *
 21756       * _.inRange(5.2, 4);
 21757       * // => false
 21758       *
 21759       * _.inRange(-3, -2, -6);
 21760       * // => true
 21761       */
 21762      function inRange(number, start, end) {
 21763        start = toFinite(start);
 21764        if (end === undefined) {
 21765          end = start;
 21766          start = 0;
 21767        } else {
 21768          end = toFinite(end);
 21769        }
 21770        number = toNumber(number);
 21771        return baseInRange(number, start, end);
 21772      }
 21773  
 21774      /**
 21775       * Produces a random number between the inclusive `lower` and `upper` bounds.
 21776       * If only one argument is provided a number between `0` and the given number
 21777       * is returned. If `floating` is `true`, or either `lower` or `upper` are
 21778       * floats, a floating-point number is returned instead of an integer.
 21779       *
 21780       * **Note:** JavaScript follows the IEEE-754 standard for resolving
 21781       * floating-point values which can produce unexpected results.
 21782       *
 21783       * @static
 21784       * @memberOf _
 21785       * @since 0.7.0
 21786       * @category Number
 21787       * @param {number} [lower=0] The lower bound.
 21788       * @param {number} [upper=1] The upper bound.
 21789       * @param {boolean} [floating] Specify returning a floating-point number.
 21790       * @returns {number} Returns the random number.
 21791       * @example
 21792       *
 21793       * _.random(0, 5);
 21794       * // => an integer between 0 and 5
 21795       *
 21796       * _.random(5);
 21797       * // => also an integer between 0 and 5
 21798       *
 21799       * _.random(5, true);
 21800       * // => a floating-point number between 0 and 5
 21801       *
 21802       * _.random(1.2, 5.2);
 21803       * // => a floating-point number between 1.2 and 5.2
 21804       */
 21805      function random(lower, upper, floating) {
 21806        if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {
 21807          upper = floating = undefined;
 21808        }
 21809        if (floating === undefined) {
 21810          if (typeof upper == 'boolean') {
 21811            floating = upper;
 21812            upper = undefined;
 21813          }
 21814          else if (typeof lower == 'boolean') {
 21815            floating = lower;
 21816            lower = undefined;
 21817          }
 21818        }
 21819        if (lower === undefined && upper === undefined) {
 21820          lower = 0;
 21821          upper = 1;
 21822        }
 21823        else {
 21824          lower = toFinite(lower);
 21825          if (upper === undefined) {
 21826            upper = lower;
 21827            lower = 0;
 21828          } else {
 21829            upper = toFinite(upper);
 21830          }
 21831        }
 21832        if (lower > upper) {
 21833          var temp = lower;
 21834          lower = upper;
 21835          upper = temp;
 21836        }
 21837        if (floating || lower % 1 || upper % 1) {
 21838          var rand = nativeRandom();
 21839          return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);
 21840        }
 21841        return baseRandom(lower, upper);
 21842      }
 21843  
 21844      /*------------------------------------------------------------------------*/
 21845  
 21846      /**
 21847       * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
 21848       *
 21849       * @static
 21850       * @memberOf _
 21851       * @since 3.0.0
 21852       * @category String
 21853       * @param {string} [string=''] The string to convert.
 21854       * @returns {string} Returns the camel cased string.
 21855       * @example
 21856       *
 21857       * _.camelCase('Foo Bar');
 21858       * // => 'fooBar'
 21859       *
 21860       * _.camelCase('--foo-bar--');
 21861       * // => 'fooBar'
 21862       *
 21863       * _.camelCase('__FOO_BAR__');
 21864       * // => 'fooBar'
 21865       */
 21866      var camelCase = createCompounder(function(result, word, index) {
 21867        word = word.toLowerCase();
 21868        return result + (index ? capitalize(word) : word);
 21869      });
 21870  
 21871      /**
 21872       * Converts the first character of `string` to upper case and the remaining
 21873       * to lower case.
 21874       *
 21875       * @static
 21876       * @memberOf _
 21877       * @since 3.0.0
 21878       * @category String
 21879       * @param {string} [string=''] The string to capitalize.
 21880       * @returns {string} Returns the capitalized string.
 21881       * @example
 21882       *
 21883       * _.capitalize('FRED');
 21884       * // => 'Fred'
 21885       */
 21886      function capitalize(string) {
 21887        return upperFirst(toString(string).toLowerCase());
 21888      }
 21889  
 21890      /**
 21891       * Deburrs `string` by converting
 21892       * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)
 21893       * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)
 21894       * letters to basic Latin letters and removing
 21895       * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).
 21896       *
 21897       * @static
 21898       * @memberOf _
 21899       * @since 3.0.0
 21900       * @category String
 21901       * @param {string} [string=''] The string to deburr.
 21902       * @returns {string} Returns the deburred string.
 21903       * @example
 21904       *
 21905       * _.deburr('déjà vu');
 21906       * // => 'deja vu'
 21907       */
 21908      function deburr(string) {
 21909        string = toString(string);
 21910        return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');
 21911      }
 21912  
 21913      /**
 21914       * Checks if `string` ends with the given target string.
 21915       *
 21916       * @static
 21917       * @memberOf _
 21918       * @since 3.0.0
 21919       * @category String
 21920       * @param {string} [string=''] The string to inspect.
 21921       * @param {string} [target] The string to search for.
 21922       * @param {number} [position=string.length] The position to search up to.
 21923       * @returns {boolean} Returns `true` if `string` ends with `target`,
 21924       *  else `false`.
 21925       * @example
 21926       *
 21927       * _.endsWith('abc', 'c');
 21928       * // => true
 21929       *
 21930       * _.endsWith('abc', 'b');
 21931       * // => false
 21932       *
 21933       * _.endsWith('abc', 'b', 2);
 21934       * // => true
 21935       */
 21936      function endsWith(string, target, position) {
 21937        string = toString(string);
 21938        target = baseToString(target);
 21939  
 21940        var length = string.length;
 21941        position = position === undefined
 21942          ? length
 21943          : baseClamp(toInteger(position), 0, length);
 21944  
 21945        var end = position;
 21946        position -= target.length;
 21947        return position >= 0 && string.slice(position, end) == target;
 21948      }
 21949  
 21950      /**
 21951       * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
 21952       * corresponding HTML entities.
 21953       *
 21954       * **Note:** No other characters are escaped. To escape additional
 21955       * characters use a third-party library like [_he_](https://mths.be/he).
 21956       *
 21957       * Though the ">" character is escaped for symmetry, characters like
 21958       * ">" and "/" don't need escaping in HTML and have no special meaning
 21959       * unless they're part of a tag or unquoted attribute value. See
 21960       * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
 21961       * (under "semi-related fun fact") for more details.
 21962       *
 21963       * When working with HTML you should always
 21964       * [quote attribute values](http://wonko.com/post/html-escaping) to reduce
 21965       * XSS vectors.
 21966       *
 21967       * @static
 21968       * @since 0.1.0
 21969       * @memberOf _
 21970       * @category String
 21971       * @param {string} [string=''] The string to escape.
 21972       * @returns {string} Returns the escaped string.
 21973       * @example
 21974       *
 21975       * _.escape('fred, barney, & pebbles');
 21976       * // => 'fred, barney, &amp; pebbles'
 21977       */
 21978      function escape(string) {
 21979        string = toString(string);
 21980        return (string && reHasUnescapedHtml.test(string))
 21981          ? string.replace(reUnescapedHtml, escapeHtmlChar)
 21982          : string;
 21983      }
 21984  
 21985      /**
 21986       * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+",
 21987       * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`.
 21988       *
 21989       * @static
 21990       * @memberOf _
 21991       * @since 3.0.0
 21992       * @category String
 21993       * @param {string} [string=''] The string to escape.
 21994       * @returns {string} Returns the escaped string.
 21995       * @example
 21996       *
 21997       * _.escapeRegExp('[lodash](https://lodash.com/)');
 21998       * // => '\[lodash\]\(https://lodash\.com/\)'
 21999       */
 22000      function escapeRegExp(string) {
 22001        string = toString(string);
 22002        return (string && reHasRegExpChar.test(string))
 22003          ? string.replace(reRegExpChar, '\\$&')
 22004          : string;
 22005      }
 22006  
 22007      /**
 22008       * Converts `string` to
 22009       * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).
 22010       *
 22011       * @static
 22012       * @memberOf _
 22013       * @since 3.0.0
 22014       * @category String
 22015       * @param {string} [string=''] The string to convert.
 22016       * @returns {string} Returns the kebab cased string.
 22017       * @example
 22018       *
 22019       * _.kebabCase('Foo Bar');
 22020       * // => 'foo-bar'
 22021       *
 22022       * _.kebabCase('fooBar');
 22023       * // => 'foo-bar'
 22024       *
 22025       * _.kebabCase('__FOO_BAR__');
 22026       * // => 'foo-bar'
 22027       */
 22028      var kebabCase = createCompounder(function(result, word, index) {
 22029        return result + (index ? '-' : '') + word.toLowerCase();
 22030      });
 22031  
 22032      /**
 22033       * Converts `string`, as space separated words, to lower case.
 22034       *
 22035       * @static
 22036       * @memberOf _
 22037       * @since 4.0.0
 22038       * @category String
 22039       * @param {string} [string=''] The string to convert.
 22040       * @returns {string} Returns the lower cased string.
 22041       * @example
 22042       *
 22043       * _.lowerCase('--Foo-Bar--');
 22044       * // => 'foo bar'
 22045       *
 22046       * _.lowerCase('fooBar');
 22047       * // => 'foo bar'
 22048       *
 22049       * _.lowerCase('__FOO_BAR__');
 22050       * // => 'foo bar'
 22051       */
 22052      var lowerCase = createCompounder(function(result, word, index) {
 22053        return result + (index ? ' ' : '') + word.toLowerCase();
 22054      });
 22055  
 22056      /**
 22057       * Converts the first character of `string` to lower case.
 22058       *
 22059       * @static
 22060       * @memberOf _
 22061       * @since 4.0.0
 22062       * @category String
 22063       * @param {string} [string=''] The string to convert.
 22064       * @returns {string} Returns the converted string.
 22065       * @example
 22066       *
 22067       * _.lowerFirst('Fred');
 22068       * // => 'fred'
 22069       *
 22070       * _.lowerFirst('FRED');
 22071       * // => 'fRED'
 22072       */
 22073      var lowerFirst = createCaseFirst('toLowerCase');
 22074  
 22075      /**
 22076       * Pads `string` on the left and right sides if it's shorter than `length`.
 22077       * Padding characters are truncated if they can't be evenly divided by `length`.
 22078       *
 22079       * @static
 22080       * @memberOf _
 22081       * @since 3.0.0
 22082       * @category String
 22083       * @param {string} [string=''] The string to pad.
 22084       * @param {number} [length=0] The padding length.
 22085       * @param {string} [chars=' '] The string used as padding.
 22086       * @returns {string} Returns the padded string.
 22087       * @example
 22088       *
 22089       * _.pad('abc', 8);
 22090       * // => '  abc   '
 22091       *
 22092       * _.pad('abc', 8, '_-');
 22093       * // => '_-abc_-_'
 22094       *
 22095       * _.pad('abc', 3);
 22096       * // => 'abc'
 22097       */
 22098      function pad(string, length, chars) {
 22099        string = toString(string);
 22100        length = toInteger(length);
 22101  
 22102        var strLength = length ? stringSize(string) : 0;
 22103        if (!length || strLength >= length) {
 22104          return string;
 22105        }
 22106        var mid = (length - strLength) / 2;
 22107        return (
 22108          createPadding(nativeFloor(mid), chars) +
 22109          string +
 22110          createPadding(nativeCeil(mid), chars)
 22111        );
 22112      }
 22113  
 22114      /**
 22115       * Pads `string` on the right side if it's shorter than `length`. Padding
 22116       * characters are truncated if they exceed `length`.
 22117       *
 22118       * @static
 22119       * @memberOf _
 22120       * @since 4.0.0
 22121       * @category String
 22122       * @param {string} [string=''] The string to pad.
 22123       * @param {number} [length=0] The padding length.
 22124       * @param {string} [chars=' '] The string used as padding.
 22125       * @returns {string} Returns the padded string.
 22126       * @example
 22127       *
 22128       * _.padEnd('abc', 6);
 22129       * // => 'abc   '
 22130       *
 22131       * _.padEnd('abc', 6, '_-');
 22132       * // => 'abc_-_'
 22133       *
 22134       * _.padEnd('abc', 3);
 22135       * // => 'abc'
 22136       */
 22137      function padEnd(string, length, chars) {
 22138        string = toString(string);
 22139        length = toInteger(length);
 22140  
 22141        var strLength = length ? stringSize(string) : 0;
 22142        return (length && strLength < length)
 22143          ? (string + createPadding(length - strLength, chars))
 22144          : string;
 22145      }
 22146  
 22147      /**
 22148       * Pads `string` on the left side if it's shorter than `length`. Padding
 22149       * characters are truncated if they exceed `length`.
 22150       *
 22151       * @static
 22152       * @memberOf _
 22153       * @since 4.0.0
 22154       * @category String
 22155       * @param {string} [string=''] The string to pad.
 22156       * @param {number} [length=0] The padding length.
 22157       * @param {string} [chars=' '] The string used as padding.
 22158       * @returns {string} Returns the padded string.
 22159       * @example
 22160       *
 22161       * _.padStart('abc', 6);
 22162       * // => '   abc'
 22163       *
 22164       * _.padStart('abc', 6, '_-');
 22165       * // => '_-_abc'
 22166       *
 22167       * _.padStart('abc', 3);
 22168       * // => 'abc'
 22169       */
 22170      function padStart(string, length, chars) {
 22171        string = toString(string);
 22172        length = toInteger(length);
 22173  
 22174        var strLength = length ? stringSize(string) : 0;
 22175        return (length && strLength < length)
 22176          ? (createPadding(length - strLength, chars) + string)
 22177          : string;
 22178      }
 22179  
 22180      /**
 22181       * Converts `string` to an integer of the specified radix. If `radix` is
 22182       * `undefined` or `0`, a `radix` of `10` is used unless `value` is a
 22183       * hexadecimal, in which case a `radix` of `16` is used.
 22184       *
 22185       * **Note:** This method aligns with the
 22186       * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.
 22187       *
 22188       * @static
 22189       * @memberOf _
 22190       * @since 1.1.0
 22191       * @category String
 22192       * @param {string} string The string to convert.
 22193       * @param {number} [radix=10] The radix to interpret `value` by.
 22194       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 22195       * @returns {number} Returns the converted integer.
 22196       * @example
 22197       *
 22198       * _.parseInt('08');
 22199       * // => 8
 22200       *
 22201       * _.map(['6', '08', '10'], _.parseInt);
 22202       * // => [6, 8, 10]
 22203       */
 22204      function parseInt(string, radix, guard) {
 22205        if (guard || radix == null) {
 22206          radix = 0;
 22207        } else if (radix) {
 22208          radix = +radix;
 22209        }
 22210        return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);
 22211      }
 22212  
 22213      /**
 22214       * Repeats the given string `n` times.
 22215       *
 22216       * @static
 22217       * @memberOf _
 22218       * @since 3.0.0
 22219       * @category String
 22220       * @param {string} [string=''] The string to repeat.
 22221       * @param {number} [n=1] The number of times to repeat the string.
 22222       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 22223       * @returns {string} Returns the repeated string.
 22224       * @example
 22225       *
 22226       * _.repeat('*', 3);
 22227       * // => '***'
 22228       *
 22229       * _.repeat('abc', 2);
 22230       * // => 'abcabc'
 22231       *
 22232       * _.repeat('abc', 0);
 22233       * // => ''
 22234       */
 22235      function repeat(string, n, guard) {
 22236        if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {
 22237          n = 1;
 22238        } else {
 22239          n = toInteger(n);
 22240        }
 22241        return baseRepeat(toString(string), n);
 22242      }
 22243  
 22244      /**
 22245       * Replaces matches for `pattern` in `string` with `replacement`.
 22246       *
 22247       * **Note:** This method is based on
 22248       * [`String#replace`](https://mdn.io/String/replace).
 22249       *
 22250       * @static
 22251       * @memberOf _
 22252       * @since 4.0.0
 22253       * @category String
 22254       * @param {string} [string=''] The string to modify.
 22255       * @param {RegExp|string} pattern The pattern to replace.
 22256       * @param {Function|string} replacement The match replacement.
 22257       * @returns {string} Returns the modified string.
 22258       * @example
 22259       *
 22260       * _.replace('Hi Fred', 'Fred', 'Barney');
 22261       * // => 'Hi Barney'
 22262       */
 22263      function replace() {
 22264        var args = arguments,
 22265            string = toString(args[0]);
 22266  
 22267        return args.length < 3 ? string : string.replace(args[1], args[2]);
 22268      }
 22269  
 22270      /**
 22271       * Converts `string` to
 22272       * [snake case](https://en.wikipedia.org/wiki/Snake_case).
 22273       *
 22274       * @static
 22275       * @memberOf _
 22276       * @since 3.0.0
 22277       * @category String
 22278       * @param {string} [string=''] The string to convert.
 22279       * @returns {string} Returns the snake cased string.
 22280       * @example
 22281       *
 22282       * _.snakeCase('Foo Bar');
 22283       * // => 'foo_bar'
 22284       *
 22285       * _.snakeCase('fooBar');
 22286       * // => 'foo_bar'
 22287       *
 22288       * _.snakeCase('--FOO-BAR--');
 22289       * // => 'foo_bar'
 22290       */
 22291      var snakeCase = createCompounder(function(result, word, index) {
 22292        return result + (index ? '_' : '') + word.toLowerCase();
 22293      });
 22294  
 22295      /**
 22296       * Splits `string` by `separator`.
 22297       *
 22298       * **Note:** This method is based on
 22299       * [`String#split`](https://mdn.io/String/split).
 22300       *
 22301       * @static
 22302       * @memberOf _
 22303       * @since 4.0.0
 22304       * @category String
 22305       * @param {string} [string=''] The string to split.
 22306       * @param {RegExp|string} separator The separator pattern to split by.
 22307       * @param {number} [limit] The length to truncate results to.
 22308       * @returns {Array} Returns the string segments.
 22309       * @example
 22310       *
 22311       * _.split('a-b-c', '-', 2);
 22312       * // => ['a', 'b']
 22313       */
 22314      function split(string, separator, limit) {
 22315        if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {
 22316          separator = limit = undefined;
 22317        }
 22318        limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;
 22319        if (!limit) {
 22320          return [];
 22321        }
 22322        string = toString(string);
 22323        if (string && (
 22324              typeof separator == 'string' ||
 22325              (separator != null && !isRegExp(separator))
 22326            )) {
 22327          separator = baseToString(separator);
 22328          if (!separator && hasUnicode(string)) {
 22329            return castSlice(stringToArray(string), 0, limit);
 22330          }
 22331        }
 22332        return string.split(separator, limit);
 22333      }
 22334  
 22335      /**
 22336       * Converts `string` to
 22337       * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).
 22338       *
 22339       * @static
 22340       * @memberOf _
 22341       * @since 3.1.0
 22342       * @category String
 22343       * @param {string} [string=''] The string to convert.
 22344       * @returns {string} Returns the start cased string.
 22345       * @example
 22346       *
 22347       * _.startCase('--foo-bar--');
 22348       * // => 'Foo Bar'
 22349       *
 22350       * _.startCase('fooBar');
 22351       * // => 'Foo Bar'
 22352       *
 22353       * _.startCase('__FOO_BAR__');
 22354       * // => 'FOO BAR'
 22355       */
 22356      var startCase = createCompounder(function(result, word, index) {
 22357        return result + (index ? ' ' : '') + upperFirst(word);
 22358      });
 22359  
 22360      /**
 22361       * Checks if `string` starts with the given target string.
 22362       *
 22363       * @static
 22364       * @memberOf _
 22365       * @since 3.0.0
 22366       * @category String
 22367       * @param {string} [string=''] The string to inspect.
 22368       * @param {string} [target] The string to search for.
 22369       * @param {number} [position=0] The position to search from.
 22370       * @returns {boolean} Returns `true` if `string` starts with `target`,
 22371       *  else `false`.
 22372       * @example
 22373       *
 22374       * _.startsWith('abc', 'a');
 22375       * // => true
 22376       *
 22377       * _.startsWith('abc', 'b');
 22378       * // => false
 22379       *
 22380       * _.startsWith('abc', 'b', 1);
 22381       * // => true
 22382       */
 22383      function startsWith(string, target, position) {
 22384        string = toString(string);
 22385        position = position == null
 22386          ? 0
 22387          : baseClamp(toInteger(position), 0, string.length);
 22388  
 22389        target = baseToString(target);
 22390        return string.slice(position, position + target.length) == target;
 22391      }
 22392  
 22393      /**
 22394       * Creates a compiled template function that can interpolate data properties
 22395       * in "interpolate" delimiters, HTML-escape interpolated data properties in
 22396       * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data
 22397       * properties may be accessed as free variables in the template. If a setting
 22398       * object is given, it takes precedence over `_.templateSettings` values.
 22399       *
 22400       * **Note:** In the development build `_.template` utilizes
 22401       * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)
 22402       * for easier debugging.
 22403       *
 22404       * For more information on precompiling templates see
 22405       * [lodash's custom builds documentation](https://lodash.com/custom-builds).
 22406       *
 22407       * For more information on Chrome extension sandboxes see
 22408       * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).
 22409       *
 22410       * @static
 22411       * @since 0.1.0
 22412       * @memberOf _
 22413       * @category String
 22414       * @param {string} [string=''] The template string.
 22415       * @param {Object} [options={}] The options object.
 22416       * @param {RegExp} [options.escape=_.templateSettings.escape]
 22417       *  The HTML "escape" delimiter.
 22418       * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]
 22419       *  The "evaluate" delimiter.
 22420       * @param {Object} [options.imports=_.templateSettings.imports]
 22421       *  An object to import into the template as free variables.
 22422       * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]
 22423       *  The "interpolate" delimiter.
 22424       * @param {string} [options.sourceURL='lodash.templateSources[n]']
 22425       *  The sourceURL of the compiled template.
 22426       * @param {string} [options.variable='obj']
 22427       *  The data object variable name.
 22428       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 22429       * @returns {Function} Returns the compiled template function.
 22430       * @example
 22431       *
 22432       * // Use the "interpolate" delimiter to create a compiled template.
 22433       * var compiled = _.template('hello <%= user %>!');
 22434       * compiled({ 'user': 'fred' });
 22435       * // => 'hello fred!'
 22436       *
 22437       * // Use the HTML "escape" delimiter to escape data property values.
 22438       * var compiled = _.template('<b><%- value %></b>');
 22439       * compiled({ 'value': '<script>' });
 22440       * // => '<b>&lt;script&gt;</b>'
 22441       *
 22442       * // Use the "evaluate" delimiter to execute JavaScript and generate HTML.
 22443       * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');
 22444       * compiled({ 'users': ['fred', 'barney'] });
 22445       * // => '<li>fred</li><li>barney</li>'
 22446       *
 22447       * // Use the internal `print` function in "evaluate" delimiters.
 22448       * var compiled = _.template('<% print("hello " + user); %>!');
 22449       * compiled({ 'user': 'barney' });
 22450       * // => 'hello barney!'
 22451       *
 22452       * // Use the ES template literal delimiter as an "interpolate" delimiter.
 22453       * // Disable support by replacing the "interpolate" delimiter.
 22454       * var compiled = _.template('hello ${ user }!');
 22455       * compiled({ 'user': 'pebbles' });
 22456       * // => 'hello pebbles!'
 22457       *
 22458       * // Use backslashes to treat delimiters as plain text.
 22459       * var compiled = _.template('<%= "\\<%- value %\\>" %>');
 22460       * compiled({ 'value': 'ignored' });
 22461       * // => '<%- value %>'
 22462       *
 22463       * // Use the `imports` option to import `jQuery` as `jq`.
 22464       * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';
 22465       * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
 22466       * compiled({ 'users': ['fred', 'barney'] });
 22467       * // => '<li>fred</li><li>barney</li>'
 22468       *
 22469       * // Use the `sourceURL` option to specify a custom sourceURL for the template.
 22470       * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
 22471       * compiled(data);
 22472       * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector.
 22473       *
 22474       * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.
 22475       * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
 22476       * compiled.source;
 22477       * // => function(data) {
 22478       * //   var __t, __p = '';
 22479       * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';
 22480       * //   return __p;
 22481       * // }
 22482       *
 22483       * // Use custom template delimiters.
 22484       * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
 22485       * var compiled = _.template('hello {{ user }}!');
 22486       * compiled({ 'user': 'mustache' });
 22487       * // => 'hello mustache!'
 22488       *
 22489       * // Use the `source` property to inline compiled templates for meaningful
 22490       * // line numbers in error messages and stack traces.
 22491       * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\
 22492       *   var JST = {\
 22493       *     "main": ' + _.template(mainText).source + '\
 22494       *   };\
 22495       * ');
 22496       */
 22497      function template(string, options, guard) {
 22498        // Based on John Resig's `tmpl` implementation
 22499        // (http://ejohn.org/blog/javascript-micro-templating/)
 22500        // and Laura Doktorova's doT.js (https://github.com/olado/doT).
 22501        var settings = lodash.templateSettings;
 22502  
 22503        if (guard && isIterateeCall(string, options, guard)) {
 22504          options = undefined;
 22505        }
 22506        string = toString(string);
 22507        options = assignInWith({}, options, settings, customDefaultsAssignIn);
 22508  
 22509        var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),
 22510            importsKeys = keys(imports),
 22511            importsValues = baseValues(imports, importsKeys);
 22512  
 22513        var isEscaping,
 22514            isEvaluating,
 22515            index = 0,
 22516            interpolate = options.interpolate || reNoMatch,
 22517            source = "__p += '";
 22518  
 22519        // Compile the regexp to match each delimiter.
 22520        var reDelimiters = RegExp(
 22521          (options.escape || reNoMatch).source + '|' +
 22522          interpolate.source + '|' +
 22523          (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +
 22524          (options.evaluate || reNoMatch).source + '|$'
 22525        , 'g');
 22526  
 22527        // Use a sourceURL for easier debugging.
 22528        var sourceURL = '//# sourceURL=' +
 22529          ('sourceURL' in options
 22530            ? options.sourceURL
 22531            : ('lodash.templateSources[' + (++templateCounter) + ']')
 22532          ) + '\n';
 22533  
 22534        string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
 22535          interpolateValue || (interpolateValue = esTemplateValue);
 22536  
 22537          // Escape characters that can't be included in string literals.
 22538          source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
 22539  
 22540          // Replace delimiters with snippets.
 22541          if (escapeValue) {
 22542            isEscaping = true;
 22543            source += "' +\n__e(" + escapeValue + ") +\n'";
 22544          }
 22545          if (evaluateValue) {
 22546            isEvaluating = true;
 22547            source += "';\n" + evaluateValue + ";\n__p += '";
 22548          }
 22549          if (interpolateValue) {
 22550            source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
 22551          }
 22552          index = offset + match.length;
 22553  
 22554          // The JS engine embedded in Adobe products needs `match` returned in
 22555          // order to produce the correct `offset` value.
 22556          return match;
 22557        });
 22558  
 22559        source += "';\n";
 22560  
 22561        // If `variable` is not specified wrap a with-statement around the generated
 22562        // code to add the data object to the top of the scope chain.
 22563        var variable = options.variable;
 22564        if (!variable) {
 22565          source = 'with (obj) {\n' + source + '\n}\n';
 22566        }
 22567        // Cleanup code by stripping empty strings.
 22568        source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)
 22569          .replace(reEmptyStringMiddle, '$1')
 22570          .replace(reEmptyStringTrailing, '$1;');
 22571  
 22572        // Frame code as the function body.
 22573        source = 'function(' + (variable || 'obj') + ') {\n' +
 22574          (variable
 22575            ? ''
 22576            : 'obj || (obj = {});\n'
 22577          ) +
 22578          "var __t, __p = ''" +
 22579          (isEscaping
 22580             ? ', __e = _.escape'
 22581             : ''
 22582          ) +
 22583          (isEvaluating
 22584            ? ', __j = Array.prototype.join;\n' +
 22585              "function print() { __p += __j.call(arguments, '') }\n"
 22586            : ';\n'
 22587          ) +
 22588          source +
 22589          'return __p\n}';
 22590  
 22591        var result = attempt(function() {
 22592          return Function(importsKeys, sourceURL + 'return ' + source)
 22593            .apply(undefined, importsValues);
 22594        });
 22595  
 22596        // Provide the compiled function's source by its `toString` method or
 22597        // the `source` property as a convenience for inlining compiled templates.
 22598        result.source = source;
 22599        if (isError(result)) {
 22600          throw result;
 22601        }
 22602        return result;
 22603      }
 22604  
 22605      /**
 22606       * Converts `string`, as a whole, to lower case just like
 22607       * [String#toLowerCase](https://mdn.io/toLowerCase).
 22608       *
 22609       * @static
 22610       * @memberOf _
 22611       * @since 4.0.0
 22612       * @category String
 22613       * @param {string} [string=''] The string to convert.
 22614       * @returns {string} Returns the lower cased string.
 22615       * @example
 22616       *
 22617       * _.toLower('--Foo-Bar--');
 22618       * // => '--foo-bar--'
 22619       *
 22620       * _.toLower('fooBar');
 22621       * // => 'foobar'
 22622       *
 22623       * _.toLower('__FOO_BAR__');
 22624       * // => '__foo_bar__'
 22625       */
 22626      function toLower(value) {
 22627        return toString(value).toLowerCase();
 22628      }
 22629  
 22630      /**
 22631       * Converts `string`, as a whole, to upper case just like
 22632       * [String#toUpperCase](https://mdn.io/toUpperCase).
 22633       *
 22634       * @static
 22635       * @memberOf _
 22636       * @since 4.0.0
 22637       * @category String
 22638       * @param {string} [string=''] The string to convert.
 22639       * @returns {string} Returns the upper cased string.
 22640       * @example
 22641       *
 22642       * _.toUpper('--foo-bar--');
 22643       * // => '--FOO-BAR--'
 22644       *
 22645       * _.toUpper('fooBar');
 22646       * // => 'FOOBAR'
 22647       *
 22648       * _.toUpper('__foo_bar__');
 22649       * // => '__FOO_BAR__'
 22650       */
 22651      function toUpper(value) {
 22652        return toString(value).toUpperCase();
 22653      }
 22654  
 22655      /**
 22656       * Removes leading and trailing whitespace or specified characters from `string`.
 22657       *
 22658       * @static
 22659       * @memberOf _
 22660       * @since 3.0.0
 22661       * @category String
 22662       * @param {string} [string=''] The string to trim.
 22663       * @param {string} [chars=whitespace] The characters to trim.
 22664       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 22665       * @returns {string} Returns the trimmed string.
 22666       * @example
 22667       *
 22668       * _.trim('  abc  ');
 22669       * // => 'abc'
 22670       *
 22671       * _.trim('-_-abc-_-', '_-');
 22672       * // => 'abc'
 22673       *
 22674       * _.map(['  foo  ', '  bar  '], _.trim);
 22675       * // => ['foo', 'bar']
 22676       */
 22677      function trim(string, chars, guard) {
 22678        string = toString(string);
 22679        if (string && (guard || chars === undefined)) {
 22680          return string.replace(reTrim, '');
 22681        }
 22682        if (!string || !(chars = baseToString(chars))) {
 22683          return string;
 22684        }
 22685        var strSymbols = stringToArray(string),
 22686            chrSymbols = stringToArray(chars),
 22687            start = charsStartIndex(strSymbols, chrSymbols),
 22688            end = charsEndIndex(strSymbols, chrSymbols) + 1;
 22689  
 22690        return castSlice(strSymbols, start, end).join('');
 22691      }
 22692  
 22693      /**
 22694       * Removes trailing whitespace or specified characters from `string`.
 22695       *
 22696       * @static
 22697       * @memberOf _
 22698       * @since 4.0.0
 22699       * @category String
 22700       * @param {string} [string=''] The string to trim.
 22701       * @param {string} [chars=whitespace] The characters to trim.
 22702       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 22703       * @returns {string} Returns the trimmed string.
 22704       * @example
 22705       *
 22706       * _.trimEnd('  abc  ');
 22707       * // => '  abc'
 22708       *
 22709       * _.trimEnd('-_-abc-_-', '_-');
 22710       * // => '-_-abc'
 22711       */
 22712      function trimEnd(string, chars, guard) {
 22713        string = toString(string);
 22714        if (string && (guard || chars === undefined)) {
 22715          return string.replace(reTrimEnd, '');
 22716        }
 22717        if (!string || !(chars = baseToString(chars))) {
 22718          return string;
 22719        }
 22720        var strSymbols = stringToArray(string),
 22721            end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
 22722  
 22723        return castSlice(strSymbols, 0, end).join('');
 22724      }
 22725  
 22726      /**
 22727       * Removes leading whitespace or specified characters from `string`.
 22728       *
 22729       * @static
 22730       * @memberOf _
 22731       * @since 4.0.0
 22732       * @category String
 22733       * @param {string} [string=''] The string to trim.
 22734       * @param {string} [chars=whitespace] The characters to trim.
 22735       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 22736       * @returns {string} Returns the trimmed string.
 22737       * @example
 22738       *
 22739       * _.trimStart('  abc  ');
 22740       * // => 'abc  '
 22741       *
 22742       * _.trimStart('-_-abc-_-', '_-');
 22743       * // => 'abc-_-'
 22744       */
 22745      function trimStart(string, chars, guard) {
 22746        string = toString(string);
 22747        if (string && (guard || chars === undefined)) {
 22748          return string.replace(reTrimStart, '');
 22749        }
 22750        if (!string || !(chars = baseToString(chars))) {
 22751          return string;
 22752        }
 22753        var strSymbols = stringToArray(string),
 22754            start = charsStartIndex(strSymbols, stringToArray(chars));
 22755  
 22756        return castSlice(strSymbols, start).join('');
 22757      }
 22758  
 22759      /**
 22760       * Truncates `string` if it's longer than the given maximum string length.
 22761       * The last characters of the truncated string are replaced with the omission
 22762       * string which defaults to "...".
 22763       *
 22764       * @static
 22765       * @memberOf _
 22766       * @since 4.0.0
 22767       * @category String
 22768       * @param {string} [string=''] The string to truncate.
 22769       * @param {Object} [options={}] The options object.
 22770       * @param {number} [options.length=30] The maximum string length.
 22771       * @param {string} [options.omission='...'] The string to indicate text is omitted.
 22772       * @param {RegExp|string} [options.separator] The separator pattern to truncate to.
 22773       * @returns {string} Returns the truncated string.
 22774       * @example
 22775       *
 22776       * _.truncate('hi-diddly-ho there, neighborino');
 22777       * // => 'hi-diddly-ho there, neighbo...'
 22778       *
 22779       * _.truncate('hi-diddly-ho there, neighborino', {
 22780       *   'length': 24,
 22781       *   'separator': ' '
 22782       * });
 22783       * // => 'hi-diddly-ho there,...'
 22784       *
 22785       * _.truncate('hi-diddly-ho there, neighborino', {
 22786       *   'length': 24,
 22787       *   'separator': /,? +/
 22788       * });
 22789       * // => 'hi-diddly-ho there...'
 22790       *
 22791       * _.truncate('hi-diddly-ho there, neighborino', {
 22792       *   'omission': ' [...]'
 22793       * });
 22794       * // => 'hi-diddly-ho there, neig [...]'
 22795       */
 22796      function truncate(string, options) {
 22797        var length = DEFAULT_TRUNC_LENGTH,
 22798            omission = DEFAULT_TRUNC_OMISSION;
 22799  
 22800        if (isObject(options)) {
 22801          var separator = 'separator' in options ? options.separator : separator;
 22802          length = 'length' in options ? toInteger(options.length) : length;
 22803          omission = 'omission' in options ? baseToString(options.omission) : omission;
 22804        }
 22805        string = toString(string);
 22806  
 22807        var strLength = string.length;
 22808        if (hasUnicode(string)) {
 22809          var strSymbols = stringToArray(string);
 22810          strLength = strSymbols.length;
 22811        }
 22812        if (length >= strLength) {
 22813          return string;
 22814        }
 22815        var end = length - stringSize(omission);
 22816        if (end < 1) {
 22817          return omission;
 22818        }
 22819        var result = strSymbols
 22820          ? castSlice(strSymbols, 0, end).join('')
 22821          : string.slice(0, end);
 22822  
 22823        if (separator === undefined) {
 22824          return result + omission;
 22825        }
 22826        if (strSymbols) {
 22827          end += (result.length - end);
 22828        }
 22829        if (isRegExp(separator)) {
 22830          if (string.slice(end).search(separator)) {
 22831            var match,
 22832                substring = result;
 22833  
 22834            if (!separator.global) {
 22835              separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');
 22836            }
 22837            separator.lastIndex = 0;
 22838            while ((match = separator.exec(substring))) {
 22839              var newEnd = match.index;
 22840            }
 22841            result = result.slice(0, newEnd === undefined ? end : newEnd);
 22842          }
 22843        } else if (string.indexOf(baseToString(separator), end) != end) {
 22844          var index = result.lastIndexOf(separator);
 22845          if (index > -1) {
 22846            result = result.slice(0, index);
 22847          }
 22848        }
 22849        return result + omission;
 22850      }
 22851  
 22852      /**
 22853       * The inverse of `_.escape`; this method converts the HTML entities
 22854       * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to
 22855       * their corresponding characters.
 22856       *
 22857       * **Note:** No other HTML entities are unescaped. To unescape additional
 22858       * HTML entities use a third-party library like [_he_](https://mths.be/he).
 22859       *
 22860       * @static
 22861       * @memberOf _
 22862       * @since 0.6.0
 22863       * @category String
 22864       * @param {string} [string=''] The string to unescape.
 22865       * @returns {string} Returns the unescaped string.
 22866       * @example
 22867       *
 22868       * _.unescape('fred, barney, &amp; pebbles');
 22869       * // => 'fred, barney, & pebbles'
 22870       */
 22871      function unescape(string) {
 22872        string = toString(string);
 22873        return (string && reHasEscapedHtml.test(string))
 22874          ? string.replace(reEscapedHtml, unescapeHtmlChar)
 22875          : string;
 22876      }
 22877  
 22878      /**
 22879       * Converts `string`, as space separated words, to upper case.
 22880       *
 22881       * @static
 22882       * @memberOf _
 22883       * @since 4.0.0
 22884       * @category String
 22885       * @param {string} [string=''] The string to convert.
 22886       * @returns {string} Returns the upper cased string.
 22887       * @example
 22888       *
 22889       * _.upperCase('--foo-bar');
 22890       * // => 'FOO BAR'
 22891       *
 22892       * _.upperCase('fooBar');
 22893       * // => 'FOO BAR'
 22894       *
 22895       * _.upperCase('__foo_bar__');
 22896       * // => 'FOO BAR'
 22897       */
 22898      var upperCase = createCompounder(function(result, word, index) {
 22899        return result + (index ? ' ' : '') + word.toUpperCase();
 22900      });
 22901  
 22902      /**
 22903       * Converts the first character of `string` to upper case.
 22904       *
 22905       * @static
 22906       * @memberOf _
 22907       * @since 4.0.0
 22908       * @category String
 22909       * @param {string} [string=''] The string to convert.
 22910       * @returns {string} Returns the converted string.
 22911       * @example
 22912       *
 22913       * _.upperFirst('fred');
 22914       * // => 'Fred'
 22915       *
 22916       * _.upperFirst('FRED');
 22917       * // => 'FRED'
 22918       */
 22919      var upperFirst = createCaseFirst('toUpperCase');
 22920  
 22921      /**
 22922       * Splits `string` into an array of its words.
 22923       *
 22924       * @static
 22925       * @memberOf _
 22926       * @since 3.0.0
 22927       * @category String
 22928       * @param {string} [string=''] The string to inspect.
 22929       * @param {RegExp|string} [pattern] The pattern to match words.
 22930       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 22931       * @returns {Array} Returns the words of `string`.
 22932       * @example
 22933       *
 22934       * _.words('fred, barney, & pebbles');
 22935       * // => ['fred', 'barney', 'pebbles']
 22936       *
 22937       * _.words('fred, barney, & pebbles', /[^, ]+/g);
 22938       * // => ['fred', 'barney', '&', 'pebbles']
 22939       */
 22940      function words(string, pattern, guard) {
 22941        string = toString(string);
 22942        pattern = guard ? undefined : pattern;
 22943  
 22944        if (pattern === undefined) {
 22945          return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
 22946        }
 22947        return string.match(pattern) || [];
 22948      }
 22949  
 22950      /*------------------------------------------------------------------------*/
 22951  
 22952      /**
 22953       * Attempts to invoke `func`, returning either the result or the caught error
 22954       * object. Any additional arguments are provided to `func` when it's invoked.
 22955       *
 22956       * @static
 22957       * @memberOf _
 22958       * @since 3.0.0
 22959       * @category Util
 22960       * @param {Function} func The function to attempt.
 22961       * @param {...*} [args] The arguments to invoke `func` with.
 22962       * @returns {*} Returns the `func` result or error object.
 22963       * @example
 22964       *
 22965       * // Avoid throwing errors for invalid selectors.
 22966       * var elements = _.attempt(function(selector) {
 22967       *   return document.querySelectorAll(selector);
 22968       * }, '>_>');
 22969       *
 22970       * if (_.isError(elements)) {
 22971       *   elements = [];
 22972       * }
 22973       */
 22974      var attempt = baseRest(function(func, args) {
 22975        try {
 22976          return apply(func, undefined, args);
 22977        } catch (e) {
 22978          return isError(e) ? e : new Error(e);
 22979        }
 22980      });
 22981  
 22982      /**
 22983       * Binds methods of an object to the object itself, overwriting the existing
 22984       * method.
 22985       *
 22986       * **Note:** This method doesn't set the "length" property of bound functions.
 22987       *
 22988       * @static
 22989       * @since 0.1.0
 22990       * @memberOf _
 22991       * @category Util
 22992       * @param {Object} object The object to bind and assign the bound methods to.
 22993       * @param {...(string|string[])} methodNames The object method names to bind.
 22994       * @returns {Object} Returns `object`.
 22995       * @example
 22996       *
 22997       * var view = {
 22998       *   'label': 'docs',
 22999       *   'click': function() {
 23000       *     console.log('clicked ' + this.label);
 23001       *   }
 23002       * };
 23003       *
 23004       * _.bindAll(view, ['click']);
 23005       * jQuery(element).on('click', view.click);
 23006       * // => Logs 'clicked docs' when clicked.
 23007       */
 23008      var bindAll = flatRest(function(object, methodNames) {
 23009        arrayEach(methodNames, function(key) {
 23010          key = toKey(key);
 23011          baseAssignValue(object, key, bind(object[key], object));
 23012        });
 23013        return object;
 23014      });
 23015  
 23016      /**
 23017       * Creates a function that iterates over `pairs` and invokes the corresponding
 23018       * function of the first predicate to return truthy. The predicate-function
 23019       * pairs are invoked with the `this` binding and arguments of the created
 23020       * function.
 23021       *
 23022       * @static
 23023       * @memberOf _
 23024       * @since 4.0.0
 23025       * @category Util
 23026       * @param {Array} pairs The predicate-function pairs.
 23027       * @returns {Function} Returns the new composite function.
 23028       * @example
 23029       *
 23030       * var func = _.cond([
 23031       *   [_.matches({ 'a': 1 }),           _.constant('matches A')],
 23032       *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],
 23033       *   [_.stubTrue,                      _.constant('no match')]
 23034       * ]);
 23035       *
 23036       * func({ 'a': 1, 'b': 2 });
 23037       * // => 'matches A'
 23038       *
 23039       * func({ 'a': 0, 'b': 1 });
 23040       * // => 'matches B'
 23041       *
 23042       * func({ 'a': '1', 'b': '2' });
 23043       * // => 'no match'
 23044       */
 23045      function cond(pairs) {
 23046        var length = pairs == null ? 0 : pairs.length,
 23047            toIteratee = getIteratee();
 23048  
 23049        pairs = !length ? [] : arrayMap(pairs, function(pair) {
 23050          if (typeof pair[1] != 'function') {
 23051            throw new TypeError(FUNC_ERROR_TEXT);
 23052          }
 23053          return [toIteratee(pair[0]), pair[1]];
 23054        });
 23055  
 23056        return baseRest(function(args) {
 23057          var index = -1;
 23058          while (++index < length) {
 23059            var pair = pairs[index];
 23060            if (apply(pair[0], this, args)) {
 23061              return apply(pair[1], this, args);
 23062            }
 23063          }
 23064        });
 23065      }
 23066  
 23067      /**
 23068       * Creates a function that invokes the predicate properties of `source` with
 23069       * the corresponding property values of a given object, returning `true` if
 23070       * all predicates return truthy, else `false`.
 23071       *
 23072       * **Note:** The created function is equivalent to `_.conformsTo` with
 23073       * `source` partially applied.
 23074       *
 23075       * @static
 23076       * @memberOf _
 23077       * @since 4.0.0
 23078       * @category Util
 23079       * @param {Object} source The object of property predicates to conform to.
 23080       * @returns {Function} Returns the new spec function.
 23081       * @example
 23082       *
 23083       * var objects = [
 23084       *   { 'a': 2, 'b': 1 },
 23085       *   { 'a': 1, 'b': 2 }
 23086       * ];
 23087       *
 23088       * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));
 23089       * // => [{ 'a': 1, 'b': 2 }]
 23090       */
 23091      function conforms(source) {
 23092        return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
 23093      }
 23094  
 23095      /**
 23096       * Creates a function that returns `value`.
 23097       *
 23098       * @static
 23099       * @memberOf _
 23100       * @since 2.4.0
 23101       * @category Util
 23102       * @param {*} value The value to return from the new function.
 23103       * @returns {Function} Returns the new constant function.
 23104       * @example
 23105       *
 23106       * var objects = _.times(2, _.constant({ 'a': 1 }));
 23107       *
 23108       * console.log(objects);
 23109       * // => [{ 'a': 1 }, { 'a': 1 }]
 23110       *
 23111       * console.log(objects[0] === objects[1]);
 23112       * // => true
 23113       */
 23114      function constant(value) {
 23115        return function() {
 23116          return value;
 23117        };
 23118      }
 23119  
 23120      /**
 23121       * Checks `value` to determine whether a default value should be returned in
 23122       * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
 23123       * or `undefined`.
 23124       *
 23125       * @static
 23126       * @memberOf _
 23127       * @since 4.14.0
 23128       * @category Util
 23129       * @param {*} value The value to check.
 23130       * @param {*} defaultValue The default value.
 23131       * @returns {*} Returns the resolved value.
 23132       * @example
 23133       *
 23134       * _.defaultTo(1, 10);
 23135       * // => 1
 23136       *
 23137       * _.defaultTo(undefined, 10);
 23138       * // => 10
 23139       */
 23140      function defaultTo(value, defaultValue) {
 23141        return (value == null || value !== value) ? defaultValue : value;
 23142      }
 23143  
 23144      /**
 23145       * Creates a function that returns the result of invoking the given functions
 23146       * with the `this` binding of the created function, where each successive
 23147       * invocation is supplied the return value of the previous.
 23148       *
 23149       * @static
 23150       * @memberOf _
 23151       * @since 3.0.0
 23152       * @category Util
 23153       * @param {...(Function|Function[])} [funcs] The functions to invoke.
 23154       * @returns {Function} Returns the new composite function.
 23155       * @see _.flowRight
 23156       * @example
 23157       *
 23158       * function square(n) {
 23159       *   return n * n;
 23160       * }
 23161       *
 23162       * var addSquare = _.flow([_.add, square]);
 23163       * addSquare(1, 2);
 23164       * // => 9
 23165       */
 23166      var flow = createFlow();
 23167  
 23168      /**
 23169       * This method is like `_.flow` except that it creates a function that
 23170       * invokes the given functions from right to left.
 23171       *
 23172       * @static
 23173       * @since 3.0.0
 23174       * @memberOf _
 23175       * @category Util
 23176       * @param {...(Function|Function[])} [funcs] The functions to invoke.
 23177       * @returns {Function} Returns the new composite function.
 23178       * @see _.flow
 23179       * @example
 23180       *
 23181       * function square(n) {
 23182       *   return n * n;
 23183       * }
 23184       *
 23185       * var addSquare = _.flowRight([square, _.add]);
 23186       * addSquare(1, 2);
 23187       * // => 9
 23188       */
 23189      var flowRight = createFlow(true);
 23190  
 23191      /**
 23192       * This method returns the first argument it receives.
 23193       *
 23194       * @static
 23195       * @since 0.1.0
 23196       * @memberOf _
 23197       * @category Util
 23198       * @param {*} value Any value.
 23199       * @returns {*} Returns `value`.
 23200       * @example
 23201       *
 23202       * var object = { 'a': 1 };
 23203       *
 23204       * console.log(_.identity(object) === object);
 23205       * // => true
 23206       */
 23207      function identity(value) {
 23208        return value;
 23209      }
 23210  
 23211      /**
 23212       * Creates a function that invokes `func` with the arguments of the created
 23213       * function. If `func` is a property name, the created function returns the
 23214       * property value for a given element. If `func` is an array or object, the
 23215       * created function returns `true` for elements that contain the equivalent
 23216       * source properties, otherwise it returns `false`.
 23217       *
 23218       * @static
 23219       * @since 4.0.0
 23220       * @memberOf _
 23221       * @category Util
 23222       * @param {*} [func=_.identity] The value to convert to a callback.
 23223       * @returns {Function} Returns the callback.
 23224       * @example
 23225       *
 23226       * var users = [
 23227       *   { 'user': 'barney', 'age': 36, 'active': true },
 23228       *   { 'user': 'fred',   'age': 40, 'active': false }
 23229       * ];
 23230       *
 23231       * // The `_.matches` iteratee shorthand.
 23232       * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
 23233       * // => [{ 'user': 'barney', 'age': 36, 'active': true }]
 23234       *
 23235       * // The `_.matchesProperty` iteratee shorthand.
 23236       * _.filter(users, _.iteratee(['user', 'fred']));
 23237       * // => [{ 'user': 'fred', 'age': 40 }]
 23238       *
 23239       * // The `_.property` iteratee shorthand.
 23240       * _.map(users, _.iteratee('user'));
 23241       * // => ['barney', 'fred']
 23242       *
 23243       * // Create custom iteratee shorthands.
 23244       * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {
 23245       *   return !_.isRegExp(func) ? iteratee(func) : function(string) {
 23246       *     return func.test(string);
 23247       *   };
 23248       * });
 23249       *
 23250       * _.filter(['abc', 'def'], /ef/);
 23251       * // => ['def']
 23252       */
 23253      function iteratee(func) {
 23254        return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));
 23255      }
 23256  
 23257      /**
 23258       * Creates a function that performs a partial deep comparison between a given
 23259       * object and `source`, returning `true` if the given object has equivalent
 23260       * property values, else `false`.
 23261       *
 23262       * **Note:** The created function is equivalent to `_.isMatch` with `source`
 23263       * partially applied.
 23264       *
 23265       * Partial comparisons will match empty array and empty object `source`
 23266       * values against any array or object value, respectively. See `_.isEqual`
 23267       * for a list of supported value comparisons.
 23268       *
 23269       * @static
 23270       * @memberOf _
 23271       * @since 3.0.0
 23272       * @category Util
 23273       * @param {Object} source The object of property values to match.
 23274       * @returns {Function} Returns the new spec function.
 23275       * @example
 23276       *
 23277       * var objects = [
 23278       *   { 'a': 1, 'b': 2, 'c': 3 },
 23279       *   { 'a': 4, 'b': 5, 'c': 6 }
 23280       * ];
 23281       *
 23282       * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
 23283       * // => [{ 'a': 4, 'b': 5, 'c': 6 }]
 23284       */
 23285      function matches(source) {
 23286        return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
 23287      }
 23288  
 23289      /**
 23290       * Creates a function that performs a partial deep comparison between the
 23291       * value at `path` of a given object to `srcValue`, returning `true` if the
 23292       * object value is equivalent, else `false`.
 23293       *
 23294       * **Note:** Partial comparisons will match empty array and empty object
 23295       * `srcValue` values against any array or object value, respectively. See
 23296       * `_.isEqual` for a list of supported value comparisons.
 23297       *
 23298       * @static
 23299       * @memberOf _
 23300       * @since 3.2.0
 23301       * @category Util
 23302       * @param {Array|string} path The path of the property to get.
 23303       * @param {*} srcValue The value to match.
 23304       * @returns {Function} Returns the new spec function.
 23305       * @example
 23306       *
 23307       * var objects = [
 23308       *   { 'a': 1, 'b': 2, 'c': 3 },
 23309       *   { 'a': 4, 'b': 5, 'c': 6 }
 23310       * ];
 23311       *
 23312       * _.find(objects, _.matchesProperty('a', 4));
 23313       * // => { 'a': 4, 'b': 5, 'c': 6 }
 23314       */
 23315      function matchesProperty(path, srcValue) {
 23316        return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
 23317      }
 23318  
 23319      /**
 23320       * Creates a function that invokes the method at `path` of a given object.
 23321       * Any additional arguments are provided to the invoked method.
 23322       *
 23323       * @static
 23324       * @memberOf _
 23325       * @since 3.7.0
 23326       * @category Util
 23327       * @param {Array|string} path The path of the method to invoke.
 23328       * @param {...*} [args] The arguments to invoke the method with.
 23329       * @returns {Function} Returns the new invoker function.
 23330       * @example
 23331       *
 23332       * var objects = [
 23333       *   { 'a': { 'b': _.constant(2) } },
 23334       *   { 'a': { 'b': _.constant(1) } }
 23335       * ];
 23336       *
 23337       * _.map(objects, _.method('a.b'));
 23338       * // => [2, 1]
 23339       *
 23340       * _.map(objects, _.method(['a', 'b']));
 23341       * // => [2, 1]
 23342       */
 23343      var method = baseRest(function(path, args) {
 23344        return function(object) {
 23345          return baseInvoke(object, path, args);
 23346        };
 23347      });
 23348  
 23349      /**
 23350       * The opposite of `_.method`; this method creates a function that invokes
 23351       * the method at a given path of `object`. Any additional arguments are
 23352       * provided to the invoked method.
 23353       *
 23354       * @static
 23355       * @memberOf _
 23356       * @since 3.7.0
 23357       * @category Util
 23358       * @param {Object} object The object to query.
 23359       * @param {...*} [args] The arguments to invoke the method with.
 23360       * @returns {Function} Returns the new invoker function.
 23361       * @example
 23362       *
 23363       * var array = _.times(3, _.constant),
 23364       *     object = { 'a': array, 'b': array, 'c': array };
 23365       *
 23366       * _.map(['a[2]', 'c[0]'], _.methodOf(object));
 23367       * // => [2, 0]
 23368       *
 23369       * _.map([['a', '2'], ['c', '0']], _.methodOf(object));
 23370       * // => [2, 0]
 23371       */
 23372      var methodOf = baseRest(function(object, args) {
 23373        return function(path) {
 23374          return baseInvoke(object, path, args);
 23375        };
 23376      });
 23377  
 23378      /**
 23379       * Adds all own enumerable string keyed function properties of a source
 23380       * object to the destination object. If `object` is a function, then methods
 23381       * are added to its prototype as well.
 23382       *
 23383       * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
 23384       * avoid conflicts caused by modifying the original.
 23385       *
 23386       * @static
 23387       * @since 0.1.0
 23388       * @memberOf _
 23389       * @category Util
 23390       * @param {Function|Object} [object=lodash] The destination object.
 23391       * @param {Object} source The object of functions to add.
 23392       * @param {Object} [options={}] The options object.
 23393       * @param {boolean} [options.chain=true] Specify whether mixins are chainable.
 23394       * @returns {Function|Object} Returns `object`.
 23395       * @example
 23396       *
 23397       * function vowels(string) {
 23398       *   return _.filter(string, function(v) {
 23399       *     return /[aeiou]/i.test(v);
 23400       *   });
 23401       * }
 23402       *
 23403       * _.mixin({ 'vowels': vowels });
 23404       * _.vowels('fred');
 23405       * // => ['e']
 23406       *
 23407       * _('fred').vowels().value();
 23408       * // => ['e']
 23409       *
 23410       * _.mixin({ 'vowels': vowels }, { 'chain': false });
 23411       * _('fred').vowels();
 23412       * // => ['e']
 23413       */
 23414      function mixin(object, source, options) {
 23415        var props = keys(source),
 23416            methodNames = baseFunctions(source, props);
 23417  
 23418        if (options == null &&
 23419            !(isObject(source) && (methodNames.length || !props.length))) {
 23420          options = source;
 23421          source = object;
 23422          object = this;
 23423          methodNames = baseFunctions(source, keys(source));
 23424        }
 23425        var chain = !(isObject(options) && 'chain' in options) || !!options.chain,
 23426            isFunc = isFunction(object);
 23427  
 23428        arrayEach(methodNames, function(methodName) {
 23429          var func = source[methodName];
 23430          object[methodName] = func;
 23431          if (isFunc) {
 23432            object.prototype[methodName] = function() {
 23433              var chainAll = this.__chain__;
 23434              if (chain || chainAll) {
 23435                var result = object(this.__wrapped__),
 23436                    actions = result.__actions__ = copyArray(this.__actions__);
 23437  
 23438                actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
 23439                result.__chain__ = chainAll;
 23440                return result;
 23441              }
 23442              return func.apply(object, arrayPush([this.value()], arguments));
 23443            };
 23444          }
 23445        });
 23446  
 23447        return object;
 23448      }
 23449  
 23450      /**
 23451       * Reverts the `_` variable to its previous value and returns a reference to
 23452       * the `lodash` function.
 23453       *
 23454       * @static
 23455       * @since 0.1.0
 23456       * @memberOf _
 23457       * @category Util
 23458       * @returns {Function} Returns the `lodash` function.
 23459       * @example
 23460       *
 23461       * var lodash = _.noConflict();
 23462       */
 23463      function noConflict() {
 23464        if (root._ === this) {
 23465          root._ = oldDash;
 23466        }
 23467        return this;
 23468      }
 23469  
 23470      /**
 23471       * This method returns `undefined`.
 23472       *
 23473       * @static
 23474       * @memberOf _
 23475       * @since 2.3.0
 23476       * @category Util
 23477       * @example
 23478       *
 23479       * _.times(2, _.noop);
 23480       * // => [undefined, undefined]
 23481       */
 23482      function noop() {
 23483        // No operation performed.
 23484      }
 23485  
 23486      /**
 23487       * Creates a function that gets the argument at index `n`. If `n` is negative,
 23488       * the nth argument from the end is returned.
 23489       *
 23490       * @static
 23491       * @memberOf _
 23492       * @since 4.0.0
 23493       * @category Util
 23494       * @param {number} [n=0] The index of the argument to return.
 23495       * @returns {Function} Returns the new pass-thru function.
 23496       * @example
 23497       *
 23498       * var func = _.nthArg(1);
 23499       * func('a', 'b', 'c', 'd');
 23500       * // => 'b'
 23501       *
 23502       * var func = _.nthArg(-2);
 23503       * func('a', 'b', 'c', 'd');
 23504       * // => 'c'
 23505       */
 23506      function nthArg(n) {
 23507        n = toInteger(n);
 23508        return baseRest(function(args) {
 23509          return baseNth(args, n);
 23510        });
 23511      }
 23512  
 23513      /**
 23514       * Creates a function that invokes `iteratees` with the arguments it receives
 23515       * and returns their results.
 23516       *
 23517       * @static
 23518       * @memberOf _
 23519       * @since 4.0.0
 23520       * @category Util
 23521       * @param {...(Function|Function[])} [iteratees=[_.identity]]
 23522       *  The iteratees to invoke.
 23523       * @returns {Function} Returns the new function.
 23524       * @example
 23525       *
 23526       * var func = _.over([Math.max, Math.min]);
 23527       *
 23528       * func(1, 2, 3, 4);
 23529       * // => [4, 1]
 23530       */
 23531      var over = createOver(arrayMap);
 23532  
 23533      /**
 23534       * Creates a function that checks if **all** of the `predicates` return
 23535       * truthy when invoked with the arguments it receives.
 23536       *
 23537       * @static
 23538       * @memberOf _
 23539       * @since 4.0.0
 23540       * @category Util
 23541       * @param {...(Function|Function[])} [predicates=[_.identity]]
 23542       *  The predicates to check.
 23543       * @returns {Function} Returns the new function.
 23544       * @example
 23545       *
 23546       * var func = _.overEvery([Boolean, isFinite]);
 23547       *
 23548       * func('1');
 23549       * // => true
 23550       *
 23551       * func(null);
 23552       * // => false
 23553       *
 23554       * func(NaN);
 23555       * // => false
 23556       */
 23557      var overEvery = createOver(arrayEvery);
 23558  
 23559      /**
 23560       * Creates a function that checks if **any** of the `predicates` return
 23561       * truthy when invoked with the arguments it receives.
 23562       *
 23563       * @static
 23564       * @memberOf _
 23565       * @since 4.0.0
 23566       * @category Util
 23567       * @param {...(Function|Function[])} [predicates=[_.identity]]
 23568       *  The predicates to check.
 23569       * @returns {Function} Returns the new function.
 23570       * @example
 23571       *
 23572       * var func = _.overSome([Boolean, isFinite]);
 23573       *
 23574       * func('1');
 23575       * // => true
 23576       *
 23577       * func(null);
 23578       * // => true
 23579       *
 23580       * func(NaN);
 23581       * // => false
 23582       */
 23583      var overSome = createOver(arraySome);
 23584  
 23585      /**
 23586       * Creates a function that returns the value at `path` of a given object.
 23587       *
 23588       * @static
 23589       * @memberOf _
 23590       * @since 2.4.0
 23591       * @category Util
 23592       * @param {Array|string} path The path of the property to get.
 23593       * @returns {Function} Returns the new accessor function.
 23594       * @example
 23595       *
 23596       * var objects = [
 23597       *   { 'a': { 'b': 2 } },
 23598       *   { 'a': { 'b': 1 } }
 23599       * ];
 23600       *
 23601       * _.map(objects, _.property('a.b'));
 23602       * // => [2, 1]
 23603       *
 23604       * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
 23605       * // => [1, 2]
 23606       */
 23607      function property(path) {
 23608        return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
 23609      }
 23610  
 23611      /**
 23612       * The opposite of `_.property`; this method creates a function that returns
 23613       * the value at a given path of `object`.
 23614       *
 23615       * @static
 23616       * @memberOf _
 23617       * @since 3.0.0
 23618       * @category Util
 23619       * @param {Object} object The object to query.
 23620       * @returns {Function} Returns the new accessor function.
 23621       * @example
 23622       *
 23623       * var array = [0, 1, 2],
 23624       *     object = { 'a': array, 'b': array, 'c': array };
 23625       *
 23626       * _.map(['a[2]', 'c[0]'], _.propertyOf(object));
 23627       * // => [2, 0]
 23628       *
 23629       * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));
 23630       * // => [2, 0]
 23631       */
 23632      function propertyOf(object) {
 23633        return function(path) {
 23634          return object == null ? undefined : baseGet(object, path);
 23635        };
 23636      }
 23637  
 23638      /**
 23639       * Creates an array of numbers (positive and/or negative) progressing from
 23640       * `start` up to, but not including, `end`. A step of `-1` is used if a negative
 23641       * `start` is specified without an `end` or `step`. If `end` is not specified,
 23642       * it's set to `start` with `start` then set to `0`.
 23643       *
 23644       * **Note:** JavaScript follows the IEEE-754 standard for resolving
 23645       * floating-point values which can produce unexpected results.
 23646       *
 23647       * @static
 23648       * @since 0.1.0
 23649       * @memberOf _
 23650       * @category Util
 23651       * @param {number} [start=0] The start of the range.
 23652       * @param {number} end The end of the range.
 23653       * @param {number} [step=1] The value to increment or decrement by.
 23654       * @returns {Array} Returns the range of numbers.
 23655       * @see _.inRange, _.rangeRight
 23656       * @example
 23657       *
 23658       * _.range(4);
 23659       * // => [0, 1, 2, 3]
 23660       *
 23661       * _.range(-4);
 23662       * // => [0, -1, -2, -3]
 23663       *
 23664       * _.range(1, 5);
 23665       * // => [1, 2, 3, 4]
 23666       *
 23667       * _.range(0, 20, 5);
 23668       * // => [0, 5, 10, 15]
 23669       *
 23670       * _.range(0, -4, -1);
 23671       * // => [0, -1, -2, -3]
 23672       *
 23673       * _.range(1, 4, 0);
 23674       * // => [1, 1, 1]
 23675       *
 23676       * _.range(0);
 23677       * // => []
 23678       */
 23679      var range = createRange();
 23680  
 23681      /**
 23682       * This method is like `_.range` except that it populates values in
 23683       * descending order.
 23684       *
 23685       * @static
 23686       * @memberOf _
 23687       * @since 4.0.0
 23688       * @category Util
 23689       * @param {number} [start=0] The start of the range.
 23690       * @param {number} end The end of the range.
 23691       * @param {number} [step=1] The value to increment or decrement by.
 23692       * @returns {Array} Returns the range of numbers.
 23693       * @see _.inRange, _.range
 23694       * @example
 23695       *
 23696       * _.rangeRight(4);
 23697       * // => [3, 2, 1, 0]
 23698       *
 23699       * _.rangeRight(-4);
 23700       * // => [-3, -2, -1, 0]
 23701       *
 23702       * _.rangeRight(1, 5);
 23703       * // => [4, 3, 2, 1]
 23704       *
 23705       * _.rangeRight(0, 20, 5);
 23706       * // => [15, 10, 5, 0]
 23707       *
 23708       * _.rangeRight(0, -4, -1);
 23709       * // => [-3, -2, -1, 0]
 23710       *
 23711       * _.rangeRight(1, 4, 0);
 23712       * // => [1, 1, 1]
 23713       *
 23714       * _.rangeRight(0);
 23715       * // => []
 23716       */
 23717      var rangeRight = createRange(true);
 23718  
 23719      /**
 23720       * This method returns a new empty array.
 23721       *
 23722       * @static
 23723       * @memberOf _
 23724       * @since 4.13.0
 23725       * @category Util
 23726       * @returns {Array} Returns the new empty array.
 23727       * @example
 23728       *
 23729       * var arrays = _.times(2, _.stubArray);
 23730       *
 23731       * console.log(arrays);
 23732       * // => [[], []]
 23733       *
 23734       * console.log(arrays[0] === arrays[1]);
 23735       * // => false
 23736       */
 23737      function stubArray() {
 23738        return [];
 23739      }
 23740  
 23741      /**
 23742       * This method returns `false`.
 23743       *
 23744       * @static
 23745       * @memberOf _
 23746       * @since 4.13.0
 23747       * @category Util
 23748       * @returns {boolean} Returns `false`.
 23749       * @example
 23750       *
 23751       * _.times(2, _.stubFalse);
 23752       * // => [false, false]
 23753       */
 23754      function stubFalse() {
 23755        return false;
 23756      }
 23757  
 23758      /**
 23759       * This method returns a new empty object.
 23760       *
 23761       * @static
 23762       * @memberOf _
 23763       * @since 4.13.0
 23764       * @category Util
 23765       * @returns {Object} Returns the new empty object.
 23766       * @example
 23767       *
 23768       * var objects = _.times(2, _.stubObject);
 23769       *
 23770       * console.log(objects);
 23771       * // => [{}, {}]
 23772       *
 23773       * console.log(objects[0] === objects[1]);
 23774       * // => false
 23775       */
 23776      function stubObject() {
 23777        return {};
 23778      }
 23779  
 23780      /**
 23781       * This method returns an empty string.
 23782       *
 23783       * @static
 23784       * @memberOf _
 23785       * @since 4.13.0
 23786       * @category Util
 23787       * @returns {string} Returns the empty string.
 23788       * @example
 23789       *
 23790       * _.times(2, _.stubString);
 23791       * // => ['', '']
 23792       */
 23793      function stubString() {
 23794        return '';
 23795      }
 23796  
 23797      /**
 23798       * This method returns `true`.
 23799       *
 23800       * @static
 23801       * @memberOf _
 23802       * @since 4.13.0
 23803       * @category Util
 23804       * @returns {boolean} Returns `true`.
 23805       * @example
 23806       *
 23807       * _.times(2, _.stubTrue);
 23808       * // => [true, true]
 23809       */
 23810      function stubTrue() {
 23811        return true;
 23812      }
 23813  
 23814      /**
 23815       * Invokes the iteratee `n` times, returning an array of the results of
 23816       * each invocation. The iteratee is invoked with one argument; (index).
 23817       *
 23818       * @static
 23819       * @since 0.1.0
 23820       * @memberOf _
 23821       * @category Util
 23822       * @param {number} n The number of times to invoke `iteratee`.
 23823       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 23824       * @returns {Array} Returns the array of results.
 23825       * @example
 23826       *
 23827       * _.times(3, String);
 23828       * // => ['0', '1', '2']
 23829       *
 23830       *  _.times(4, _.constant(0));
 23831       * // => [0, 0, 0, 0]
 23832       */
 23833      function times(n, iteratee) {
 23834        n = toInteger(n);
 23835        if (n < 1 || n > MAX_SAFE_INTEGER) {
 23836          return [];
 23837        }
 23838        var index = MAX_ARRAY_LENGTH,
 23839            length = nativeMin(n, MAX_ARRAY_LENGTH);
 23840  
 23841        iteratee = getIteratee(iteratee);
 23842        n -= MAX_ARRAY_LENGTH;
 23843  
 23844        var result = baseTimes(length, iteratee);
 23845        while (++index < n) {
 23846          iteratee(index);
 23847        }
 23848        return result;
 23849      }
 23850  
 23851      /**
 23852       * Converts `value` to a property path array.
 23853       *
 23854       * @static
 23855       * @memberOf _
 23856       * @since 4.0.0
 23857       * @category Util
 23858       * @param {*} value The value to convert.
 23859       * @returns {Array} Returns the new property path array.
 23860       * @example
 23861       *
 23862       * _.toPath('a.b.c');
 23863       * // => ['a', 'b', 'c']
 23864       *
 23865       * _.toPath('a[0].b.c');
 23866       * // => ['a', '0', 'b', 'c']
 23867       */
 23868      function toPath(value) {
 23869        if (isArray(value)) {
 23870          return arrayMap(value, toKey);
 23871        }
 23872        return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));
 23873      }
 23874  
 23875      /**
 23876       * Generates a unique ID. If `prefix` is given, the ID is appended to it.
 23877       *
 23878       * @static
 23879       * @since 0.1.0
 23880       * @memberOf _
 23881       * @category Util
 23882       * @param {string} [prefix=''] The value to prefix the ID with.
 23883       * @returns {string} Returns the unique ID.
 23884       * @example
 23885       *
 23886       * _.uniqueId('contact_');
 23887       * // => 'contact_104'
 23888       *
 23889       * _.uniqueId();
 23890       * // => '105'
 23891       */
 23892      function uniqueId(prefix) {
 23893        var id = ++idCounter;
 23894        return toString(prefix) + id;
 23895      }
 23896  
 23897      /*------------------------------------------------------------------------*/
 23898  
 23899      /**
 23900       * Adds two numbers.
 23901       *
 23902       * @static
 23903       * @memberOf _
 23904       * @since 3.4.0
 23905       * @category Math
 23906       * @param {number} augend The first number in an addition.
 23907       * @param {number} addend The second number in an addition.
 23908       * @returns {number} Returns the total.
 23909       * @example
 23910       *
 23911       * _.add(6, 4);
 23912       * // => 10
 23913       */
 23914      var add = createMathOperation(function(augend, addend) {
 23915        return augend + addend;
 23916      }, 0);
 23917  
 23918      /**
 23919       * Computes `number` rounded up to `precision`.
 23920       *
 23921       * @static
 23922       * @memberOf _
 23923       * @since 3.10.0
 23924       * @category Math
 23925       * @param {number} number The number to round up.
 23926       * @param {number} [precision=0] The precision to round up to.
 23927       * @returns {number} Returns the rounded up number.
 23928       * @example
 23929       *
 23930       * _.ceil(4.006);
 23931       * // => 5
 23932       *
 23933       * _.ceil(6.004, 2);
 23934       * // => 6.01
 23935       *
 23936       * _.ceil(6040, -2);
 23937       * // => 6100
 23938       */
 23939      var ceil = createRound('ceil');
 23940  
 23941      /**
 23942       * Divide two numbers.
 23943       *
 23944       * @static
 23945       * @memberOf _
 23946       * @since 4.7.0
 23947       * @category Math
 23948       * @param {number} dividend The first number in a division.
 23949       * @param {number} divisor The second number in a division.
 23950       * @returns {number} Returns the quotient.
 23951       * @example
 23952       *
 23953       * _.divide(6, 4);
 23954       * // => 1.5
 23955       */
 23956      var divide = createMathOperation(function(dividend, divisor) {
 23957        return dividend / divisor;
 23958      }, 1);
 23959  
 23960      /**
 23961       * Computes `number` rounded down to `precision`.
 23962       *
 23963       * @static
 23964       * @memberOf _
 23965       * @since 3.10.0
 23966       * @category Math
 23967       * @param {number} number The number to round down.
 23968       * @param {number} [precision=0] The precision to round down to.
 23969       * @returns {number} Returns the rounded down number.
 23970       * @example
 23971       *
 23972       * _.floor(4.006);
 23973       * // => 4
 23974       *
 23975       * _.floor(0.046, 2);
 23976       * // => 0.04
 23977       *
 23978       * _.floor(4060, -2);
 23979       * // => 4000
 23980       */
 23981      var floor = createRound('floor');
 23982  
 23983      /**
 23984       * Computes the maximum value of `array`. If `array` is empty or falsey,
 23985       * `undefined` is returned.
 23986       *
 23987       * @static
 23988       * @since 0.1.0
 23989       * @memberOf _
 23990       * @category Math
 23991       * @param {Array} array The array to iterate over.
 23992       * @returns {*} Returns the maximum value.
 23993       * @example
 23994       *
 23995       * _.max([4, 2, 8, 6]);
 23996       * // => 8
 23997       *
 23998       * _.max([]);
 23999       * // => undefined
 24000       */
 24001      function max(array) {
 24002        return (array && array.length)
 24003          ? baseExtremum(array, identity, baseGt)
 24004          : undefined;
 24005      }
 24006  
 24007      /**
 24008       * This method is like `_.max` except that it accepts `iteratee` which is
 24009       * invoked for each element in `array` to generate the criterion by which
 24010       * the value is ranked. The iteratee is invoked with one argument: (value).
 24011       *
 24012       * @static
 24013       * @memberOf _
 24014       * @since 4.0.0
 24015       * @category Math
 24016       * @param {Array} array The array to iterate over.
 24017       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
 24018       * @returns {*} Returns the maximum value.
 24019       * @example
 24020       *
 24021       * var objects = [{ 'n': 1 }, { 'n': 2 }];
 24022       *
 24023       * _.maxBy(objects, function(o) { return o.n; });
 24024       * // => { 'n': 2 }
 24025       *
 24026       * // The `_.property` iteratee shorthand.
 24027       * _.maxBy(objects, 'n');
 24028       * // => { 'n': 2 }
 24029       */
 24030      function maxBy(array, iteratee) {
 24031        return (array && array.length)
 24032          ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)
 24033          : undefined;
 24034      }
 24035  
 24036      /**
 24037       * Computes the mean of the values in `array`.
 24038       *
 24039       * @static
 24040       * @memberOf _
 24041       * @since 4.0.0
 24042       * @category Math
 24043       * @param {Array} array The array to iterate over.
 24044       * @returns {number} Returns the mean.
 24045       * @example
 24046       *
 24047       * _.mean([4, 2, 8, 6]);
 24048       * // => 5
 24049       */
 24050      function mean(array) {
 24051        return baseMean(array, identity);
 24052      }
 24053  
 24054      /**
 24055       * This method is like `_.mean` except that it accepts `iteratee` which is
 24056       * invoked for each element in `array` to generate the value to be averaged.
 24057       * The iteratee is invoked with one argument: (value).
 24058       *
 24059       * @static
 24060       * @memberOf _
 24061       * @since 4.7.0
 24062       * @category Math
 24063       * @param {Array} array The array to iterate over.
 24064       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
 24065       * @returns {number} Returns the mean.
 24066       * @example
 24067       *
 24068       * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
 24069       *
 24070       * _.meanBy(objects, function(o) { return o.n; });
 24071       * // => 5
 24072       *
 24073       * // The `_.property` iteratee shorthand.
 24074       * _.meanBy(objects, 'n');
 24075       * // => 5
 24076       */
 24077      function meanBy(array, iteratee) {
 24078        return baseMean(array, getIteratee(iteratee, 2));
 24079      }
 24080  
 24081      /**
 24082       * Computes the minimum value of `array`. If `array` is empty or falsey,
 24083       * `undefined` is returned.
 24084       *
 24085       * @static
 24086       * @since 0.1.0
 24087       * @memberOf _
 24088       * @category Math
 24089       * @param {Array} array The array to iterate over.
 24090       * @returns {*} Returns the minimum value.
 24091       * @example
 24092       *
 24093       * _.min([4, 2, 8, 6]);
 24094       * // => 2
 24095       *
 24096       * _.min([]);
 24097       * // => undefined
 24098       */
 24099      function min(array) {
 24100        return (array && array.length)
 24101          ? baseExtremum(array, identity, baseLt)
 24102          : undefined;
 24103      }
 24104  
 24105      /**
 24106       * This method is like `_.min` except that it accepts `iteratee` which is
 24107       * invoked for each element in `array` to generate the criterion by which
 24108       * the value is ranked. The iteratee is invoked with one argument: (value).
 24109       *
 24110       * @static
 24111       * @memberOf _
 24112       * @since 4.0.0
 24113       * @category Math
 24114       * @param {Array} array The array to iterate over.
 24115       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
 24116       * @returns {*} Returns the minimum value.
 24117       * @example
 24118       *
 24119       * var objects = [{ 'n': 1 }, { 'n': 2 }];
 24120       *
 24121       * _.minBy(objects, function(o) { return o.n; });
 24122       * // => { 'n': 1 }
 24123       *
 24124       * // The `_.property` iteratee shorthand.
 24125       * _.minBy(objects, 'n');
 24126       * // => { 'n': 1 }
 24127       */
 24128      function minBy(array, iteratee) {
 24129        return (array && array.length)
 24130          ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)
 24131          : undefined;
 24132      }
 24133  
 24134      /**
 24135       * Multiply two numbers.
 24136       *
 24137       * @static
 24138       * @memberOf _
 24139       * @since 4.7.0
 24140       * @category Math
 24141       * @param {number} multiplier The first number in a multiplication.
 24142       * @param {number} multiplicand The second number in a multiplication.
 24143       * @returns {number} Returns the product.
 24144       * @example
 24145       *
 24146       * _.multiply(6, 4);
 24147       * // => 24
 24148       */
 24149      var multiply = createMathOperation(function(multiplier, multiplicand) {
 24150        return multiplier * multiplicand;
 24151      }, 1);
 24152  
 24153      /**
 24154       * Computes `number` rounded to `precision`.
 24155       *
 24156       * @static
 24157       * @memberOf _
 24158       * @since 3.10.0
 24159       * @category Math
 24160       * @param {number} number The number to round.
 24161       * @param {number} [precision=0] The precision to round to.
 24162       * @returns {number} Returns the rounded number.
 24163       * @example
 24164       *
 24165       * _.round(4.006);
 24166       * // => 4
 24167       *
 24168       * _.round(4.006, 2);
 24169       * // => 4.01
 24170       *
 24171       * _.round(4060, -2);
 24172       * // => 4100
 24173       */
 24174      var round = createRound('round');
 24175  
 24176      /**
 24177       * Subtract two numbers.
 24178       *
 24179       * @static
 24180       * @memberOf _
 24181       * @since 4.0.0
 24182       * @category Math
 24183       * @param {number} minuend The first number in a subtraction.
 24184       * @param {number} subtrahend The second number in a subtraction.
 24185       * @returns {number} Returns the difference.
 24186       * @example
 24187       *
 24188       * _.subtract(6, 4);
 24189       * // => 2
 24190       */
 24191      var subtract = createMathOperation(function(minuend, subtrahend) {
 24192        return minuend - subtrahend;
 24193      }, 0);
 24194  
 24195      /**
 24196       * Computes the sum of the values in `array`.
 24197       *
 24198       * @static
 24199       * @memberOf _
 24200       * @since 3.4.0
 24201       * @category Math
 24202       * @param {Array} array The array to iterate over.
 24203       * @returns {number} Returns the sum.
 24204       * @example
 24205       *
 24206       * _.sum([4, 2, 8, 6]);
 24207       * // => 20
 24208       */
 24209      function sum(array) {
 24210        return (array && array.length)
 24211          ? baseSum(array, identity)
 24212          : 0;
 24213      }
 24214  
 24215      /**
 24216       * This method is like `_.sum` except that it accepts `iteratee` which is
 24217       * invoked for each element in `array` to generate the value to be summed.
 24218       * The iteratee is invoked with one argument: (value).
 24219       *
 24220       * @static
 24221       * @memberOf _
 24222       * @since 4.0.0
 24223       * @category Math
 24224       * @param {Array} array The array to iterate over.
 24225       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
 24226       * @returns {number} Returns the sum.
 24227       * @example
 24228       *
 24229       * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
 24230       *
 24231       * _.sumBy(objects, function(o) { return o.n; });
 24232       * // => 20
 24233       *
 24234       * // The `_.property` iteratee shorthand.
 24235       * _.sumBy(objects, 'n');
 24236       * // => 20
 24237       */
 24238      function sumBy(array, iteratee) {
 24239        return (array && array.length)
 24240          ? baseSum(array, getIteratee(iteratee, 2))
 24241          : 0;
 24242      }
 24243  
 24244      /*------------------------------------------------------------------------*/
 24245  
 24246      // Add methods that return wrapped values in chain sequences.
 24247      lodash.after = after;
 24248      lodash.ary = ary;
 24249      lodash.assign = assign;
 24250      lodash.assignIn = assignIn;
 24251      lodash.assignInWith = assignInWith;
 24252      lodash.assignWith = assignWith;
 24253      lodash.at = at;
 24254      lodash.before = before;
 24255      lodash.bind = bind;
 24256      lodash.bindAll = bindAll;
 24257      lodash.bindKey = bindKey;
 24258      lodash.castArray = castArray;
 24259      lodash.chain = chain;
 24260      lodash.chunk = chunk;
 24261      lodash.compact = compact;
 24262      lodash.concat = concat;
 24263      lodash.cond = cond;
 24264      lodash.conforms = conforms;
 24265      lodash.constant = constant;
 24266      lodash.countBy = countBy;
 24267      lodash.create = create;
 24268      lodash.curry = curry;
 24269      lodash.curryRight = curryRight;
 24270      lodash.debounce = debounce;
 24271      lodash.defaults = defaults;
 24272      lodash.defaultsDeep = defaultsDeep;
 24273      lodash.defer = defer;
 24274      lodash.delay = delay;
 24275      lodash.difference = difference;
 24276      lodash.differenceBy = differenceBy;
 24277      lodash.differenceWith = differenceWith;
 24278      lodash.drop = drop;
 24279      lodash.dropRight = dropRight;
 24280      lodash.dropRightWhile = dropRightWhile;
 24281      lodash.dropWhile = dropWhile;
 24282      lodash.fill = fill;
 24283      lodash.filter = filter;
 24284      lodash.flatMap = flatMap;
 24285      lodash.flatMapDeep = flatMapDeep;
 24286      lodash.flatMapDepth = flatMapDepth;
 24287      lodash.flatten = flatten;
 24288      lodash.flattenDeep = flattenDeep;
 24289      lodash.flattenDepth = flattenDepth;
 24290      lodash.flip = flip;
 24291      lodash.flow = flow;
 24292      lodash.flowRight = flowRight;
 24293      lodash.fromPairs = fromPairs;
 24294      lodash.functions = functions;
 24295      lodash.functionsIn = functionsIn;
 24296      lodash.groupBy = groupBy;
 24297      lodash.initial = initial;
 24298      lodash.intersection = intersection;
 24299      lodash.intersectionBy = intersectionBy;
 24300      lodash.intersectionWith = intersectionWith;
 24301      lodash.invert = invert;
 24302      lodash.invertBy = invertBy;
 24303      lodash.invokeMap = invokeMap;
 24304      lodash.iteratee = iteratee;
 24305      lodash.keyBy = keyBy;
 24306      lodash.keys = keys;
 24307      lodash.keysIn = keysIn;
 24308      lodash.map = map;
 24309      lodash.mapKeys = mapKeys;
 24310      lodash.mapValues = mapValues;
 24311      lodash.matches = matches;
 24312      lodash.matchesProperty = matchesProperty;
 24313      lodash.memoize = memoize;
 24314      lodash.merge = merge;
 24315      lodash.mergeWith = mergeWith;
 24316      lodash.method = method;
 24317      lodash.methodOf = methodOf;
 24318      lodash.mixin = mixin;
 24319      lodash.negate = negate;
 24320      lodash.nthArg = nthArg;
 24321      lodash.omit = omit;
 24322      lodash.omitBy = omitBy;
 24323      lodash.once = once;
 24324      lodash.orderBy = orderBy;
 24325      lodash.over = over;
 24326      lodash.overArgs = overArgs;
 24327      lodash.overEvery = overEvery;
 24328      lodash.overSome = overSome;
 24329      lodash.partial = partial;
 24330      lodash.partialRight = partialRight;
 24331      lodash.partition = partition;
 24332      lodash.pick = pick;
 24333      lodash.pickBy = pickBy;
 24334      lodash.property = property;
 24335      lodash.propertyOf = propertyOf;
 24336      lodash.pull = pull;
 24337      lodash.pullAll = pullAll;
 24338      lodash.pullAllBy = pullAllBy;
 24339      lodash.pullAllWith = pullAllWith;
 24340      lodash.pullAt = pullAt;
 24341      lodash.range = range;
 24342      lodash.rangeRight = rangeRight;
 24343      lodash.rearg = rearg;
 24344      lodash.reject = reject;
 24345      lodash.remove = remove;
 24346      lodash.rest = rest;
 24347      lodash.reverse = reverse;
 24348      lodash.sampleSize = sampleSize;
 24349      lodash.set = set;
 24350      lodash.setWith = setWith;
 24351      lodash.shuffle = shuffle;
 24352      lodash.slice = slice;
 24353      lodash.sortBy = sortBy;
 24354      lodash.sortedUniq = sortedUniq;
 24355      lodash.sortedUniqBy = sortedUniqBy;
 24356      lodash.split = split;
 24357      lodash.spread = spread;
 24358      lodash.tail = tail;
 24359      lodash.take = take;
 24360      lodash.takeRight = takeRight;
 24361      lodash.takeRightWhile = takeRightWhile;
 24362      lodash.takeWhile = takeWhile;
 24363      lodash.tap = tap;
 24364      lodash.throttle = throttle;
 24365      lodash.thru = thru;
 24366      lodash.toArray = toArray;
 24367      lodash.toPairs = toPairs;
 24368      lodash.toPairsIn = toPairsIn;
 24369      lodash.toPath = toPath;
 24370      lodash.toPlainObject = toPlainObject;
 24371      lodash.transform = transform;
 24372      lodash.unary = unary;
 24373      lodash.union = union;
 24374      lodash.unionBy = unionBy;
 24375      lodash.unionWith = unionWith;
 24376      lodash.uniq = uniq;
 24377      lodash.uniqBy = uniqBy;
 24378      lodash.uniqWith = uniqWith;
 24379      lodash.unset = unset;
 24380      lodash.unzip = unzip;
 24381      lodash.unzipWith = unzipWith;
 24382      lodash.update = update;
 24383      lodash.updateWith = updateWith;
 24384      lodash.values = values;
 24385      lodash.valuesIn = valuesIn;
 24386      lodash.without = without;
 24387      lodash.words = words;
 24388      lodash.wrap = wrap;
 24389      lodash.xor = xor;
 24390      lodash.xorBy = xorBy;
 24391      lodash.xorWith = xorWith;
 24392      lodash.zip = zip;
 24393      lodash.zipObject = zipObject;
 24394      lodash.zipObjectDeep = zipObjectDeep;
 24395      lodash.zipWith = zipWith;
 24396  
 24397      // Add aliases.
 24398      lodash.entries = toPairs;
 24399      lodash.entriesIn = toPairsIn;
 24400      lodash.extend = assignIn;
 24401      lodash.extendWith = assignInWith;
 24402  
 24403      // Add methods to `lodash.prototype`.
 24404      mixin(lodash, lodash);
 24405  
 24406      /*------------------------------------------------------------------------*/
 24407  
 24408      // Add methods that return unwrapped values in chain sequences.
 24409      lodash.add = add;
 24410      lodash.attempt = attempt;
 24411      lodash.camelCase = camelCase;
 24412      lodash.capitalize = capitalize;
 24413      lodash.ceil = ceil;
 24414      lodash.clamp = clamp;
 24415      lodash.clone = clone;
 24416      lodash.cloneDeep = cloneDeep;
 24417      lodash.cloneDeepWith = cloneDeepWith;
 24418      lodash.cloneWith = cloneWith;
 24419      lodash.conformsTo = conformsTo;
 24420      lodash.deburr = deburr;
 24421      lodash.defaultTo = defaultTo;
 24422      lodash.divide = divide;
 24423      lodash.endsWith = endsWith;
 24424      lodash.eq = eq;
 24425      lodash.escape = escape;
 24426      lodash.escapeRegExp = escapeRegExp;
 24427      lodash.every = every;
 24428      lodash.find = find;
 24429      lodash.findIndex = findIndex;
 24430      lodash.findKey = findKey;
 24431      lodash.findLast = findLast;
 24432      lodash.findLastIndex = findLastIndex;
 24433      lodash.findLastKey = findLastKey;
 24434      lodash.floor = floor;
 24435      lodash.forEach = forEach;
 24436      lodash.forEachRight = forEachRight;
 24437      lodash.forIn = forIn;
 24438      lodash.forInRight = forInRight;
 24439      lodash.forOwn = forOwn;
 24440      lodash.forOwnRight = forOwnRight;
 24441      lodash.get = get;
 24442      lodash.gt = gt;
 24443      lodash.gte = gte;
 24444      lodash.has = has;
 24445      lodash.hasIn = hasIn;
 24446      lodash.head = head;
 24447      lodash.identity = identity;
 24448      lodash.includes = includes;
 24449      lodash.indexOf = indexOf;
 24450      lodash.inRange = inRange;
 24451      lodash.invoke = invoke;
 24452      lodash.isArguments = isArguments;
 24453      lodash.isArray = isArray;
 24454      lodash.isArrayBuffer = isArrayBuffer;
 24455      lodash.isArrayLike = isArrayLike;
 24456      lodash.isArrayLikeObject = isArrayLikeObject;
 24457      lodash.isBoolean = isBoolean;
 24458      lodash.isBuffer = isBuffer;
 24459      lodash.isDate = isDate;
 24460      lodash.isElement = isElement;
 24461      lodash.isEmpty = isEmpty;
 24462      lodash.isEqual = isEqual;
 24463      lodash.isEqualWith = isEqualWith;
 24464      lodash.isError = isError;
 24465      lodash.isFinite = isFinite;
 24466      lodash.isFunction = isFunction;
 24467      lodash.isInteger = isInteger;
 24468      lodash.isLength = isLength;
 24469      lodash.isMap = isMap;
 24470      lodash.isMatch = isMatch;
 24471      lodash.isMatchWith = isMatchWith;
 24472      lodash.isNaN = isNaN;
 24473      lodash.isNative = isNative;
 24474      lodash.isNil = isNil;
 24475      lodash.isNull = isNull;
 24476      lodash.isNumber = isNumber;
 24477      lodash.isObject = isObject;
 24478      lodash.isObjectLike = isObjectLike;
 24479      lodash.isPlainObject = isPlainObject;
 24480      lodash.isRegExp = isRegExp;
 24481      lodash.isSafeInteger = isSafeInteger;
 24482      lodash.isSet = isSet;
 24483      lodash.isString = isString;
 24484      lodash.isSymbol = isSymbol;
 24485      lodash.isTypedArray = isTypedArray;
 24486      lodash.isUndefined = isUndefined;
 24487      lodash.isWeakMap = isWeakMap;
 24488      lodash.isWeakSet = isWeakSet;
 24489      lodash.join = join;
 24490      lodash.kebabCase = kebabCase;
 24491      lodash.last = last;
 24492      lodash.lastIndexOf = lastIndexOf;
 24493      lodash.lowerCase = lowerCase;
 24494      lodash.lowerFirst = lowerFirst;
 24495      lodash.lt = lt;
 24496      lodash.lte = lte;
 24497      lodash.max = max;
 24498      lodash.maxBy = maxBy;
 24499      lodash.mean = mean;
 24500      lodash.meanBy = meanBy;
 24501      lodash.min = min;
 24502      lodash.minBy = minBy;
 24503      lodash.stubArray = stubArray;
 24504      lodash.stubFalse = stubFalse;
 24505      lodash.stubObject = stubObject;
 24506      lodash.stubString = stubString;
 24507      lodash.stubTrue = stubTrue;
 24508      lodash.multiply = multiply;
 24509      lodash.nth = nth;
 24510      lodash.noConflict = noConflict;
 24511      lodash.noop = noop;
 24512      lodash.now = now;
 24513      lodash.pad = pad;
 24514      lodash.padEnd = padEnd;
 24515      lodash.padStart = padStart;
 24516      lodash.parseInt = parseInt;
 24517      lodash.random = random;
 24518      lodash.reduce = reduce;
 24519      lodash.reduceRight = reduceRight;
 24520      lodash.repeat = repeat;
 24521      lodash.replace = replace;
 24522      lodash.result = result;
 24523      lodash.round = round;
 24524      lodash.runInContext = runInContext;
 24525      lodash.sample = sample;
 24526      lodash.size = size;
 24527      lodash.snakeCase = snakeCase;
 24528      lodash.some = some;
 24529      lodash.sortedIndex = sortedIndex;
 24530      lodash.sortedIndexBy = sortedIndexBy;
 24531      lodash.sortedIndexOf = sortedIndexOf;
 24532      lodash.sortedLastIndex = sortedLastIndex;
 24533      lodash.sortedLastIndexBy = sortedLastIndexBy;
 24534      lodash.sortedLastIndexOf = sortedLastIndexOf;
 24535      lodash.startCase = startCase;
 24536      lodash.startsWith = startsWith;
 24537      lodash.subtract = subtract;
 24538      lodash.sum = sum;
 24539      lodash.sumBy = sumBy;
 24540      lodash.template = template;
 24541      lodash.times = times;
 24542      lodash.toFinite = toFinite;
 24543      lodash.toInteger = toInteger;
 24544      lodash.toLength = toLength;
 24545      lodash.toLower = toLower;
 24546      lodash.toNumber = toNumber;
 24547      lodash.toSafeInteger = toSafeInteger;
 24548      lodash.toString = toString;
 24549      lodash.toUpper = toUpper;
 24550      lodash.trim = trim;
 24551      lodash.trimEnd = trimEnd;
 24552      lodash.trimStart = trimStart;
 24553      lodash.truncate = truncate;
 24554      lodash.unescape = unescape;
 24555      lodash.uniqueId = uniqueId;
 24556      lodash.upperCase = upperCase;
 24557      lodash.upperFirst = upperFirst;
 24558  
 24559      // Add aliases.
 24560      lodash.each = forEach;
 24561      lodash.eachRight = forEachRight;
 24562      lodash.first = head;
 24563  
 24564      mixin(lodash, (function() {
 24565        var source = {};
 24566        baseForOwn(lodash, function(func, methodName) {
 24567          if (!hasOwnProperty.call(lodash.prototype, methodName)) {
 24568            source[methodName] = func;
 24569          }
 24570        });
 24571        return source;
 24572      }()), { 'chain': false });
 24573  
 24574      /*------------------------------------------------------------------------*/
 24575  
 24576      /**
 24577       * The semantic version number.
 24578       *
 24579       * @static
 24580       * @memberOf _
 24581       * @type {string}
 24582       */
 24583      lodash.VERSION = VERSION;
 24584  
 24585      // Assign default placeholders.
 24586      arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {
 24587        lodash[methodName].placeholder = lodash;
 24588      });
 24589  
 24590      // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
 24591      arrayEach(['drop', 'take'], function(methodName, index) {
 24592        LazyWrapper.prototype[methodName] = function(n) {
 24593          n = n === undefined ? 1 : nativeMax(toInteger(n), 0);
 24594  
 24595          var result = (this.__filtered__ && !index)
 24596            ? new LazyWrapper(this)
 24597            : this.clone();
 24598  
 24599          if (result.__filtered__) {
 24600            result.__takeCount__ = nativeMin(n, result.__takeCount__);
 24601          } else {
 24602            result.__views__.push({
 24603              'size': nativeMin(n, MAX_ARRAY_LENGTH),
 24604              'type': methodName + (result.__dir__ < 0 ? 'Right' : '')
 24605            });
 24606          }
 24607          return result;
 24608        };
 24609  
 24610        LazyWrapper.prototype[methodName + 'Right'] = function(n) {
 24611          return this.reverse()[methodName](n).reverse();
 24612        };
 24613      });
 24614  
 24615      // Add `LazyWrapper` methods that accept an `iteratee` value.
 24616      arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {
 24617        var type = index + 1,
 24618            isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;
 24619  
 24620        LazyWrapper.prototype[methodName] = function(iteratee) {
 24621          var result = this.clone();
 24622          result.__iteratees__.push({
 24623            'iteratee': getIteratee(iteratee, 3),
 24624            'type': type
 24625          });
 24626          result.__filtered__ = result.__filtered__ || isFilter;
 24627          return result;
 24628        };
 24629      });
 24630  
 24631      // Add `LazyWrapper` methods for `_.head` and `_.last`.
 24632      arrayEach(['head', 'last'], function(methodName, index) {
 24633        var takeName = 'take' + (index ? 'Right' : '');
 24634  
 24635        LazyWrapper.prototype[methodName] = function() {
 24636          return this[takeName](1).value()[0];
 24637        };
 24638      });
 24639  
 24640      // Add `LazyWrapper` methods for `_.initial` and `_.tail`.
 24641      arrayEach(['initial', 'tail'], function(methodName, index) {
 24642        var dropName = 'drop' + (index ? '' : 'Right');
 24643  
 24644        LazyWrapper.prototype[methodName] = function() {
 24645          return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
 24646        };
 24647      });
 24648  
 24649      LazyWrapper.prototype.compact = function() {
 24650        return this.filter(identity);
 24651      };
 24652  
 24653      LazyWrapper.prototype.find = function(predicate) {
 24654        return this.filter(predicate).head();
 24655      };
 24656  
 24657      LazyWrapper.prototype.findLast = function(predicate) {
 24658        return this.reverse().find(predicate);
 24659      };
 24660  
 24661      LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
 24662        if (typeof path == 'function') {
 24663          return new LazyWrapper(this);
 24664        }
 24665        return this.map(function(value) {
 24666          return baseInvoke(value, path, args);
 24667        });
 24668      });
 24669  
 24670      LazyWrapper.prototype.reject = function(predicate) {
 24671        return this.filter(negate(getIteratee(predicate)));
 24672      };
 24673  
 24674      LazyWrapper.prototype.slice = function(start, end) {
 24675        start = toInteger(start);
 24676  
 24677        var result = this;
 24678        if (result.__filtered__ && (start > 0 || end < 0)) {
 24679          return new LazyWrapper(result);
 24680        }
 24681        if (start < 0) {
 24682          result = result.takeRight(-start);
 24683        } else if (start) {
 24684          result = result.drop(start);
 24685        }
 24686        if (end !== undefined) {
 24687          end = toInteger(end);
 24688          result = end < 0 ? result.dropRight(-end) : result.take(end - start);
 24689        }
 24690        return result;
 24691      };
 24692  
 24693      LazyWrapper.prototype.takeRightWhile = function(predicate) {
 24694        return this.reverse().takeWhile(predicate).reverse();
 24695      };
 24696  
 24697      LazyWrapper.prototype.toArray = function() {
 24698        return this.take(MAX_ARRAY_LENGTH);
 24699      };
 24700  
 24701      // Add `LazyWrapper` methods to `lodash.prototype`.
 24702      baseForOwn(LazyWrapper.prototype, function(func, methodName) {
 24703        var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),
 24704            isTaker = /^(?:head|last)$/.test(methodName),
 24705            lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],
 24706            retUnwrapped = isTaker || /^find/.test(methodName);
 24707  
 24708        if (!lodashFunc) {
 24709          return;
 24710        }
 24711        lodash.prototype[methodName] = function() {
 24712          var value = this.__wrapped__,
 24713              args = isTaker ? [1] : arguments,
 24714              isLazy = value instanceof LazyWrapper,
 24715              iteratee = args[0],
 24716              useLazy = isLazy || isArray(value);
 24717  
 24718          var interceptor = function(value) {
 24719            var result = lodashFunc.apply(lodash, arrayPush([value], args));
 24720            return (isTaker && chainAll) ? result[0] : result;
 24721          };
 24722  
 24723          if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {
 24724            // Avoid lazy use if the iteratee has a "length" value other than `1`.
 24725            isLazy = useLazy = false;
 24726          }
 24727          var chainAll = this.__chain__,
 24728              isHybrid = !!this.__actions__.length,
 24729              isUnwrapped = retUnwrapped && !chainAll,
 24730              onlyLazy = isLazy && !isHybrid;
 24731  
 24732          if (!retUnwrapped && useLazy) {
 24733            value = onlyLazy ? value : new LazyWrapper(this);
 24734            var result = func.apply(value, args);
 24735            result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });
 24736            return new LodashWrapper(result, chainAll);
 24737          }
 24738          if (isUnwrapped && onlyLazy) {
 24739            return func.apply(this, args);
 24740          }
 24741          result = this.thru(interceptor);
 24742          return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;
 24743        };
 24744      });
 24745  
 24746      // Add `Array` methods to `lodash.prototype`.
 24747      arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {
 24748        var func = arrayProto[methodName],
 24749            chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
 24750            retUnwrapped = /^(?:pop|shift)$/.test(methodName);
 24751  
 24752        lodash.prototype[methodName] = function() {
 24753          var args = arguments;
 24754          if (retUnwrapped && !this.__chain__) {
 24755            var value = this.value();
 24756            return func.apply(isArray(value) ? value : [], args);
 24757          }
 24758          return this[chainName](function(value) {
 24759            return func.apply(isArray(value) ? value : [], args);
 24760          });
 24761        };
 24762      });
 24763  
 24764      // Map minified method names to their real names.
 24765      baseForOwn(LazyWrapper.prototype, function(func, methodName) {
 24766        var lodashFunc = lodash[methodName];
 24767        if (lodashFunc) {
 24768          var key = (lodashFunc.name + ''),
 24769              names = realNames[key] || (realNames[key] = []);
 24770  
 24771          names.push({ 'name': methodName, 'func': lodashFunc });
 24772        }
 24773      });
 24774  
 24775      realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{
 24776        'name': 'wrapper',
 24777        'func': undefined
 24778      }];
 24779  
 24780      // Add methods to `LazyWrapper`.
 24781      LazyWrapper.prototype.clone = lazyClone;
 24782      LazyWrapper.prototype.reverse = lazyReverse;
 24783      LazyWrapper.prototype.value = lazyValue;
 24784  
 24785      // Add chain sequence methods to the `lodash` wrapper.
 24786      lodash.prototype.at = wrapperAt;
 24787      lodash.prototype.chain = wrapperChain;
 24788      lodash.prototype.commit = wrapperCommit;
 24789      lodash.prototype.next = wrapperNext;
 24790      lodash.prototype.plant = wrapperPlant;
 24791      lodash.prototype.reverse = wrapperReverse;
 24792      lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
 24793  
 24794      // Add lazy aliases.
 24795      lodash.prototype.first = lodash.prototype.head;
 24796  
 24797      if (symIterator) {
 24798        lodash.prototype[symIterator] = wrapperToIterator;
 24799      }
 24800      return lodash;
 24801    });
 24802  
 24803    /*--------------------------------------------------------------------------*/
 24804  
 24805    // Export lodash.
 24806    var _ = runInContext();
 24807  
 24808    // Some AMD build optimizers, like r.js, check for condition patterns like:
 24809    if (true) {
 24810      // Expose Lodash on the global object to prevent errors when Lodash is
 24811      // loaded by a script tag in the presence of an AMD loader.
 24812      // See http://requirejs.org/docs/errors.html#mismatch for more details.
 24813      // Use `_.noConflict` to remove Lodash from the global object.
 24814      root._ = _;
 24815  
 24816      // Define as an anonymous module so, through path mapping, it can be
 24817      // referenced as the "underscore" module.
 24818      !(__WEBPACK_AMD_DEFINE_RESULT__ = function() {
 24819        return _;
 24820      }.call(exports, __webpack_require__, exports, module),
 24821  				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
 24822    }
 24823    // Check for `exports` after `define` in case a build optimizer adds it.
 24824    else if (freeModule) {
 24825      // Export for Node.js.
 24826      (freeModule.exports = _)._ = _;
 24827      // Export for CommonJS support.
 24828      freeExports._ = _;
 24829    }
 24830    else {
 24831      // Export to the global object.
 24832      root._ = _;
 24833    }
 24834  }.call(this));
 24835  
 24836  /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(163)(module)))
 24837  
 24838  /***/ }),
 24839  /* 39 */
 24840  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 24841  
 24842  "use strict";
 24843  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return EMPTY; });
 24844  /* harmony export (immutable) */ __webpack_exports__["a"] = empty;
 24845  /* unused harmony export emptyScheduled */
 24846  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
 24847  /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */
 24848  
 24849  var EMPTY = /*@__PURE__*/ new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) { return subscriber.complete(); });
 24850  function empty(scheduler) {
 24851      return scheduler ? emptyScheduled(scheduler) : EMPTY;
 24852  }
 24853  function emptyScheduled(scheduler) {
 24854      return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });
 24855  }
 24856  //# sourceMappingURL=empty.js.map
 24857  
 24858  
 24859  /***/ }),
 24860  /* 40 */
 24861  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 24862  
 24863  "use strict";
 24864  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return async; });
 24865  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__AsyncAction__ = __webpack_require__(149);
 24866  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__AsyncScheduler__ = __webpack_require__(150);
 24867  /** PURE_IMPORTS_START _AsyncAction,_AsyncScheduler PURE_IMPORTS_END */
 24868  
 24869  
 24870  var async = /*@__PURE__*/ new __WEBPACK_IMPORTED_MODULE_1__AsyncScheduler__["a" /* AsyncScheduler */](__WEBPACK_IMPORTED_MODULE_0__AsyncAction__["a" /* AsyncAction */]);
 24871  //# sourceMappingURL=async.js.map
 24872  
 24873  
 24874  /***/ }),
 24875  /* 41 */
 24876  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 24877  
 24878  "use strict";
 24879  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isArray; });
 24880  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 24881  var isArray = Array.isArray || (function (x) { return x && typeof x.length === 'number'; });
 24882  //# sourceMappingURL=isArray.js.map
 24883  
 24884  
 24885  /***/ }),
 24886  /* 42 */
 24887  /***/ (function(module, exports, __webpack_require__) {
 24888  
 24889  var dP = __webpack_require__(72);
 24890  var createDesc = __webpack_require__(132);
 24891  module.exports = __webpack_require__(52) ? function (object, key, value) {
 24892    return dP.f(object, key, createDesc(1, value));
 24893  } : function (object, key, value) {
 24894    object[key] = value;
 24895    return object;
 24896  };
 24897  
 24898  
 24899  /***/ }),
 24900  /* 43 */
 24901  /***/ (function(module, exports, __webpack_require__) {
 24902  
 24903  "use strict";
 24904  
 24905  
 24906  
 24907  function isNothing(subject) {
 24908    return (typeof subject === 'undefined') || (subject === null);
 24909  }
 24910  
 24911  
 24912  function isObject(subject) {
 24913    return (typeof subject === 'object') && (subject !== null);
 24914  }
 24915  
 24916  
 24917  function toArray(sequence) {
 24918    if (Array.isArray(sequence)) return sequence;
 24919    else if (isNothing(sequence)) return [];
 24920  
 24921    return [ sequence ];
 24922  }
 24923  
 24924  
 24925  function extend(target, source) {
 24926    var index, length, key, sourceKeys;
 24927  
 24928    if (source) {
 24929      sourceKeys = Object.keys(source);
 24930  
 24931      for (index = 0, length = sourceKeys.length; index < length; index += 1) {
 24932        key = sourceKeys[index];
 24933        target[key] = source[key];
 24934      }
 24935    }
 24936  
 24937    return target;
 24938  }
 24939  
 24940  
 24941  function repeat(string, count) {
 24942    var result = '', cycle;
 24943  
 24944    for (cycle = 0; cycle < count; cycle += 1) {
 24945      result += string;
 24946    }
 24947  
 24948    return result;
 24949  }
 24950  
 24951  
 24952  function isNegativeZero(number) {
 24953    return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);
 24954  }
 24955  
 24956  
 24957  module.exports.isNothing      = isNothing;
 24958  module.exports.isObject       = isObject;
 24959  module.exports.toArray        = toArray;
 24960  module.exports.repeat         = repeat;
 24961  module.exports.isNegativeZero = isNegativeZero;
 24962  module.exports.extend         = extend;
 24963  
 24964  
 24965  /***/ }),
 24966  /* 44 */
 24967  /***/ (function(module, exports, __webpack_require__) {
 24968  
 24969  "use strict";
 24970  
 24971  
 24972  /*eslint-disable max-len*/
 24973  
 24974  var common        = __webpack_require__(43);
 24975  var YAMLException = __webpack_require__(55);
 24976  var Type          = __webpack_require__(10);
 24977  
 24978  
 24979  function compileList(schema, name, result) {
 24980    var exclude = [];
 24981  
 24982    schema.include.forEach(function (includedSchema) {
 24983      result = compileList(includedSchema, name, result);
 24984    });
 24985  
 24986    schema[name].forEach(function (currentType) {
 24987      result.forEach(function (previousType, previousIndex) {
 24988        if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {
 24989          exclude.push(previousIndex);
 24990        }
 24991      });
 24992  
 24993      result.push(currentType);
 24994    });
 24995  
 24996    return result.filter(function (type, index) {
 24997      return exclude.indexOf(index) === -1;
 24998    });
 24999  }
 25000  
 25001  
 25002  function compileMap(/* lists... */) {
 25003    var result = {
 25004          scalar: {},
 25005          sequence: {},
 25006          mapping: {},
 25007          fallback: {}
 25008        }, index, length;
 25009  
 25010    function collectType(type) {
 25011      result[type.kind][type.tag] = result['fallback'][type.tag] = type;
 25012    }
 25013  
 25014    for (index = 0, length = arguments.length; index < length; index += 1) {
 25015      arguments[index].forEach(collectType);
 25016    }
 25017    return result;
 25018  }
 25019  
 25020  
 25021  function Schema(definition) {
 25022    this.include  = definition.include  || [];
 25023    this.implicit = definition.implicit || [];
 25024    this.explicit = definition.explicit || [];
 25025  
 25026    this.implicit.forEach(function (type) {
 25027      if (type.loadKind && type.loadKind !== 'scalar') {
 25028        throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');
 25029      }
 25030    });
 25031  
 25032    this.compiledImplicit = compileList(this, 'implicit', []);
 25033    this.compiledExplicit = compileList(this, 'explicit', []);
 25034    this.compiledTypeMap  = compileMap(this.compiledImplicit, this.compiledExplicit);
 25035  }
 25036  
 25037  
 25038  Schema.DEFAULT = null;
 25039  
 25040  
 25041  Schema.create = function createSchema() {
 25042    var schemas, types;
 25043  
 25044    switch (arguments.length) {
 25045      case 1:
 25046        schemas = Schema.DEFAULT;
 25047        types = arguments[0];
 25048        break;
 25049  
 25050      case 2:
 25051        schemas = arguments[0];
 25052        types = arguments[1];
 25053        break;
 25054  
 25055      default:
 25056        throw new YAMLException('Wrong number of arguments for Schema.create function');
 25057    }
 25058  
 25059    schemas = common.toArray(schemas);
 25060    types = common.toArray(types);
 25061  
 25062    if (!schemas.every(function (schema) { return schema instanceof Schema; })) {
 25063      throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');
 25064    }
 25065  
 25066    if (!types.every(function (type) { return type instanceof Type; })) {
 25067      throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');
 25068    }
 25069  
 25070    return new Schema({
 25071      include: schemas,
 25072      explicit: types
 25073    });
 25074  };
 25075  
 25076  
 25077  module.exports = Schema;
 25078  
 25079  
 25080  /***/ }),
 25081  /* 45 */
 25082  /***/ (function(module, exports, __webpack_require__) {
 25083  
 25084  /* eslint-disable node/no-deprecated-api */
 25085  var buffer = __webpack_require__(64)
 25086  var Buffer = buffer.Buffer
 25087  
 25088  // alternative to using Object.keys for old browsers
 25089  function copyProps (src, dst) {
 25090    for (var key in src) {
 25091      dst[key] = src[key]
 25092    }
 25093  }
 25094  if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
 25095    module.exports = buffer
 25096  } else {
 25097    // Copy properties from require('buffer')
 25098    copyProps(buffer, exports)
 25099    exports.Buffer = SafeBuffer
 25100  }
 25101  
 25102  function SafeBuffer (arg, encodingOrOffset, length) {
 25103    return Buffer(arg, encodingOrOffset, length)
 25104  }
 25105  
 25106  // Copy static methods from Buffer
 25107  copyProps(Buffer, SafeBuffer)
 25108  
 25109  SafeBuffer.from = function (arg, encodingOrOffset, length) {
 25110    if (typeof arg === 'number') {
 25111      throw new TypeError('Argument must not be a number')
 25112    }
 25113    return Buffer(arg, encodingOrOffset, length)
 25114  }
 25115  
 25116  SafeBuffer.alloc = function (size, fill, encoding) {
 25117    if (typeof size !== 'number') {
 25118      throw new TypeError('Argument must be a number')
 25119    }
 25120    var buf = Buffer(size)
 25121    if (fill !== undefined) {
 25122      if (typeof encoding === 'string') {
 25123        buf.fill(fill, encoding)
 25124      } else {
 25125        buf.fill(fill)
 25126      }
 25127    } else {
 25128      buf.fill(0)
 25129    }
 25130    return buf
 25131  }
 25132  
 25133  SafeBuffer.allocUnsafe = function (size) {
 25134    if (typeof size !== 'number') {
 25135      throw new TypeError('Argument must be a number')
 25136    }
 25137    return Buffer(size)
 25138  }
 25139  
 25140  SafeBuffer.allocUnsafeSlow = function (size) {
 25141    if (typeof size !== 'number') {
 25142      throw new TypeError('Argument must be a number')
 25143    }
 25144    return buffer.SlowBuffer(size)
 25145  }
 25146  
 25147  
 25148  /***/ }),
 25149  /* 46 */
 25150  /***/ (function(module, exports) {
 25151  
 25152  module.exports = require("os");
 25153  
 25154  /***/ }),
 25155  /* 47 */
 25156  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 25157  
 25158  "use strict";
 25159  /* harmony export (immutable) */ __webpack_exports__["a"] = map;
 25160  /* unused harmony export MapOperator */
 25161  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 25162  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
 25163  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
 25164  
 25165  
 25166  function map(project, thisArg) {
 25167      return function mapOperation(source) {
 25168          if (typeof project !== 'function') {
 25169              throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');
 25170          }
 25171          return source.lift(new MapOperator(project, thisArg));
 25172      };
 25173  }
 25174  var MapOperator = /*@__PURE__*/ (function () {
 25175      function MapOperator(project, thisArg) {
 25176          this.project = project;
 25177          this.thisArg = thisArg;
 25178      }
 25179      MapOperator.prototype.call = function (subscriber, source) {
 25180          return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));
 25181      };
 25182      return MapOperator;
 25183  }());
 25184  
 25185  var MapSubscriber = /*@__PURE__*/ (function (_super) {
 25186      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](MapSubscriber, _super);
 25187      function MapSubscriber(destination, project, thisArg) {
 25188          var _this = _super.call(this, destination) || this;
 25189          _this.project = project;
 25190          _this.count = 0;
 25191          _this.thisArg = thisArg || _this;
 25192          return _this;
 25193      }
 25194      MapSubscriber.prototype._next = function (value) {
 25195          var result;
 25196          try {
 25197              result = this.project.call(this.thisArg, value, this.count++);
 25198          }
 25199          catch (err) {
 25200              this.destination.error(err);
 25201              return;
 25202          }
 25203          this.destination.next(result);
 25204      };
 25205      return MapSubscriber;
 25206  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
 25207  //# sourceMappingURL=map.js.map
 25208  
 25209  
 25210  /***/ }),
 25211  /* 48 */
 25212  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 25213  
 25214  "use strict";
 25215  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return errorObject; });
 25216  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 25217  var errorObject = { e: {} };
 25218  //# sourceMappingURL=errorObject.js.map
 25219  
 25220  
 25221  /***/ }),
 25222  /* 49 */
 25223  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 25224  
 25225  "use strict";
 25226  /* harmony export (immutable) */ __webpack_exports__["a"] = isScheduler;
 25227  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 25228  function isScheduler(value) {
 25229      return value && typeof value.schedule === 'function';
 25230  }
 25231  //# sourceMappingURL=isScheduler.js.map
 25232  
 25233  
 25234  /***/ }),
 25235  /* 50 */
 25236  /***/ (function(module, exports, __webpack_require__) {
 25237  
 25238  "use strict";
 25239  
 25240  
 25241  Object.defineProperty(exports, "__esModule", {
 25242    value: true
 25243  });
 25244  exports.exec = exports.queue = undefined;
 25245  exports.forkp = forkp;
 25246  exports.spawnp = spawnp;
 25247  exports.forwardSignalToSpawnedProcesses = forwardSignalToSpawnedProcesses;
 25248  exports.spawn = spawn;
 25249  
 25250  var _constants;
 25251  
 25252  function _load_constants() {
 25253    return _constants = _interopRequireWildcard(__webpack_require__(8));
 25254  }
 25255  
 25256  var _blockingQueue;
 25257  
 25258  function _load_blockingQueue() {
 25259    return _blockingQueue = _interopRequireDefault(__webpack_require__(110));
 25260  }
 25261  
 25262  var _errors;
 25263  
 25264  function _load_errors() {
 25265    return _errors = __webpack_require__(6);
 25266  }
 25267  
 25268  var _promise;
 25269  
 25270  function _load_promise() {
 25271    return _promise = __webpack_require__(51);
 25272  }
 25273  
 25274  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 25275  
 25276  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 25277  
 25278  /* global child_process$spawnOpts */
 25279  
 25280  const child = __webpack_require__(331);
 25281  const fs = __webpack_require__(4);
 25282  const path = __webpack_require__(0);
 25283  
 25284  const queue = exports.queue = new (_blockingQueue || _load_blockingQueue()).default('child', (_constants || _load_constants()).CHILD_CONCURRENCY);
 25285  
 25286  // TODO: this uid check is kinda whack
 25287  let uid = 0;
 25288  
 25289  const exec = exports.exec = (0, (_promise || _load_promise()).promisify)(child.exec);
 25290  
 25291  function validate(program, opts = {}) {
 25292    if (program.match(/[\\\/]/)) {
 25293      return;
 25294    }
 25295  
 25296    if (process.platform === 'win32' && process.env.PATHEXT) {
 25297      const cwd = opts.cwd || process.cwd();
 25298      const pathext = process.env.PATHEXT;
 25299  
 25300      for (var _iterator = pathext.split(';'), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 25301        var _ref;
 25302  
 25303        if (_isArray) {
 25304          if (_i >= _iterator.length) break;
 25305          _ref = _iterator[_i++];
 25306        } else {
 25307          _i = _iterator.next();
 25308          if (_i.done) break;
 25309          _ref = _i.value;
 25310        }
 25311  
 25312        const ext = _ref;
 25313  
 25314        const candidate = path.join(cwd, `${program}${ext}`);
 25315        if (fs.existsSync(candidate)) {
 25316          throw new Error(`Potentially dangerous call to "${program}" in ${cwd}`);
 25317        }
 25318      }
 25319    }
 25320  }
 25321  
 25322  function forkp(program, args, opts) {
 25323    validate(program, opts);
 25324    const key = String(++uid);
 25325    return new Promise((resolve, reject) => {
 25326      const proc = child.fork(program, args, opts);
 25327      spawnedProcesses[key] = proc;
 25328  
 25329      proc.on('error', error => {
 25330        reject(error);
 25331      });
 25332  
 25333      proc.on('close', exitCode => {
 25334        resolve(exitCode);
 25335      });
 25336    });
 25337  }
 25338  
 25339  function spawnp(program, args, opts) {
 25340    validate(program, opts);
 25341    const key = String(++uid);
 25342    return new Promise((resolve, reject) => {
 25343      const proc = child.spawn(program, args, opts);
 25344      spawnedProcesses[key] = proc;
 25345  
 25346      proc.on('error', error => {
 25347        reject(error);
 25348      });
 25349  
 25350      proc.on('close', exitCode => {
 25351        resolve(exitCode);
 25352      });
 25353    });
 25354  }
 25355  
 25356  const spawnedProcesses = {};
 25357  
 25358  function forwardSignalToSpawnedProcesses(signal) {
 25359    for (var _iterator2 = Object.keys(spawnedProcesses), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 25360      var _ref2;
 25361  
 25362      if (_isArray2) {
 25363        if (_i2 >= _iterator2.length) break;
 25364        _ref2 = _iterator2[_i2++];
 25365      } else {
 25366        _i2 = _iterator2.next();
 25367        if (_i2.done) break;
 25368        _ref2 = _i2.value;
 25369      }
 25370  
 25371      const key = _ref2;
 25372  
 25373      spawnedProcesses[key].kill(signal);
 25374    }
 25375  }
 25376  
 25377  function spawn(program, args, opts = {}, onData) {
 25378    const key = opts.cwd || String(++uid);
 25379    return queue.push(key, () => new Promise((resolve, reject) => {
 25380      validate(program, opts);
 25381  
 25382      const proc = child.spawn(program, args, opts);
 25383      spawnedProcesses[key] = proc;
 25384  
 25385      let processingDone = false;
 25386      let processClosed = false;
 25387      let err = null;
 25388  
 25389      let stdout = '';
 25390  
 25391      proc.on('error', err => {
 25392        if (err.code === 'ENOENT') {
 25393          reject(new (_errors || _load_errors()).ProcessSpawnError(`Couldn't find the binary ${program}`, err.code, program));
 25394        } else {
 25395          reject(err);
 25396        }
 25397      });
 25398  
 25399      function updateStdout(chunk) {
 25400        stdout += chunk;
 25401        if (onData) {
 25402          onData(chunk);
 25403        }
 25404      }
 25405  
 25406      function finish() {
 25407        delete spawnedProcesses[key];
 25408        if (err) {
 25409          reject(err);
 25410        } else {
 25411          resolve(stdout.trim());
 25412        }
 25413      }
 25414  
 25415      if (typeof opts.process === 'function') {
 25416        opts.process(proc, updateStdout, reject, function () {
 25417          if (processClosed) {
 25418            finish();
 25419          } else {
 25420            processingDone = true;
 25421          }
 25422        });
 25423      } else {
 25424        if (proc.stderr) {
 25425          proc.stderr.on('data', updateStdout);
 25426        }
 25427  
 25428        if (proc.stdout) {
 25429          proc.stdout.on('data', updateStdout);
 25430        }
 25431  
 25432        processingDone = true;
 25433      }
 25434  
 25435      proc.on('close', (code, signal) => {
 25436        if (signal || code >= 1) {
 25437          err = new (_errors || _load_errors()).ProcessTermError(['Command failed.', signal ? `Exit signal: ${signal}` : `Exit code: ${code}`, `Command: ${program}`, `Arguments: ${args.join(' ')}`, `Directory: ${opts.cwd || process.cwd()}`, `Output:\n${stdout.trim()}`].join('\n'));
 25438          err.EXIT_SIGNAL = signal;
 25439          err.EXIT_CODE = code;
 25440        }
 25441  
 25442        if (processingDone || err) {
 25443          finish();
 25444        } else {
 25445          processClosed = true;
 25446        }
 25447      });
 25448    }));
 25449  }
 25450  
 25451  /***/ }),
 25452  /* 51 */
 25453  /***/ (function(module, exports, __webpack_require__) {
 25454  
 25455  "use strict";
 25456  
 25457  
 25458  Object.defineProperty(exports, "__esModule", {
 25459    value: true
 25460  });
 25461  exports.wait = wait;
 25462  exports.promisify = promisify;
 25463  exports.queue = queue;
 25464  function wait(delay) {
 25465    return new Promise(resolve => {
 25466      setTimeout(resolve, delay);
 25467    });
 25468  }
 25469  
 25470  function promisify(fn, firstData) {
 25471    return function (...args) {
 25472      return new Promise(function (resolve, reject) {
 25473        args.push(function (err, ...result) {
 25474          let res = result;
 25475  
 25476          if (result.length <= 1) {
 25477            res = result[0];
 25478          }
 25479  
 25480          if (firstData) {
 25481            res = err;
 25482            err = null;
 25483          }
 25484  
 25485          if (err) {
 25486            reject(err);
 25487          } else {
 25488            resolve(res);
 25489          }
 25490        });
 25491  
 25492        fn.apply(null, args);
 25493      });
 25494    };
 25495  }
 25496  
 25497  function queue(arr, promiseProducer, concurrency = Infinity) {
 25498    concurrency = Math.min(concurrency, arr.length);
 25499  
 25500    // clone
 25501    arr = arr.slice();
 25502  
 25503    const results = [];
 25504    let total = arr.length;
 25505    if (!total) {
 25506      return Promise.resolve(results);
 25507    }
 25508  
 25509    return new Promise((resolve, reject) => {
 25510      for (let i = 0; i < concurrency; i++) {
 25511        next();
 25512      }
 25513  
 25514      function next() {
 25515        const item = arr.shift();
 25516        const promise = promiseProducer(item);
 25517  
 25518        promise.then(function (result) {
 25519          results.push(result);
 25520  
 25521          total--;
 25522          if (total === 0) {
 25523            resolve(results);
 25524          } else {
 25525            if (arr.length) {
 25526              next();
 25527            }
 25528          }
 25529        }, reject);
 25530      }
 25531    });
 25532  }
 25533  
 25534  /***/ }),
 25535  /* 52 */
 25536  /***/ (function(module, exports, __webpack_require__) {
 25537  
 25538  // Thank's IE8 for his funny defineProperty
 25539  module.exports = !__webpack_require__(112)(function () {
 25540    return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
 25541  });
 25542  
 25543  
 25544  /***/ }),
 25545  /* 53 */
 25546  /***/ (function(module, exports) {
 25547  
 25548  module.exports = function (it) {
 25549    return typeof it === 'object' ? it !== null : typeof it === 'function';
 25550  };
 25551  
 25552  
 25553  /***/ }),
 25554  /* 54 */
 25555  /***/ (function(module, exports) {
 25556  
 25557  module.exports = {};
 25558  
 25559  
 25560  /***/ }),
 25561  /* 55 */
 25562  /***/ (function(module, exports, __webpack_require__) {
 25563  
 25564  "use strict";
 25565  // YAML error class. http://stackoverflow.com/questions/8458984
 25566  //
 25567  
 25568  
 25569  function YAMLException(reason, mark) {
 25570    // Super constructor
 25571    Error.call(this);
 25572  
 25573    this.name = 'YAMLException';
 25574    this.reason = reason;
 25575    this.mark = mark;
 25576    this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');
 25577  
 25578    // Include stack trace in error object
 25579    if (Error.captureStackTrace) {
 25580      // Chrome and NodeJS
 25581      Error.captureStackTrace(this, this.constructor);
 25582    } else {
 25583      // FF, IE 10+ and Safari 6+. Fallback for others
 25584      this.stack = (new Error()).stack || '';
 25585    }
 25586  }
 25587  
 25588  
 25589  // Inherit from Error
 25590  YAMLException.prototype = Object.create(Error.prototype);
 25591  YAMLException.prototype.constructor = YAMLException;
 25592  
 25593  
 25594  YAMLException.prototype.toString = function toString(compact) {
 25595    var result = this.name + ': ';
 25596  
 25597    result += this.reason || '(unknown reason)';
 25598  
 25599    if (!compact && this.mark) {
 25600      result += ' ' + this.mark.toString();
 25601    }
 25602  
 25603    return result;
 25604  };
 25605  
 25606  
 25607  module.exports = YAMLException;
 25608  
 25609  
 25610  /***/ }),
 25611  /* 56 */
 25612  /***/ (function(module, exports, __webpack_require__) {
 25613  
 25614  "use strict";
 25615  // JS-YAML's default schema for `safeLoad` function.
 25616  // It is not described in the YAML specification.
 25617  //
 25618  // This schema is based on standard YAML's Core schema and includes most of
 25619  // extra types described at YAML tag repository. (http://yaml.org/type/)
 25620  
 25621  
 25622  
 25623  
 25624  
 25625  var Schema = __webpack_require__(44);
 25626  
 25627  
 25628  module.exports = new Schema({
 25629    include: [
 25630      __webpack_require__(143)
 25631    ],
 25632    implicit: [
 25633      __webpack_require__(299),
 25634      __webpack_require__(292)
 25635    ],
 25636    explicit: [
 25637      __webpack_require__(284),
 25638      __webpack_require__(294),
 25639      __webpack_require__(295),
 25640      __webpack_require__(297)
 25641    ]
 25642  });
 25643  
 25644  
 25645  /***/ }),
 25646  /* 57 */
 25647  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 25648  
 25649  "use strict";
 25650  /* harmony export (immutable) */ __webpack_exports__["a"] = tryCatch;
 25651  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__errorObject__ = __webpack_require__(48);
 25652  /** PURE_IMPORTS_START _errorObject PURE_IMPORTS_END */
 25653  
 25654  var tryCatchTarget;
 25655  function tryCatcher() {
 25656      try {
 25657          return tryCatchTarget.apply(this, arguments);
 25658      }
 25659      catch (e) {
 25660          __WEBPACK_IMPORTED_MODULE_0__errorObject__["a" /* errorObject */].e = e;
 25661          return __WEBPACK_IMPORTED_MODULE_0__errorObject__["a" /* errorObject */];
 25662      }
 25663  }
 25664  function tryCatch(fn) {
 25665      tryCatchTarget = fn;
 25666      return tryCatcher;
 25667  }
 25668  //# sourceMappingURL=tryCatch.js.map
 25669  
 25670  
 25671  /***/ }),
 25672  /* 58 */
 25673  /***/ (function(module, exports, __webpack_require__) {
 25674  
 25675  "use strict";
 25676  
 25677  
 25678  Object.defineProperty(exports, "__esModule", {
 25679    value: true
 25680  });
 25681  exports.registryNames = exports.registries = undefined;
 25682  
 25683  var _yarnRegistry;
 25684  
 25685  function _load_yarnRegistry() {
 25686    return _yarnRegistry = _interopRequireDefault(__webpack_require__(527));
 25687  }
 25688  
 25689  var _npmRegistry;
 25690  
 25691  function _load_npmRegistry() {
 25692    return _npmRegistry = _interopRequireDefault(__webpack_require__(88));
 25693  }
 25694  
 25695  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 25696  
 25697  const registries = exports.registries = {
 25698    npm: (_npmRegistry || _load_npmRegistry()).default,
 25699    yarn: (_yarnRegistry || _load_yarnRegistry()).default
 25700  };
 25701  
 25702  const registryNames = exports.registryNames = Object.keys(registries);
 25703  
 25704  /***/ }),
 25705  /* 59 */
 25706  /***/ (function(module, exports, __webpack_require__) {
 25707  
 25708  "use strict";
 25709  
 25710  
 25711  Object.defineProperty(exports, "__esModule", {
 25712    value: true
 25713  });
 25714  
 25715  var _asyncToGenerator2;
 25716  
 25717  function _load_asyncToGenerator() {
 25718    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 25719  }
 25720  
 25721  exports.default = function (rootCommandName, subCommands, usage = []) {
 25722    let run = (() => {
 25723      var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 25724        const subName = (0, (_misc || _load_misc()).camelCase)(args.shift() || '');
 25725        if (subName && subCommands[subName]) {
 25726          const command = subCommands[subName];
 25727          const res = yield command(config, reporter, flags, args);
 25728          if (res !== false) {
 25729            return Promise.resolve();
 25730          }
 25731        }
 25732  
 25733        if (usage && usage.length) {
 25734          reporter.error(`${reporter.lang('usage')}:`);
 25735          for (var _iterator = usage, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 25736            var _ref2;
 25737  
 25738            if (_isArray) {
 25739              if (_i >= _iterator.length) break;
 25740              _ref2 = _iterator[_i++];
 25741            } else {
 25742              _i = _iterator.next();
 25743              if (_i.done) break;
 25744              _ref2 = _i.value;
 25745            }
 25746  
 25747            const msg = _ref2;
 25748  
 25749            reporter.error(`yarn ${rootCommandName} ${msg}`);
 25750          }
 25751        }
 25752        return Promise.reject(new (_errors || _load_errors()).MessageError(reporter.lang('invalidCommand', subCommandNames.join(', '))));
 25753      });
 25754  
 25755      return function run(_x, _x2, _x3, _x4) {
 25756        return _ref.apply(this, arguments);
 25757      };
 25758    })();
 25759  
 25760    const subCommandNames = Object.keys(subCommands).map((_misc || _load_misc()).hyphenate);
 25761  
 25762    function setFlags(commander) {
 25763      commander.usage(`${rootCommandName} [${subCommandNames.join('|')}] [flags]`);
 25764    }
 25765  
 25766    function hasWrapper(commander, args) {
 25767      return true;
 25768    }
 25769  
 25770    const examples = usage.map(cmd => {
 25771      return `${rootCommandName} ${cmd}`;
 25772    });
 25773  
 25774    return { run, setFlags, hasWrapper, examples };
 25775  };
 25776  
 25777  var _errors;
 25778  
 25779  function _load_errors() {
 25780    return _errors = __webpack_require__(6);
 25781  }
 25782  
 25783  var _misc;
 25784  
 25785  function _load_misc() {
 25786    return _misc = __webpack_require__(18);
 25787  }
 25788  
 25789  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 25790  
 25791  /***/ }),
 25792  /* 60 */
 25793  /***/ (function(module, exports, __webpack_require__) {
 25794  
 25795  var global = __webpack_require__(17);
 25796  var core = __webpack_require__(31);
 25797  var ctx = __webpack_require__(70);
 25798  var hide = __webpack_require__(42);
 25799  var has = __webpack_require__(71);
 25800  var PROTOTYPE = 'prototype';
 25801  
 25802  var $export = function (type, name, source) {
 25803    var IS_FORCED = type & $export.F;
 25804    var IS_GLOBAL = type & $export.G;
 25805    var IS_STATIC = type & $export.S;
 25806    var IS_PROTO = type & $export.P;
 25807    var IS_BIND = type & $export.B;
 25808    var IS_WRAP = type & $export.W;
 25809    var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
 25810    var expProto = exports[PROTOTYPE];
 25811    var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
 25812    var key, own, out;
 25813    if (IS_GLOBAL) source = name;
 25814    for (key in source) {
 25815      // contains in native
 25816      own = !IS_FORCED && target && target[key] !== undefined;
 25817      if (own && has(exports, key)) continue;
 25818      // export native or passed
 25819      out = own ? target[key] : source[key];
 25820      // prevent global pollution for namespaces
 25821      exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
 25822      // bind timers to global for call from export context
 25823      : IS_BIND && own ? ctx(out, global)
 25824      // wrap global constructors for prevent change them in library
 25825      : IS_WRAP && target[key] == out ? (function (C) {
 25826        var F = function (a, b, c) {
 25827          if (this instanceof C) {
 25828            switch (arguments.length) {
 25829              case 0: return new C();
 25830              case 1: return new C(a);
 25831              case 2: return new C(a, b);
 25832            } return new C(a, b, c);
 25833          } return C.apply(this, arguments);
 25834        };
 25835        F[PROTOTYPE] = C[PROTOTYPE];
 25836        return F;
 25837      // make static versions for prototype methods
 25838      })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
 25839      // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
 25840      if (IS_PROTO) {
 25841        (exports.virtual || (exports.virtual = {}))[key] = out;
 25842        // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
 25843        if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
 25844      }
 25845    }
 25846  };
 25847  // type bitmap
 25848  $export.F = 1;   // forced
 25849  $export.G = 2;   // global
 25850  $export.S = 4;   // static
 25851  $export.P = 8;   // proto
 25852  $export.B = 16;  // bind
 25853  $export.W = 32;  // wrap
 25854  $export.U = 64;  // safe
 25855  $export.R = 128; // real proto method for `library`
 25856  module.exports = $export;
 25857  
 25858  
 25859  /***/ }),
 25860  /* 61 */
 25861  /***/ (function(module, exports, __webpack_require__) {
 25862  
 25863  try {
 25864    var util = __webpack_require__(3);
 25865    if (typeof util.inherits !== 'function') throw '';
 25866    module.exports = util.inherits;
 25867  } catch (e) {
 25868    module.exports = __webpack_require__(275);
 25869  }
 25870  
 25871  
 25872  /***/ }),
 25873  /* 62 */
 25874  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 25875  
 25876  "use strict";
 25877  /* harmony export (immutable) */ __webpack_exports__["a"] = from;
 25878  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
 25879  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isPromise__ = __webpack_require__(445);
 25880  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isArrayLike__ = __webpack_require__(442);
 25881  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_isInteropObservable__ = __webpack_require__(928);
 25882  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_isIterable__ = __webpack_require__(929);
 25883  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__fromArray__ = __webpack_require__(85);
 25884  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__fromPromise__ = __webpack_require__(830);
 25885  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__fromIterable__ = __webpack_require__(828);
 25886  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__fromObservable__ = __webpack_require__(829);
 25887  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__util_subscribeTo__ = __webpack_require__(446);
 25888  /** PURE_IMPORTS_START _Observable,_util_isPromise,_util_isArrayLike,_util_isInteropObservable,_util_isIterable,_fromArray,_fromPromise,_fromIterable,_fromObservable,_util_subscribeTo PURE_IMPORTS_END */
 25889  
 25890  
 25891  
 25892  
 25893  
 25894  
 25895  
 25896  
 25897  
 25898  
 25899  function from(input, scheduler) {
 25900      if (!scheduler) {
 25901          if (input instanceof __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */]) {
 25902              return input;
 25903          }
 25904          return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_9__util_subscribeTo__["a" /* subscribeTo */])(input));
 25905      }
 25906      if (input != null) {
 25907          if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_isInteropObservable__["a" /* isInteropObservable */])(input)) {
 25908              return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_8__fromObservable__["a" /* fromObservable */])(input, scheduler);
 25909          }
 25910          else if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_isPromise__["a" /* isPromise */])(input)) {
 25911              return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__fromPromise__["a" /* fromPromise */])(input, scheduler);
 25912          }
 25913          else if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_isArrayLike__["a" /* isArrayLike */])(input)) {
 25914              return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__fromArray__["a" /* fromArray */])(input, scheduler);
 25915          }
 25916          else if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util_isIterable__["a" /* isIterable */])(input) || typeof input === 'string') {
 25917              return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_7__fromIterable__["a" /* fromIterable */])(input, scheduler);
 25918          }
 25919      }
 25920      throw new TypeError((input !== null && typeof input || input) + ' is not observable');
 25921  }
 25922  //# sourceMappingURL=from.js.map
 25923  
 25924  
 25925  /***/ }),
 25926  /* 63 */
 25927  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 25928  
 25929  "use strict";
 25930  Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
 25931  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__internal_operators_audit__ = __webpack_require__(428);
 25932  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return __WEBPACK_IMPORTED_MODULE_0__internal_operators_audit__["a"]; });
 25933  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__internal_operators_auditTime__ = __webpack_require__(838);
 25934  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return __WEBPACK_IMPORTED_MODULE_1__internal_operators_auditTime__["a"]; });
 25935  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__internal_operators_buffer__ = __webpack_require__(839);
 25936  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return __WEBPACK_IMPORTED_MODULE_2__internal_operators_buffer__["a"]; });
 25937  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__internal_operators_bufferCount__ = __webpack_require__(840);
 25938  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return __WEBPACK_IMPORTED_MODULE_3__internal_operators_bufferCount__["a"]; });
 25939  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__internal_operators_bufferTime__ = __webpack_require__(841);
 25940  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return __WEBPACK_IMPORTED_MODULE_4__internal_operators_bufferTime__["a"]; });
 25941  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__internal_operators_bufferToggle__ = __webpack_require__(842);
 25942  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return __WEBPACK_IMPORTED_MODULE_5__internal_operators_bufferToggle__["a"]; });
 25943  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__internal_operators_bufferWhen__ = __webpack_require__(843);
 25944  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return __WEBPACK_IMPORTED_MODULE_6__internal_operators_bufferWhen__["a"]; });
 25945  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__internal_operators_catchError__ = __webpack_require__(844);
 25946  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return __WEBPACK_IMPORTED_MODULE_7__internal_operators_catchError__["a"]; });
 25947  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__internal_operators_combineAll__ = __webpack_require__(845);
 25948  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return __WEBPACK_IMPORTED_MODULE_8__internal_operators_combineAll__["a"]; });
 25949  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__internal_operators_combineLatest__ = __webpack_require__(846);
 25950  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return __WEBPACK_IMPORTED_MODULE_9__internal_operators_combineLatest__["a"]; });
 25951  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__internal_operators_concat__ = __webpack_require__(847);
 25952  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return __WEBPACK_IMPORTED_MODULE_10__internal_operators_concat__["a"]; });
 25953  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__internal_operators_concatAll__ = __webpack_require__(429);
 25954  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return __WEBPACK_IMPORTED_MODULE_11__internal_operators_concatAll__["a"]; });
 25955  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__internal_operators_concatMap__ = __webpack_require__(430);
 25956  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return __WEBPACK_IMPORTED_MODULE_12__internal_operators_concatMap__["a"]; });
 25957  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__internal_operators_concatMapTo__ = __webpack_require__(848);
 25958  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return __WEBPACK_IMPORTED_MODULE_13__internal_operators_concatMapTo__["a"]; });
 25959  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__internal_operators_count__ = __webpack_require__(849);
 25960  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "count", function() { return __WEBPACK_IMPORTED_MODULE_14__internal_operators_count__["a"]; });
 25961  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__internal_operators_debounce__ = __webpack_require__(850);
 25962  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return __WEBPACK_IMPORTED_MODULE_15__internal_operators_debounce__["a"]; });
 25963  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__internal_operators_debounceTime__ = __webpack_require__(851);
 25964  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return __WEBPACK_IMPORTED_MODULE_16__internal_operators_debounceTime__["a"]; });
 25965  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__internal_operators_defaultIfEmpty__ = __webpack_require__(146);
 25966  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return __WEBPACK_IMPORTED_MODULE_17__internal_operators_defaultIfEmpty__["a"]; });
 25967  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__internal_operators_delay__ = __webpack_require__(852);
 25968  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return __WEBPACK_IMPORTED_MODULE_18__internal_operators_delay__["a"]; });
 25969  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__internal_operators_delayWhen__ = __webpack_require__(853);
 25970  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return __WEBPACK_IMPORTED_MODULE_19__internal_operators_delayWhen__["a"]; });
 25971  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__internal_operators_dematerialize__ = __webpack_require__(854);
 25972  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return __WEBPACK_IMPORTED_MODULE_20__internal_operators_dematerialize__["a"]; });
 25973  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__internal_operators_distinct__ = __webpack_require__(855);
 25974  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return __WEBPACK_IMPORTED_MODULE_21__internal_operators_distinct__["a"]; });
 25975  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__internal_operators_distinctUntilChanged__ = __webpack_require__(431);
 25976  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return __WEBPACK_IMPORTED_MODULE_22__internal_operators_distinctUntilChanged__["a"]; });
 25977  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__internal_operators_distinctUntilKeyChanged__ = __webpack_require__(856);
 25978  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return __WEBPACK_IMPORTED_MODULE_23__internal_operators_distinctUntilKeyChanged__["a"]; });
 25979  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__internal_operators_elementAt__ = __webpack_require__(857);
 25980  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return __WEBPACK_IMPORTED_MODULE_24__internal_operators_elementAt__["a"]; });
 25981  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__internal_operators_endWith__ = __webpack_require__(858);
 25982  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return __WEBPACK_IMPORTED_MODULE_25__internal_operators_endWith__["a"]; });
 25983  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__internal_operators_every__ = __webpack_require__(859);
 25984  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "every", function() { return __WEBPACK_IMPORTED_MODULE_26__internal_operators_every__["a"]; });
 25985  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__internal_operators_exhaust__ = __webpack_require__(860);
 25986  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return __WEBPACK_IMPORTED_MODULE_27__internal_operators_exhaust__["a"]; });
 25987  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__internal_operators_exhaustMap__ = __webpack_require__(861);
 25988  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return __WEBPACK_IMPORTED_MODULE_28__internal_operators_exhaustMap__["a"]; });
 25989  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__internal_operators_expand__ = __webpack_require__(862);
 25990  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return __WEBPACK_IMPORTED_MODULE_29__internal_operators_expand__["a"]; });
 25991  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__internal_operators_filter__ = __webpack_require__(147);
 25992  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return __WEBPACK_IMPORTED_MODULE_30__internal_operators_filter__["a"]; });
 25993  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__internal_operators_finalize__ = __webpack_require__(863);
 25994  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return __WEBPACK_IMPORTED_MODULE_31__internal_operators_finalize__["a"]; });
 25995  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__internal_operators_find__ = __webpack_require__(432);
 25996  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "find", function() { return __WEBPACK_IMPORTED_MODULE_32__internal_operators_find__["a"]; });
 25997  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__internal_operators_findIndex__ = __webpack_require__(864);
 25998  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return __WEBPACK_IMPORTED_MODULE_33__internal_operators_findIndex__["a"]; });
 25999  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__internal_operators_first__ = __webpack_require__(865);
 26000  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "first", function() { return __WEBPACK_IMPORTED_MODULE_34__internal_operators_first__["a"]; });
 26001  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__internal_operators_groupBy__ = __webpack_require__(433);
 26002  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return __WEBPACK_IMPORTED_MODULE_35__internal_operators_groupBy__["b"]; });
 26003  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__internal_operators_ignoreElements__ = __webpack_require__(866);
 26004  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return __WEBPACK_IMPORTED_MODULE_36__internal_operators_ignoreElements__["a"]; });
 26005  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__internal_operators_isEmpty__ = __webpack_require__(867);
 26006  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return __WEBPACK_IMPORTED_MODULE_37__internal_operators_isEmpty__["a"]; });
 26007  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__internal_operators_last__ = __webpack_require__(868);
 26008  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "last", function() { return __WEBPACK_IMPORTED_MODULE_38__internal_operators_last__["a"]; });
 26009  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__internal_operators_map__ = __webpack_require__(47);
 26010  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "map", function() { return __WEBPACK_IMPORTED_MODULE_39__internal_operators_map__["a"]; });
 26011  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__internal_operators_mapTo__ = __webpack_require__(869);
 26012  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return __WEBPACK_IMPORTED_MODULE_40__internal_operators_mapTo__["a"]; });
 26013  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__internal_operators_materialize__ = __webpack_require__(870);
 26014  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return __WEBPACK_IMPORTED_MODULE_41__internal_operators_materialize__["a"]; });
 26015  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__internal_operators_max__ = __webpack_require__(871);
 26016  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "max", function() { return __WEBPACK_IMPORTED_MODULE_42__internal_operators_max__["a"]; });
 26017  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__internal_operators_merge__ = __webpack_require__(872);
 26018  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return __WEBPACK_IMPORTED_MODULE_43__internal_operators_merge__["a"]; });
 26019  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__internal_operators_mergeAll__ = __webpack_require__(315);
 26020  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return __WEBPACK_IMPORTED_MODULE_44__internal_operators_mergeAll__["a"]; });
 26021  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__internal_operators_mergeMap__ = __webpack_require__(148);
 26022  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return __WEBPACK_IMPORTED_MODULE_45__internal_operators_mergeMap__["a"]; });
 26023  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return __WEBPACK_IMPORTED_MODULE_45__internal_operators_mergeMap__["a"]; });
 26024  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__internal_operators_mergeMapTo__ = __webpack_require__(873);
 26025  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return __WEBPACK_IMPORTED_MODULE_46__internal_operators_mergeMapTo__["a"]; });
 26026  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__internal_operators_mergeScan__ = __webpack_require__(874);
 26027  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return __WEBPACK_IMPORTED_MODULE_47__internal_operators_mergeScan__["a"]; });
 26028  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__internal_operators_min__ = __webpack_require__(875);
 26029  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "min", function() { return __WEBPACK_IMPORTED_MODULE_48__internal_operators_min__["a"]; });
 26030  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__internal_operators_multicast__ = __webpack_require__(117);
 26031  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return __WEBPACK_IMPORTED_MODULE_49__internal_operators_multicast__["a"]; });
 26032  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__internal_operators_observeOn__ = __webpack_require__(434);
 26033  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return __WEBPACK_IMPORTED_MODULE_50__internal_operators_observeOn__["b"]; });
 26034  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_51__internal_operators_onErrorResumeNext__ = __webpack_require__(876);
 26035  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return __WEBPACK_IMPORTED_MODULE_51__internal_operators_onErrorResumeNext__["a"]; });
 26036  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_52__internal_operators_pairwise__ = __webpack_require__(877);
 26037  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return __WEBPACK_IMPORTED_MODULE_52__internal_operators_pairwise__["a"]; });
 26038  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_53__internal_operators_partition__ = __webpack_require__(878);
 26039  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return __WEBPACK_IMPORTED_MODULE_53__internal_operators_partition__["a"]; });
 26040  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_54__internal_operators_pluck__ = __webpack_require__(879);
 26041  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return __WEBPACK_IMPORTED_MODULE_54__internal_operators_pluck__["a"]; });
 26042  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_55__internal_operators_publish__ = __webpack_require__(880);
 26043  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return __WEBPACK_IMPORTED_MODULE_55__internal_operators_publish__["a"]; });
 26044  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_56__internal_operators_publishBehavior__ = __webpack_require__(881);
 26045  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return __WEBPACK_IMPORTED_MODULE_56__internal_operators_publishBehavior__["a"]; });
 26046  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_57__internal_operators_publishLast__ = __webpack_require__(882);
 26047  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return __WEBPACK_IMPORTED_MODULE_57__internal_operators_publishLast__["a"]; });
 26048  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_58__internal_operators_publishReplay__ = __webpack_require__(883);
 26049  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return __WEBPACK_IMPORTED_MODULE_58__internal_operators_publishReplay__["a"]; });
 26050  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_59__internal_operators_race__ = __webpack_require__(884);
 26051  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "race", function() { return __WEBPACK_IMPORTED_MODULE_59__internal_operators_race__["a"]; });
 26052  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_60__internal_operators_reduce__ = __webpack_require__(188);
 26053  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return __WEBPACK_IMPORTED_MODULE_60__internal_operators_reduce__["a"]; });
 26054  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_61__internal_operators_repeat__ = __webpack_require__(885);
 26055  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return __WEBPACK_IMPORTED_MODULE_61__internal_operators_repeat__["a"]; });
 26056  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_62__internal_operators_repeatWhen__ = __webpack_require__(886);
 26057  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return __WEBPACK_IMPORTED_MODULE_62__internal_operators_repeatWhen__["a"]; });
 26058  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_63__internal_operators_retry__ = __webpack_require__(887);
 26059  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return __WEBPACK_IMPORTED_MODULE_63__internal_operators_retry__["a"]; });
 26060  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_64__internal_operators_retryWhen__ = __webpack_require__(888);
 26061  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return __WEBPACK_IMPORTED_MODULE_64__internal_operators_retryWhen__["a"]; });
 26062  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_65__internal_operators_refCount__ = __webpack_require__(316);
 26063  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return __WEBPACK_IMPORTED_MODULE_65__internal_operators_refCount__["a"]; });
 26064  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_66__internal_operators_sample__ = __webpack_require__(889);
 26065  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return __WEBPACK_IMPORTED_MODULE_66__internal_operators_sample__["a"]; });
 26066  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_67__internal_operators_sampleTime__ = __webpack_require__(890);
 26067  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return __WEBPACK_IMPORTED_MODULE_67__internal_operators_sampleTime__["a"]; });
 26068  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_68__internal_operators_scan__ = __webpack_require__(317);
 26069  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return __WEBPACK_IMPORTED_MODULE_68__internal_operators_scan__["a"]; });
 26070  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_69__internal_operators_sequenceEqual__ = __webpack_require__(891);
 26071  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return __WEBPACK_IMPORTED_MODULE_69__internal_operators_sequenceEqual__["a"]; });
 26072  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_70__internal_operators_share__ = __webpack_require__(892);
 26073  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "share", function() { return __WEBPACK_IMPORTED_MODULE_70__internal_operators_share__["a"]; });
 26074  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_71__internal_operators_shareReplay__ = __webpack_require__(893);
 26075  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return __WEBPACK_IMPORTED_MODULE_71__internal_operators_shareReplay__["a"]; });
 26076  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_72__internal_operators_single__ = __webpack_require__(894);
 26077  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "single", function() { return __WEBPACK_IMPORTED_MODULE_72__internal_operators_single__["a"]; });
 26078  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_73__internal_operators_skip__ = __webpack_require__(895);
 26079  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return __WEBPACK_IMPORTED_MODULE_73__internal_operators_skip__["a"]; });
 26080  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_74__internal_operators_skipLast__ = __webpack_require__(896);
 26081  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return __WEBPACK_IMPORTED_MODULE_74__internal_operators_skipLast__["a"]; });
 26082  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_75__internal_operators_skipUntil__ = __webpack_require__(897);
 26083  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return __WEBPACK_IMPORTED_MODULE_75__internal_operators_skipUntil__["a"]; });
 26084  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_76__internal_operators_skipWhile__ = __webpack_require__(898);
 26085  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return __WEBPACK_IMPORTED_MODULE_76__internal_operators_skipWhile__["a"]; });
 26086  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_77__internal_operators_startWith__ = __webpack_require__(899);
 26087  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return __WEBPACK_IMPORTED_MODULE_77__internal_operators_startWith__["a"]; });
 26088  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_78__internal_operators_subscribeOn__ = __webpack_require__(900);
 26089  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return __WEBPACK_IMPORTED_MODULE_78__internal_operators_subscribeOn__["a"]; });
 26090  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_79__internal_operators_switchAll__ = __webpack_require__(901);
 26091  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return __WEBPACK_IMPORTED_MODULE_79__internal_operators_switchAll__["a"]; });
 26092  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_80__internal_operators_switchMap__ = __webpack_require__(318);
 26093  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return __WEBPACK_IMPORTED_MODULE_80__internal_operators_switchMap__["a"]; });
 26094  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_81__internal_operators_switchMapTo__ = __webpack_require__(902);
 26095  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return __WEBPACK_IMPORTED_MODULE_81__internal_operators_switchMapTo__["a"]; });
 26096  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_82__internal_operators_take__ = __webpack_require__(319);
 26097  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "take", function() { return __WEBPACK_IMPORTED_MODULE_82__internal_operators_take__["a"]; });
 26098  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_83__internal_operators_takeLast__ = __webpack_require__(320);
 26099  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return __WEBPACK_IMPORTED_MODULE_83__internal_operators_takeLast__["a"]; });
 26100  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_84__internal_operators_takeUntil__ = __webpack_require__(903);
 26101  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return __WEBPACK_IMPORTED_MODULE_84__internal_operators_takeUntil__["a"]; });
 26102  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_85__internal_operators_takeWhile__ = __webpack_require__(904);
 26103  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return __WEBPACK_IMPORTED_MODULE_85__internal_operators_takeWhile__["a"]; });
 26104  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_86__internal_operators_tap__ = __webpack_require__(435);
 26105  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return __WEBPACK_IMPORTED_MODULE_86__internal_operators_tap__["a"]; });
 26106  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_87__internal_operators_throttle__ = __webpack_require__(436);
 26107  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return __WEBPACK_IMPORTED_MODULE_87__internal_operators_throttle__["a"]; });
 26108  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_88__internal_operators_throttleTime__ = __webpack_require__(905);
 26109  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return __WEBPACK_IMPORTED_MODULE_88__internal_operators_throttleTime__["a"]; });
 26110  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_89__internal_operators_throwIfEmpty__ = __webpack_require__(189);
 26111  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return __WEBPACK_IMPORTED_MODULE_89__internal_operators_throwIfEmpty__["a"]; });
 26112  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_90__internal_operators_timeInterval__ = __webpack_require__(906);
 26113  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return __WEBPACK_IMPORTED_MODULE_90__internal_operators_timeInterval__["a"]; });
 26114  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_91__internal_operators_timeout__ = __webpack_require__(907);
 26115  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return __WEBPACK_IMPORTED_MODULE_91__internal_operators_timeout__["a"]; });
 26116  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_92__internal_operators_timeoutWith__ = __webpack_require__(437);
 26117  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return __WEBPACK_IMPORTED_MODULE_92__internal_operators_timeoutWith__["a"]; });
 26118  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_93__internal_operators_timestamp__ = __webpack_require__(908);
 26119  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return __WEBPACK_IMPORTED_MODULE_93__internal_operators_timestamp__["a"]; });
 26120  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_94__internal_operators_toArray__ = __webpack_require__(909);
 26121  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return __WEBPACK_IMPORTED_MODULE_94__internal_operators_toArray__["a"]; });
 26122  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_95__internal_operators_window__ = __webpack_require__(910);
 26123  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "window", function() { return __WEBPACK_IMPORTED_MODULE_95__internal_operators_window__["a"]; });
 26124  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_96__internal_operators_windowCount__ = __webpack_require__(911);
 26125  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return __WEBPACK_IMPORTED_MODULE_96__internal_operators_windowCount__["a"]; });
 26126  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_97__internal_operators_windowTime__ = __webpack_require__(912);
 26127  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return __WEBPACK_IMPORTED_MODULE_97__internal_operators_windowTime__["a"]; });
 26128  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_98__internal_operators_windowToggle__ = __webpack_require__(913);
 26129  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return __WEBPACK_IMPORTED_MODULE_98__internal_operators_windowToggle__["a"]; });
 26130  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_99__internal_operators_windowWhen__ = __webpack_require__(914);
 26131  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return __WEBPACK_IMPORTED_MODULE_99__internal_operators_windowWhen__["a"]; });
 26132  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_100__internal_operators_withLatestFrom__ = __webpack_require__(915);
 26133  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return __WEBPACK_IMPORTED_MODULE_100__internal_operators_withLatestFrom__["a"]; });
 26134  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_101__internal_operators_zip__ = __webpack_require__(916);
 26135  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return __WEBPACK_IMPORTED_MODULE_101__internal_operators_zip__["a"]; });
 26136  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_102__internal_operators_zipAll__ = __webpack_require__(917);
 26137  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return __WEBPACK_IMPORTED_MODULE_102__internal_operators_zipAll__["a"]; });
 26138  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 26139  
 26140  
 26141  
 26142  
 26143  
 26144  
 26145  
 26146  
 26147  
 26148  
 26149  
 26150  
 26151  
 26152  
 26153  
 26154  
 26155  
 26156  
 26157  
 26158  
 26159  
 26160  
 26161  
 26162  
 26163  
 26164  
 26165  
 26166  
 26167  
 26168  
 26169  
 26170  
 26171  
 26172  
 26173  
 26174  
 26175  
 26176  
 26177  
 26178  
 26179  
 26180  
 26181  
 26182  
 26183  
 26184  
 26185  
 26186  
 26187  
 26188  
 26189  
 26190  
 26191  
 26192  
 26193  
 26194  
 26195  
 26196  
 26197  
 26198  
 26199  
 26200  
 26201  
 26202  
 26203  
 26204  
 26205  
 26206  
 26207  
 26208  
 26209  
 26210  
 26211  
 26212  
 26213  
 26214  
 26215  
 26216  
 26217  
 26218  
 26219  
 26220  
 26221  
 26222  
 26223  
 26224  
 26225  
 26226  
 26227  
 26228  
 26229  
 26230  
 26231  
 26232  
 26233  
 26234  
 26235  
 26236  
 26237  
 26238  
 26239  
 26240  
 26241  
 26242  
 26243  //# sourceMappingURL=index.js.map
 26244  
 26245  
 26246  /***/ }),
 26247  /* 64 */
 26248  /***/ (function(module, exports) {
 26249  
 26250  module.exports = require("buffer");
 26251  
 26252  /***/ }),
 26253  /* 65 */
 26254  /***/ (function(module, exports, __webpack_require__) {
 26255  
 26256  "use strict";
 26257  
 26258  
 26259  const Buffer = __webpack_require__(45).Buffer
 26260  
 26261  const crypto = __webpack_require__(11)
 26262  const Transform = __webpack_require__(23).Transform
 26263  
 26264  const SPEC_ALGORITHMS = ['sha256', 'sha384', 'sha512']
 26265  
 26266  const BASE64_REGEX = /^[a-z0-9+/]+(?:=?=?)$/i
 26267  const SRI_REGEX = /^([^-]+)-([^?]+)([?\S*]*)$/
 26268  const STRICT_SRI_REGEX = /^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/
 26269  const VCHAR_REGEX = /^[\x21-\x7E]+$/
 26270  
 26271  class Hash {
 26272    get isHash () { return true }
 26273    constructor (hash, opts) {
 26274      const strict = !!(opts && opts.strict)
 26275      this.source = hash.trim()
 26276      // 3.1. Integrity metadata (called "Hash" by ssri)
 26277      // https://w3c.github.io/webappsec-subresource-integrity/#integrity-metadata-description
 26278      const match = this.source.match(
 26279        strict
 26280        ? STRICT_SRI_REGEX
 26281        : SRI_REGEX
 26282      )
 26283      if (!match) { return }
 26284      if (strict && !SPEC_ALGORITHMS.some(a => a === match[1])) { return }
 26285      this.algorithm = match[1]
 26286      this.digest = match[2]
 26287  
 26288      const rawOpts = match[3]
 26289      this.options = rawOpts ? rawOpts.slice(1).split('?') : []
 26290    }
 26291    hexDigest () {
 26292      return this.digest && Buffer.from(this.digest, 'base64').toString('hex')
 26293    }
 26294    toJSON () {
 26295      return this.toString()
 26296    }
 26297    toString (opts) {
 26298      if (opts && opts.strict) {
 26299        // Strict mode enforces the standard as close to the foot of the
 26300        // letter as it can.
 26301        if (!(
 26302          // The spec has very restricted productions for algorithms.
 26303          // https://www.w3.org/TR/CSP2/#source-list-syntax
 26304          SPEC_ALGORITHMS.some(x => x === this.algorithm) &&
 26305          // Usually, if someone insists on using a "different" base64, we
 26306          // leave it as-is, since there's multiple standards, and the
 26307          // specified is not a URL-safe variant.
 26308          // https://www.w3.org/TR/CSP2/#base64_value
 26309          this.digest.match(BASE64_REGEX) &&
 26310          // Option syntax is strictly visual chars.
 26311          // https://w3c.github.io/webappsec-subresource-integrity/#grammardef-option-expression
 26312          // https://tools.ietf.org/html/rfc5234#appendix-B.1
 26313          (this.options || []).every(opt => opt.match(VCHAR_REGEX))
 26314        )) {
 26315          return ''
 26316        }
 26317      }
 26318      const options = this.options && this.options.length
 26319      ? `?${this.options.join('?')}`
 26320      : ''
 26321      return `${this.algorithm}-${this.digest}${options}`
 26322    }
 26323  }
 26324  
 26325  class Integrity {
 26326    get isIntegrity () { return true }
 26327    toJSON () {
 26328      return this.toString()
 26329    }
 26330    toString (opts) {
 26331      opts = opts || {}
 26332      let sep = opts.sep || ' '
 26333      if (opts.strict) {
 26334        // Entries must be separated by whitespace, according to spec.
 26335        sep = sep.replace(/\S+/g, ' ')
 26336      }
 26337      return Object.keys(this).map(k => {
 26338        return this[k].map(hash => {
 26339          return Hash.prototype.toString.call(hash, opts)
 26340        }).filter(x => x.length).join(sep)
 26341      }).filter(x => x.length).join(sep)
 26342    }
 26343    concat (integrity, opts) {
 26344      const other = typeof integrity === 'string'
 26345      ? integrity
 26346      : stringify(integrity, opts)
 26347      return parse(`${this.toString(opts)} ${other}`, opts)
 26348    }
 26349    hexDigest () {
 26350      return parse(this, {single: true}).hexDigest()
 26351    }
 26352    match (integrity, opts) {
 26353      const other = parse(integrity, opts)
 26354      const algo = other.pickAlgorithm(opts)
 26355      return (
 26356        this[algo] &&
 26357        other[algo] &&
 26358        this[algo].find(hash =>
 26359          other[algo].find(otherhash =>
 26360            hash.digest === otherhash.digest
 26361          )
 26362        )
 26363      ) || false
 26364    }
 26365    pickAlgorithm (opts) {
 26366      const pickAlgorithm = (opts && opts.pickAlgorithm) || getPrioritizedHash
 26367      const keys = Object.keys(this)
 26368      if (!keys.length) {
 26369        throw new Error(`No algorithms available for ${
 26370          JSON.stringify(this.toString())
 26371        }`)
 26372      }
 26373      return keys.reduce((acc, algo) => {
 26374        return pickAlgorithm(acc, algo) || acc
 26375      })
 26376    }
 26377  }
 26378  
 26379  module.exports.parse = parse
 26380  function parse (sri, opts) {
 26381    opts = opts || {}
 26382    if (typeof sri === 'string') {
 26383      return _parse(sri, opts)
 26384    } else if (sri.algorithm && sri.digest) {
 26385      const fullSri = new Integrity()
 26386      fullSri[sri.algorithm] = [sri]
 26387      return _parse(stringify(fullSri, opts), opts)
 26388    } else {
 26389      return _parse(stringify(sri, opts), opts)
 26390    }
 26391  }
 26392  
 26393  function _parse (integrity, opts) {
 26394    // 3.4.3. Parse metadata
 26395    // https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata
 26396    if (opts.single) {
 26397      return new Hash(integrity, opts)
 26398    }
 26399    return integrity.trim().split(/\s+/).reduce((acc, string) => {
 26400      const hash = new Hash(string, opts)
 26401      if (hash.algorithm && hash.digest) {
 26402        const algo = hash.algorithm
 26403        if (!acc[algo]) { acc[algo] = [] }
 26404        acc[algo].push(hash)
 26405      }
 26406      return acc
 26407    }, new Integrity())
 26408  }
 26409  
 26410  module.exports.stringify = stringify
 26411  function stringify (obj, opts) {
 26412    if (obj.algorithm && obj.digest) {
 26413      return Hash.prototype.toString.call(obj, opts)
 26414    } else if (typeof obj === 'string') {
 26415      return stringify(parse(obj, opts), opts)
 26416    } else {
 26417      return Integrity.prototype.toString.call(obj, opts)
 26418    }
 26419  }
 26420  
 26421  module.exports.fromHex = fromHex
 26422  function fromHex (hexDigest, algorithm, opts) {
 26423    const optString = (opts && opts.options && opts.options.length)
 26424    ? `?${opts.options.join('?')}`
 26425    : ''
 26426    return parse(
 26427      `${algorithm}-${
 26428        Buffer.from(hexDigest, 'hex').toString('base64')
 26429      }${optString}`, opts
 26430    )
 26431  }
 26432  
 26433  module.exports.fromData = fromData
 26434  function fromData (data, opts) {
 26435    opts = opts || {}
 26436    const algorithms = opts.algorithms || ['sha512']
 26437    const optString = opts.options && opts.options.length
 26438    ? `?${opts.options.join('?')}`
 26439    : ''
 26440    return algorithms.reduce((acc, algo) => {
 26441      const digest = crypto.createHash(algo).update(data).digest('base64')
 26442      const hash = new Hash(
 26443        `${algo}-${digest}${optString}`,
 26444         opts
 26445      )
 26446      if (hash.algorithm && hash.digest) {
 26447        const algo = hash.algorithm
 26448        if (!acc[algo]) { acc[algo] = [] }
 26449        acc[algo].push(hash)
 26450      }
 26451      return acc
 26452    }, new Integrity())
 26453  }
 26454  
 26455  module.exports.fromStream = fromStream
 26456  function fromStream (stream, opts) {
 26457    opts = opts || {}
 26458    const P = opts.Promise || Promise
 26459    const istream = integrityStream(opts)
 26460    return new P((resolve, reject) => {
 26461      stream.pipe(istream)
 26462      stream.on('error', reject)
 26463      istream.on('error', reject)
 26464      let sri
 26465      istream.on('integrity', s => { sri = s })
 26466      istream.on('end', () => resolve(sri))
 26467      istream.on('data', () => {})
 26468    })
 26469  }
 26470  
 26471  module.exports.checkData = checkData
 26472  function checkData (data, sri, opts) {
 26473    opts = opts || {}
 26474    sri = parse(sri, opts)
 26475    if (!Object.keys(sri).length) {
 26476      if (opts.error) {
 26477        throw Object.assign(
 26478          new Error('No valid integrity hashes to check against'), {
 26479            code: 'EINTEGRITY'
 26480          }
 26481        )
 26482      } else {
 26483        return false
 26484      }
 26485    }
 26486    const algorithm = sri.pickAlgorithm(opts)
 26487    const digest = crypto.createHash(algorithm).update(data).digest('base64')
 26488    const newSri = parse({algorithm, digest})
 26489    const match = newSri.match(sri, opts)
 26490    if (match || !opts.error) {
 26491      return match
 26492    } else if (typeof opts.size === 'number' && (data.length !== opts.size)) {
 26493      const err = new Error(`data size mismatch when checking ${sri}.\n  Wanted: ${opts.size}\n  Found: ${data.length}`)
 26494      err.code = 'EBADSIZE'
 26495      err.found = data.length
 26496      err.expected = opts.size
 26497      err.sri = sri
 26498      throw err
 26499    } else {
 26500      const err = new Error(`Integrity checksum failed when using ${algorithm}: Wanted ${sri}, but got ${newSri}. (${data.length} bytes)`)
 26501      err.code = 'EINTEGRITY'
 26502      err.found = newSri
 26503      err.expected = sri
 26504      err.algorithm = algorithm
 26505      err.sri = sri
 26506      throw err
 26507    }
 26508  }
 26509  
 26510  module.exports.checkStream = checkStream
 26511  function checkStream (stream, sri, opts) {
 26512    opts = opts || {}
 26513    const P = opts.Promise || Promise
 26514    const checker = integrityStream(Object.assign({}, opts, {
 26515      integrity: sri
 26516    }))
 26517    return new P((resolve, reject) => {
 26518      stream.pipe(checker)
 26519      stream.on('error', reject)
 26520      checker.on('error', reject)
 26521      let sri
 26522      checker.on('verified', s => { sri = s })
 26523      checker.on('end', () => resolve(sri))
 26524      checker.on('data', () => {})
 26525    })
 26526  }
 26527  
 26528  module.exports.integrityStream = integrityStream
 26529  function integrityStream (opts) {
 26530    opts = opts || {}
 26531    // For verification
 26532    const sri = opts.integrity && parse(opts.integrity, opts)
 26533    const goodSri = sri && Object.keys(sri).length
 26534    const algorithm = goodSri && sri.pickAlgorithm(opts)
 26535    const digests = goodSri && sri[algorithm]
 26536    // Calculating stream
 26537    const algorithms = Array.from(
 26538      new Set(
 26539        (opts.algorithms || ['sha512'])
 26540        .concat(algorithm ? [algorithm] : [])
 26541      )
 26542    )
 26543    const hashes = algorithms.map(crypto.createHash)
 26544    let streamSize = 0
 26545    const stream = new Transform({
 26546      transform (chunk, enc, cb) {
 26547        streamSize += chunk.length
 26548        hashes.forEach(h => h.update(chunk, enc))
 26549        cb(null, chunk, enc)
 26550      }
 26551    }).on('end', () => {
 26552      const optString = (opts.options && opts.options.length)
 26553      ? `?${opts.options.join('?')}`
 26554      : ''
 26555      const newSri = parse(hashes.map((h, i) => {
 26556        return `${algorithms[i]}-${h.digest('base64')}${optString}`
 26557      }).join(' '), opts)
 26558      // Integrity verification mode
 26559      const match = goodSri && newSri.match(sri, opts)
 26560      if (typeof opts.size === 'number' && streamSize !== opts.size) {
 26561        const err = new Error(`stream size mismatch when checking ${sri}.\n  Wanted: ${opts.size}\n  Found: ${streamSize}`)
 26562        err.code = 'EBADSIZE'
 26563        err.found = streamSize
 26564        err.expected = opts.size
 26565        err.sri = sri
 26566        stream.emit('error', err)
 26567      } else if (opts.integrity && !match) {
 26568        const err = new Error(`${sri} integrity checksum failed when using ${algorithm}: wanted ${digests} but got ${newSri}. (${streamSize} bytes)`)
 26569        err.code = 'EINTEGRITY'
 26570        err.found = newSri
 26571        err.expected = digests
 26572        err.algorithm = algorithm
 26573        err.sri = sri
 26574        stream.emit('error', err)
 26575      } else {
 26576        stream.emit('size', streamSize)
 26577        stream.emit('integrity', newSri)
 26578        match && stream.emit('verified', match)
 26579      }
 26580    })
 26581    return stream
 26582  }
 26583  
 26584  module.exports.create = createIntegrity
 26585  function createIntegrity (opts) {
 26586    opts = opts || {}
 26587    const algorithms = opts.algorithms || ['sha512']
 26588    const optString = opts.options && opts.options.length
 26589    ? `?${opts.options.join('?')}`
 26590    : ''
 26591  
 26592    const hashes = algorithms.map(crypto.createHash)
 26593  
 26594    return {
 26595      update: function (chunk, enc) {
 26596        hashes.forEach(h => h.update(chunk, enc))
 26597        return this
 26598      },
 26599      digest: function (enc) {
 26600        const integrity = algorithms.reduce((acc, algo) => {
 26601          const digest = hashes.shift().digest('base64')
 26602          const hash = new Hash(
 26603            `${algo}-${digest}${optString}`,
 26604            opts
 26605          )
 26606          if (hash.algorithm && hash.digest) {
 26607            const algo = hash.algorithm
 26608            if (!acc[algo]) { acc[algo] = [] }
 26609            acc[algo].push(hash)
 26610          }
 26611          return acc
 26612        }, new Integrity())
 26613  
 26614        return integrity
 26615      }
 26616    }
 26617  }
 26618  
 26619  const NODE_HASHES = new Set(crypto.getHashes())
 26620  
 26621  // This is a Best Effort™ at a reasonable priority for hash algos
 26622  const DEFAULT_PRIORITY = [
 26623    'md5', 'whirlpool', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512',
 26624    // TODO - it's unclear _which_ of these Node will actually use as its name
 26625    //        for the algorithm, so we guesswork it based on the OpenSSL names.
 26626    'sha3',
 26627    'sha3-256', 'sha3-384', 'sha3-512',
 26628    'sha3_256', 'sha3_384', 'sha3_512'
 26629  ].filter(algo => NODE_HASHES.has(algo))
 26630  
 26631  function getPrioritizedHash (algo1, algo2) {
 26632    return DEFAULT_PRIORITY.indexOf(algo1.toLowerCase()) >= DEFAULT_PRIORITY.indexOf(algo2.toLowerCase())
 26633    ? algo1
 26634    : algo2
 26635  }
 26636  
 26637  
 26638  /***/ }),
 26639  /* 66 */
 26640  /***/ (function(module, exports, __webpack_require__) {
 26641  
 26642  // Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
 26643  
 26644  // If you have no idea what ASN.1 or BER is, see this:
 26645  // ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc
 26646  
 26647  var Ber = __webpack_require__(482);
 26648  
 26649  
 26650  
 26651  // --- Exported API
 26652  
 26653  module.exports = {
 26654  
 26655    Ber: Ber,
 26656  
 26657    BerReader: Ber.Reader,
 26658  
 26659    BerWriter: Ber.Writer
 26660  
 26661  };
 26662  
 26663  
 26664  /***/ }),
 26665  /* 67 */
 26666  /***/ (function(module, exports, __webpack_require__) {
 26667  
 26668  "use strict";
 26669  
 26670  
 26671  Object.defineProperty(exports, "__esModule", {
 26672    value: true
 26673  });
 26674  exports.home = undefined;
 26675  
 26676  var _rootUser;
 26677  
 26678  function _load_rootUser() {
 26679    return _rootUser = _interopRequireDefault(__webpack_require__(221));
 26680  }
 26681  
 26682  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 26683  
 26684  const path = __webpack_require__(0);
 26685  
 26686  const home = exports.home = __webpack_require__(46).homedir();
 26687  
 26688  const userHomeDir = (_rootUser || _load_rootUser()).default ? path.resolve('/usr/local/share') : home;
 26689  
 26690  exports.default = userHomeDir;
 26691  
 26692  /***/ }),
 26693  /* 68 */
 26694  /***/ (function(module, exports) {
 26695  
 26696  module.exports = function (it) {
 26697    if (typeof it != 'function') throw TypeError(it + ' is not a function!');
 26698    return it;
 26699  };
 26700  
 26701  
 26702  /***/ }),
 26703  /* 69 */
 26704  /***/ (function(module, exports) {
 26705  
 26706  var toString = {}.toString;
 26707  
 26708  module.exports = function (it) {
 26709    return toString.call(it).slice(8, -1);
 26710  };
 26711  
 26712  
 26713  /***/ }),
 26714  /* 70 */
 26715  /***/ (function(module, exports, __webpack_require__) {
 26716  
 26717  // optional / simple context binding
 26718  var aFunction = __webpack_require__(68);
 26719  module.exports = function (fn, that, length) {
 26720    aFunction(fn);
 26721    if (that === undefined) return fn;
 26722    switch (length) {
 26723      case 1: return function (a) {
 26724        return fn.call(that, a);
 26725      };
 26726      case 2: return function (a, b) {
 26727        return fn.call(that, a, b);
 26728      };
 26729      case 3: return function (a, b, c) {
 26730        return fn.call(that, a, b, c);
 26731      };
 26732    }
 26733    return function (/* ...args */) {
 26734      return fn.apply(that, arguments);
 26735    };
 26736  };
 26737  
 26738  
 26739  /***/ }),
 26740  /* 71 */
 26741  /***/ (function(module, exports) {
 26742  
 26743  var hasOwnProperty = {}.hasOwnProperty;
 26744  module.exports = function (it, key) {
 26745    return hasOwnProperty.call(it, key);
 26746  };
 26747  
 26748  
 26749  /***/ }),
 26750  /* 72 */
 26751  /***/ (function(module, exports, __webpack_require__) {
 26752  
 26753  var anObject = __webpack_require__(35);
 26754  var IE8_DOM_DEFINE = __webpack_require__(235);
 26755  var toPrimitive = __webpack_require__(252);
 26756  var dP = Object.defineProperty;
 26757  
 26758  exports.f = __webpack_require__(52) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
 26759    anObject(O);
 26760    P = toPrimitive(P, true);
 26761    anObject(Attributes);
 26762    if (IE8_DOM_DEFINE) try {
 26763      return dP(O, P, Attributes);
 26764    } catch (e) { /* empty */ }
 26765    if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
 26766    if ('value' in Attributes) O[P] = Attributes.value;
 26767    return O;
 26768  };
 26769  
 26770  
 26771  /***/ }),
 26772  /* 73 */
 26773  /***/ (function(module, exports, __webpack_require__) {
 26774  
 26775  "use strict";
 26776  // JS-YAML's default schema for `load` function.
 26777  // It is not described in the YAML specification.
 26778  //
 26779  // This schema is based on JS-YAML's default safe schema and includes
 26780  // JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.
 26781  //
 26782  // Also this schema is used as default base schema at `Schema.create` function.
 26783  
 26784  
 26785  
 26786  
 26787  
 26788  var Schema = __webpack_require__(44);
 26789  
 26790  
 26791  module.exports = Schema.DEFAULT = new Schema({
 26792    include: [
 26793      __webpack_require__(56)
 26794    ],
 26795    explicit: [
 26796      __webpack_require__(290),
 26797      __webpack_require__(289),
 26798      __webpack_require__(288)
 26799    ]
 26800  });
 26801  
 26802  
 26803  /***/ }),
 26804  /* 74 */
 26805  /***/ (function(module, exports, __webpack_require__) {
 26806  
 26807  // Copyright 2015 Joyent, Inc.
 26808  
 26809  var assert = __webpack_require__(16);
 26810  var util = __webpack_require__(3);
 26811  
 26812  function FingerprintFormatError(fp, format) {
 26813  	if (Error.captureStackTrace)
 26814  		Error.captureStackTrace(this, FingerprintFormatError);
 26815  	this.name = 'FingerprintFormatError';
 26816  	this.fingerprint = fp;
 26817  	this.format = format;
 26818  	this.message = 'Fingerprint format is not supported, or is invalid: ';
 26819  	if (fp !== undefined)
 26820  		this.message += ' fingerprint = ' + fp;
 26821  	if (format !== undefined)
 26822  		this.message += ' format = ' + format;
 26823  }
 26824  util.inherits(FingerprintFormatError, Error);
 26825  
 26826  function InvalidAlgorithmError(alg) {
 26827  	if (Error.captureStackTrace)
 26828  		Error.captureStackTrace(this, InvalidAlgorithmError);
 26829  	this.name = 'InvalidAlgorithmError';
 26830  	this.algorithm = alg;
 26831  	this.message = 'Algorithm "' + alg + '" is not supported';
 26832  }
 26833  util.inherits(InvalidAlgorithmError, Error);
 26834  
 26835  function KeyParseError(name, format, innerErr) {
 26836  	if (Error.captureStackTrace)
 26837  		Error.captureStackTrace(this, KeyParseError);
 26838  	this.name = 'KeyParseError';
 26839  	this.format = format;
 26840  	this.keyName = name;
 26841  	this.innerErr = innerErr;
 26842  	this.message = 'Failed to parse ' + name + ' as a valid ' + format +
 26843  	    ' format key: ' + innerErr.message;
 26844  }
 26845  util.inherits(KeyParseError, Error);
 26846  
 26847  function SignatureParseError(type, format, innerErr) {
 26848  	if (Error.captureStackTrace)
 26849  		Error.captureStackTrace(this, SignatureParseError);
 26850  	this.name = 'SignatureParseError';
 26851  	this.type = type;
 26852  	this.format = format;
 26853  	this.innerErr = innerErr;
 26854  	this.message = 'Failed to parse the given data as a ' + type +
 26855  	    ' signature in ' + format + ' format: ' + innerErr.message;
 26856  }
 26857  util.inherits(SignatureParseError, Error);
 26858  
 26859  function CertificateParseError(name, format, innerErr) {
 26860  	if (Error.captureStackTrace)
 26861  		Error.captureStackTrace(this, CertificateParseError);
 26862  	this.name = 'CertificateParseError';
 26863  	this.format = format;
 26864  	this.certName = name;
 26865  	this.innerErr = innerErr;
 26866  	this.message = 'Failed to parse ' + name + ' as a valid ' + format +
 26867  	    ' format certificate: ' + innerErr.message;
 26868  }
 26869  util.inherits(CertificateParseError, Error);
 26870  
 26871  function KeyEncryptedError(name, format) {
 26872  	if (Error.captureStackTrace)
 26873  		Error.captureStackTrace(this, KeyEncryptedError);
 26874  	this.name = 'KeyEncryptedError';
 26875  	this.format = format;
 26876  	this.keyName = name;
 26877  	this.message = 'The ' + format + ' format key ' + name + ' is ' +
 26878  	    'encrypted (password-protected), and no passphrase was ' +
 26879  	    'provided in `options`';
 26880  }
 26881  util.inherits(KeyEncryptedError, Error);
 26882  
 26883  module.exports = {
 26884  	FingerprintFormatError: FingerprintFormatError,
 26885  	InvalidAlgorithmError: InvalidAlgorithmError,
 26886  	KeyParseError: KeyParseError,
 26887  	SignatureParseError: SignatureParseError,
 26888  	KeyEncryptedError: KeyEncryptedError,
 26889  	CertificateParseError: CertificateParseError
 26890  };
 26891  
 26892  
 26893  /***/ }),
 26894  /* 75 */
 26895  /***/ (function(module, exports, __webpack_require__) {
 26896  
 26897  // Copyright 2015 Joyent, Inc.
 26898  
 26899  module.exports = Signature;
 26900  
 26901  var assert = __webpack_require__(16);
 26902  var Buffer = __webpack_require__(15).Buffer;
 26903  var algs = __webpack_require__(32);
 26904  var crypto = __webpack_require__(11);
 26905  var errs = __webpack_require__(74);
 26906  var utils = __webpack_require__(26);
 26907  var asn1 = __webpack_require__(66);
 26908  var SSHBuffer = __webpack_require__(159);
 26909  
 26910  var InvalidAlgorithmError = errs.InvalidAlgorithmError;
 26911  var SignatureParseError = errs.SignatureParseError;
 26912  
 26913  function Signature(opts) {
 26914  	assert.object(opts, 'options');
 26915  	assert.arrayOfObject(opts.parts, 'options.parts');
 26916  	assert.string(opts.type, 'options.type');
 26917  
 26918  	var partLookup = {};
 26919  	for (var i = 0; i < opts.parts.length; ++i) {
 26920  		var part = opts.parts[i];
 26921  		partLookup[part.name] = part;
 26922  	}
 26923  
 26924  	this.type = opts.type;
 26925  	this.hashAlgorithm = opts.hashAlgo;
 26926  	this.curve = opts.curve;
 26927  	this.parts = opts.parts;
 26928  	this.part = partLookup;
 26929  }
 26930  
 26931  Signature.prototype.toBuffer = function (format) {
 26932  	if (format === undefined)
 26933  		format = 'asn1';
 26934  	assert.string(format, 'format');
 26935  
 26936  	var buf;
 26937  	var stype = 'ssh-' + this.type;
 26938  
 26939  	switch (this.type) {
 26940  	case 'rsa':
 26941  		switch (this.hashAlgorithm) {
 26942  		case 'sha256':
 26943  			stype = 'rsa-sha2-256';
 26944  			break;
 26945  		case 'sha512':
 26946  			stype = 'rsa-sha2-512';
 26947  			break;
 26948  		case 'sha1':
 26949  		case undefined:
 26950  			break;
 26951  		default:
 26952  			throw (new Error('SSH signature ' +
 26953  			    'format does not support hash ' +
 26954  			    'algorithm ' + this.hashAlgorithm));
 26955  		}
 26956  		if (format === 'ssh') {
 26957  			buf = new SSHBuffer({});
 26958  			buf.writeString(stype);
 26959  			buf.writePart(this.part.sig);
 26960  			return (buf.toBuffer());
 26961  		} else {
 26962  			return (this.part.sig.data);
 26963  		}
 26964  		break;
 26965  
 26966  	case 'ed25519':
 26967  		if (format === 'ssh') {
 26968  			buf = new SSHBuffer({});
 26969  			buf.writeString(stype);
 26970  			buf.writePart(this.part.sig);
 26971  			return (buf.toBuffer());
 26972  		} else {
 26973  			return (this.part.sig.data);
 26974  		}
 26975  		break;
 26976  
 26977  	case 'dsa':
 26978  	case 'ecdsa':
 26979  		var r, s;
 26980  		if (format === 'asn1') {
 26981  			var der = new asn1.BerWriter();
 26982  			der.startSequence();
 26983  			r = utils.mpNormalize(this.part.r.data);
 26984  			s = utils.mpNormalize(this.part.s.data);
 26985  			der.writeBuffer(r, asn1.Ber.Integer);
 26986  			der.writeBuffer(s, asn1.Ber.Integer);
 26987  			der.endSequence();
 26988  			return (der.buffer);
 26989  		} else if (format === 'ssh' && this.type === 'dsa') {
 26990  			buf = new SSHBuffer({});
 26991  			buf.writeString('ssh-dss');
 26992  			r = this.part.r.data;
 26993  			if (r.length > 20 && r[0] === 0x00)
 26994  				r = r.slice(1);
 26995  			s = this.part.s.data;
 26996  			if (s.length > 20 && s[0] === 0x00)
 26997  				s = s.slice(1);
 26998  			if ((this.hashAlgorithm &&
 26999  			    this.hashAlgorithm !== 'sha1') ||
 27000  			    r.length + s.length !== 40) {
 27001  				throw (new Error('OpenSSH only supports ' +
 27002  				    'DSA signatures with SHA1 hash'));
 27003  			}
 27004  			buf.writeBuffer(Buffer.concat([r, s]));
 27005  			return (buf.toBuffer());
 27006  		} else if (format === 'ssh' && this.type === 'ecdsa') {
 27007  			var inner = new SSHBuffer({});
 27008  			r = this.part.r.data;
 27009  			inner.writeBuffer(r);
 27010  			inner.writePart(this.part.s);
 27011  
 27012  			buf = new SSHBuffer({});
 27013  			/* XXX: find a more proper way to do this? */
 27014  			var curve;
 27015  			if (r[0] === 0x00)
 27016  				r = r.slice(1);
 27017  			var sz = r.length * 8;
 27018  			if (sz === 256)
 27019  				curve = 'nistp256';
 27020  			else if (sz === 384)
 27021  				curve = 'nistp384';
 27022  			else if (sz === 528)
 27023  				curve = 'nistp521';
 27024  			buf.writeString('ecdsa-sha2-' + curve);
 27025  			buf.writeBuffer(inner.toBuffer());
 27026  			return (buf.toBuffer());
 27027  		}
 27028  		throw (new Error('Invalid signature format'));
 27029  	default:
 27030  		throw (new Error('Invalid signature data'));
 27031  	}
 27032  };
 27033  
 27034  Signature.prototype.toString = function (format) {
 27035  	assert.optionalString(format, 'format');
 27036  	return (this.toBuffer(format).toString('base64'));
 27037  };
 27038  
 27039  Signature.parse = function (data, type, format) {
 27040  	if (typeof (data) === 'string')
 27041  		data = Buffer.from(data, 'base64');
 27042  	assert.buffer(data, 'data');
 27043  	assert.string(format, 'format');
 27044  	assert.string(type, 'type');
 27045  
 27046  	var opts = {};
 27047  	opts.type = type.toLowerCase();
 27048  	opts.parts = [];
 27049  
 27050  	try {
 27051  		assert.ok(data.length > 0, 'signature must not be empty');
 27052  		switch (opts.type) {
 27053  		case 'rsa':
 27054  			return (parseOneNum(data, type, format, opts));
 27055  		case 'ed25519':
 27056  			return (parseOneNum(data, type, format, opts));
 27057  
 27058  		case 'dsa':
 27059  		case 'ecdsa':
 27060  			if (format === 'asn1')
 27061  				return (parseDSAasn1(data, type, format, opts));
 27062  			else if (opts.type === 'dsa')
 27063  				return (parseDSA(data, type, format, opts));
 27064  			else
 27065  				return (parseECDSA(data, type, format, opts));
 27066  
 27067  		default:
 27068  			throw (new InvalidAlgorithmError(type));
 27069  		}
 27070  
 27071  	} catch (e) {
 27072  		if (e instanceof InvalidAlgorithmError)
 27073  			throw (e);
 27074  		throw (new SignatureParseError(type, format, e));
 27075  	}
 27076  };
 27077  
 27078  function parseOneNum(data, type, format, opts) {
 27079  	if (format === 'ssh') {
 27080  		try {
 27081  			var buf = new SSHBuffer({buffer: data});
 27082  			var head = buf.readString();
 27083  		} catch (e) {
 27084  			/* fall through */
 27085  		}
 27086  		if (buf !== undefined) {
 27087  			var msg = 'SSH signature does not match expected ' +
 27088  			    'type (expected ' + type + ', got ' + head + ')';
 27089  			switch (head) {
 27090  			case 'ssh-rsa':
 27091  				assert.strictEqual(type, 'rsa', msg);
 27092  				opts.hashAlgo = 'sha1';
 27093  				break;
 27094  			case 'rsa-sha2-256':
 27095  				assert.strictEqual(type, 'rsa', msg);
 27096  				opts.hashAlgo = 'sha256';
 27097  				break;
 27098  			case 'rsa-sha2-512':
 27099  				assert.strictEqual(type, 'rsa', msg);
 27100  				opts.hashAlgo = 'sha512';
 27101  				break;
 27102  			case 'ssh-ed25519':
 27103  				assert.strictEqual(type, 'ed25519', msg);
 27104  				opts.hashAlgo = 'sha512';
 27105  				break;
 27106  			default:
 27107  				throw (new Error('Unknown SSH signature ' +
 27108  				    'type: ' + head));
 27109  			}
 27110  			var sig = buf.readPart();
 27111  			assert.ok(buf.atEnd(), 'extra trailing bytes');
 27112  			sig.name = 'sig';
 27113  			opts.parts.push(sig);
 27114  			return (new Signature(opts));
 27115  		}
 27116  	}
 27117  	opts.parts.push({name: 'sig', data: data});
 27118  	return (new Signature(opts));
 27119  }
 27120  
 27121  function parseDSAasn1(data, type, format, opts) {
 27122  	var der = new asn1.BerReader(data);
 27123  	der.readSequence();
 27124  	var r = der.readString(asn1.Ber.Integer, true);
 27125  	var s = der.readString(asn1.Ber.Integer, true);
 27126  
 27127  	opts.parts.push({name: 'r', data: utils.mpNormalize(r)});
 27128  	opts.parts.push({name: 's', data: utils.mpNormalize(s)});
 27129  
 27130  	return (new Signature(opts));
 27131  }
 27132  
 27133  function parseDSA(data, type, format, opts) {
 27134  	if (data.length != 40) {
 27135  		var buf = new SSHBuffer({buffer: data});
 27136  		var d = buf.readBuffer();
 27137  		if (d.toString('ascii') === 'ssh-dss')
 27138  			d = buf.readBuffer();
 27139  		assert.ok(buf.atEnd(), 'extra trailing bytes');
 27140  		assert.strictEqual(d.length, 40, 'invalid inner length');
 27141  		data = d;
 27142  	}
 27143  	opts.parts.push({name: 'r', data: data.slice(0, 20)});
 27144  	opts.parts.push({name: 's', data: data.slice(20, 40)});
 27145  	return (new Signature(opts));
 27146  }
 27147  
 27148  function parseECDSA(data, type, format, opts) {
 27149  	var buf = new SSHBuffer({buffer: data});
 27150  
 27151  	var r, s;
 27152  	var inner = buf.readBuffer();
 27153  	var stype = inner.toString('ascii');
 27154  	if (stype.slice(0, 6) === 'ecdsa-') {
 27155  		var parts = stype.split('-');
 27156  		assert.strictEqual(parts[0], 'ecdsa');
 27157  		assert.strictEqual(parts[1], 'sha2');
 27158  		opts.curve = parts[2];
 27159  		switch (opts.curve) {
 27160  		case 'nistp256':
 27161  			opts.hashAlgo = 'sha256';
 27162  			break;
 27163  		case 'nistp384':
 27164  			opts.hashAlgo = 'sha384';
 27165  			break;
 27166  		case 'nistp521':
 27167  			opts.hashAlgo = 'sha512';
 27168  			break;
 27169  		default:
 27170  			throw (new Error('Unsupported ECDSA curve: ' +
 27171  			    opts.curve));
 27172  		}
 27173  		inner = buf.readBuffer();
 27174  		assert.ok(buf.atEnd(), 'extra trailing bytes on outer');
 27175  		buf = new SSHBuffer({buffer: inner});
 27176  		r = buf.readPart();
 27177  	} else {
 27178  		r = {data: inner};
 27179  	}
 27180  
 27181  	s = buf.readPart();
 27182  	assert.ok(buf.atEnd(), 'extra trailing bytes');
 27183  
 27184  	r.name = 'r';
 27185  	s.name = 's';
 27186  
 27187  	opts.parts.push(r);
 27188  	opts.parts.push(s);
 27189  	return (new Signature(opts));
 27190  }
 27191  
 27192  Signature.isSignature = function (obj, ver) {
 27193  	return (utils.isCompatible(obj, Signature, ver));
 27194  };
 27195  
 27196  /*
 27197   * API versions for Signature:
 27198   * [1,0] -- initial ver
 27199   * [2,0] -- support for rsa in full ssh format, compat with sshpk-agent
 27200   *          hashAlgorithm property
 27201   * [2,1] -- first tagged version
 27202   */
 27203  Signature.prototype._sshpkApiVersion = [2, 1];
 27204  
 27205  Signature._oldVersionDetect = function (obj) {
 27206  	assert.func(obj.toBuffer);
 27207  	if (obj.hasOwnProperty('hashAlgorithm'))
 27208  		return ([2, 0]);
 27209  	return ([1, 0]);
 27210  };
 27211  
 27212  
 27213  /***/ }),
 27214  /* 76 */
 27215  /***/ (function(module, exports, __webpack_require__) {
 27216  
 27217  (function(nacl) {
 27218  'use strict';
 27219  
 27220  // Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.
 27221  // Public domain.
 27222  //
 27223  // Implementation derived from TweetNaCl version 20140427.
 27224  // See for details: http://tweetnacl.cr.yp.to/
 27225  
 27226  var gf = function(init) {
 27227    var i, r = new Float64Array(16);
 27228    if (init) for (i = 0; i < init.length; i++) r[i] = init[i];
 27229    return r;
 27230  };
 27231  
 27232  //  Pluggable, initialized in high-level API below.
 27233  var randombytes = function(/* x, n */) { throw new Error('no PRNG'); };
 27234  
 27235  var _0 = new Uint8Array(16);
 27236  var _9 = new Uint8Array(32); _9[0] = 9;
 27237  
 27238  var gf0 = gf(),
 27239      gf1 = gf([1]),
 27240      _121665 = gf([0xdb41, 1]),
 27241      D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),
 27242      D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),
 27243      X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),
 27244      Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),
 27245      I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);
 27246  
 27247  function ts64(x, i, h, l) {
 27248    x[i]   = (h >> 24) & 0xff;
 27249    x[i+1] = (h >> 16) & 0xff;
 27250    x[i+2] = (h >>  8) & 0xff;
 27251    x[i+3] = h & 0xff;
 27252    x[i+4] = (l >> 24)  & 0xff;
 27253    x[i+5] = (l >> 16)  & 0xff;
 27254    x[i+6] = (l >>  8)  & 0xff;
 27255    x[i+7] = l & 0xff;
 27256  }
 27257  
 27258  function vn(x, xi, y, yi, n) {
 27259    var i,d = 0;
 27260    for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];
 27261    return (1 & ((d - 1) >>> 8)) - 1;
 27262  }
 27263  
 27264  function crypto_verify_16(x, xi, y, yi) {
 27265    return vn(x,xi,y,yi,16);
 27266  }
 27267  
 27268  function crypto_verify_32(x, xi, y, yi) {
 27269    return vn(x,xi,y,yi,32);
 27270  }
 27271  
 27272  function core_salsa20(o, p, k, c) {
 27273    var j0  = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,
 27274        j1  = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,
 27275        j2  = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,
 27276        j3  = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,
 27277        j4  = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,
 27278        j5  = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,
 27279        j6  = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,
 27280        j7  = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,
 27281        j8  = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,
 27282        j9  = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,
 27283        j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,
 27284        j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,
 27285        j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,
 27286        j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,
 27287        j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,
 27288        j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;
 27289  
 27290    var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,
 27291        x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,
 27292        x15 = j15, u;
 27293  
 27294    for (var i = 0; i < 20; i += 2) {
 27295      u = x0 + x12 | 0;
 27296      x4 ^= u<<7 | u>>>(32-7);
 27297      u = x4 + x0 | 0;
 27298      x8 ^= u<<9 | u>>>(32-9);
 27299      u = x8 + x4 | 0;
 27300      x12 ^= u<<13 | u>>>(32-13);
 27301      u = x12 + x8 | 0;
 27302      x0 ^= u<<18 | u>>>(32-18);
 27303  
 27304      u = x5 + x1 | 0;
 27305      x9 ^= u<<7 | u>>>(32-7);
 27306      u = x9 + x5 | 0;
 27307      x13 ^= u<<9 | u>>>(32-9);
 27308      u = x13 + x9 | 0;
 27309      x1 ^= u<<13 | u>>>(32-13);
 27310      u = x1 + x13 | 0;
 27311      x5 ^= u<<18 | u>>>(32-18);
 27312  
 27313      u = x10 + x6 | 0;
 27314      x14 ^= u<<7 | u>>>(32-7);
 27315      u = x14 + x10 | 0;
 27316      x2 ^= u<<9 | u>>>(32-9);
 27317      u = x2 + x14 | 0;
 27318      x6 ^= u<<13 | u>>>(32-13);
 27319      u = x6 + x2 | 0;
 27320      x10 ^= u<<18 | u>>>(32-18);
 27321  
 27322      u = x15 + x11 | 0;
 27323      x3 ^= u<<7 | u>>>(32-7);
 27324      u = x3 + x15 | 0;
 27325      x7 ^= u<<9 | u>>>(32-9);
 27326      u = x7 + x3 | 0;
 27327      x11 ^= u<<13 | u>>>(32-13);
 27328      u = x11 + x7 | 0;
 27329      x15 ^= u<<18 | u>>>(32-18);
 27330  
 27331      u = x0 + x3 | 0;
 27332      x1 ^= u<<7 | u>>>(32-7);
 27333      u = x1 + x0 | 0;
 27334      x2 ^= u<<9 | u>>>(32-9);
 27335      u = x2 + x1 | 0;
 27336      x3 ^= u<<13 | u>>>(32-13);
 27337      u = x3 + x2 | 0;
 27338      x0 ^= u<<18 | u>>>(32-18);
 27339  
 27340      u = x5 + x4 | 0;
 27341      x6 ^= u<<7 | u>>>(32-7);
 27342      u = x6 + x5 | 0;
 27343      x7 ^= u<<9 | u>>>(32-9);
 27344      u = x7 + x6 | 0;
 27345      x4 ^= u<<13 | u>>>(32-13);
 27346      u = x4 + x7 | 0;
 27347      x5 ^= u<<18 | u>>>(32-18);
 27348  
 27349      u = x10 + x9 | 0;
 27350      x11 ^= u<<7 | u>>>(32-7);
 27351      u = x11 + x10 | 0;
 27352      x8 ^= u<<9 | u>>>(32-9);
 27353      u = x8 + x11 | 0;
 27354      x9 ^= u<<13 | u>>>(32-13);
 27355      u = x9 + x8 | 0;
 27356      x10 ^= u<<18 | u>>>(32-18);
 27357  
 27358      u = x15 + x14 | 0;
 27359      x12 ^= u<<7 | u>>>(32-7);
 27360      u = x12 + x15 | 0;
 27361      x13 ^= u<<9 | u>>>(32-9);
 27362      u = x13 + x12 | 0;
 27363      x14 ^= u<<13 | u>>>(32-13);
 27364      u = x14 + x13 | 0;
 27365      x15 ^= u<<18 | u>>>(32-18);
 27366    }
 27367     x0 =  x0 +  j0 | 0;
 27368     x1 =  x1 +  j1 | 0;
 27369     x2 =  x2 +  j2 | 0;
 27370     x3 =  x3 +  j3 | 0;
 27371     x4 =  x4 +  j4 | 0;
 27372     x5 =  x5 +  j5 | 0;
 27373     x6 =  x6 +  j6 | 0;
 27374     x7 =  x7 +  j7 | 0;
 27375     x8 =  x8 +  j8 | 0;
 27376     x9 =  x9 +  j9 | 0;
 27377    x10 = x10 + j10 | 0;
 27378    x11 = x11 + j11 | 0;
 27379    x12 = x12 + j12 | 0;
 27380    x13 = x13 + j13 | 0;
 27381    x14 = x14 + j14 | 0;
 27382    x15 = x15 + j15 | 0;
 27383  
 27384    o[ 0] = x0 >>>  0 & 0xff;
 27385    o[ 1] = x0 >>>  8 & 0xff;
 27386    o[ 2] = x0 >>> 16 & 0xff;
 27387    o[ 3] = x0 >>> 24 & 0xff;
 27388  
 27389    o[ 4] = x1 >>>  0 & 0xff;
 27390    o[ 5] = x1 >>>  8 & 0xff;
 27391    o[ 6] = x1 >>> 16 & 0xff;
 27392    o[ 7] = x1 >>> 24 & 0xff;
 27393  
 27394    o[ 8] = x2 >>>  0 & 0xff;
 27395    o[ 9] = x2 >>>  8 & 0xff;
 27396    o[10] = x2 >>> 16 & 0xff;
 27397    o[11] = x2 >>> 24 & 0xff;
 27398  
 27399    o[12] = x3 >>>  0 & 0xff;
 27400    o[13] = x3 >>>  8 & 0xff;
 27401    o[14] = x3 >>> 16 & 0xff;
 27402    o[15] = x3 >>> 24 & 0xff;
 27403  
 27404    o[16] = x4 >>>  0 & 0xff;
 27405    o[17] = x4 >>>  8 & 0xff;
 27406    o[18] = x4 >>> 16 & 0xff;
 27407    o[19] = x4 >>> 24 & 0xff;
 27408  
 27409    o[20] = x5 >>>  0 & 0xff;
 27410    o[21] = x5 >>>  8 & 0xff;
 27411    o[22] = x5 >>> 16 & 0xff;
 27412    o[23] = x5 >>> 24 & 0xff;
 27413  
 27414    o[24] = x6 >>>  0 & 0xff;
 27415    o[25] = x6 >>>  8 & 0xff;
 27416    o[26] = x6 >>> 16 & 0xff;
 27417    o[27] = x6 >>> 24 & 0xff;
 27418  
 27419    o[28] = x7 >>>  0 & 0xff;
 27420    o[29] = x7 >>>  8 & 0xff;
 27421    o[30] = x7 >>> 16 & 0xff;
 27422    o[31] = x7 >>> 24 & 0xff;
 27423  
 27424    o[32] = x8 >>>  0 & 0xff;
 27425    o[33] = x8 >>>  8 & 0xff;
 27426    o[34] = x8 >>> 16 & 0xff;
 27427    o[35] = x8 >>> 24 & 0xff;
 27428  
 27429    o[36] = x9 >>>  0 & 0xff;
 27430    o[37] = x9 >>>  8 & 0xff;
 27431    o[38] = x9 >>> 16 & 0xff;
 27432    o[39] = x9 >>> 24 & 0xff;
 27433  
 27434    o[40] = x10 >>>  0 & 0xff;
 27435    o[41] = x10 >>>  8 & 0xff;
 27436    o[42] = x10 >>> 16 & 0xff;
 27437    o[43] = x10 >>> 24 & 0xff;
 27438  
 27439    o[44] = x11 >>>  0 & 0xff;
 27440    o[45] = x11 >>>  8 & 0xff;
 27441    o[46] = x11 >>> 16 & 0xff;
 27442    o[47] = x11 >>> 24 & 0xff;
 27443  
 27444    o[48] = x12 >>>  0 & 0xff;
 27445    o[49] = x12 >>>  8 & 0xff;
 27446    o[50] = x12 >>> 16 & 0xff;
 27447    o[51] = x12 >>> 24 & 0xff;
 27448  
 27449    o[52] = x13 >>>  0 & 0xff;
 27450    o[53] = x13 >>>  8 & 0xff;
 27451    o[54] = x13 >>> 16 & 0xff;
 27452    o[55] = x13 >>> 24 & 0xff;
 27453  
 27454    o[56] = x14 >>>  0 & 0xff;
 27455    o[57] = x14 >>>  8 & 0xff;
 27456    o[58] = x14 >>> 16 & 0xff;
 27457    o[59] = x14 >>> 24 & 0xff;
 27458  
 27459    o[60] = x15 >>>  0 & 0xff;
 27460    o[61] = x15 >>>  8 & 0xff;
 27461    o[62] = x15 >>> 16 & 0xff;
 27462    o[63] = x15 >>> 24 & 0xff;
 27463  }
 27464  
 27465  function core_hsalsa20(o,p,k,c) {
 27466    var j0  = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,
 27467        j1  = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,
 27468        j2  = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,
 27469        j3  = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,
 27470        j4  = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,
 27471        j5  = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,
 27472        j6  = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,
 27473        j7  = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,
 27474        j8  = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,
 27475        j9  = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,
 27476        j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,
 27477        j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,
 27478        j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,
 27479        j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,
 27480        j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,
 27481        j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;
 27482  
 27483    var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,
 27484        x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,
 27485        x15 = j15, u;
 27486  
 27487    for (var i = 0; i < 20; i += 2) {
 27488      u = x0 + x12 | 0;
 27489      x4 ^= u<<7 | u>>>(32-7);
 27490      u = x4 + x0 | 0;
 27491      x8 ^= u<<9 | u>>>(32-9);
 27492      u = x8 + x4 | 0;
 27493      x12 ^= u<<13 | u>>>(32-13);
 27494      u = x12 + x8 | 0;
 27495      x0 ^= u<<18 | u>>>(32-18);
 27496  
 27497      u = x5 + x1 | 0;
 27498      x9 ^= u<<7 | u>>>(32-7);
 27499      u = x9 + x5 | 0;
 27500      x13 ^= u<<9 | u>>>(32-9);
 27501      u = x13 + x9 | 0;
 27502      x1 ^= u<<13 | u>>>(32-13);
 27503      u = x1 + x13 | 0;
 27504      x5 ^= u<<18 | u>>>(32-18);
 27505  
 27506      u = x10 + x6 | 0;
 27507      x14 ^= u<<7 | u>>>(32-7);
 27508      u = x14 + x10 | 0;
 27509      x2 ^= u<<9 | u>>>(32-9);
 27510      u = x2 + x14 | 0;
 27511      x6 ^= u<<13 | u>>>(32-13);
 27512      u = x6 + x2 | 0;
 27513      x10 ^= u<<18 | u>>>(32-18);
 27514  
 27515      u = x15 + x11 | 0;
 27516      x3 ^= u<<7 | u>>>(32-7);
 27517      u = x3 + x15 | 0;
 27518      x7 ^= u<<9 | u>>>(32-9);
 27519      u = x7 + x3 | 0;
 27520      x11 ^= u<<13 | u>>>(32-13);
 27521      u = x11 + x7 | 0;
 27522      x15 ^= u<<18 | u>>>(32-18);
 27523  
 27524      u = x0 + x3 | 0;
 27525      x1 ^= u<<7 | u>>>(32-7);
 27526      u = x1 + x0 | 0;
 27527      x2 ^= u<<9 | u>>>(32-9);
 27528      u = x2 + x1 | 0;
 27529      x3 ^= u<<13 | u>>>(32-13);
 27530      u = x3 + x2 | 0;
 27531      x0 ^= u<<18 | u>>>(32-18);
 27532  
 27533      u = x5 + x4 | 0;
 27534      x6 ^= u<<7 | u>>>(32-7);
 27535      u = x6 + x5 | 0;
 27536      x7 ^= u<<9 | u>>>(32-9);
 27537      u = x7 + x6 | 0;
 27538      x4 ^= u<<13 | u>>>(32-13);
 27539      u = x4 + x7 | 0;
 27540      x5 ^= u<<18 | u>>>(32-18);
 27541  
 27542      u = x10 + x9 | 0;
 27543      x11 ^= u<<7 | u>>>(32-7);
 27544      u = x11 + x10 | 0;
 27545      x8 ^= u<<9 | u>>>(32-9);
 27546      u = x8 + x11 | 0;
 27547      x9 ^= u<<13 | u>>>(32-13);
 27548      u = x9 + x8 | 0;
 27549      x10 ^= u<<18 | u>>>(32-18);
 27550  
 27551      u = x15 + x14 | 0;
 27552      x12 ^= u<<7 | u>>>(32-7);
 27553      u = x12 + x15 | 0;
 27554      x13 ^= u<<9 | u>>>(32-9);
 27555      u = x13 + x12 | 0;
 27556      x14 ^= u<<13 | u>>>(32-13);
 27557      u = x14 + x13 | 0;
 27558      x15 ^= u<<18 | u>>>(32-18);
 27559    }
 27560  
 27561    o[ 0] = x0 >>>  0 & 0xff;
 27562    o[ 1] = x0 >>>  8 & 0xff;
 27563    o[ 2] = x0 >>> 16 & 0xff;
 27564    o[ 3] = x0 >>> 24 & 0xff;
 27565  
 27566    o[ 4] = x5 >>>  0 & 0xff;
 27567    o[ 5] = x5 >>>  8 & 0xff;
 27568    o[ 6] = x5 >>> 16 & 0xff;
 27569    o[ 7] = x5 >>> 24 & 0xff;
 27570  
 27571    o[ 8] = x10 >>>  0 & 0xff;
 27572    o[ 9] = x10 >>>  8 & 0xff;
 27573    o[10] = x10 >>> 16 & 0xff;
 27574    o[11] = x10 >>> 24 & 0xff;
 27575  
 27576    o[12] = x15 >>>  0 & 0xff;
 27577    o[13] = x15 >>>  8 & 0xff;
 27578    o[14] = x15 >>> 16 & 0xff;
 27579    o[15] = x15 >>> 24 & 0xff;
 27580  
 27581    o[16] = x6 >>>  0 & 0xff;
 27582    o[17] = x6 >>>  8 & 0xff;
 27583    o[18] = x6 >>> 16 & 0xff;
 27584    o[19] = x6 >>> 24 & 0xff;
 27585  
 27586    o[20] = x7 >>>  0 & 0xff;
 27587    o[21] = x7 >>>  8 & 0xff;
 27588    o[22] = x7 >>> 16 & 0xff;
 27589    o[23] = x7 >>> 24 & 0xff;
 27590  
 27591    o[24] = x8 >>>  0 & 0xff;
 27592    o[25] = x8 >>>  8 & 0xff;
 27593    o[26] = x8 >>> 16 & 0xff;
 27594    o[27] = x8 >>> 24 & 0xff;
 27595  
 27596    o[28] = x9 >>>  0 & 0xff;
 27597    o[29] = x9 >>>  8 & 0xff;
 27598    o[30] = x9 >>> 16 & 0xff;
 27599    o[31] = x9 >>> 24 & 0xff;
 27600  }
 27601  
 27602  function crypto_core_salsa20(out,inp,k,c) {
 27603    core_salsa20(out,inp,k,c);
 27604  }
 27605  
 27606  function crypto_core_hsalsa20(out,inp,k,c) {
 27607    core_hsalsa20(out,inp,k,c);
 27608  }
 27609  
 27610  var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);
 27611              // "expand 32-byte k"
 27612  
 27613  function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {
 27614    var z = new Uint8Array(16), x = new Uint8Array(64);
 27615    var u, i;
 27616    for (i = 0; i < 16; i++) z[i] = 0;
 27617    for (i = 0; i < 8; i++) z[i] = n[i];
 27618    while (b >= 64) {
 27619      crypto_core_salsa20(x,z,k,sigma);
 27620      for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];
 27621      u = 1;
 27622      for (i = 8; i < 16; i++) {
 27623        u = u + (z[i] & 0xff) | 0;
 27624        z[i] = u & 0xff;
 27625        u >>>= 8;
 27626      }
 27627      b -= 64;
 27628      cpos += 64;
 27629      mpos += 64;
 27630    }
 27631    if (b > 0) {
 27632      crypto_core_salsa20(x,z,k,sigma);
 27633      for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];
 27634    }
 27635    return 0;
 27636  }
 27637  
 27638  function crypto_stream_salsa20(c,cpos,b,n,k) {
 27639    var z = new Uint8Array(16), x = new Uint8Array(64);
 27640    var u, i;
 27641    for (i = 0; i < 16; i++) z[i] = 0;
 27642    for (i = 0; i < 8; i++) z[i] = n[i];
 27643    while (b >= 64) {
 27644      crypto_core_salsa20(x,z,k,sigma);
 27645      for (i = 0; i < 64; i++) c[cpos+i] = x[i];
 27646      u = 1;
 27647      for (i = 8; i < 16; i++) {
 27648        u = u + (z[i] & 0xff) | 0;
 27649        z[i] = u & 0xff;
 27650        u >>>= 8;
 27651      }
 27652      b -= 64;
 27653      cpos += 64;
 27654    }
 27655    if (b > 0) {
 27656      crypto_core_salsa20(x,z,k,sigma);
 27657      for (i = 0; i < b; i++) c[cpos+i] = x[i];
 27658    }
 27659    return 0;
 27660  }
 27661  
 27662  function crypto_stream(c,cpos,d,n,k) {
 27663    var s = new Uint8Array(32);
 27664    crypto_core_hsalsa20(s,n,k,sigma);
 27665    var sn = new Uint8Array(8);
 27666    for (var i = 0; i < 8; i++) sn[i] = n[i+16];
 27667    return crypto_stream_salsa20(c,cpos,d,sn,s);
 27668  }
 27669  
 27670  function crypto_stream_xor(c,cpos,m,mpos,d,n,k) {
 27671    var s = new Uint8Array(32);
 27672    crypto_core_hsalsa20(s,n,k,sigma);
 27673    var sn = new Uint8Array(8);
 27674    for (var i = 0; i < 8; i++) sn[i] = n[i+16];
 27675    return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);
 27676  }
 27677  
 27678  /*
 27679  * Port of Andrew Moon's Poly1305-donna-16. Public domain.
 27680  * https://github.com/floodyberry/poly1305-donna
 27681  */
 27682  
 27683  var poly1305 = function(key) {
 27684    this.buffer = new Uint8Array(16);
 27685    this.r = new Uint16Array(10);
 27686    this.h = new Uint16Array(10);
 27687    this.pad = new Uint16Array(8);
 27688    this.leftover = 0;
 27689    this.fin = 0;
 27690  
 27691    var t0, t1, t2, t3, t4, t5, t6, t7;
 27692  
 27693    t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0                     ) & 0x1fff;
 27694    t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 <<  3)) & 0x1fff;
 27695    t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 <<  6)) & 0x1f03;
 27696    t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>>  7) | (t3 <<  9)) & 0x1fff;
 27697    t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>>  4) | (t4 << 12)) & 0x00ff;
 27698    this.r[5] = ((t4 >>>  1)) & 0x1ffe;
 27699    t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 <<  2)) & 0x1fff;
 27700    t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 <<  5)) & 0x1f81;
 27701    t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>>  8) | (t7 <<  8)) & 0x1fff;
 27702    this.r[9] = ((t7 >>>  5)) & 0x007f;
 27703  
 27704    this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;
 27705    this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;
 27706    this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;
 27707    this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;
 27708    this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;
 27709    this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;
 27710    this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;
 27711    this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;
 27712  };
 27713  
 27714  poly1305.prototype.blocks = function(m, mpos, bytes) {
 27715    var hibit = this.fin ? 0 : (1 << 11);
 27716    var t0, t1, t2, t3, t4, t5, t6, t7, c;
 27717    var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;
 27718  
 27719    var h0 = this.h[0],
 27720        h1 = this.h[1],
 27721        h2 = this.h[2],
 27722        h3 = this.h[3],
 27723        h4 = this.h[4],
 27724        h5 = this.h[5],
 27725        h6 = this.h[6],
 27726        h7 = this.h[7],
 27727        h8 = this.h[8],
 27728        h9 = this.h[9];
 27729  
 27730    var r0 = this.r[0],
 27731        r1 = this.r[1],
 27732        r2 = this.r[2],
 27733        r3 = this.r[3],
 27734        r4 = this.r[4],
 27735        r5 = this.r[5],
 27736        r6 = this.r[6],
 27737        r7 = this.r[7],
 27738        r8 = this.r[8],
 27739        r9 = this.r[9];
 27740  
 27741    while (bytes >= 16) {
 27742      t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0                     ) & 0x1fff;
 27743      t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 <<  3)) & 0x1fff;
 27744      t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 <<  6)) & 0x1fff;
 27745      t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>>  7) | (t3 <<  9)) & 0x1fff;
 27746      t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>>  4) | (t4 << 12)) & 0x1fff;
 27747      h5 += ((t4 >>>  1)) & 0x1fff;
 27748      t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 <<  2)) & 0x1fff;
 27749      t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 <<  5)) & 0x1fff;
 27750      t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>>  8) | (t7 <<  8)) & 0x1fff;
 27751      h9 += ((t7 >>> 5)) | hibit;
 27752  
 27753      c = 0;
 27754  
 27755      d0 = c;
 27756      d0 += h0 * r0;
 27757      d0 += h1 * (5 * r9);
 27758      d0 += h2 * (5 * r8);
 27759      d0 += h3 * (5 * r7);
 27760      d0 += h4 * (5 * r6);
 27761      c = (d0 >>> 13); d0 &= 0x1fff;
 27762      d0 += h5 * (5 * r5);
 27763      d0 += h6 * (5 * r4);
 27764      d0 += h7 * (5 * r3);
 27765      d0 += h8 * (5 * r2);
 27766      d0 += h9 * (5 * r1);
 27767      c += (d0 >>> 13); d0 &= 0x1fff;
 27768  
 27769      d1 = c;
 27770      d1 += h0 * r1;
 27771      d1 += h1 * r0;
 27772      d1 += h2 * (5 * r9);
 27773      d1 += h3 * (5 * r8);
 27774      d1 += h4 * (5 * r7);
 27775      c = (d1 >>> 13); d1 &= 0x1fff;
 27776      d1 += h5 * (5 * r6);
 27777      d1 += h6 * (5 * r5);
 27778      d1 += h7 * (5 * r4);
 27779      d1 += h8 * (5 * r3);
 27780      d1 += h9 * (5 * r2);
 27781      c += (d1 >>> 13); d1 &= 0x1fff;
 27782  
 27783      d2 = c;
 27784      d2 += h0 * r2;
 27785      d2 += h1 * r1;
 27786      d2 += h2 * r0;
 27787      d2 += h3 * (5 * r9);
 27788      d2 += h4 * (5 * r8);
 27789      c = (d2 >>> 13); d2 &= 0x1fff;
 27790      d2 += h5 * (5 * r7);
 27791      d2 += h6 * (5 * r6);
 27792      d2 += h7 * (5 * r5);
 27793      d2 += h8 * (5 * r4);
 27794      d2 += h9 * (5 * r3);
 27795      c += (d2 >>> 13); d2 &= 0x1fff;
 27796  
 27797      d3 = c;
 27798      d3 += h0 * r3;
 27799      d3 += h1 * r2;
 27800      d3 += h2 * r1;
 27801      d3 += h3 * r0;
 27802      d3 += h4 * (5 * r9);
 27803      c = (d3 >>> 13); d3 &= 0x1fff;
 27804      d3 += h5 * (5 * r8);
 27805      d3 += h6 * (5 * r7);
 27806      d3 += h7 * (5 * r6);
 27807      d3 += h8 * (5 * r5);
 27808      d3 += h9 * (5 * r4);
 27809      c += (d3 >>> 13); d3 &= 0x1fff;
 27810  
 27811      d4 = c;
 27812      d4 += h0 * r4;
 27813      d4 += h1 * r3;
 27814      d4 += h2 * r2;
 27815      d4 += h3 * r1;
 27816      d4 += h4 * r0;
 27817      c = (d4 >>> 13); d4 &= 0x1fff;
 27818      d4 += h5 * (5 * r9);
 27819      d4 += h6 * (5 * r8);
 27820      d4 += h7 * (5 * r7);
 27821      d4 += h8 * (5 * r6);
 27822      d4 += h9 * (5 * r5);
 27823      c += (d4 >>> 13); d4 &= 0x1fff;
 27824  
 27825      d5 = c;
 27826      d5 += h0 * r5;
 27827      d5 += h1 * r4;
 27828      d5 += h2 * r3;
 27829      d5 += h3 * r2;
 27830      d5 += h4 * r1;
 27831      c = (d5 >>> 13); d5 &= 0x1fff;
 27832      d5 += h5 * r0;
 27833      d5 += h6 * (5 * r9);
 27834      d5 += h7 * (5 * r8);
 27835      d5 += h8 * (5 * r7);
 27836      d5 += h9 * (5 * r6);
 27837      c += (d5 >>> 13); d5 &= 0x1fff;
 27838  
 27839      d6 = c;
 27840      d6 += h0 * r6;
 27841      d6 += h1 * r5;
 27842      d6 += h2 * r4;
 27843      d6 += h3 * r3;
 27844      d6 += h4 * r2;
 27845      c = (d6 >>> 13); d6 &= 0x1fff;
 27846      d6 += h5 * r1;
 27847      d6 += h6 * r0;
 27848      d6 += h7 * (5 * r9);
 27849      d6 += h8 * (5 * r8);
 27850      d6 += h9 * (5 * r7);
 27851      c += (d6 >>> 13); d6 &= 0x1fff;
 27852  
 27853      d7 = c;
 27854      d7 += h0 * r7;
 27855      d7 += h1 * r6;
 27856      d7 += h2 * r5;
 27857      d7 += h3 * r4;
 27858      d7 += h4 * r3;
 27859      c = (d7 >>> 13); d7 &= 0x1fff;
 27860      d7 += h5 * r2;
 27861      d7 += h6 * r1;
 27862      d7 += h7 * r0;
 27863      d7 += h8 * (5 * r9);
 27864      d7 += h9 * (5 * r8);
 27865      c += (d7 >>> 13); d7 &= 0x1fff;
 27866  
 27867      d8 = c;
 27868      d8 += h0 * r8;
 27869      d8 += h1 * r7;
 27870      d8 += h2 * r6;
 27871      d8 += h3 * r5;
 27872      d8 += h4 * r4;
 27873      c = (d8 >>> 13); d8 &= 0x1fff;
 27874      d8 += h5 * r3;
 27875      d8 += h6 * r2;
 27876      d8 += h7 * r1;
 27877      d8 += h8 * r0;
 27878      d8 += h9 * (5 * r9);
 27879      c += (d8 >>> 13); d8 &= 0x1fff;
 27880  
 27881      d9 = c;
 27882      d9 += h0 * r9;
 27883      d9 += h1 * r8;
 27884      d9 += h2 * r7;
 27885      d9 += h3 * r6;
 27886      d9 += h4 * r5;
 27887      c = (d9 >>> 13); d9 &= 0x1fff;
 27888      d9 += h5 * r4;
 27889      d9 += h6 * r3;
 27890      d9 += h7 * r2;
 27891      d9 += h8 * r1;
 27892      d9 += h9 * r0;
 27893      c += (d9 >>> 13); d9 &= 0x1fff;
 27894  
 27895      c = (((c << 2) + c)) | 0;
 27896      c = (c + d0) | 0;
 27897      d0 = c & 0x1fff;
 27898      c = (c >>> 13);
 27899      d1 += c;
 27900  
 27901      h0 = d0;
 27902      h1 = d1;
 27903      h2 = d2;
 27904      h3 = d3;
 27905      h4 = d4;
 27906      h5 = d5;
 27907      h6 = d6;
 27908      h7 = d7;
 27909      h8 = d8;
 27910      h9 = d9;
 27911  
 27912      mpos += 16;
 27913      bytes -= 16;
 27914    }
 27915    this.h[0] = h0;
 27916    this.h[1] = h1;
 27917    this.h[2] = h2;
 27918    this.h[3] = h3;
 27919    this.h[4] = h4;
 27920    this.h[5] = h5;
 27921    this.h[6] = h6;
 27922    this.h[7] = h7;
 27923    this.h[8] = h8;
 27924    this.h[9] = h9;
 27925  };
 27926  
 27927  poly1305.prototype.finish = function(mac, macpos) {
 27928    var g = new Uint16Array(10);
 27929    var c, mask, f, i;
 27930  
 27931    if (this.leftover) {
 27932      i = this.leftover;
 27933      this.buffer[i++] = 1;
 27934      for (; i < 16; i++) this.buffer[i] = 0;
 27935      this.fin = 1;
 27936      this.blocks(this.buffer, 0, 16);
 27937    }
 27938  
 27939    c = this.h[1] >>> 13;
 27940    this.h[1] &= 0x1fff;
 27941    for (i = 2; i < 10; i++) {
 27942      this.h[i] += c;
 27943      c = this.h[i] >>> 13;
 27944      this.h[i] &= 0x1fff;
 27945    }
 27946    this.h[0] += (c * 5);
 27947    c = this.h[0] >>> 13;
 27948    this.h[0] &= 0x1fff;
 27949    this.h[1] += c;
 27950    c = this.h[1] >>> 13;
 27951    this.h[1] &= 0x1fff;
 27952    this.h[2] += c;
 27953  
 27954    g[0] = this.h[0] + 5;
 27955    c = g[0] >>> 13;
 27956    g[0] &= 0x1fff;
 27957    for (i = 1; i < 10; i++) {
 27958      g[i] = this.h[i] + c;
 27959      c = g[i] >>> 13;
 27960      g[i] &= 0x1fff;
 27961    }
 27962    g[9] -= (1 << 13);
 27963  
 27964    mask = (c ^ 1) - 1;
 27965    for (i = 0; i < 10; i++) g[i] &= mask;
 27966    mask = ~mask;
 27967    for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];
 27968  
 27969    this.h[0] = ((this.h[0]       ) | (this.h[1] << 13)                    ) & 0xffff;
 27970    this.h[1] = ((this.h[1] >>>  3) | (this.h[2] << 10)                    ) & 0xffff;
 27971    this.h[2] = ((this.h[2] >>>  6) | (this.h[3] <<  7)                    ) & 0xffff;
 27972    this.h[3] = ((this.h[3] >>>  9) | (this.h[4] <<  4)                    ) & 0xffff;
 27973    this.h[4] = ((this.h[4] >>> 12) | (this.h[5] <<  1) | (this.h[6] << 14)) & 0xffff;
 27974    this.h[5] = ((this.h[6] >>>  2) | (this.h[7] << 11)                    ) & 0xffff;
 27975    this.h[6] = ((this.h[7] >>>  5) | (this.h[8] <<  8)                    ) & 0xffff;
 27976    this.h[7] = ((this.h[8] >>>  8) | (this.h[9] <<  5)                    ) & 0xffff;
 27977  
 27978    f = this.h[0] + this.pad[0];
 27979    this.h[0] = f & 0xffff;
 27980    for (i = 1; i < 8; i++) {
 27981      f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;
 27982      this.h[i] = f & 0xffff;
 27983    }
 27984  
 27985    mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;
 27986    mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;
 27987    mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;
 27988    mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;
 27989    mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;
 27990    mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;
 27991    mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;
 27992    mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;
 27993    mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;
 27994    mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;
 27995    mac[macpos+10] = (this.h[5] >>> 0) & 0xff;
 27996    mac[macpos+11] = (this.h[5] >>> 8) & 0xff;
 27997    mac[macpos+12] = (this.h[6] >>> 0) & 0xff;
 27998    mac[macpos+13] = (this.h[6] >>> 8) & 0xff;
 27999    mac[macpos+14] = (this.h[7] >>> 0) & 0xff;
 28000    mac[macpos+15] = (this.h[7] >>> 8) & 0xff;
 28001  };
 28002  
 28003  poly1305.prototype.update = function(m, mpos, bytes) {
 28004    var i, want;
 28005  
 28006    if (this.leftover) {
 28007      want = (16 - this.leftover);
 28008      if (want > bytes)
 28009        want = bytes;
 28010      for (i = 0; i < want; i++)
 28011        this.buffer[this.leftover + i] = m[mpos+i];
 28012      bytes -= want;
 28013      mpos += want;
 28014      this.leftover += want;
 28015      if (this.leftover < 16)
 28016        return;
 28017      this.blocks(this.buffer, 0, 16);
 28018      this.leftover = 0;
 28019    }
 28020  
 28021    if (bytes >= 16) {
 28022      want = bytes - (bytes % 16);
 28023      this.blocks(m, mpos, want);
 28024      mpos += want;
 28025      bytes -= want;
 28026    }
 28027  
 28028    if (bytes) {
 28029      for (i = 0; i < bytes; i++)
 28030        this.buffer[this.leftover + i] = m[mpos+i];
 28031      this.leftover += bytes;
 28032    }
 28033  };
 28034  
 28035  function crypto_onetimeauth(out, outpos, m, mpos, n, k) {
 28036    var s = new poly1305(k);
 28037    s.update(m, mpos, n);
 28038    s.finish(out, outpos);
 28039    return 0;
 28040  }
 28041  
 28042  function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {
 28043    var x = new Uint8Array(16);
 28044    crypto_onetimeauth(x,0,m,mpos,n,k);
 28045    return crypto_verify_16(h,hpos,x,0);
 28046  }
 28047  
 28048  function crypto_secretbox(c,m,d,n,k) {
 28049    var i;
 28050    if (d < 32) return -1;
 28051    crypto_stream_xor(c,0,m,0,d,n,k);
 28052    crypto_onetimeauth(c, 16, c, 32, d - 32, c);
 28053    for (i = 0; i < 16; i++) c[i] = 0;
 28054    return 0;
 28055  }
 28056  
 28057  function crypto_secretbox_open(m,c,d,n,k) {
 28058    var i;
 28059    var x = new Uint8Array(32);
 28060    if (d < 32) return -1;
 28061    crypto_stream(x,0,32,n,k);
 28062    if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;
 28063    crypto_stream_xor(m,0,c,0,d,n,k);
 28064    for (i = 0; i < 32; i++) m[i] = 0;
 28065    return 0;
 28066  }
 28067  
 28068  function set25519(r, a) {
 28069    var i;
 28070    for (i = 0; i < 16; i++) r[i] = a[i]|0;
 28071  }
 28072  
 28073  function car25519(o) {
 28074    var i, v, c = 1;
 28075    for (i = 0; i < 16; i++) {
 28076      v = o[i] + c + 65535;
 28077      c = Math.floor(v / 65536);
 28078      o[i] = v - c * 65536;
 28079    }
 28080    o[0] += c-1 + 37 * (c-1);
 28081  }
 28082  
 28083  function sel25519(p, q, b) {
 28084    var t, c = ~(b-1);
 28085    for (var i = 0; i < 16; i++) {
 28086      t = c & (p[i] ^ q[i]);
 28087      p[i] ^= t;
 28088      q[i] ^= t;
 28089    }
 28090  }
 28091  
 28092  function pack25519(o, n) {
 28093    var i, j, b;
 28094    var m = gf(), t = gf();
 28095    for (i = 0; i < 16; i++) t[i] = n[i];
 28096    car25519(t);
 28097    car25519(t);
 28098    car25519(t);
 28099    for (j = 0; j < 2; j++) {
 28100      m[0] = t[0] - 0xffed;
 28101      for (i = 1; i < 15; i++) {
 28102        m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);
 28103        m[i-1] &= 0xffff;
 28104      }
 28105      m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);
 28106      b = (m[15]>>16) & 1;
 28107      m[14] &= 0xffff;
 28108      sel25519(t, m, 1-b);
 28109    }
 28110    for (i = 0; i < 16; i++) {
 28111      o[2*i] = t[i] & 0xff;
 28112      o[2*i+1] = t[i]>>8;
 28113    }
 28114  }
 28115  
 28116  function neq25519(a, b) {
 28117    var c = new Uint8Array(32), d = new Uint8Array(32);
 28118    pack25519(c, a);
 28119    pack25519(d, b);
 28120    return crypto_verify_32(c, 0, d, 0);
 28121  }
 28122  
 28123  function par25519(a) {
 28124    var d = new Uint8Array(32);
 28125    pack25519(d, a);
 28126    return d[0] & 1;
 28127  }
 28128  
 28129  function unpack25519(o, n) {
 28130    var i;
 28131    for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);
 28132    o[15] &= 0x7fff;
 28133  }
 28134  
 28135  function A(o, a, b) {
 28136    for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];
 28137  }
 28138  
 28139  function Z(o, a, b) {
 28140    for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];
 28141  }
 28142  
 28143  function M(o, a, b) {
 28144    var v, c,
 28145       t0 = 0,  t1 = 0,  t2 = 0,  t3 = 0,  t4 = 0,  t5 = 0,  t6 = 0,  t7 = 0,
 28146       t8 = 0,  t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,
 28147      t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,
 28148      t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,
 28149      b0 = b[0],
 28150      b1 = b[1],
 28151      b2 = b[2],
 28152      b3 = b[3],
 28153      b4 = b[4],
 28154      b5 = b[5],
 28155      b6 = b[6],
 28156      b7 = b[7],
 28157      b8 = b[8],
 28158      b9 = b[9],
 28159      b10 = b[10],
 28160      b11 = b[11],
 28161      b12 = b[12],
 28162      b13 = b[13],
 28163      b14 = b[14],
 28164      b15 = b[15];
 28165  
 28166    v = a[0];
 28167    t0 += v * b0;
 28168    t1 += v * b1;
 28169    t2 += v * b2;
 28170    t3 += v * b3;
 28171    t4 += v * b4;
 28172    t5 += v * b5;
 28173    t6 += v * b6;
 28174    t7 += v * b7;
 28175    t8 += v * b8;
 28176    t9 += v * b9;
 28177    t10 += v * b10;
 28178    t11 += v * b11;
 28179    t12 += v * b12;
 28180    t13 += v * b13;
 28181    t14 += v * b14;
 28182    t15 += v * b15;
 28183    v = a[1];
 28184    t1 += v * b0;
 28185    t2 += v * b1;
 28186    t3 += v * b2;
 28187    t4 += v * b3;
 28188    t5 += v * b4;
 28189    t6 += v * b5;
 28190    t7 += v * b6;
 28191    t8 += v * b7;
 28192    t9 += v * b8;
 28193    t10 += v * b9;
 28194    t11 += v * b10;
 28195    t12 += v * b11;
 28196    t13 += v * b12;
 28197    t14 += v * b13;
 28198    t15 += v * b14;
 28199    t16 += v * b15;
 28200    v = a[2];
 28201    t2 += v * b0;
 28202    t3 += v * b1;
 28203    t4 += v * b2;
 28204    t5 += v * b3;
 28205    t6 += v * b4;
 28206    t7 += v * b5;
 28207    t8 += v * b6;
 28208    t9 += v * b7;
 28209    t10 += v * b8;
 28210    t11 += v * b9;
 28211    t12 += v * b10;
 28212    t13 += v * b11;
 28213    t14 += v * b12;
 28214    t15 += v * b13;
 28215    t16 += v * b14;
 28216    t17 += v * b15;
 28217    v = a[3];
 28218    t3 += v * b0;
 28219    t4 += v * b1;
 28220    t5 += v * b2;
 28221    t6 += v * b3;
 28222    t7 += v * b4;
 28223    t8 += v * b5;
 28224    t9 += v * b6;
 28225    t10 += v * b7;
 28226    t11 += v * b8;
 28227    t12 += v * b9;
 28228    t13 += v * b10;
 28229    t14 += v * b11;
 28230    t15 += v * b12;
 28231    t16 += v * b13;
 28232    t17 += v * b14;
 28233    t18 += v * b15;
 28234    v = a[4];
 28235    t4 += v * b0;
 28236    t5 += v * b1;
 28237    t6 += v * b2;
 28238    t7 += v * b3;
 28239    t8 += v * b4;
 28240    t9 += v * b5;
 28241    t10 += v * b6;
 28242    t11 += v * b7;
 28243    t12 += v * b8;
 28244    t13 += v * b9;
 28245    t14 += v * b10;
 28246    t15 += v * b11;
 28247    t16 += v * b12;
 28248    t17 += v * b13;
 28249    t18 += v * b14;
 28250    t19 += v * b15;
 28251    v = a[5];
 28252    t5 += v * b0;
 28253    t6 += v * b1;
 28254    t7 += v * b2;
 28255    t8 += v * b3;
 28256    t9 += v * b4;
 28257    t10 += v * b5;
 28258    t11 += v * b6;
 28259    t12 += v * b7;
 28260    t13 += v * b8;
 28261    t14 += v * b9;
 28262    t15 += v * b10;
 28263    t16 += v * b11;
 28264    t17 += v * b12;
 28265    t18 += v * b13;
 28266    t19 += v * b14;
 28267    t20 += v * b15;
 28268    v = a[6];
 28269    t6 += v * b0;
 28270    t7 += v * b1;
 28271    t8 += v * b2;
 28272    t9 += v * b3;
 28273    t10 += v * b4;
 28274    t11 += v * b5;
 28275    t12 += v * b6;
 28276    t13 += v * b7;
 28277    t14 += v * b8;
 28278    t15 += v * b9;
 28279    t16 += v * b10;
 28280    t17 += v * b11;
 28281    t18 += v * b12;
 28282    t19 += v * b13;
 28283    t20 += v * b14;
 28284    t21 += v * b15;
 28285    v = a[7];
 28286    t7 += v * b0;
 28287    t8 += v * b1;
 28288    t9 += v * b2;
 28289    t10 += v * b3;
 28290    t11 += v * b4;
 28291    t12 += v * b5;
 28292    t13 += v * b6;
 28293    t14 += v * b7;
 28294    t15 += v * b8;
 28295    t16 += v * b9;
 28296    t17 += v * b10;
 28297    t18 += v * b11;
 28298    t19 += v * b12;
 28299    t20 += v * b13;
 28300    t21 += v * b14;
 28301    t22 += v * b15;
 28302    v = a[8];
 28303    t8 += v * b0;
 28304    t9 += v * b1;
 28305    t10 += v * b2;
 28306    t11 += v * b3;
 28307    t12 += v * b4;
 28308    t13 += v * b5;
 28309    t14 += v * b6;
 28310    t15 += v * b7;
 28311    t16 += v * b8;
 28312    t17 += v * b9;
 28313    t18 += v * b10;
 28314    t19 += v * b11;
 28315    t20 += v * b12;
 28316    t21 += v * b13;
 28317    t22 += v * b14;
 28318    t23 += v * b15;
 28319    v = a[9];
 28320    t9 += v * b0;
 28321    t10 += v * b1;
 28322    t11 += v * b2;
 28323    t12 += v * b3;
 28324    t13 += v * b4;
 28325    t14 += v * b5;
 28326    t15 += v * b6;
 28327    t16 += v * b7;
 28328    t17 += v * b8;
 28329    t18 += v * b9;
 28330    t19 += v * b10;
 28331    t20 += v * b11;
 28332    t21 += v * b12;
 28333    t22 += v * b13;
 28334    t23 += v * b14;
 28335    t24 += v * b15;
 28336    v = a[10];
 28337    t10 += v * b0;
 28338    t11 += v * b1;
 28339    t12 += v * b2;
 28340    t13 += v * b3;
 28341    t14 += v * b4;
 28342    t15 += v * b5;
 28343    t16 += v * b6;
 28344    t17 += v * b7;
 28345    t18 += v * b8;
 28346    t19 += v * b9;
 28347    t20 += v * b10;
 28348    t21 += v * b11;
 28349    t22 += v * b12;
 28350    t23 += v * b13;
 28351    t24 += v * b14;
 28352    t25 += v * b15;
 28353    v = a[11];
 28354    t11 += v * b0;
 28355    t12 += v * b1;
 28356    t13 += v * b2;
 28357    t14 += v * b3;
 28358    t15 += v * b4;
 28359    t16 += v * b5;
 28360    t17 += v * b6;
 28361    t18 += v * b7;
 28362    t19 += v * b8;
 28363    t20 += v * b9;
 28364    t21 += v * b10;
 28365    t22 += v * b11;
 28366    t23 += v * b12;
 28367    t24 += v * b13;
 28368    t25 += v * b14;
 28369    t26 += v * b15;
 28370    v = a[12];
 28371    t12 += v * b0;
 28372    t13 += v * b1;
 28373    t14 += v * b2;
 28374    t15 += v * b3;
 28375    t16 += v * b4;
 28376    t17 += v * b5;
 28377    t18 += v * b6;
 28378    t19 += v * b7;
 28379    t20 += v * b8;
 28380    t21 += v * b9;
 28381    t22 += v * b10;
 28382    t23 += v * b11;
 28383    t24 += v * b12;
 28384    t25 += v * b13;
 28385    t26 += v * b14;
 28386    t27 += v * b15;
 28387    v = a[13];
 28388    t13 += v * b0;
 28389    t14 += v * b1;
 28390    t15 += v * b2;
 28391    t16 += v * b3;
 28392    t17 += v * b4;
 28393    t18 += v * b5;
 28394    t19 += v * b6;
 28395    t20 += v * b7;
 28396    t21 += v * b8;
 28397    t22 += v * b9;
 28398    t23 += v * b10;
 28399    t24 += v * b11;
 28400    t25 += v * b12;
 28401    t26 += v * b13;
 28402    t27 += v * b14;
 28403    t28 += v * b15;
 28404    v = a[14];
 28405    t14 += v * b0;
 28406    t15 += v * b1;
 28407    t16 += v * b2;
 28408    t17 += v * b3;
 28409    t18 += v * b4;
 28410    t19 += v * b5;
 28411    t20 += v * b6;
 28412    t21 += v * b7;
 28413    t22 += v * b8;
 28414    t23 += v * b9;
 28415    t24 += v * b10;
 28416    t25 += v * b11;
 28417    t26 += v * b12;
 28418    t27 += v * b13;
 28419    t28 += v * b14;
 28420    t29 += v * b15;
 28421    v = a[15];
 28422    t15 += v * b0;
 28423    t16 += v * b1;
 28424    t17 += v * b2;
 28425    t18 += v * b3;
 28426    t19 += v * b4;
 28427    t20 += v * b5;
 28428    t21 += v * b6;
 28429    t22 += v * b7;
 28430    t23 += v * b8;
 28431    t24 += v * b9;
 28432    t25 += v * b10;
 28433    t26 += v * b11;
 28434    t27 += v * b12;
 28435    t28 += v * b13;
 28436    t29 += v * b14;
 28437    t30 += v * b15;
 28438  
 28439    t0  += 38 * t16;
 28440    t1  += 38 * t17;
 28441    t2  += 38 * t18;
 28442    t3  += 38 * t19;
 28443    t4  += 38 * t20;
 28444    t5  += 38 * t21;
 28445    t6  += 38 * t22;
 28446    t7  += 38 * t23;
 28447    t8  += 38 * t24;
 28448    t9  += 38 * t25;
 28449    t10 += 38 * t26;
 28450    t11 += 38 * t27;
 28451    t12 += 38 * t28;
 28452    t13 += 38 * t29;
 28453    t14 += 38 * t30;
 28454    // t15 left as is
 28455  
 28456    // first car
 28457    c = 1;
 28458    v =  t0 + c + 65535; c = Math.floor(v / 65536);  t0 = v - c * 65536;
 28459    v =  t1 + c + 65535; c = Math.floor(v / 65536);  t1 = v - c * 65536;
 28460    v =  t2 + c + 65535; c = Math.floor(v / 65536);  t2 = v - c * 65536;
 28461    v =  t3 + c + 65535; c = Math.floor(v / 65536);  t3 = v - c * 65536;
 28462    v =  t4 + c + 65535; c = Math.floor(v / 65536);  t4 = v - c * 65536;
 28463    v =  t5 + c + 65535; c = Math.floor(v / 65536);  t5 = v - c * 65536;
 28464    v =  t6 + c + 65535; c = Math.floor(v / 65536);  t6 = v - c * 65536;
 28465    v =  t7 + c + 65535; c = Math.floor(v / 65536);  t7 = v - c * 65536;
 28466    v =  t8 + c + 65535; c = Math.floor(v / 65536);  t8 = v - c * 65536;
 28467    v =  t9 + c + 65535; c = Math.floor(v / 65536);  t9 = v - c * 65536;
 28468    v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;
 28469    v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;
 28470    v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;
 28471    v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;
 28472    v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;
 28473    v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;
 28474    t0 += c-1 + 37 * (c-1);
 28475  
 28476    // second car
 28477    c = 1;
 28478    v =  t0 + c + 65535; c = Math.floor(v / 65536);  t0 = v - c * 65536;
 28479    v =  t1 + c + 65535; c = Math.floor(v / 65536);  t1 = v - c * 65536;
 28480    v =  t2 + c + 65535; c = Math.floor(v / 65536);  t2 = v - c * 65536;
 28481    v =  t3 + c + 65535; c = Math.floor(v / 65536);  t3 = v - c * 65536;
 28482    v =  t4 + c + 65535; c = Math.floor(v / 65536);  t4 = v - c * 65536;
 28483    v =  t5 + c + 65535; c = Math.floor(v / 65536);  t5 = v - c * 65536;
 28484    v =  t6 + c + 65535; c = Math.floor(v / 65536);  t6 = v - c * 65536;
 28485    v =  t7 + c + 65535; c = Math.floor(v / 65536);  t7 = v - c * 65536;
 28486    v =  t8 + c + 65535; c = Math.floor(v / 65536);  t8 = v - c * 65536;
 28487    v =  t9 + c + 65535; c = Math.floor(v / 65536);  t9 = v - c * 65536;
 28488    v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;
 28489    v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;
 28490    v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;
 28491    v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;
 28492    v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;
 28493    v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;
 28494    t0 += c-1 + 37 * (c-1);
 28495  
 28496    o[ 0] = t0;
 28497    o[ 1] = t1;
 28498    o[ 2] = t2;
 28499    o[ 3] = t3;
 28500    o[ 4] = t4;
 28501    o[ 5] = t5;
 28502    o[ 6] = t6;
 28503    o[ 7] = t7;
 28504    o[ 8] = t8;
 28505    o[ 9] = t9;
 28506    o[10] = t10;
 28507    o[11] = t11;
 28508    o[12] = t12;
 28509    o[13] = t13;
 28510    o[14] = t14;
 28511    o[15] = t15;
 28512  }
 28513  
 28514  function S(o, a) {
 28515    M(o, a, a);
 28516  }
 28517  
 28518  function inv25519(o, i) {
 28519    var c = gf();
 28520    var a;
 28521    for (a = 0; a < 16; a++) c[a] = i[a];
 28522    for (a = 253; a >= 0; a--) {
 28523      S(c, c);
 28524      if(a !== 2 && a !== 4) M(c, c, i);
 28525    }
 28526    for (a = 0; a < 16; a++) o[a] = c[a];
 28527  }
 28528  
 28529  function pow2523(o, i) {
 28530    var c = gf();
 28531    var a;
 28532    for (a = 0; a < 16; a++) c[a] = i[a];
 28533    for (a = 250; a >= 0; a--) {
 28534        S(c, c);
 28535        if(a !== 1) M(c, c, i);
 28536    }
 28537    for (a = 0; a < 16; a++) o[a] = c[a];
 28538  }
 28539  
 28540  function crypto_scalarmult(q, n, p) {
 28541    var z = new Uint8Array(32);
 28542    var x = new Float64Array(80), r, i;
 28543    var a = gf(), b = gf(), c = gf(),
 28544        d = gf(), e = gf(), f = gf();
 28545    for (i = 0; i < 31; i++) z[i] = n[i];
 28546    z[31]=(n[31]&127)|64;
 28547    z[0]&=248;
 28548    unpack25519(x,p);
 28549    for (i = 0; i < 16; i++) {
 28550      b[i]=x[i];
 28551      d[i]=a[i]=c[i]=0;
 28552    }
 28553    a[0]=d[0]=1;
 28554    for (i=254; i>=0; --i) {
 28555      r=(z[i>>>3]>>>(i&7))&1;
 28556      sel25519(a,b,r);
 28557      sel25519(c,d,r);
 28558      A(e,a,c);
 28559      Z(a,a,c);
 28560      A(c,b,d);
 28561      Z(b,b,d);
 28562      S(d,e);
 28563      S(f,a);
 28564      M(a,c,a);
 28565      M(c,b,e);
 28566      A(e,a,c);
 28567      Z(a,a,c);
 28568      S(b,a);
 28569      Z(c,d,f);
 28570      M(a,c,_121665);
 28571      A(a,a,d);
 28572      M(c,c,a);
 28573      M(a,d,f);
 28574      M(d,b,x);
 28575      S(b,e);
 28576      sel25519(a,b,r);
 28577      sel25519(c,d,r);
 28578    }
 28579    for (i = 0; i < 16; i++) {
 28580      x[i+16]=a[i];
 28581      x[i+32]=c[i];
 28582      x[i+48]=b[i];
 28583      x[i+64]=d[i];
 28584    }
 28585    var x32 = x.subarray(32);
 28586    var x16 = x.subarray(16);
 28587    inv25519(x32,x32);
 28588    M(x16,x16,x32);
 28589    pack25519(q,x16);
 28590    return 0;
 28591  }
 28592  
 28593  function crypto_scalarmult_base(q, n) {
 28594    return crypto_scalarmult(q, n, _9);
 28595  }
 28596  
 28597  function crypto_box_keypair(y, x) {
 28598    randombytes(x, 32);
 28599    return crypto_scalarmult_base(y, x);
 28600  }
 28601  
 28602  function crypto_box_beforenm(k, y, x) {
 28603    var s = new Uint8Array(32);
 28604    crypto_scalarmult(s, x, y);
 28605    return crypto_core_hsalsa20(k, _0, s, sigma);
 28606  }
 28607  
 28608  var crypto_box_afternm = crypto_secretbox;
 28609  var crypto_box_open_afternm = crypto_secretbox_open;
 28610  
 28611  function crypto_box(c, m, d, n, y, x) {
 28612    var k = new Uint8Array(32);
 28613    crypto_box_beforenm(k, y, x);
 28614    return crypto_box_afternm(c, m, d, n, k);
 28615  }
 28616  
 28617  function crypto_box_open(m, c, d, n, y, x) {
 28618    var k = new Uint8Array(32);
 28619    crypto_box_beforenm(k, y, x);
 28620    return crypto_box_open_afternm(m, c, d, n, k);
 28621  }
 28622  
 28623  var K = [
 28624    0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
 28625    0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
 28626    0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
 28627    0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
 28628    0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
 28629    0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
 28630    0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
 28631    0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
 28632    0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
 28633    0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
 28634    0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
 28635    0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
 28636    0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
 28637    0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
 28638    0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
 28639    0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
 28640    0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
 28641    0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
 28642    0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
 28643    0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
 28644    0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
 28645    0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
 28646    0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
 28647    0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
 28648    0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
 28649    0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
 28650    0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
 28651    0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
 28652    0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
 28653    0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
 28654    0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
 28655    0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
 28656    0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
 28657    0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
 28658    0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
 28659    0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
 28660    0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
 28661    0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
 28662    0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
 28663    0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
 28664  ];
 28665  
 28666  function crypto_hashblocks_hl(hh, hl, m, n) {
 28667    var wh = new Int32Array(16), wl = new Int32Array(16),
 28668        bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,
 28669        bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,
 28670        th, tl, i, j, h, l, a, b, c, d;
 28671  
 28672    var ah0 = hh[0],
 28673        ah1 = hh[1],
 28674        ah2 = hh[2],
 28675        ah3 = hh[3],
 28676        ah4 = hh[4],
 28677        ah5 = hh[5],
 28678        ah6 = hh[6],
 28679        ah7 = hh[7],
 28680  
 28681        al0 = hl[0],
 28682        al1 = hl[1],
 28683        al2 = hl[2],
 28684        al3 = hl[3],
 28685        al4 = hl[4],
 28686        al5 = hl[5],
 28687        al6 = hl[6],
 28688        al7 = hl[7];
 28689  
 28690    var pos = 0;
 28691    while (n >= 128) {
 28692      for (i = 0; i < 16; i++) {
 28693        j = 8 * i + pos;
 28694        wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];
 28695        wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];
 28696      }
 28697      for (i = 0; i < 80; i++) {
 28698        bh0 = ah0;
 28699        bh1 = ah1;
 28700        bh2 = ah2;
 28701        bh3 = ah3;
 28702        bh4 = ah4;
 28703        bh5 = ah5;
 28704        bh6 = ah6;
 28705        bh7 = ah7;
 28706  
 28707        bl0 = al0;
 28708        bl1 = al1;
 28709        bl2 = al2;
 28710        bl3 = al3;
 28711        bl4 = al4;
 28712        bl5 = al5;
 28713        bl6 = al6;
 28714        bl7 = al7;
 28715  
 28716        // add
 28717        h = ah7;
 28718        l = al7;
 28719  
 28720        a = l & 0xffff; b = l >>> 16;
 28721        c = h & 0xffff; d = h >>> 16;
 28722  
 28723        // Sigma1
 28724        h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));
 28725        l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));
 28726  
 28727        a += l & 0xffff; b += l >>> 16;
 28728        c += h & 0xffff; d += h >>> 16;
 28729  
 28730        // Ch
 28731        h = (ah4 & ah5) ^ (~ah4 & ah6);
 28732        l = (al4 & al5) ^ (~al4 & al6);
 28733  
 28734        a += l & 0xffff; b += l >>> 16;
 28735        c += h & 0xffff; d += h >>> 16;
 28736  
 28737        // K
 28738        h = K[i*2];
 28739        l = K[i*2+1];
 28740  
 28741        a += l & 0xffff; b += l >>> 16;
 28742        c += h & 0xffff; d += h >>> 16;
 28743  
 28744        // w
 28745        h = wh[i%16];
 28746        l = wl[i%16];
 28747  
 28748        a += l & 0xffff; b += l >>> 16;
 28749        c += h & 0xffff; d += h >>> 16;
 28750  
 28751        b += a >>> 16;
 28752        c += b >>> 16;
 28753        d += c >>> 16;
 28754  
 28755        th = c & 0xffff | d << 16;
 28756        tl = a & 0xffff | b << 16;
 28757  
 28758        // add
 28759        h = th;
 28760        l = tl;
 28761  
 28762        a = l & 0xffff; b = l >>> 16;
 28763        c = h & 0xffff; d = h >>> 16;
 28764  
 28765        // Sigma0
 28766        h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));
 28767        l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));
 28768  
 28769        a += l & 0xffff; b += l >>> 16;
 28770        c += h & 0xffff; d += h >>> 16;
 28771  
 28772        // Maj
 28773        h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);
 28774        l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);
 28775  
 28776        a += l & 0xffff; b += l >>> 16;
 28777        c += h & 0xffff; d += h >>> 16;
 28778  
 28779        b += a >>> 16;
 28780        c += b >>> 16;
 28781        d += c >>> 16;
 28782  
 28783        bh7 = (c & 0xffff) | (d << 16);
 28784        bl7 = (a & 0xffff) | (b << 16);
 28785  
 28786        // add
 28787        h = bh3;
 28788        l = bl3;
 28789  
 28790        a = l & 0xffff; b = l >>> 16;
 28791        c = h & 0xffff; d = h >>> 16;
 28792  
 28793        h = th;
 28794        l = tl;
 28795  
 28796        a += l & 0xffff; b += l >>> 16;
 28797        c += h & 0xffff; d += h >>> 16;
 28798  
 28799        b += a >>> 16;
 28800        c += b >>> 16;
 28801        d += c >>> 16;
 28802  
 28803        bh3 = (c & 0xffff) | (d << 16);
 28804        bl3 = (a & 0xffff) | (b << 16);
 28805  
 28806        ah1 = bh0;
 28807        ah2 = bh1;
 28808        ah3 = bh2;
 28809        ah4 = bh3;
 28810        ah5 = bh4;
 28811        ah6 = bh5;
 28812        ah7 = bh6;
 28813        ah0 = bh7;
 28814  
 28815        al1 = bl0;
 28816        al2 = bl1;
 28817        al3 = bl2;
 28818        al4 = bl3;
 28819        al5 = bl4;
 28820        al6 = bl5;
 28821        al7 = bl6;
 28822        al0 = bl7;
 28823  
 28824        if (i%16 === 15) {
 28825          for (j = 0; j < 16; j++) {
 28826            // add
 28827            h = wh[j];
 28828            l = wl[j];
 28829  
 28830            a = l & 0xffff; b = l >>> 16;
 28831            c = h & 0xffff; d = h >>> 16;
 28832  
 28833            h = wh[(j+9)%16];
 28834            l = wl[(j+9)%16];
 28835  
 28836            a += l & 0xffff; b += l >>> 16;
 28837            c += h & 0xffff; d += h >>> 16;
 28838  
 28839            // sigma0
 28840            th = wh[(j+1)%16];
 28841            tl = wl[(j+1)%16];
 28842            h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);
 28843            l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));
 28844  
 28845            a += l & 0xffff; b += l >>> 16;
 28846            c += h & 0xffff; d += h >>> 16;
 28847  
 28848            // sigma1
 28849            th = wh[(j+14)%16];
 28850            tl = wl[(j+14)%16];
 28851            h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);
 28852            l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));
 28853  
 28854            a += l & 0xffff; b += l >>> 16;
 28855            c += h & 0xffff; d += h >>> 16;
 28856  
 28857            b += a >>> 16;
 28858            c += b >>> 16;
 28859            d += c >>> 16;
 28860  
 28861            wh[j] = (c & 0xffff) | (d << 16);
 28862            wl[j] = (a & 0xffff) | (b << 16);
 28863          }
 28864        }
 28865      }
 28866  
 28867      // add
 28868      h = ah0;
 28869      l = al0;
 28870  
 28871      a = l & 0xffff; b = l >>> 16;
 28872      c = h & 0xffff; d = h >>> 16;
 28873  
 28874      h = hh[0];
 28875      l = hl[0];
 28876  
 28877      a += l & 0xffff; b += l >>> 16;
 28878      c += h & 0xffff; d += h >>> 16;
 28879  
 28880      b += a >>> 16;
 28881      c += b >>> 16;
 28882      d += c >>> 16;
 28883  
 28884      hh[0] = ah0 = (c & 0xffff) | (d << 16);
 28885      hl[0] = al0 = (a & 0xffff) | (b << 16);
 28886  
 28887      h = ah1;
 28888      l = al1;
 28889  
 28890      a = l & 0xffff; b = l >>> 16;
 28891      c = h & 0xffff; d = h >>> 16;
 28892  
 28893      h = hh[1];
 28894      l = hl[1];
 28895  
 28896      a += l & 0xffff; b += l >>> 16;
 28897      c += h & 0xffff; d += h >>> 16;
 28898  
 28899      b += a >>> 16;
 28900      c += b >>> 16;
 28901      d += c >>> 16;
 28902  
 28903      hh[1] = ah1 = (c & 0xffff) | (d << 16);
 28904      hl[1] = al1 = (a & 0xffff) | (b << 16);
 28905  
 28906      h = ah2;
 28907      l = al2;
 28908  
 28909      a = l & 0xffff; b = l >>> 16;
 28910      c = h & 0xffff; d = h >>> 16;
 28911  
 28912      h = hh[2];
 28913      l = hl[2];
 28914  
 28915      a += l & 0xffff; b += l >>> 16;
 28916      c += h & 0xffff; d += h >>> 16;
 28917  
 28918      b += a >>> 16;
 28919      c += b >>> 16;
 28920      d += c >>> 16;
 28921  
 28922      hh[2] = ah2 = (c & 0xffff) | (d << 16);
 28923      hl[2] = al2 = (a & 0xffff) | (b << 16);
 28924  
 28925      h = ah3;
 28926      l = al3;
 28927  
 28928      a = l & 0xffff; b = l >>> 16;
 28929      c = h & 0xffff; d = h >>> 16;
 28930  
 28931      h = hh[3];
 28932      l = hl[3];
 28933  
 28934      a += l & 0xffff; b += l >>> 16;
 28935      c += h & 0xffff; d += h >>> 16;
 28936  
 28937      b += a >>> 16;
 28938      c += b >>> 16;
 28939      d += c >>> 16;
 28940  
 28941      hh[3] = ah3 = (c & 0xffff) | (d << 16);
 28942      hl[3] = al3 = (a & 0xffff) | (b << 16);
 28943  
 28944      h = ah4;
 28945      l = al4;
 28946  
 28947      a = l & 0xffff; b = l >>> 16;
 28948      c = h & 0xffff; d = h >>> 16;
 28949  
 28950      h = hh[4];
 28951      l = hl[4];
 28952  
 28953      a += l & 0xffff; b += l >>> 16;
 28954      c += h & 0xffff; d += h >>> 16;
 28955  
 28956      b += a >>> 16;
 28957      c += b >>> 16;
 28958      d += c >>> 16;
 28959  
 28960      hh[4] = ah4 = (c & 0xffff) | (d << 16);
 28961      hl[4] = al4 = (a & 0xffff) | (b << 16);
 28962  
 28963      h = ah5;
 28964      l = al5;
 28965  
 28966      a = l & 0xffff; b = l >>> 16;
 28967      c = h & 0xffff; d = h >>> 16;
 28968  
 28969      h = hh[5];
 28970      l = hl[5];
 28971  
 28972      a += l & 0xffff; b += l >>> 16;
 28973      c += h & 0xffff; d += h >>> 16;
 28974  
 28975      b += a >>> 16;
 28976      c += b >>> 16;
 28977      d += c >>> 16;
 28978  
 28979      hh[5] = ah5 = (c & 0xffff) | (d << 16);
 28980      hl[5] = al5 = (a & 0xffff) | (b << 16);
 28981  
 28982      h = ah6;
 28983      l = al6;
 28984  
 28985      a = l & 0xffff; b = l >>> 16;
 28986      c = h & 0xffff; d = h >>> 16;
 28987  
 28988      h = hh[6];
 28989      l = hl[6];
 28990  
 28991      a += l & 0xffff; b += l >>> 16;
 28992      c += h & 0xffff; d += h >>> 16;
 28993  
 28994      b += a >>> 16;
 28995      c += b >>> 16;
 28996      d += c >>> 16;
 28997  
 28998      hh[6] = ah6 = (c & 0xffff) | (d << 16);
 28999      hl[6] = al6 = (a & 0xffff) | (b << 16);
 29000  
 29001      h = ah7;
 29002      l = al7;
 29003  
 29004      a = l & 0xffff; b = l >>> 16;
 29005      c = h & 0xffff; d = h >>> 16;
 29006  
 29007      h = hh[7];
 29008      l = hl[7];
 29009  
 29010      a += l & 0xffff; b += l >>> 16;
 29011      c += h & 0xffff; d += h >>> 16;
 29012  
 29013      b += a >>> 16;
 29014      c += b >>> 16;
 29015      d += c >>> 16;
 29016  
 29017      hh[7] = ah7 = (c & 0xffff) | (d << 16);
 29018      hl[7] = al7 = (a & 0xffff) | (b << 16);
 29019  
 29020      pos += 128;
 29021      n -= 128;
 29022    }
 29023  
 29024    return n;
 29025  }
 29026  
 29027  function crypto_hash(out, m, n) {
 29028    var hh = new Int32Array(8),
 29029        hl = new Int32Array(8),
 29030        x = new Uint8Array(256),
 29031        i, b = n;
 29032  
 29033    hh[0] = 0x6a09e667;
 29034    hh[1] = 0xbb67ae85;
 29035    hh[2] = 0x3c6ef372;
 29036    hh[3] = 0xa54ff53a;
 29037    hh[4] = 0x510e527f;
 29038    hh[5] = 0x9b05688c;
 29039    hh[6] = 0x1f83d9ab;
 29040    hh[7] = 0x5be0cd19;
 29041  
 29042    hl[0] = 0xf3bcc908;
 29043    hl[1] = 0x84caa73b;
 29044    hl[2] = 0xfe94f82b;
 29045    hl[3] = 0x5f1d36f1;
 29046    hl[4] = 0xade682d1;
 29047    hl[5] = 0x2b3e6c1f;
 29048    hl[6] = 0xfb41bd6b;
 29049    hl[7] = 0x137e2179;
 29050  
 29051    crypto_hashblocks_hl(hh, hl, m, n);
 29052    n %= 128;
 29053  
 29054    for (i = 0; i < n; i++) x[i] = m[b-n+i];
 29055    x[n] = 128;
 29056  
 29057    n = 256-128*(n<112?1:0);
 29058    x[n-9] = 0;
 29059    ts64(x, n-8,  (b / 0x20000000) | 0, b << 3);
 29060    crypto_hashblocks_hl(hh, hl, x, n);
 29061  
 29062    for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);
 29063  
 29064    return 0;
 29065  }
 29066  
 29067  function add(p, q) {
 29068    var a = gf(), b = gf(), c = gf(),
 29069        d = gf(), e = gf(), f = gf(),
 29070        g = gf(), h = gf(), t = gf();
 29071  
 29072    Z(a, p[1], p[0]);
 29073    Z(t, q[1], q[0]);
 29074    M(a, a, t);
 29075    A(b, p[0], p[1]);
 29076    A(t, q[0], q[1]);
 29077    M(b, b, t);
 29078    M(c, p[3], q[3]);
 29079    M(c, c, D2);
 29080    M(d, p[2], q[2]);
 29081    A(d, d, d);
 29082    Z(e, b, a);
 29083    Z(f, d, c);
 29084    A(g, d, c);
 29085    A(h, b, a);
 29086  
 29087    M(p[0], e, f);
 29088    M(p[1], h, g);
 29089    M(p[2], g, f);
 29090    M(p[3], e, h);
 29091  }
 29092  
 29093  function cswap(p, q, b) {
 29094    var i;
 29095    for (i = 0; i < 4; i++) {
 29096      sel25519(p[i], q[i], b);
 29097    }
 29098  }
 29099  
 29100  function pack(r, p) {
 29101    var tx = gf(), ty = gf(), zi = gf();
 29102    inv25519(zi, p[2]);
 29103    M(tx, p[0], zi);
 29104    M(ty, p[1], zi);
 29105    pack25519(r, ty);
 29106    r[31] ^= par25519(tx) << 7;
 29107  }
 29108  
 29109  function scalarmult(p, q, s) {
 29110    var b, i;
 29111    set25519(p[0], gf0);
 29112    set25519(p[1], gf1);
 29113    set25519(p[2], gf1);
 29114    set25519(p[3], gf0);
 29115    for (i = 255; i >= 0; --i) {
 29116      b = (s[(i/8)|0] >> (i&7)) & 1;
 29117      cswap(p, q, b);
 29118      add(q, p);
 29119      add(p, p);
 29120      cswap(p, q, b);
 29121    }
 29122  }
 29123  
 29124  function scalarbase(p, s) {
 29125    var q = [gf(), gf(), gf(), gf()];
 29126    set25519(q[0], X);
 29127    set25519(q[1], Y);
 29128    set25519(q[2], gf1);
 29129    M(q[3], X, Y);
 29130    scalarmult(p, q, s);
 29131  }
 29132  
 29133  function crypto_sign_keypair(pk, sk, seeded) {
 29134    var d = new Uint8Array(64);
 29135    var p = [gf(), gf(), gf(), gf()];
 29136    var i;
 29137  
 29138    if (!seeded) randombytes(sk, 32);
 29139    crypto_hash(d, sk, 32);
 29140    d[0] &= 248;
 29141    d[31] &= 127;
 29142    d[31] |= 64;
 29143  
 29144    scalarbase(p, d);
 29145    pack(pk, p);
 29146  
 29147    for (i = 0; i < 32; i++) sk[i+32] = pk[i];
 29148    return 0;
 29149  }
 29150  
 29151  var 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]);
 29152  
 29153  function modL(r, x) {
 29154    var carry, i, j, k;
 29155    for (i = 63; i >= 32; --i) {
 29156      carry = 0;
 29157      for (j = i - 32, k = i - 12; j < k; ++j) {
 29158        x[j] += carry - 16 * x[i] * L[j - (i - 32)];
 29159        carry = (x[j] + 128) >> 8;
 29160        x[j] -= carry * 256;
 29161      }
 29162      x[j] += carry;
 29163      x[i] = 0;
 29164    }
 29165    carry = 0;
 29166    for (j = 0; j < 32; j++) {
 29167      x[j] += carry - (x[31] >> 4) * L[j];
 29168      carry = x[j] >> 8;
 29169      x[j] &= 255;
 29170    }
 29171    for (j = 0; j < 32; j++) x[j] -= carry * L[j];
 29172    for (i = 0; i < 32; i++) {
 29173      x[i+1] += x[i] >> 8;
 29174      r[i] = x[i] & 255;
 29175    }
 29176  }
 29177  
 29178  function reduce(r) {
 29179    var x = new Float64Array(64), i;
 29180    for (i = 0; i < 64; i++) x[i] = r[i];
 29181    for (i = 0; i < 64; i++) r[i] = 0;
 29182    modL(r, x);
 29183  }
 29184  
 29185  // Note: difference from C - smlen returned, not passed as argument.
 29186  function crypto_sign(sm, m, n, sk) {
 29187    var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);
 29188    var i, j, x = new Float64Array(64);
 29189    var p = [gf(), gf(), gf(), gf()];
 29190  
 29191    crypto_hash(d, sk, 32);
 29192    d[0] &= 248;
 29193    d[31] &= 127;
 29194    d[31] |= 64;
 29195  
 29196    var smlen = n + 64;
 29197    for (i = 0; i < n; i++) sm[64 + i] = m[i];
 29198    for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];
 29199  
 29200    crypto_hash(r, sm.subarray(32), n+32);
 29201    reduce(r);
 29202    scalarbase(p, r);
 29203    pack(sm, p);
 29204  
 29205    for (i = 32; i < 64; i++) sm[i] = sk[i];
 29206    crypto_hash(h, sm, n + 64);
 29207    reduce(h);
 29208  
 29209    for (i = 0; i < 64; i++) x[i] = 0;
 29210    for (i = 0; i < 32; i++) x[i] = r[i];
 29211    for (i = 0; i < 32; i++) {
 29212      for (j = 0; j < 32; j++) {
 29213        x[i+j] += h[i] * d[j];
 29214      }
 29215    }
 29216  
 29217    modL(sm.subarray(32), x);
 29218    return smlen;
 29219  }
 29220  
 29221  function unpackneg(r, p) {
 29222    var t = gf(), chk = gf(), num = gf(),
 29223        den = gf(), den2 = gf(), den4 = gf(),
 29224        den6 = gf();
 29225  
 29226    set25519(r[2], gf1);
 29227    unpack25519(r[1], p);
 29228    S(num, r[1]);
 29229    M(den, num, D);
 29230    Z(num, num, r[2]);
 29231    A(den, r[2], den);
 29232  
 29233    S(den2, den);
 29234    S(den4, den2);
 29235    M(den6, den4, den2);
 29236    M(t, den6, num);
 29237    M(t, t, den);
 29238  
 29239    pow2523(t, t);
 29240    M(t, t, num);
 29241    M(t, t, den);
 29242    M(t, t, den);
 29243    M(r[0], t, den);
 29244  
 29245    S(chk, r[0]);
 29246    M(chk, chk, den);
 29247    if (neq25519(chk, num)) M(r[0], r[0], I);
 29248  
 29249    S(chk, r[0]);
 29250    M(chk, chk, den);
 29251    if (neq25519(chk, num)) return -1;
 29252  
 29253    if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);
 29254  
 29255    M(r[3], r[0], r[1]);
 29256    return 0;
 29257  }
 29258  
 29259  function crypto_sign_open(m, sm, n, pk) {
 29260    var i, mlen;
 29261    var t = new Uint8Array(32), h = new Uint8Array(64);
 29262    var p = [gf(), gf(), gf(), gf()],
 29263        q = [gf(), gf(), gf(), gf()];
 29264  
 29265    mlen = -1;
 29266    if (n < 64) return -1;
 29267  
 29268    if (unpackneg(q, pk)) return -1;
 29269  
 29270    for (i = 0; i < n; i++) m[i] = sm[i];
 29271    for (i = 0; i < 32; i++) m[i+32] = pk[i];
 29272    crypto_hash(h, m, n);
 29273    reduce(h);
 29274    scalarmult(p, q, h);
 29275  
 29276    scalarbase(q, sm.subarray(32));
 29277    add(p, q);
 29278    pack(t, p);
 29279  
 29280    n -= 64;
 29281    if (crypto_verify_32(sm, 0, t, 0)) {
 29282      for (i = 0; i < n; i++) m[i] = 0;
 29283      return -1;
 29284    }
 29285  
 29286    for (i = 0; i < n; i++) m[i] = sm[i + 64];
 29287    mlen = n;
 29288    return mlen;
 29289  }
 29290  
 29291  var crypto_secretbox_KEYBYTES = 32,
 29292      crypto_secretbox_NONCEBYTES = 24,
 29293      crypto_secretbox_ZEROBYTES = 32,
 29294      crypto_secretbox_BOXZEROBYTES = 16,
 29295      crypto_scalarmult_BYTES = 32,
 29296      crypto_scalarmult_SCALARBYTES = 32,
 29297      crypto_box_PUBLICKEYBYTES = 32,
 29298      crypto_box_SECRETKEYBYTES = 32,
 29299      crypto_box_BEFORENMBYTES = 32,
 29300      crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,
 29301      crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,
 29302      crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,
 29303      crypto_sign_BYTES = 64,
 29304      crypto_sign_PUBLICKEYBYTES = 32,
 29305      crypto_sign_SECRETKEYBYTES = 64,
 29306      crypto_sign_SEEDBYTES = 32,
 29307      crypto_hash_BYTES = 64;
 29308  
 29309  nacl.lowlevel = {
 29310    crypto_core_hsalsa20: crypto_core_hsalsa20,
 29311    crypto_stream_xor: crypto_stream_xor,
 29312    crypto_stream: crypto_stream,
 29313    crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,
 29314    crypto_stream_salsa20: crypto_stream_salsa20,
 29315    crypto_onetimeauth: crypto_onetimeauth,
 29316    crypto_onetimeauth_verify: crypto_onetimeauth_verify,
 29317    crypto_verify_16: crypto_verify_16,
 29318    crypto_verify_32: crypto_verify_32,
 29319    crypto_secretbox: crypto_secretbox,
 29320    crypto_secretbox_open: crypto_secretbox_open,
 29321    crypto_scalarmult: crypto_scalarmult,
 29322    crypto_scalarmult_base: crypto_scalarmult_base,
 29323    crypto_box_beforenm: crypto_box_beforenm,
 29324    crypto_box_afternm: crypto_box_afternm,
 29325    crypto_box: crypto_box,
 29326    crypto_box_open: crypto_box_open,
 29327    crypto_box_keypair: crypto_box_keypair,
 29328    crypto_hash: crypto_hash,
 29329    crypto_sign: crypto_sign,
 29330    crypto_sign_keypair: crypto_sign_keypair,
 29331    crypto_sign_open: crypto_sign_open,
 29332  
 29333    crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,
 29334    crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,
 29335    crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,
 29336    crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,
 29337    crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,
 29338    crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,
 29339    crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,
 29340    crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,
 29341    crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,
 29342    crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,
 29343    crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,
 29344    crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,
 29345    crypto_sign_BYTES: crypto_sign_BYTES,
 29346    crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,
 29347    crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,
 29348    crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,
 29349    crypto_hash_BYTES: crypto_hash_BYTES
 29350  };
 29351  
 29352  /* High-level API */
 29353  
 29354  function checkLengths(k, n) {
 29355    if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');
 29356    if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');
 29357  }
 29358  
 29359  function checkBoxLengths(pk, sk) {
 29360    if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');
 29361    if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');
 29362  }
 29363  
 29364  function checkArrayTypes() {
 29365    var t, i;
 29366    for (i = 0; i < arguments.length; i++) {
 29367       if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]')
 29368         throw new TypeError('unexpected type ' + t + ', use Uint8Array');
 29369    }
 29370  }
 29371  
 29372  function cleanup(arr) {
 29373    for (var i = 0; i < arr.length; i++) arr[i] = 0;
 29374  }
 29375  
 29376  // TODO: Completely remove this in v0.15.
 29377  if (!nacl.util) {
 29378    nacl.util = {};
 29379    nacl.util.decodeUTF8 = nacl.util.encodeUTF8 = nacl.util.encodeBase64 = nacl.util.decodeBase64 = function() {
 29380      throw new Error('nacl.util moved into separate package: https://github.com/dchest/tweetnacl-util-js');
 29381    };
 29382  }
 29383  
 29384  nacl.randomBytes = function(n) {
 29385    var b = new Uint8Array(n);
 29386    randombytes(b, n);
 29387    return b;
 29388  };
 29389  
 29390  nacl.secretbox = function(msg, nonce, key) {
 29391    checkArrayTypes(msg, nonce, key);
 29392    checkLengths(key, nonce);
 29393    var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);
 29394    var c = new Uint8Array(m.length);
 29395    for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];
 29396    crypto_secretbox(c, m, m.length, nonce, key);
 29397    return c.subarray(crypto_secretbox_BOXZEROBYTES);
 29398  };
 29399  
 29400  nacl.secretbox.open = function(box, nonce, key) {
 29401    checkArrayTypes(box, nonce, key);
 29402    checkLengths(key, nonce);
 29403    var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);
 29404    var m = new Uint8Array(c.length);
 29405    for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];
 29406    if (c.length < 32) return false;
 29407    if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false;
 29408    return m.subarray(crypto_secretbox_ZEROBYTES);
 29409  };
 29410  
 29411  nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;
 29412  nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;
 29413  nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;
 29414  
 29415  nacl.scalarMult = function(n, p) {
 29416    checkArrayTypes(n, p);
 29417    if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');
 29418    if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');
 29419    var q = new Uint8Array(crypto_scalarmult_BYTES);
 29420    crypto_scalarmult(q, n, p);
 29421    return q;
 29422  };
 29423  
 29424  nacl.scalarMult.base = function(n) {
 29425    checkArrayTypes(n);
 29426    if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');
 29427    var q = new Uint8Array(crypto_scalarmult_BYTES);
 29428    crypto_scalarmult_base(q, n);
 29429    return q;
 29430  };
 29431  
 29432  nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;
 29433  nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;
 29434  
 29435  nacl.box = function(msg, nonce, publicKey, secretKey) {
 29436    var k = nacl.box.before(publicKey, secretKey);
 29437    return nacl.secretbox(msg, nonce, k);
 29438  };
 29439  
 29440  nacl.box.before = function(publicKey, secretKey) {
 29441    checkArrayTypes(publicKey, secretKey);
 29442    checkBoxLengths(publicKey, secretKey);
 29443    var k = new Uint8Array(crypto_box_BEFORENMBYTES);
 29444    crypto_box_beforenm(k, publicKey, secretKey);
 29445    return k;
 29446  };
 29447  
 29448  nacl.box.after = nacl.secretbox;
 29449  
 29450  nacl.box.open = function(msg, nonce, publicKey, secretKey) {
 29451    var k = nacl.box.before(publicKey, secretKey);
 29452    return nacl.secretbox.open(msg, nonce, k);
 29453  };
 29454  
 29455  nacl.box.open.after = nacl.secretbox.open;
 29456  
 29457  nacl.box.keyPair = function() {
 29458    var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);
 29459    var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);
 29460    crypto_box_keypair(pk, sk);
 29461    return {publicKey: pk, secretKey: sk};
 29462  };
 29463  
 29464  nacl.box.keyPair.fromSecretKey = function(secretKey) {
 29465    checkArrayTypes(secretKey);
 29466    if (secretKey.length !== crypto_box_SECRETKEYBYTES)
 29467      throw new Error('bad secret key size');
 29468    var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);
 29469    crypto_scalarmult_base(pk, secretKey);
 29470    return {publicKey: pk, secretKey: new Uint8Array(secretKey)};
 29471  };
 29472  
 29473  nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;
 29474  nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;
 29475  nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;
 29476  nacl.box.nonceLength = crypto_box_NONCEBYTES;
 29477  nacl.box.overheadLength = nacl.secretbox.overheadLength;
 29478  
 29479  nacl.sign = function(msg, secretKey) {
 29480    checkArrayTypes(msg, secretKey);
 29481    if (secretKey.length !== crypto_sign_SECRETKEYBYTES)
 29482      throw new Error('bad secret key size');
 29483    var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);
 29484    crypto_sign(signedMsg, msg, msg.length, secretKey);
 29485    return signedMsg;
 29486  };
 29487  
 29488  nacl.sign.open = function(signedMsg, publicKey) {
 29489    if (arguments.length !== 2)
 29490      throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?');
 29491    checkArrayTypes(signedMsg, publicKey);
 29492    if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)
 29493      throw new Error('bad public key size');
 29494    var tmp = new Uint8Array(signedMsg.length);
 29495    var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);
 29496    if (mlen < 0) return null;
 29497    var m = new Uint8Array(mlen);
 29498    for (var i = 0; i < m.length; i++) m[i] = tmp[i];
 29499    return m;
 29500  };
 29501  
 29502  nacl.sign.detached = function(msg, secretKey) {
 29503    var signedMsg = nacl.sign(msg, secretKey);
 29504    var sig = new Uint8Array(crypto_sign_BYTES);
 29505    for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];
 29506    return sig;
 29507  };
 29508  
 29509  nacl.sign.detached.verify = function(msg, sig, publicKey) {
 29510    checkArrayTypes(msg, sig, publicKey);
 29511    if (sig.length !== crypto_sign_BYTES)
 29512      throw new Error('bad signature size');
 29513    if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)
 29514      throw new Error('bad public key size');
 29515    var sm = new Uint8Array(crypto_sign_BYTES + msg.length);
 29516    var m = new Uint8Array(crypto_sign_BYTES + msg.length);
 29517    var i;
 29518    for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];
 29519    for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];
 29520    return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);
 29521  };
 29522  
 29523  nacl.sign.keyPair = function() {
 29524    var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
 29525    var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);
 29526    crypto_sign_keypair(pk, sk);
 29527    return {publicKey: pk, secretKey: sk};
 29528  };
 29529  
 29530  nacl.sign.keyPair.fromSecretKey = function(secretKey) {
 29531    checkArrayTypes(secretKey);
 29532    if (secretKey.length !== crypto_sign_SECRETKEYBYTES)
 29533      throw new Error('bad secret key size');
 29534    var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
 29535    for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];
 29536    return {publicKey: pk, secretKey: new Uint8Array(secretKey)};
 29537  };
 29538  
 29539  nacl.sign.keyPair.fromSeed = function(seed) {
 29540    checkArrayTypes(seed);
 29541    if (seed.length !== crypto_sign_SEEDBYTES)
 29542      throw new Error('bad seed size');
 29543    var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
 29544    var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);
 29545    for (var i = 0; i < 32; i++) sk[i] = seed[i];
 29546    crypto_sign_keypair(pk, sk, true);
 29547    return {publicKey: pk, secretKey: sk};
 29548  };
 29549  
 29550  nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;
 29551  nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;
 29552  nacl.sign.seedLength = crypto_sign_SEEDBYTES;
 29553  nacl.sign.signatureLength = crypto_sign_BYTES;
 29554  
 29555  nacl.hash = function(msg) {
 29556    checkArrayTypes(msg);
 29557    var h = new Uint8Array(crypto_hash_BYTES);
 29558    crypto_hash(h, msg, msg.length);
 29559    return h;
 29560  };
 29561  
 29562  nacl.hash.hashLength = crypto_hash_BYTES;
 29563  
 29564  nacl.verify = function(x, y) {
 29565    checkArrayTypes(x, y);
 29566    // Zero length arguments are considered not equal.
 29567    if (x.length === 0 || y.length === 0) return false;
 29568    if (x.length !== y.length) return false;
 29569    return (vn(x, 0, y, 0, x.length) === 0) ? true : false;
 29570  };
 29571  
 29572  nacl.setPRNG = function(fn) {
 29573    randombytes = fn;
 29574  };
 29575  
 29576  (function() {
 29577    // Initialize PRNG if environment provides CSPRNG.
 29578    // If not, methods calling randombytes will throw.
 29579    var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;
 29580    if (crypto && crypto.getRandomValues) {
 29581      // Browsers.
 29582      var QUOTA = 65536;
 29583      nacl.setPRNG(function(x, n) {
 29584        var i, v = new Uint8Array(n);
 29585        for (i = 0; i < n; i += QUOTA) {
 29586          crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));
 29587        }
 29588        for (i = 0; i < n; i++) x[i] = v[i];
 29589        cleanup(v);
 29590      });
 29591    } else if (true) {
 29592      // Node.js.
 29593      crypto = __webpack_require__(11);
 29594      if (crypto && crypto.randomBytes) {
 29595        nacl.setPRNG(function(x, n) {
 29596          var i, v = crypto.randomBytes(n);
 29597          for (i = 0; i < n; i++) x[i] = v[i];
 29598          cleanup(v);
 29599        });
 29600      }
 29601    }
 29602  })();
 29603  
 29604  })(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));
 29605  
 29606  
 29607  /***/ }),
 29608  /* 77 */
 29609  /***/ (function(module, exports) {
 29610  
 29611  module.exports = require("events");
 29612  
 29613  /***/ }),
 29614  /* 78 */
 29615  /***/ (function(module, exports, __webpack_require__) {
 29616  
 29617  "use strict";
 29618  
 29619  
 29620  Object.defineProperty(exports, "__esModule", {
 29621    value: true
 29622  });
 29623  exports.hostedGit = exports.registries = undefined;
 29624  exports.getExoticResolver = getExoticResolver;
 29625  exports.hostedGitFragmentToGitUrl = hostedGitFragmentToGitUrl;
 29626  
 29627  var _baseResolver;
 29628  
 29629  function _load_baseResolver() {
 29630    return _baseResolver = _interopRequireDefault(__webpack_require__(123));
 29631  }
 29632  
 29633  var _npmResolver;
 29634  
 29635  function _load_npmResolver() {
 29636    return _npmResolver = _interopRequireDefault(__webpack_require__(215));
 29637  }
 29638  
 29639  var _yarnResolver;
 29640  
 29641  function _load_yarnResolver() {
 29642    return _yarnResolver = _interopRequireDefault(__webpack_require__(544));
 29643  }
 29644  
 29645  var _gitResolver;
 29646  
 29647  function _load_gitResolver() {
 29648    return _gitResolver = _interopRequireDefault(__webpack_require__(124));
 29649  }
 29650  
 29651  var _tarballResolver;
 29652  
 29653  function _load_tarballResolver() {
 29654    return _tarballResolver = _interopRequireDefault(__webpack_require__(542));
 29655  }
 29656  
 29657  var _githubResolver;
 29658  
 29659  function _load_githubResolver() {
 29660    return _githubResolver = _interopRequireDefault(__webpack_require__(361));
 29661  }
 29662  
 29663  var _fileResolver;
 29664  
 29665  function _load_fileResolver() {
 29666    return _fileResolver = _interopRequireDefault(__webpack_require__(213));
 29667  }
 29668  
 29669  var _linkResolver;
 29670  
 29671  function _load_linkResolver() {
 29672    return _linkResolver = _interopRequireDefault(__webpack_require__(362));
 29673  }
 29674  
 29675  var _gitlabResolver;
 29676  
 29677  function _load_gitlabResolver() {
 29678    return _gitlabResolver = _interopRequireDefault(__webpack_require__(540));
 29679  }
 29680  
 29681  var _gistResolver;
 29682  
 29683  function _load_gistResolver() {
 29684    return _gistResolver = _interopRequireDefault(__webpack_require__(214));
 29685  }
 29686  
 29687  var _bitbucketResolver;
 29688  
 29689  function _load_bitbucketResolver() {
 29690    return _bitbucketResolver = _interopRequireDefault(__webpack_require__(539));
 29691  }
 29692  
 29693  var _hostedGitResolver;
 29694  
 29695  function _load_hostedGitResolver() {
 29696    return _hostedGitResolver = __webpack_require__(109);
 29697  }
 29698  
 29699  var _registryResolver;
 29700  
 29701  function _load_registryResolver() {
 29702    return _registryResolver = _interopRequireDefault(__webpack_require__(541));
 29703  }
 29704  
 29705  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 29706  
 29707  const registries = exports.registries = {
 29708    npm: (_npmResolver || _load_npmResolver()).default,
 29709    yarn: (_yarnResolver || _load_yarnResolver()).default
 29710  };
 29711  
 29712  //
 29713  
 29714  const exotics = new Set([(_gitResolver || _load_gitResolver()).default, (_tarballResolver || _load_tarballResolver()).default, (_githubResolver || _load_githubResolver()).default, (_fileResolver || _load_fileResolver()).default, (_linkResolver || _load_linkResolver()).default, (_gitlabResolver || _load_gitlabResolver()).default, (_gistResolver || _load_gistResolver()).default, (_bitbucketResolver || _load_bitbucketResolver()).default]);
 29715  
 29716  function getExoticResolver(pattern) {
 29717    for (var _iterator = exotics, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 29718      var _ref;
 29719  
 29720      if (_isArray) {
 29721        if (_i >= _iterator.length) break;
 29722        _ref = _iterator[_i++];
 29723      } else {
 29724        _i = _iterator.next();
 29725        if (_i.done) break;
 29726        _ref = _i.value;
 29727      }
 29728  
 29729      const Resolver = _ref;
 29730  
 29731      if (Resolver.isVersion(pattern)) {
 29732        return Resolver;
 29733      }
 29734    }
 29735    return null;
 29736  }
 29737  
 29738  //
 29739  
 29740  const hostedGit = exports.hostedGit = {
 29741    github: (_githubResolver || _load_githubResolver()).default,
 29742    gitlab: (_gitlabResolver || _load_gitlabResolver()).default,
 29743    bitbucket: (_bitbucketResolver || _load_bitbucketResolver()).default
 29744  };
 29745  
 29746  function hostedGitFragmentToGitUrl(fragment, reporter) {
 29747    for (const key in hostedGit) {
 29748      const Resolver = hostedGit[key];
 29749      if (Resolver.isVersion(fragment)) {
 29750        return Resolver.getGitHTTPUrl((0, (_hostedGitResolver || _load_hostedGitResolver()).explodeHostedGitFragment)(fragment, reporter));
 29751      }
 29752    }
 29753  
 29754    return fragment;
 29755  }
 29756  
 29757  //
 29758  
 29759  for (const key in registries) {
 29760    var _class, _temp;
 29761  
 29762    const RegistryResolver = registries[key];
 29763  
 29764    exotics.add((_temp = _class = class extends (_registryResolver || _load_registryResolver()).default {}, _class.protocol = key, _class.factory = RegistryResolver, _temp));
 29765  }
 29766  
 29767  /***/ }),
 29768  /* 79 */
 29769  /***/ (function(module, exports, __webpack_require__) {
 29770  
 29771  "use strict";
 29772  
 29773  /**
 29774   * Base prompt implementation
 29775   * Should be extended by prompt types.
 29776   */
 29777  
 29778  var _ = __webpack_require__(38);
 29779  var chalk = __webpack_require__(30);
 29780  var runAsync = __webpack_require__(182);
 29781  var { filter, flatMap, share, take, takeUntil } = __webpack_require__(63);
 29782  var Choices = __webpack_require__(686);
 29783  var ScreenManager = __webpack_require__(697);
 29784  
 29785  class Prompt {
 29786    constructor(question, rl, answers) {
 29787      // Setup instance defaults property
 29788      _.assign(this, {
 29789        answers: answers,
 29790        status: 'pending'
 29791      });
 29792  
 29793      // Set defaults prompt options
 29794      this.opt = _.defaults(_.clone(question), {
 29795        validate: () => true,
 29796        filter: val => val,
 29797        when: () => true,
 29798        suffix: '',
 29799        prefix: chalk.green('?')
 29800      });
 29801  
 29802      // Make sure name is present
 29803      if (!this.opt.name) {
 29804        this.throwParamError('name');
 29805      }
 29806  
 29807      // Set default message if no message defined
 29808      if (!this.opt.message) {
 29809        this.opt.message = this.opt.name + ':';
 29810      }
 29811  
 29812      // Normalize choices
 29813      if (Array.isArray(this.opt.choices)) {
 29814        this.opt.choices = new Choices(this.opt.choices, answers);
 29815      }
 29816  
 29817      this.rl = rl;
 29818      this.screen = new ScreenManager(this.rl);
 29819    }
 29820  
 29821    /**
 29822     * Start the Inquiry session and manage output value filtering
 29823     * @return {Promise}
 29824     */
 29825  
 29826    run() {
 29827      return new Promise(resolve => {
 29828        this._run(value => resolve(value));
 29829      });
 29830    }
 29831  
 29832    // Default noop (this one should be overwritten in prompts)
 29833    _run(cb) {
 29834      cb();
 29835    }
 29836  
 29837    /**
 29838     * Throw an error telling a required parameter is missing
 29839     * @param  {String} name Name of the missing param
 29840     * @return {Throw Error}
 29841     */
 29842  
 29843    throwParamError(name) {
 29844      throw new Error('You must provide a `' + name + '` parameter');
 29845    }
 29846  
 29847    /**
 29848     * Called when the UI closes. Override to do any specific cleanup necessary
 29849     */
 29850    close() {
 29851      this.screen.releaseCursor();
 29852    }
 29853  
 29854    /**
 29855     * Run the provided validation method each time a submit event occur.
 29856     * @param  {Rx.Observable} submit - submit event flow
 29857     * @return {Object}        Object containing two observables: `success` and `error`
 29858     */
 29859    handleSubmitEvents(submit) {
 29860      var self = this;
 29861      var validate = runAsync(this.opt.validate);
 29862      var asyncFilter = runAsync(this.opt.filter);
 29863      var validation = submit.pipe(
 29864        flatMap(value =>
 29865          asyncFilter(value, self.answers).then(
 29866            filteredValue =>
 29867              validate(filteredValue, self.answers).then(
 29868                isValid => ({ isValid: isValid, value: filteredValue }),
 29869                err => ({ isValid: err })
 29870              ),
 29871            err => ({ isValid: err })
 29872          )
 29873        ),
 29874        share()
 29875      );
 29876  
 29877      var success = validation.pipe(
 29878        filter(state => state.isValid === true),
 29879        take(1)
 29880      );
 29881      var error = validation.pipe(
 29882        filter(state => state.isValid !== true),
 29883        takeUntil(success)
 29884      );
 29885  
 29886      return {
 29887        success: success,
 29888        error: error
 29889      };
 29890    }
 29891  
 29892    /**
 29893     * Generate the prompt question string
 29894     * @return {String} prompt question string
 29895     */
 29896  
 29897    getQuestion() {
 29898      var message =
 29899        this.opt.prefix +
 29900        ' ' +
 29901        chalk.bold(this.opt.message) +
 29902        this.opt.suffix +
 29903        chalk.reset(' ');
 29904  
 29905      // Append the default if available, and if question isn't answered
 29906      if (this.opt.default != null && this.status !== 'answered') {
 29907        // If default password is supplied, hide it
 29908        if (this.opt.type === 'password') {
 29909          message += chalk.italic.dim('[hidden] ');
 29910        } else {
 29911          message += chalk.dim('(' + this.opt.default + ') ');
 29912        }
 29913      }
 29914  
 29915      return message;
 29916    }
 29917  }
 29918  
 29919  module.exports = Prompt;
 29920  
 29921  
 29922  /***/ }),
 29923  /* 80 */
 29924  /***/ (function(module, exports, __webpack_require__) {
 29925  
 29926  "use strict";
 29927  
 29928  var { fromEvent } = __webpack_require__(183);
 29929  var { filter, map, share } = __webpack_require__(63);
 29930  
 29931  function normalizeKeypressEvents(value, key) {
 29932    return { value: value, key: key || {} };
 29933  }
 29934  
 29935  module.exports = function(rl) {
 29936    var keypress = fromEvent(rl.input, 'keypress', normalizeKeypressEvents)
 29937      // Ignore `enter` key. On the readline, we only care about the `line` event.
 29938      .pipe(filter(({ key }) => key.name !== 'enter' && key.name !== 'return'));
 29939  
 29940    return {
 29941      line: fromEvent(rl, 'line'),
 29942      keypress: keypress,
 29943  
 29944      normalizedUpKey: keypress.pipe(
 29945        filter(
 29946          ({ key }) =>
 29947            key.name === 'up' || key.name === 'k' || (key.name === 'p' && key.ctrl)
 29948        ),
 29949        share()
 29950      ),
 29951  
 29952      normalizedDownKey: keypress.pipe(
 29953        filter(
 29954          ({ key }) =>
 29955            key.name === 'down' || key.name === 'j' || (key.name === 'n' && key.ctrl)
 29956        ),
 29957        share()
 29958      ),
 29959  
 29960      numberKey: keypress.pipe(
 29961        filter(e => e.value && '123456789'.indexOf(e.value) >= 0),
 29962        map(e => Number(e.value)),
 29963        share()
 29964      ),
 29965  
 29966      spaceKey: keypress.pipe(
 29967        filter(({ key }) => key && key.name === 'space'),
 29968        share()
 29969      ),
 29970      aKey: keypress.pipe(
 29971        filter(({ key }) => key && key.name === 'a'),
 29972        share()
 29973      ),
 29974      iKey: keypress.pipe(
 29975        filter(({ key }) => key && key.name === 'i'),
 29976        share()
 29977      )
 29978    };
 29979  };
 29980  
 29981  
 29982  /***/ }),
 29983  /* 81 */
 29984  /***/ (function(module, exports, __webpack_require__) {
 29985  
 29986  (function(){
 29987  
 29988      // Copyright (c) 2005  Tom Wu
 29989      // All Rights Reserved.
 29990      // See "LICENSE" for details.
 29991  
 29992      // Basic JavaScript BN library - subset useful for RSA encryption.
 29993  
 29994      // Bits per digit
 29995      var dbits;
 29996  
 29997      // JavaScript engine analysis
 29998      var canary = 0xdeadbeefcafe;
 29999      var j_lm = ((canary&0xffffff)==0xefcafe);
 30000  
 30001      // (public) Constructor
 30002      function BigInteger(a,b,c) {
 30003        if(a != null)
 30004          if("number" == typeof a) this.fromNumber(a,b,c);
 30005          else if(b == null && "string" != typeof a) this.fromString(a,256);
 30006          else this.fromString(a,b);
 30007      }
 30008  
 30009      // return new, unset BigInteger
 30010      function nbi() { return new BigInteger(null); }
 30011  
 30012      // am: Compute w_j += (x*this_i), propagate carries,
 30013      // c is initial carry, returns final carry.
 30014      // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
 30015      // We need to select the fastest one that works in this environment.
 30016  
 30017      // am1: use a single mult and divide to get the high bits,
 30018      // max digit bits should be 26 because
 30019      // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
 30020      function am1(i,x,w,j,c,n) {
 30021        while(--n >= 0) {
 30022          var v = x*this[i++]+w[j]+c;
 30023          c = Math.floor(v/0x4000000);
 30024          w[j++] = v&0x3ffffff;
 30025        }
 30026        return c;
 30027      }
 30028      // am2 avoids a big mult-and-extract completely.
 30029      // Max digit bits should be <= 30 because we do bitwise ops
 30030      // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
 30031      function am2(i,x,w,j,c,n) {
 30032        var xl = x&0x7fff, xh = x>>15;
 30033        while(--n >= 0) {
 30034          var l = this[i]&0x7fff;
 30035          var h = this[i++]>>15;
 30036          var m = xh*l+h*xl;
 30037          l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);
 30038          c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);
 30039          w[j++] = l&0x3fffffff;
 30040        }
 30041        return c;
 30042      }
 30043      // Alternately, set max digit bits to 28 since some
 30044      // browsers slow down when dealing with 32-bit numbers.
 30045      function am3(i,x,w,j,c,n) {
 30046        var xl = x&0x3fff, xh = x>>14;
 30047        while(--n >= 0) {
 30048          var l = this[i]&0x3fff;
 30049          var h = this[i++]>>14;
 30050          var m = xh*l+h*xl;
 30051          l = xl*l+((m&0x3fff)<<14)+w[j]+c;
 30052          c = (l>>28)+(m>>14)+xh*h;
 30053          w[j++] = l&0xfffffff;
 30054        }
 30055        return c;
 30056      }
 30057      var inBrowser = typeof navigator !== "undefined";
 30058      if(inBrowser && j_lm && (navigator.appName == "Microsoft Internet Explorer")) {
 30059        BigInteger.prototype.am = am2;
 30060        dbits = 30;
 30061      }
 30062      else if(inBrowser && j_lm && (navigator.appName != "Netscape")) {
 30063        BigInteger.prototype.am = am1;
 30064        dbits = 26;
 30065      }
 30066      else { // Mozilla/Netscape seems to prefer am3
 30067        BigInteger.prototype.am = am3;
 30068        dbits = 28;
 30069      }
 30070  
 30071      BigInteger.prototype.DB = dbits;
 30072      BigInteger.prototype.DM = ((1<<dbits)-1);
 30073      BigInteger.prototype.DV = (1<<dbits);
 30074  
 30075      var BI_FP = 52;
 30076      BigInteger.prototype.FV = Math.pow(2,BI_FP);
 30077      BigInteger.prototype.F1 = BI_FP-dbits;
 30078      BigInteger.prototype.F2 = 2*dbits-BI_FP;
 30079  
 30080      // Digit conversions
 30081      var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";
 30082      var BI_RC = new Array();
 30083      var rr,vv;
 30084      rr = "0".charCodeAt(0);
 30085      for(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;
 30086      rr = "a".charCodeAt(0);
 30087      for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
 30088      rr = "A".charCodeAt(0);
 30089      for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
 30090  
 30091      function int2char(n) { return BI_RM.charAt(n); }
 30092      function intAt(s,i) {
 30093        var c = BI_RC[s.charCodeAt(i)];
 30094        return (c==null)?-1:c;
 30095      }
 30096  
 30097      // (protected) copy this to r
 30098      function bnpCopyTo(r) {
 30099        for(var i = this.t-1; i >= 0; --i) r[i] = this[i];
 30100        r.t = this.t;
 30101        r.s = this.s;
 30102      }
 30103  
 30104      // (protected) set from integer value x, -DV <= x < DV
 30105      function bnpFromInt(x) {
 30106        this.t = 1;
 30107        this.s = (x<0)?-1:0;
 30108        if(x > 0) this[0] = x;
 30109        else if(x < -1) this[0] = x+this.DV;
 30110        else this.t = 0;
 30111      }
 30112  
 30113      // return bigint initialized to value
 30114      function nbv(i) { var r = nbi(); r.fromInt(i); return r; }
 30115  
 30116      // (protected) set from string and radix
 30117      function bnpFromString(s,b) {
 30118        var k;
 30119        if(b == 16) k = 4;
 30120        else if(b == 8) k = 3;
 30121        else if(b == 256) k = 8; // byte array
 30122        else if(b == 2) k = 1;
 30123        else if(b == 32) k = 5;
 30124        else if(b == 4) k = 2;
 30125        else { this.fromRadix(s,b); return; }
 30126        this.t = 0;
 30127        this.s = 0;
 30128        var i = s.length, mi = false, sh = 0;
 30129        while(--i >= 0) {
 30130          var x = (k==8)?s[i]&0xff:intAt(s,i);
 30131          if(x < 0) {
 30132            if(s.charAt(i) == "-") mi = true;
 30133            continue;
 30134          }
 30135          mi = false;
 30136          if(sh == 0)
 30137            this[this.t++] = x;
 30138          else if(sh+k > this.DB) {
 30139            this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<<sh;
 30140            this[this.t++] = (x>>(this.DB-sh));
 30141          }
 30142          else
 30143            this[this.t-1] |= x<<sh;
 30144          sh += k;
 30145          if(sh >= this.DB) sh -= this.DB;
 30146        }
 30147        if(k == 8 && (s[0]&0x80) != 0) {
 30148          this.s = -1;
 30149          if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)<<sh;
 30150        }
 30151        this.clamp();
 30152        if(mi) BigInteger.ZERO.subTo(this,this);
 30153      }
 30154  
 30155      // (protected) clamp off excess high words
 30156      function bnpClamp() {
 30157        var c = this.s&this.DM;
 30158        while(this.t > 0 && this[this.t-1] == c) --this.t;
 30159      }
 30160  
 30161      // (public) return string representation in given radix
 30162      function bnToString(b) {
 30163        if(this.s < 0) return "-"+this.negate().toString(b);
 30164        var k;
 30165        if(b == 16) k = 4;
 30166        else if(b == 8) k = 3;
 30167        else if(b == 2) k = 1;
 30168        else if(b == 32) k = 5;
 30169        else if(b == 4) k = 2;
 30170        else return this.toRadix(b);
 30171        var km = (1<<k)-1, d, m = false, r = "", i = this.t;
 30172        var p = this.DB-(i*this.DB)%k;
 30173        if(i-- > 0) {
 30174          if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }
 30175          while(i >= 0) {
 30176            if(p < k) {
 30177              d = (this[i]&((1<<p)-1))<<(k-p);
 30178              d |= this[--i]>>(p+=this.DB-k);
 30179            }
 30180            else {
 30181              d = (this[i]>>(p-=k))&km;
 30182              if(p <= 0) { p += this.DB; --i; }
 30183            }
 30184            if(d > 0) m = true;
 30185            if(m) r += int2char(d);
 30186          }
 30187        }
 30188        return m?r:"0";
 30189      }
 30190  
 30191      // (public) -this
 30192      function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }
 30193  
 30194      // (public) |this|
 30195      function bnAbs() { return (this.s<0)?this.negate():this; }
 30196  
 30197      // (public) return + if this > a, - if this < a, 0 if equal
 30198      function bnCompareTo(a) {
 30199        var r = this.s-a.s;
 30200        if(r != 0) return r;
 30201        var i = this.t;
 30202        r = i-a.t;
 30203        if(r != 0) return (this.s<0)?-r:r;
 30204        while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;
 30205        return 0;
 30206      }
 30207  
 30208      // returns bit length of the integer x
 30209      function nbits(x) {
 30210        var r = 1, t;
 30211        if((t=x>>>16) != 0) { x = t; r += 16; }
 30212        if((t=x>>8) != 0) { x = t; r += 8; }
 30213        if((t=x>>4) != 0) { x = t; r += 4; }
 30214        if((t=x>>2) != 0) { x = t; r += 2; }
 30215        if((t=x>>1) != 0) { x = t; r += 1; }
 30216        return r;
 30217      }
 30218  
 30219      // (public) return the number of bits in "this"
 30220      function bnBitLength() {
 30221        if(this.t <= 0) return 0;
 30222        return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));
 30223      }
 30224  
 30225      // (protected) r = this << n*DB
 30226      function bnpDLShiftTo(n,r) {
 30227        var i;
 30228        for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];
 30229        for(i = n-1; i >= 0; --i) r[i] = 0;
 30230        r.t = this.t+n;
 30231        r.s = this.s;
 30232      }
 30233  
 30234      // (protected) r = this >> n*DB
 30235      function bnpDRShiftTo(n,r) {
 30236        for(var i = n; i < this.t; ++i) r[i-n] = this[i];
 30237        r.t = Math.max(this.t-n,0);
 30238        r.s = this.s;
 30239      }
 30240  
 30241      // (protected) r = this << n
 30242      function bnpLShiftTo(n,r) {
 30243        var bs = n%this.DB;
 30244        var cbs = this.DB-bs;
 30245        var bm = (1<<cbs)-1;
 30246        var ds = Math.floor(n/this.DB), c = (this.s<<bs)&this.DM, i;
 30247        for(i = this.t-1; i >= 0; --i) {
 30248          r[i+ds+1] = (this[i]>>cbs)|c;
 30249          c = (this[i]&bm)<<bs;
 30250        }
 30251        for(i = ds-1; i >= 0; --i) r[i] = 0;
 30252        r[ds] = c;
 30253        r.t = this.t+ds+1;
 30254        r.s = this.s;
 30255        r.clamp();
 30256      }
 30257  
 30258      // (protected) r = this >> n
 30259      function bnpRShiftTo(n,r) {
 30260        r.s = this.s;
 30261        var ds = Math.floor(n/this.DB);
 30262        if(ds >= this.t) { r.t = 0; return; }
 30263        var bs = n%this.DB;
 30264        var cbs = this.DB-bs;
 30265        var bm = (1<<bs)-1;
 30266        r[0] = this[ds]>>bs;
 30267        for(var i = ds+1; i < this.t; ++i) {
 30268          r[i-ds-1] |= (this[i]&bm)<<cbs;
 30269          r[i-ds] = this[i]>>bs;
 30270        }
 30271        if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<<cbs;
 30272        r.t = this.t-ds;
 30273        r.clamp();
 30274      }
 30275  
 30276      // (protected) r = this - a
 30277      function bnpSubTo(a,r) {
 30278        var i = 0, c = 0, m = Math.min(a.t,this.t);
 30279        while(i < m) {
 30280          c += this[i]-a[i];
 30281          r[i++] = c&this.DM;
 30282          c >>= this.DB;
 30283        }
 30284        if(a.t < this.t) {
 30285          c -= a.s;
 30286          while(i < this.t) {
 30287            c += this[i];
 30288            r[i++] = c&this.DM;
 30289            c >>= this.DB;
 30290          }
 30291          c += this.s;
 30292        }
 30293        else {
 30294          c += this.s;
 30295          while(i < a.t) {
 30296            c -= a[i];
 30297            r[i++] = c&this.DM;
 30298            c >>= this.DB;
 30299          }
 30300          c -= a.s;
 30301        }
 30302        r.s = (c<0)?-1:0;
 30303        if(c < -1) r[i++] = this.DV+c;
 30304        else if(c > 0) r[i++] = c;
 30305        r.t = i;
 30306        r.clamp();
 30307      }
 30308  
 30309      // (protected) r = this * a, r != this,a (HAC 14.12)
 30310      // "this" should be the larger one if appropriate.
 30311      function bnpMultiplyTo(a,r) {
 30312        var x = this.abs(), y = a.abs();
 30313        var i = x.t;
 30314        r.t = i+y.t;
 30315        while(--i >= 0) r[i] = 0;
 30316        for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);
 30317        r.s = 0;
 30318        r.clamp();
 30319        if(this.s != a.s) BigInteger.ZERO.subTo(r,r);
 30320      }
 30321  
 30322      // (protected) r = this^2, r != this (HAC 14.16)
 30323      function bnpSquareTo(r) {
 30324        var x = this.abs();
 30325        var i = r.t = 2*x.t;
 30326        while(--i >= 0) r[i] = 0;
 30327        for(i = 0; i < x.t-1; ++i) {
 30328          var c = x.am(i,x[i],r,2*i,0,1);
 30329          if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {
 30330            r[i+x.t] -= x.DV;
 30331            r[i+x.t+1] = 1;
 30332          }
 30333        }
 30334        if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);
 30335        r.s = 0;
 30336        r.clamp();
 30337      }
 30338  
 30339      // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
 30340      // r != q, this != m.  q or r may be null.
 30341      function bnpDivRemTo(m,q,r) {
 30342        var pm = m.abs();
 30343        if(pm.t <= 0) return;
 30344        var pt = this.abs();
 30345        if(pt.t < pm.t) {
 30346          if(q != null) q.fromInt(0);
 30347          if(r != null) this.copyTo(r);
 30348          return;
 30349        }
 30350        if(r == null) r = nbi();
 30351        var y = nbi(), ts = this.s, ms = m.s;
 30352        var nsh = this.DB-nbits(pm[pm.t-1]);   // normalize modulus
 30353        if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }
 30354        else { pm.copyTo(y); pt.copyTo(r); }
 30355        var ys = y.t;
 30356        var y0 = y[ys-1];
 30357        if(y0 == 0) return;
 30358        var yt = y0*(1<<this.F1)+((ys>1)?y[ys-2]>>this.F2:0);
 30359        var d1 = this.FV/yt, d2 = (1<<this.F1)/yt, e = 1<<this.F2;
 30360        var i = r.t, j = i-ys, t = (q==null)?nbi():q;
 30361        y.dlShiftTo(j,t);
 30362        if(r.compareTo(t) >= 0) {
 30363          r[r.t++] = 1;
 30364          r.subTo(t,r);
 30365        }
 30366        BigInteger.ONE.dlShiftTo(ys,t);
 30367        t.subTo(y,y);  // "negative" y so we can replace sub with am later
 30368        while(y.t < ys) y[y.t++] = 0;
 30369        while(--j >= 0) {
 30370          // Estimate quotient digit
 30371          var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);
 30372          if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) {   // Try it out
 30373            y.dlShiftTo(j,t);
 30374            r.subTo(t,r);
 30375            while(r[i] < --qd) r.subTo(t,r);
 30376          }
 30377        }
 30378        if(q != null) {
 30379          r.drShiftTo(ys,q);
 30380          if(ts != ms) BigInteger.ZERO.subTo(q,q);
 30381        }
 30382        r.t = ys;
 30383        r.clamp();
 30384        if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder
 30385        if(ts < 0) BigInteger.ZERO.subTo(r,r);
 30386      }
 30387  
 30388      // (public) this mod a
 30389      function bnMod(a) {
 30390        var r = nbi();
 30391        this.abs().divRemTo(a,null,r);
 30392        if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);
 30393        return r;
 30394      }
 30395  
 30396      // Modular reduction using "classic" algorithm
 30397      function Classic(m) { this.m = m; }
 30398      function cConvert(x) {
 30399        if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);
 30400        else return x;
 30401      }
 30402      function cRevert(x) { return x; }
 30403      function cReduce(x) { x.divRemTo(this.m,null,x); }
 30404      function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
 30405      function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
 30406  
 30407      Classic.prototype.convert = cConvert;
 30408      Classic.prototype.revert = cRevert;
 30409      Classic.prototype.reduce = cReduce;
 30410      Classic.prototype.mulTo = cMulTo;
 30411      Classic.prototype.sqrTo = cSqrTo;
 30412  
 30413      // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
 30414      // justification:
 30415      //         xy == 1 (mod m)
 30416      //         xy =  1+km
 30417      //   xy(2-xy) = (1+km)(1-km)
 30418      // x[y(2-xy)] = 1-k^2m^2
 30419      // x[y(2-xy)] == 1 (mod m^2)
 30420      // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
 30421      // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
 30422      // JS multiply "overflows" differently from C/C++, so care is needed here.
 30423      function bnpInvDigit() {
 30424        if(this.t < 1) return 0;
 30425        var x = this[0];
 30426        if((x&1) == 0) return 0;
 30427        var y = x&3;       // y == 1/x mod 2^2
 30428        y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4
 30429        y = (y*(2-(x&0xff)*y))&0xff;   // y == 1/x mod 2^8
 30430        y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff;    // y == 1/x mod 2^16
 30431        // last step - calculate inverse mod DV directly;
 30432        // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
 30433        y = (y*(2-x*y%this.DV))%this.DV;       // y == 1/x mod 2^dbits
 30434        // we really want the negative inverse, and -DV < y < DV
 30435        return (y>0)?this.DV-y:-y;
 30436      }
 30437  
 30438      // Montgomery reduction
 30439      function Montgomery(m) {
 30440        this.m = m;
 30441        this.mp = m.invDigit();
 30442        this.mpl = this.mp&0x7fff;
 30443        this.mph = this.mp>>15;
 30444        this.um = (1<<(m.DB-15))-1;
 30445        this.mt2 = 2*m.t;
 30446      }
 30447  
 30448      // xR mod m
 30449      function montConvert(x) {
 30450        var r = nbi();
 30451        x.abs().dlShiftTo(this.m.t,r);
 30452        r.divRemTo(this.m,null,r);
 30453        if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);
 30454        return r;
 30455      }
 30456  
 30457      // x/R mod m
 30458      function montRevert(x) {
 30459        var r = nbi();
 30460        x.copyTo(r);
 30461        this.reduce(r);
 30462        return r;
 30463      }
 30464  
 30465      // x = x/R mod m (HAC 14.32)
 30466      function montReduce(x) {
 30467        while(x.t <= this.mt2) // pad x so am has enough room later
 30468          x[x.t++] = 0;
 30469        for(var i = 0; i < this.m.t; ++i) {
 30470          // faster way of calculating u0 = x[i]*mp mod DV
 30471          var j = x[i]&0x7fff;
 30472          var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;
 30473          // use am to combine the multiply-shift-add into one call
 30474          j = i+this.m.t;
 30475          x[j] += this.m.am(0,u0,x,i,0,this.m.t);
 30476          // propagate carry
 30477          while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }
 30478        }
 30479        x.clamp();
 30480        x.drShiftTo(this.m.t,x);
 30481        if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
 30482      }
 30483  
 30484      // r = "x^2/R mod m"; x != r
 30485      function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
 30486  
 30487      // r = "xy/R mod m"; x,y != r
 30488      function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
 30489  
 30490      Montgomery.prototype.convert = montConvert;
 30491      Montgomery.prototype.revert = montRevert;
 30492      Montgomery.prototype.reduce = montReduce;
 30493      Montgomery.prototype.mulTo = montMulTo;
 30494      Montgomery.prototype.sqrTo = montSqrTo;
 30495  
 30496      // (protected) true iff this is even
 30497      function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }
 30498  
 30499      // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
 30500      function bnpExp(e,z) {
 30501        if(e > 0xffffffff || e < 1) return BigInteger.ONE;
 30502        var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;
 30503        g.copyTo(r);
 30504        while(--i >= 0) {
 30505          z.sqrTo(r,r2);
 30506          if((e&(1<<i)) > 0) z.mulTo(r2,g,r);
 30507          else { var t = r; r = r2; r2 = t; }
 30508        }
 30509        return z.revert(r);
 30510      }
 30511  
 30512      // (public) this^e % m, 0 <= e < 2^32
 30513      function bnModPowInt(e,m) {
 30514        var z;
 30515        if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);
 30516        return this.exp(e,z);
 30517      }
 30518  
 30519      // protected
 30520      BigInteger.prototype.copyTo = bnpCopyTo;
 30521      BigInteger.prototype.fromInt = bnpFromInt;
 30522      BigInteger.prototype.fromString = bnpFromString;
 30523      BigInteger.prototype.clamp = bnpClamp;
 30524      BigInteger.prototype.dlShiftTo = bnpDLShiftTo;
 30525      BigInteger.prototype.drShiftTo = bnpDRShiftTo;
 30526      BigInteger.prototype.lShiftTo = bnpLShiftTo;
 30527      BigInteger.prototype.rShiftTo = bnpRShiftTo;
 30528      BigInteger.prototype.subTo = bnpSubTo;
 30529      BigInteger.prototype.multiplyTo = bnpMultiplyTo;
 30530      BigInteger.prototype.squareTo = bnpSquareTo;
 30531      BigInteger.prototype.divRemTo = bnpDivRemTo;
 30532      BigInteger.prototype.invDigit = bnpInvDigit;
 30533      BigInteger.prototype.isEven = bnpIsEven;
 30534      BigInteger.prototype.exp = bnpExp;
 30535  
 30536      // public
 30537      BigInteger.prototype.toString = bnToString;
 30538      BigInteger.prototype.negate = bnNegate;
 30539      BigInteger.prototype.abs = bnAbs;
 30540      BigInteger.prototype.compareTo = bnCompareTo;
 30541      BigInteger.prototype.bitLength = bnBitLength;
 30542      BigInteger.prototype.mod = bnMod;
 30543      BigInteger.prototype.modPowInt = bnModPowInt;
 30544  
 30545      // "constants"
 30546      BigInteger.ZERO = nbv(0);
 30547      BigInteger.ONE = nbv(1);
 30548  
 30549      // Copyright (c) 2005-2009  Tom Wu
 30550      // All Rights Reserved.
 30551      // See "LICENSE" for details.
 30552  
 30553      // Extended JavaScript BN functions, required for RSA private ops.
 30554  
 30555      // Version 1.1: new BigInteger("0", 10) returns "proper" zero
 30556      // Version 1.2: square() API, isProbablePrime fix
 30557  
 30558      // (public)
 30559      function bnClone() { var r = nbi(); this.copyTo(r); return r; }
 30560  
 30561      // (public) return value as integer
 30562      function bnIntValue() {
 30563        if(this.s < 0) {
 30564          if(this.t == 1) return this[0]-this.DV;
 30565          else if(this.t == 0) return -1;
 30566        }
 30567        else if(this.t == 1) return this[0];
 30568        else if(this.t == 0) return 0;
 30569        // assumes 16 < DB < 32
 30570        return ((this[1]&((1<<(32-this.DB))-1))<<this.DB)|this[0];
 30571      }
 30572  
 30573      // (public) return value as byte
 30574      function bnByteValue() { return (this.t==0)?this.s:(this[0]<<24)>>24; }
 30575  
 30576      // (public) return value as short (assumes DB>=16)
 30577      function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; }
 30578  
 30579      // (protected) return x s.t. r^x < DV
 30580      function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }
 30581  
 30582      // (public) 0 if this == 0, 1 if this > 0
 30583      function bnSigNum() {
 30584        if(this.s < 0) return -1;
 30585        else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;
 30586        else return 1;
 30587      }
 30588  
 30589      // (protected) convert to radix string
 30590      function bnpToRadix(b) {
 30591        if(b == null) b = 10;
 30592        if(this.signum() == 0 || b < 2 || b > 36) return "0";
 30593        var cs = this.chunkSize(b);
 30594        var a = Math.pow(b,cs);
 30595        var d = nbv(a), y = nbi(), z = nbi(), r = "";
 30596        this.divRemTo(d,y,z);
 30597        while(y.signum() > 0) {
 30598          r = (a+z.intValue()).toString(b).substr(1) + r;
 30599          y.divRemTo(d,y,z);
 30600        }
 30601        return z.intValue().toString(b) + r;
 30602      }
 30603  
 30604      // (protected) convert from radix string
 30605      function bnpFromRadix(s,b) {
 30606        this.fromInt(0);
 30607        if(b == null) b = 10;
 30608        var cs = this.chunkSize(b);
 30609        var d = Math.pow(b,cs), mi = false, j = 0, w = 0;
 30610        for(var i = 0; i < s.length; ++i) {
 30611          var x = intAt(s,i);
 30612          if(x < 0) {
 30613            if(s.charAt(i) == "-" && this.signum() == 0) mi = true;
 30614            continue;
 30615          }
 30616          w = b*w+x;
 30617          if(++j >= cs) {
 30618            this.dMultiply(d);
 30619            this.dAddOffset(w,0);
 30620            j = 0;
 30621            w = 0;
 30622          }
 30623        }
 30624        if(j > 0) {
 30625          this.dMultiply(Math.pow(b,j));
 30626          this.dAddOffset(w,0);
 30627        }
 30628        if(mi) BigInteger.ZERO.subTo(this,this);
 30629      }
 30630  
 30631      // (protected) alternate constructor
 30632      function bnpFromNumber(a,b,c) {
 30633        if("number" == typeof b) {
 30634          // new BigInteger(int,int,RNG)
 30635          if(a < 2) this.fromInt(1);
 30636          else {
 30637            this.fromNumber(a,c);
 30638            if(!this.testBit(a-1))	// force MSB set
 30639              this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);
 30640            if(this.isEven()) this.dAddOffset(1,0); // force odd
 30641            while(!this.isProbablePrime(b)) {
 30642              this.dAddOffset(2,0);
 30643              if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);
 30644            }
 30645          }
 30646        }
 30647        else {
 30648          // new BigInteger(int,RNG)
 30649          var x = new Array(), t = a&7;
 30650          x.length = (a>>3)+1;
 30651          b.nextBytes(x);
 30652          if(t > 0) x[0] &= ((1<<t)-1); else x[0] = 0;
 30653          this.fromString(x,256);
 30654        }
 30655      }
 30656  
 30657      // (public) convert to bigendian byte array
 30658      function bnToByteArray() {
 30659        var i = this.t, r = new Array();
 30660        r[0] = this.s;
 30661        var p = this.DB-(i*this.DB)%8, d, k = 0;
 30662        if(i-- > 0) {
 30663          if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p)
 30664            r[k++] = d|(this.s<<(this.DB-p));
 30665          while(i >= 0) {
 30666            if(p < 8) {
 30667              d = (this[i]&((1<<p)-1))<<(8-p);
 30668              d |= this[--i]>>(p+=this.DB-8);
 30669            }
 30670            else {
 30671              d = (this[i]>>(p-=8))&0xff;
 30672              if(p <= 0) { p += this.DB; --i; }
 30673            }
 30674            if((d&0x80) != 0) d |= -256;
 30675            if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;
 30676            if(k > 0 || d != this.s) r[k++] = d;
 30677          }
 30678        }
 30679        return r;
 30680      }
 30681  
 30682      function bnEquals(a) { return(this.compareTo(a)==0); }
 30683      function bnMin(a) { return(this.compareTo(a)<0)?this:a; }
 30684      function bnMax(a) { return(this.compareTo(a)>0)?this:a; }
 30685  
 30686      // (protected) r = this op a (bitwise)
 30687      function bnpBitwiseTo(a,op,r) {
 30688        var i, f, m = Math.min(a.t,this.t);
 30689        for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]);
 30690        if(a.t < this.t) {
 30691          f = a.s&this.DM;
 30692          for(i = m; i < this.t; ++i) r[i] = op(this[i],f);
 30693          r.t = this.t;
 30694        }
 30695        else {
 30696          f = this.s&this.DM;
 30697          for(i = m; i < a.t; ++i) r[i] = op(f,a[i]);
 30698          r.t = a.t;
 30699        }
 30700        r.s = op(this.s,a.s);
 30701        r.clamp();
 30702      }
 30703  
 30704      // (public) this & a
 30705      function op_and(x,y) { return x&y; }
 30706      function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }
 30707  
 30708      // (public) this | a
 30709      function op_or(x,y) { return x|y; }
 30710      function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }
 30711  
 30712      // (public) this ^ a
 30713      function op_xor(x,y) { return x^y; }
 30714      function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }
 30715  
 30716      // (public) this & ~a
 30717      function op_andnot(x,y) { return x&~y; }
 30718      function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }
 30719  
 30720      // (public) ~this
 30721      function bnNot() {
 30722        var r = nbi();
 30723        for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i];
 30724        r.t = this.t;
 30725        r.s = ~this.s;
 30726        return r;
 30727      }
 30728  
 30729      // (public) this << n
 30730      function bnShiftLeft(n) {
 30731        var r = nbi();
 30732        if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);
 30733        return r;
 30734      }
 30735  
 30736      // (public) this >> n
 30737      function bnShiftRight(n) {
 30738        var r = nbi();
 30739        if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);
 30740        return r;
 30741      }
 30742  
 30743      // return index of lowest 1-bit in x, x < 2^31
 30744      function lbit(x) {
 30745        if(x == 0) return -1;
 30746        var r = 0;
 30747        if((x&0xffff) == 0) { x >>= 16; r += 16; }
 30748        if((x&0xff) == 0) { x >>= 8; r += 8; }
 30749        if((x&0xf) == 0) { x >>= 4; r += 4; }
 30750        if((x&3) == 0) { x >>= 2; r += 2; }
 30751        if((x&1) == 0) ++r;
 30752        return r;
 30753      }
 30754  
 30755      // (public) returns index of lowest 1-bit (or -1 if none)
 30756      function bnGetLowestSetBit() {
 30757        for(var i = 0; i < this.t; ++i)
 30758          if(this[i] != 0) return i*this.DB+lbit(this[i]);
 30759        if(this.s < 0) return this.t*this.DB;
 30760        return -1;
 30761      }
 30762  
 30763      // return number of 1 bits in x
 30764      function cbit(x) {
 30765        var r = 0;
 30766        while(x != 0) { x &= x-1; ++r; }
 30767        return r;
 30768      }
 30769  
 30770      // (public) return number of set bits
 30771      function bnBitCount() {
 30772        var r = 0, x = this.s&this.DM;
 30773        for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x);
 30774        return r;
 30775      }
 30776  
 30777      // (public) true iff nth bit is set
 30778      function bnTestBit(n) {
 30779        var j = Math.floor(n/this.DB);
 30780        if(j >= this.t) return(this.s!=0);
 30781        return((this[j]&(1<<(n%this.DB)))!=0);
 30782      }
 30783  
 30784      // (protected) this op (1<<n)
 30785      function bnpChangeBit(n,op) {
 30786        var r = BigInteger.ONE.shiftLeft(n);
 30787        this.bitwiseTo(r,op,r);
 30788        return r;
 30789      }
 30790  
 30791      // (public) this | (1<<n)
 30792      function bnSetBit(n) { return this.changeBit(n,op_or); }
 30793  
 30794      // (public) this & ~(1<<n)
 30795      function bnClearBit(n) { return this.changeBit(n,op_andnot); }
 30796  
 30797      // (public) this ^ (1<<n)
 30798      function bnFlipBit(n) { return this.changeBit(n,op_xor); }
 30799  
 30800      // (protected) r = this + a
 30801      function bnpAddTo(a,r) {
 30802        var i = 0, c = 0, m = Math.min(a.t,this.t);
 30803        while(i < m) {
 30804          c += this[i]+a[i];
 30805          r[i++] = c&this.DM;
 30806          c >>= this.DB;
 30807        }
 30808        if(a.t < this.t) {
 30809          c += a.s;
 30810          while(i < this.t) {
 30811            c += this[i];
 30812            r[i++] = c&this.DM;
 30813            c >>= this.DB;
 30814          }
 30815          c += this.s;
 30816        }
 30817        else {
 30818          c += this.s;
 30819          while(i < a.t) {
 30820            c += a[i];
 30821            r[i++] = c&this.DM;
 30822            c >>= this.DB;
 30823          }
 30824          c += a.s;
 30825        }
 30826        r.s = (c<0)?-1:0;
 30827        if(c > 0) r[i++] = c;
 30828        else if(c < -1) r[i++] = this.DV+c;
 30829        r.t = i;
 30830        r.clamp();
 30831      }
 30832  
 30833      // (public) this + a
 30834      function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }
 30835  
 30836      // (public) this - a
 30837      function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }
 30838  
 30839      // (public) this * a
 30840      function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }
 30841  
 30842      // (public) this^2
 30843      function bnSquare() { var r = nbi(); this.squareTo(r); return r; }
 30844  
 30845      // (public) this / a
 30846      function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }
 30847  
 30848      // (public) this % a
 30849      function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }
 30850  
 30851      // (public) [this/a,this%a]
 30852      function bnDivideAndRemainder(a) {
 30853        var q = nbi(), r = nbi();
 30854        this.divRemTo(a,q,r);
 30855        return new Array(q,r);
 30856      }
 30857  
 30858      // (protected) this *= n, this >= 0, 1 < n < DV
 30859      function bnpDMultiply(n) {
 30860        this[this.t] = this.am(0,n-1,this,0,0,this.t);
 30861        ++this.t;
 30862        this.clamp();
 30863      }
 30864  
 30865      // (protected) this += n << w words, this >= 0
 30866      function bnpDAddOffset(n,w) {
 30867        if(n == 0) return;
 30868        while(this.t <= w) this[this.t++] = 0;
 30869        this[w] += n;
 30870        while(this[w] >= this.DV) {
 30871          this[w] -= this.DV;
 30872          if(++w >= this.t) this[this.t++] = 0;
 30873          ++this[w];
 30874        }
 30875      }
 30876  
 30877      // A "null" reducer
 30878      function NullExp() {}
 30879      function nNop(x) { return x; }
 30880      function nMulTo(x,y,r) { x.multiplyTo(y,r); }
 30881      function nSqrTo(x,r) { x.squareTo(r); }
 30882  
 30883      NullExp.prototype.convert = nNop;
 30884      NullExp.prototype.revert = nNop;
 30885      NullExp.prototype.mulTo = nMulTo;
 30886      NullExp.prototype.sqrTo = nSqrTo;
 30887  
 30888      // (public) this^e
 30889      function bnPow(e) { return this.exp(e,new NullExp()); }
 30890  
 30891      // (protected) r = lower n words of "this * a", a.t <= n
 30892      // "this" should be the larger one if appropriate.
 30893      function bnpMultiplyLowerTo(a,n,r) {
 30894        var i = Math.min(this.t+a.t,n);
 30895        r.s = 0; // assumes a,this >= 0
 30896        r.t = i;
 30897        while(i > 0) r[--i] = 0;
 30898        var j;
 30899        for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t);
 30900        for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i);
 30901        r.clamp();
 30902      }
 30903  
 30904      // (protected) r = "this * a" without lower n words, n > 0
 30905      // "this" should be the larger one if appropriate.
 30906      function bnpMultiplyUpperTo(a,n,r) {
 30907        --n;
 30908        var i = r.t = this.t+a.t-n;
 30909        r.s = 0; // assumes a,this >= 0
 30910        while(--i >= 0) r[i] = 0;
 30911        for(i = Math.max(n-this.t,0); i < a.t; ++i)
 30912          r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n);
 30913        r.clamp();
 30914        r.drShiftTo(1,r);
 30915      }
 30916  
 30917      // Barrett modular reduction
 30918      function Barrett(m) {
 30919        // setup Barrett
 30920        this.r2 = nbi();
 30921        this.q3 = nbi();
 30922        BigInteger.ONE.dlShiftTo(2*m.t,this.r2);
 30923        this.mu = this.r2.divide(m);
 30924        this.m = m;
 30925      }
 30926  
 30927      function barrettConvert(x) {
 30928        if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);
 30929        else if(x.compareTo(this.m) < 0) return x;
 30930        else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }
 30931      }
 30932  
 30933      function barrettRevert(x) { return x; }
 30934  
 30935      // x = x mod m (HAC 14.42)
 30936      function barrettReduce(x) {
 30937        x.drShiftTo(this.m.t-1,this.r2);
 30938        if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }
 30939        this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);
 30940        this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);
 30941        while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);
 30942        x.subTo(this.r2,x);
 30943        while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
 30944      }
 30945  
 30946      // r = x^2 mod m; x != r
 30947      function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
 30948  
 30949      // r = x*y mod m; x,y != r
 30950      function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
 30951  
 30952      Barrett.prototype.convert = barrettConvert;
 30953      Barrett.prototype.revert = barrettRevert;
 30954      Barrett.prototype.reduce = barrettReduce;
 30955      Barrett.prototype.mulTo = barrettMulTo;
 30956      Barrett.prototype.sqrTo = barrettSqrTo;
 30957  
 30958      // (public) this^e % m (HAC 14.85)
 30959      function bnModPow(e,m) {
 30960        var i = e.bitLength(), k, r = nbv(1), z;
 30961        if(i <= 0) return r;
 30962        else if(i < 18) k = 1;
 30963        else if(i < 48) k = 3;
 30964        else if(i < 144) k = 4;
 30965        else if(i < 768) k = 5;
 30966        else k = 6;
 30967        if(i < 8)
 30968          z = new Classic(m);
 30969        else if(m.isEven())
 30970          z = new Barrett(m);
 30971        else
 30972          z = new Montgomery(m);
 30973  
 30974        // precomputation
 30975        var g = new Array(), n = 3, k1 = k-1, km = (1<<k)-1;
 30976        g[1] = z.convert(this);
 30977        if(k > 1) {
 30978          var g2 = nbi();
 30979          z.sqrTo(g[1],g2);
 30980          while(n <= km) {
 30981            g[n] = nbi();
 30982            z.mulTo(g2,g[n-2],g[n]);
 30983            n += 2;
 30984          }
 30985        }
 30986  
 30987        var j = e.t-1, w, is1 = true, r2 = nbi(), t;
 30988        i = nbits(e[j])-1;
 30989        while(j >= 0) {
 30990          if(i >= k1) w = (e[j]>>(i-k1))&km;
 30991          else {
 30992            w = (e[j]&((1<<(i+1))-1))<<(k1-i);
 30993            if(j > 0) w |= e[j-1]>>(this.DB+i-k1);
 30994          }
 30995  
 30996          n = k;
 30997          while((w&1) == 0) { w >>= 1; --n; }
 30998          if((i -= n) < 0) { i += this.DB; --j; }
 30999          if(is1) {	// ret == 1, don't bother squaring or multiplying it
 31000            g[w].copyTo(r);
 31001            is1 = false;
 31002          }
 31003          else {
 31004            while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }
 31005            if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }
 31006            z.mulTo(r2,g[w],r);
 31007          }
 31008  
 31009          while(j >= 0 && (e[j]&(1<<i)) == 0) {
 31010            z.sqrTo(r,r2); t = r; r = r2; r2 = t;
 31011            if(--i < 0) { i = this.DB-1; --j; }
 31012          }
 31013        }
 31014        return z.revert(r);
 31015      }
 31016  
 31017      // (public) gcd(this,a) (HAC 14.54)
 31018      function bnGCD(a) {
 31019        var x = (this.s<0)?this.negate():this.clone();
 31020        var y = (a.s<0)?a.negate():a.clone();
 31021        if(x.compareTo(y) < 0) { var t = x; x = y; y = t; }
 31022        var i = x.getLowestSetBit(), g = y.getLowestSetBit();
 31023        if(g < 0) return x;
 31024        if(i < g) g = i;
 31025        if(g > 0) {
 31026          x.rShiftTo(g,x);
 31027          y.rShiftTo(g,y);
 31028        }
 31029        while(x.signum() > 0) {
 31030          if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);
 31031          if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);
 31032          if(x.compareTo(y) >= 0) {
 31033            x.subTo(y,x);
 31034            x.rShiftTo(1,x);
 31035          }
 31036          else {
 31037            y.subTo(x,y);
 31038            y.rShiftTo(1,y);
 31039          }
 31040        }
 31041        if(g > 0) y.lShiftTo(g,y);
 31042        return y;
 31043      }
 31044  
 31045      // (protected) this % n, n < 2^26
 31046      function bnpModInt(n) {
 31047        if(n <= 0) return 0;
 31048        var d = this.DV%n, r = (this.s<0)?n-1:0;
 31049        if(this.t > 0)
 31050          if(d == 0) r = this[0]%n;
 31051          else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n;
 31052        return r;
 31053      }
 31054  
 31055      // (public) 1/this % m (HAC 14.61)
 31056      function bnModInverse(m) {
 31057        var ac = m.isEven();
 31058        if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;
 31059        var u = m.clone(), v = this.clone();
 31060        var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);
 31061        while(u.signum() != 0) {
 31062          while(u.isEven()) {
 31063            u.rShiftTo(1,u);
 31064            if(ac) {
 31065              if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }
 31066              a.rShiftTo(1,a);
 31067            }
 31068            else if(!b.isEven()) b.subTo(m,b);
 31069            b.rShiftTo(1,b);
 31070          }
 31071          while(v.isEven()) {
 31072            v.rShiftTo(1,v);
 31073            if(ac) {
 31074              if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }
 31075              c.rShiftTo(1,c);
 31076            }
 31077            else if(!d.isEven()) d.subTo(m,d);
 31078            d.rShiftTo(1,d);
 31079          }
 31080          if(u.compareTo(v) >= 0) {
 31081            u.subTo(v,u);
 31082            if(ac) a.subTo(c,a);
 31083            b.subTo(d,b);
 31084          }
 31085          else {
 31086            v.subTo(u,v);
 31087            if(ac) c.subTo(a,c);
 31088            d.subTo(b,d);
 31089          }
 31090        }
 31091        if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;
 31092        if(d.compareTo(m) >= 0) return d.subtract(m);
 31093        if(d.signum() < 0) d.addTo(m,d); else return d;
 31094        if(d.signum() < 0) return d.add(m); else return d;
 31095      }
 31096  
 31097      var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];
 31098      var lplim = (1<<26)/lowprimes[lowprimes.length-1];
 31099  
 31100      // (public) test primality with certainty >= 1-.5^t
 31101      function bnIsProbablePrime(t) {
 31102        var i, x = this.abs();
 31103        if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) {
 31104          for(i = 0; i < lowprimes.length; ++i)
 31105            if(x[0] == lowprimes[i]) return true;
 31106          return false;
 31107        }
 31108        if(x.isEven()) return false;
 31109        i = 1;
 31110        while(i < lowprimes.length) {
 31111          var m = lowprimes[i], j = i+1;
 31112          while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];
 31113          m = x.modInt(m);
 31114          while(i < j) if(m%lowprimes[i++] == 0) return false;
 31115        }
 31116        return x.millerRabin(t);
 31117      }
 31118  
 31119      // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
 31120      function bnpMillerRabin(t) {
 31121        var n1 = this.subtract(BigInteger.ONE);
 31122        var k = n1.getLowestSetBit();
 31123        if(k <= 0) return false;
 31124        var r = n1.shiftRight(k);
 31125        t = (t+1)>>1;
 31126        if(t > lowprimes.length) t = lowprimes.length;
 31127        var a = nbi();
 31128        for(var i = 0; i < t; ++i) {
 31129          //Pick bases at random, instead of starting at 2
 31130          a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);
 31131          var y = a.modPow(r,this);
 31132          if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
 31133            var j = 1;
 31134            while(j++ < k && y.compareTo(n1) != 0) {
 31135              y = y.modPowInt(2,this);
 31136              if(y.compareTo(BigInteger.ONE) == 0) return false;
 31137            }
 31138            if(y.compareTo(n1) != 0) return false;
 31139          }
 31140        }
 31141        return true;
 31142      }
 31143  
 31144      // protected
 31145      BigInteger.prototype.chunkSize = bnpChunkSize;
 31146      BigInteger.prototype.toRadix = bnpToRadix;
 31147      BigInteger.prototype.fromRadix = bnpFromRadix;
 31148      BigInteger.prototype.fromNumber = bnpFromNumber;
 31149      BigInteger.prototype.bitwiseTo = bnpBitwiseTo;
 31150      BigInteger.prototype.changeBit = bnpChangeBit;
 31151      BigInteger.prototype.addTo = bnpAddTo;
 31152      BigInteger.prototype.dMultiply = bnpDMultiply;
 31153      BigInteger.prototype.dAddOffset = bnpDAddOffset;
 31154      BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;
 31155      BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;
 31156      BigInteger.prototype.modInt = bnpModInt;
 31157      BigInteger.prototype.millerRabin = bnpMillerRabin;
 31158  
 31159      // public
 31160      BigInteger.prototype.clone = bnClone;
 31161      BigInteger.prototype.intValue = bnIntValue;
 31162      BigInteger.prototype.byteValue = bnByteValue;
 31163      BigInteger.prototype.shortValue = bnShortValue;
 31164      BigInteger.prototype.signum = bnSigNum;
 31165      BigInteger.prototype.toByteArray = bnToByteArray;
 31166      BigInteger.prototype.equals = bnEquals;
 31167      BigInteger.prototype.min = bnMin;
 31168      BigInteger.prototype.max = bnMax;
 31169      BigInteger.prototype.and = bnAnd;
 31170      BigInteger.prototype.or = bnOr;
 31171      BigInteger.prototype.xor = bnXor;
 31172      BigInteger.prototype.andNot = bnAndNot;
 31173      BigInteger.prototype.not = bnNot;
 31174      BigInteger.prototype.shiftLeft = bnShiftLeft;
 31175      BigInteger.prototype.shiftRight = bnShiftRight;
 31176      BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;
 31177      BigInteger.prototype.bitCount = bnBitCount;
 31178      BigInteger.prototype.testBit = bnTestBit;
 31179      BigInteger.prototype.setBit = bnSetBit;
 31180      BigInteger.prototype.clearBit = bnClearBit;
 31181      BigInteger.prototype.flipBit = bnFlipBit;
 31182      BigInteger.prototype.add = bnAdd;
 31183      BigInteger.prototype.subtract = bnSubtract;
 31184      BigInteger.prototype.multiply = bnMultiply;
 31185      BigInteger.prototype.divide = bnDivide;
 31186      BigInteger.prototype.remainder = bnRemainder;
 31187      BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;
 31188      BigInteger.prototype.modPow = bnModPow;
 31189      BigInteger.prototype.modInverse = bnModInverse;
 31190      BigInteger.prototype.pow = bnPow;
 31191      BigInteger.prototype.gcd = bnGCD;
 31192      BigInteger.prototype.isProbablePrime = bnIsProbablePrime;
 31193  
 31194      // JSBN-specific extension
 31195      BigInteger.prototype.square = bnSquare;
 31196  
 31197      // Expose the Barrett function
 31198      BigInteger.prototype.Barrett = Barrett
 31199  
 31200      // BigInteger interfaces not implemented in jsbn:
 31201  
 31202      // BigInteger(int signum, byte[] magnitude)
 31203      // double doubleValue()
 31204      // float floatValue()
 31205      // int hashCode()
 31206      // long longValue()
 31207      // static BigInteger valueOf(long val)
 31208  
 31209  	// Random number generator - requires a PRNG backend, e.g. prng4.js
 31210  
 31211  	// For best results, put code like
 31212  	// <body onClick='rng_seed_time();' onKeyPress='rng_seed_time();'>
 31213  	// in your main HTML document.
 31214  
 31215  	var rng_state;
 31216  	var rng_pool;
 31217  	var rng_pptr;
 31218  
 31219  	// Mix in a 32-bit integer into the pool
 31220  	function rng_seed_int(x) {
 31221  	  rng_pool[rng_pptr++] ^= x & 255;
 31222  	  rng_pool[rng_pptr++] ^= (x >> 8) & 255;
 31223  	  rng_pool[rng_pptr++] ^= (x >> 16) & 255;
 31224  	  rng_pool[rng_pptr++] ^= (x >> 24) & 255;
 31225  	  if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;
 31226  	}
 31227  
 31228  	// Mix in the current time (w/milliseconds) into the pool
 31229  	function rng_seed_time() {
 31230  	  rng_seed_int(new Date().getTime());
 31231  	}
 31232  
 31233  	// Initialize the pool with junk if needed.
 31234  	if(rng_pool == null) {
 31235  	  rng_pool = new Array();
 31236  	  rng_pptr = 0;
 31237  	  var t;
 31238  	  if(typeof window !== "undefined" && window.crypto) {
 31239  		if (window.crypto.getRandomValues) {
 31240  		  // Use webcrypto if available
 31241  		  var ua = new Uint8Array(32);
 31242  		  window.crypto.getRandomValues(ua);
 31243  		  for(t = 0; t < 32; ++t)
 31244  			rng_pool[rng_pptr++] = ua[t];
 31245  		}
 31246  		else if(navigator.appName == "Netscape" && navigator.appVersion < "5") {
 31247  		  // Extract entropy (256 bits) from NS4 RNG if available
 31248  		  var z = window.crypto.random(32);
 31249  		  for(t = 0; t < z.length; ++t)
 31250  			rng_pool[rng_pptr++] = z.charCodeAt(t) & 255;
 31251  		}
 31252  	  }
 31253  	  while(rng_pptr < rng_psize) {  // extract some randomness from Math.random()
 31254  		t = Math.floor(65536 * Math.random());
 31255  		rng_pool[rng_pptr++] = t >>> 8;
 31256  		rng_pool[rng_pptr++] = t & 255;
 31257  	  }
 31258  	  rng_pptr = 0;
 31259  	  rng_seed_time();
 31260  	  //rng_seed_int(window.screenX);
 31261  	  //rng_seed_int(window.screenY);
 31262  	}
 31263  
 31264  	function rng_get_byte() {
 31265  	  if(rng_state == null) {
 31266  		rng_seed_time();
 31267  		rng_state = prng_newstate();
 31268  		rng_state.init(rng_pool);
 31269  		for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)
 31270  		  rng_pool[rng_pptr] = 0;
 31271  		rng_pptr = 0;
 31272  		//rng_pool = null;
 31273  	  }
 31274  	  // TODO: allow reseeding after first request
 31275  	  return rng_state.next();
 31276  	}
 31277  
 31278  	function rng_get_bytes(ba) {
 31279  	  var i;
 31280  	  for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();
 31281  	}
 31282  
 31283  	function SecureRandom() {}
 31284  
 31285  	SecureRandom.prototype.nextBytes = rng_get_bytes;
 31286  
 31287  	// prng4.js - uses Arcfour as a PRNG
 31288  
 31289  	function Arcfour() {
 31290  	  this.i = 0;
 31291  	  this.j = 0;
 31292  	  this.S = new Array();
 31293  	}
 31294  
 31295  	// Initialize arcfour context from key, an array of ints, each from [0..255]
 31296  	function ARC4init(key) {
 31297  	  var i, j, t;
 31298  	  for(i = 0; i < 256; ++i)
 31299  		this.S[i] = i;
 31300  	  j = 0;
 31301  	  for(i = 0; i < 256; ++i) {
 31302  		j = (j + this.S[i] + key[i % key.length]) & 255;
 31303  		t = this.S[i];
 31304  		this.S[i] = this.S[j];
 31305  		this.S[j] = t;
 31306  	  }
 31307  	  this.i = 0;
 31308  	  this.j = 0;
 31309  	}
 31310  
 31311  	function ARC4next() {
 31312  	  var t;
 31313  	  this.i = (this.i + 1) & 255;
 31314  	  this.j = (this.j + this.S[this.i]) & 255;
 31315  	  t = this.S[this.i];
 31316  	  this.S[this.i] = this.S[this.j];
 31317  	  this.S[this.j] = t;
 31318  	  return this.S[(t + this.S[this.i]) & 255];
 31319  	}
 31320  
 31321  	Arcfour.prototype.init = ARC4init;
 31322  	Arcfour.prototype.next = ARC4next;
 31323  
 31324  	// Plug in your RNG constructor here
 31325  	function prng_newstate() {
 31326  	  return new Arcfour();
 31327  	}
 31328  
 31329  	// Pool size must be a multiple of 4 and greater than 32.
 31330  	// An array of bytes the size of the pool will be passed to init()
 31331  	var rng_psize = 256;
 31332  
 31333    BigInteger.SecureRandom = SecureRandom;
 31334    BigInteger.BigInteger = BigInteger;
 31335    if (true) {
 31336      exports = module.exports = BigInteger;
 31337    } else {
 31338      this.BigInteger = BigInteger;
 31339      this.SecureRandom = SecureRandom;
 31340    }
 31341  
 31342  }).call(this);
 31343  
 31344  
 31345  /***/ }),
 31346  /* 82 */
 31347  /***/ (function(module, exports, __webpack_require__) {
 31348  
 31349  module.exports = minimatch
 31350  minimatch.Minimatch = Minimatch
 31351  
 31352  var path = { sep: '/' }
 31353  try {
 31354    path = __webpack_require__(0)
 31355  } catch (er) {}
 31356  
 31357  var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}
 31358  var expand = __webpack_require__(226)
 31359  
 31360  var plTypes = {
 31361    '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},
 31362    '?': { open: '(?:', close: ')?' },
 31363    '+': { open: '(?:', close: ')+' },
 31364    '*': { open: '(?:', close: ')*' },
 31365    '@': { open: '(?:', close: ')' }
 31366  }
 31367  
 31368  // any single thing other than /
 31369  // don't need to escape / when using new RegExp()
 31370  var qmark = '[^/]'
 31371  
 31372  // * => any number of characters
 31373  var star = qmark + '*?'
 31374  
 31375  // ** when dots are allowed.  Anything goes, except .. and .
 31376  // not (^ or / followed by one or two dots followed by $ or /),
 31377  // followed by anything, any number of times.
 31378  var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?'
 31379  
 31380  // not a ^ or / followed by a dot,
 31381  // followed by anything, any number of times.
 31382  var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?'
 31383  
 31384  // characters that need to be escaped in RegExp.
 31385  var reSpecials = charSet('().*{}+?[]^$\\!')
 31386  
 31387  // "abc" -> { a:true, b:true, c:true }
 31388  function charSet (s) {
 31389    return s.split('').reduce(function (set, c) {
 31390      set[c] = true
 31391      return set
 31392    }, {})
 31393  }
 31394  
 31395  // normalizes slashes.
 31396  var slashSplit = /\/+/
 31397  
 31398  minimatch.filter = filter
 31399  function filter (pattern, options) {
 31400    options = options || {}
 31401    return function (p, i, list) {
 31402      return minimatch(p, pattern, options)
 31403    }
 31404  }
 31405  
 31406  function ext (a, b) {
 31407    a = a || {}
 31408    b = b || {}
 31409    var t = {}
 31410    Object.keys(b).forEach(function (k) {
 31411      t[k] = b[k]
 31412    })
 31413    Object.keys(a).forEach(function (k) {
 31414      t[k] = a[k]
 31415    })
 31416    return t
 31417  }
 31418  
 31419  minimatch.defaults = function (def) {
 31420    if (!def || !Object.keys(def).length) return minimatch
 31421  
 31422    var orig = minimatch
 31423  
 31424    var m = function minimatch (p, pattern, options) {
 31425      return orig.minimatch(p, pattern, ext(def, options))
 31426    }
 31427  
 31428    m.Minimatch = function Minimatch (pattern, options) {
 31429      return new orig.Minimatch(pattern, ext(def, options))
 31430    }
 31431  
 31432    return m
 31433  }
 31434  
 31435  Minimatch.defaults = function (def) {
 31436    if (!def || !Object.keys(def).length) return Minimatch
 31437    return minimatch.defaults(def).Minimatch
 31438  }
 31439  
 31440  function minimatch (p, pattern, options) {
 31441    if (typeof pattern !== 'string') {
 31442      throw new TypeError('glob pattern string required')
 31443    }
 31444  
 31445    if (!options) options = {}
 31446  
 31447    // shortcut: comments match nothing.
 31448    if (!options.nocomment && pattern.charAt(0) === '#') {
 31449      return false
 31450    }
 31451  
 31452    // "" only matches ""
 31453    if (pattern.trim() === '') return p === ''
 31454  
 31455    return new Minimatch(pattern, options).match(p)
 31456  }
 31457  
 31458  function Minimatch (pattern, options) {
 31459    if (!(this instanceof Minimatch)) {
 31460      return new Minimatch(pattern, options)
 31461    }
 31462  
 31463    if (typeof pattern !== 'string') {
 31464      throw new TypeError('glob pattern string required')
 31465    }
 31466  
 31467    if (!options) options = {}
 31468    pattern = pattern.trim()
 31469  
 31470    // windows support: need to use /, not \
 31471    if (path.sep !== '/') {
 31472      pattern = pattern.split(path.sep).join('/')
 31473    }
 31474  
 31475    this.options = options
 31476    this.set = []
 31477    this.pattern = pattern
 31478    this.regexp = null
 31479    this.negate = false
 31480    this.comment = false
 31481    this.empty = false
 31482  
 31483    // make the set of regexps etc.
 31484    this.make()
 31485  }
 31486  
 31487  Minimatch.prototype.debug = function () {}
 31488  
 31489  Minimatch.prototype.make = make
 31490  function make () {
 31491    // don't do it more than once.
 31492    if (this._made) return
 31493  
 31494    var pattern = this.pattern
 31495    var options = this.options
 31496  
 31497    // empty patterns and comments match nothing.
 31498    if (!options.nocomment && pattern.charAt(0) === '#') {
 31499      this.comment = true
 31500      return
 31501    }
 31502    if (!pattern) {
 31503      this.empty = true
 31504      return
 31505    }
 31506  
 31507    // step 1: figure out negation, etc.
 31508    this.parseNegate()
 31509  
 31510    // step 2: expand braces
 31511    var set = this.globSet = this.braceExpand()
 31512  
 31513    if (options.debug) this.debug = console.error
 31514  
 31515    this.debug(this.pattern, set)
 31516  
 31517    // step 3: now we have a set, so turn each one into a series of path-portion
 31518    // matching patterns.
 31519    // These will be regexps, except in the case of "**", which is
 31520    // set to the GLOBSTAR object for globstar behavior,
 31521    // and will not contain any / characters
 31522    set = this.globParts = set.map(function (s) {
 31523      return s.split(slashSplit)
 31524    })
 31525  
 31526    this.debug(this.pattern, set)
 31527  
 31528    // glob --> regexps
 31529    set = set.map(function (s, si, set) {
 31530      return s.map(this.parse, this)
 31531    }, this)
 31532  
 31533    this.debug(this.pattern, set)
 31534  
 31535    // filter out everything that didn't compile properly.
 31536    set = set.filter(function (s) {
 31537      return s.indexOf(false) === -1
 31538    })
 31539  
 31540    this.debug(this.pattern, set)
 31541  
 31542    this.set = set
 31543  }
 31544  
 31545  Minimatch.prototype.parseNegate = parseNegate
 31546  function parseNegate () {
 31547    var pattern = this.pattern
 31548    var negate = false
 31549    var options = this.options
 31550    var negateOffset = 0
 31551  
 31552    if (options.nonegate) return
 31553  
 31554    for (var i = 0, l = pattern.length
 31555      ; i < l && pattern.charAt(i) === '!'
 31556      ; i++) {
 31557      negate = !negate
 31558      negateOffset++
 31559    }
 31560  
 31561    if (negateOffset) this.pattern = pattern.substr(negateOffset)
 31562    this.negate = negate
 31563  }
 31564  
 31565  // Brace expansion:
 31566  // a{b,c}d -> abd acd
 31567  // a{b,}c -> abc ac
 31568  // a{0..3}d -> a0d a1d a2d a3d
 31569  // a{b,c{d,e}f}g -> abg acdfg acefg
 31570  // a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
 31571  //
 31572  // Invalid sets are not expanded.
 31573  // a{2..}b -> a{2..}b
 31574  // a{b}c -> a{b}c
 31575  minimatch.braceExpand = function (pattern, options) {
 31576    return braceExpand(pattern, options)
 31577  }
 31578  
 31579  Minimatch.prototype.braceExpand = braceExpand
 31580  
 31581  function braceExpand (pattern, options) {
 31582    if (!options) {
 31583      if (this instanceof Minimatch) {
 31584        options = this.options
 31585      } else {
 31586        options = {}
 31587      }
 31588    }
 31589  
 31590    pattern = typeof pattern === 'undefined'
 31591      ? this.pattern : pattern
 31592  
 31593    if (typeof pattern === 'undefined') {
 31594      throw new TypeError('undefined pattern')
 31595    }
 31596  
 31597    if (options.nobrace ||
 31598      !pattern.match(/\{.*\}/)) {
 31599      // shortcut. no need to expand.
 31600      return [pattern]
 31601    }
 31602  
 31603    return expand(pattern)
 31604  }
 31605  
 31606  // parse a component of the expanded set.
 31607  // At this point, no pattern may contain "/" in it
 31608  // so we're going to return a 2d array, where each entry is the full
 31609  // pattern, split on '/', and then turned into a regular expression.
 31610  // A regexp is made at the end which joins each array with an
 31611  // escaped /, and another full one which joins each regexp with |.
 31612  //
 31613  // Following the lead of Bash 4.1, note that "**" only has special meaning
 31614  // when it is the *only* thing in a path portion.  Otherwise, any series
 31615  // of * is equivalent to a single *.  Globstar behavior is enabled by
 31616  // default, and can be disabled by setting options.noglobstar.
 31617  Minimatch.prototype.parse = parse
 31618  var SUBPARSE = {}
 31619  function parse (pattern, isSub) {
 31620    if (pattern.length > 1024 * 64) {
 31621      throw new TypeError('pattern is too long')
 31622    }
 31623  
 31624    var options = this.options
 31625  
 31626    // shortcuts
 31627    if (!options.noglobstar && pattern === '**') return GLOBSTAR
 31628    if (pattern === '') return ''
 31629  
 31630    var re = ''
 31631    var hasMagic = !!options.nocase
 31632    var escaping = false
 31633    // ? => one single character
 31634    var patternListStack = []
 31635    var negativeLists = []
 31636    var stateChar
 31637    var inClass = false
 31638    var reClassStart = -1
 31639    var classStart = -1
 31640    // . and .. never match anything that doesn't start with .,
 31641    // even when options.dot is set.
 31642    var patternStart = pattern.charAt(0) === '.' ? '' // anything
 31643    // not (start or / followed by . or .. followed by / or end)
 31644    : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))'
 31645    : '(?!\\.)'
 31646    var self = this
 31647  
 31648    function clearStateChar () {
 31649      if (stateChar) {
 31650        // we had some state-tracking character
 31651        // that wasn't consumed by this pass.
 31652        switch (stateChar) {
 31653          case '*':
 31654            re += star
 31655            hasMagic = true
 31656          break
 31657          case '?':
 31658            re += qmark
 31659            hasMagic = true
 31660          break
 31661          default:
 31662            re += '\\' + stateChar
 31663          break
 31664        }
 31665        self.debug('clearStateChar %j %j', stateChar, re)
 31666        stateChar = false
 31667      }
 31668    }
 31669  
 31670    for (var i = 0, len = pattern.length, c
 31671      ; (i < len) && (c = pattern.charAt(i))
 31672      ; i++) {
 31673      this.debug('%s\t%s %s %j', pattern, i, re, c)
 31674  
 31675      // skip over any that are escaped.
 31676      if (escaping && reSpecials[c]) {
 31677        re += '\\' + c
 31678        escaping = false
 31679        continue
 31680      }
 31681  
 31682      switch (c) {
 31683        case '/':
 31684          // completely not allowed, even escaped.
 31685          // Should already be path-split by now.
 31686          return false
 31687  
 31688        case '\\':
 31689          clearStateChar()
 31690          escaping = true
 31691        continue
 31692  
 31693        // the various stateChar values
 31694        // for the "extglob" stuff.
 31695        case '?':
 31696        case '*':
 31697        case '+':
 31698        case '@':
 31699        case '!':
 31700          this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c)
 31701  
 31702          // all of those are literals inside a class, except that
 31703          // the glob [!a] means [^a] in regexp
 31704          if (inClass) {
 31705            this.debug('  in class')
 31706            if (c === '!' && i === classStart + 1) c = '^'
 31707            re += c
 31708            continue
 31709          }
 31710  
 31711          // if we already have a stateChar, then it means
 31712          // that there was something like ** or +? in there.
 31713          // Handle the stateChar, then proceed with this one.
 31714          self.debug('call clearStateChar %j', stateChar)
 31715          clearStateChar()
 31716          stateChar = c
 31717          // if extglob is disabled, then +(asdf|foo) isn't a thing.
 31718          // just clear the statechar *now*, rather than even diving into
 31719          // the patternList stuff.
 31720          if (options.noext) clearStateChar()
 31721        continue
 31722  
 31723        case '(':
 31724          if (inClass) {
 31725            re += '('
 31726            continue
 31727          }
 31728  
 31729          if (!stateChar) {
 31730            re += '\\('
 31731            continue
 31732          }
 31733  
 31734          patternListStack.push({
 31735            type: stateChar,
 31736            start: i - 1,
 31737            reStart: re.length,
 31738            open: plTypes[stateChar].open,
 31739            close: plTypes[stateChar].close
 31740          })
 31741          // negation is (?:(?!js)[^/]*)
 31742          re += stateChar === '!' ? '(?:(?!(?:' : '(?:'
 31743          this.debug('plType %j %j', stateChar, re)
 31744          stateChar = false
 31745        continue
 31746  
 31747        case ')':
 31748          if (inClass || !patternListStack.length) {
 31749            re += '\\)'
 31750            continue
 31751          }
 31752  
 31753          clearStateChar()
 31754          hasMagic = true
 31755          var pl = patternListStack.pop()
 31756          // negation is (?:(?!js)[^/]*)
 31757          // The others are (?:<pattern>)<type>
 31758          re += pl.close
 31759          if (pl.type === '!') {
 31760            negativeLists.push(pl)
 31761          }
 31762          pl.reEnd = re.length
 31763        continue
 31764  
 31765        case '|':
 31766          if (inClass || !patternListStack.length || escaping) {
 31767            re += '\\|'
 31768            escaping = false
 31769            continue
 31770          }
 31771  
 31772          clearStateChar()
 31773          re += '|'
 31774        continue
 31775  
 31776        // these are mostly the same in regexp and glob
 31777        case '[':
 31778          // swallow any state-tracking char before the [
 31779          clearStateChar()
 31780  
 31781          if (inClass) {
 31782            re += '\\' + c
 31783            continue
 31784          }
 31785  
 31786          inClass = true
 31787          classStart = i
 31788          reClassStart = re.length
 31789          re += c
 31790        continue
 31791  
 31792        case ']':
 31793          //  a right bracket shall lose its special
 31794          //  meaning and represent itself in
 31795          //  a bracket expression if it occurs
 31796          //  first in the list.  -- POSIX.2 2.8.3.2
 31797          if (i === classStart + 1 || !inClass) {
 31798            re += '\\' + c
 31799            escaping = false
 31800            continue
 31801          }
 31802  
 31803          // handle the case where we left a class open.
 31804          // "[z-a]" is valid, equivalent to "\[z-a\]"
 31805          if (inClass) {
 31806            // split where the last [ was, make sure we don't have
 31807            // an invalid re. if so, re-walk the contents of the
 31808            // would-be class to re-translate any characters that
 31809            // were passed through as-is
 31810            // TODO: It would probably be faster to determine this
 31811            // without a try/catch and a new RegExp, but it's tricky
 31812            // to do safely.  For now, this is safe and works.
 31813            var cs = pattern.substring(classStart + 1, i)
 31814            try {
 31815              RegExp('[' + cs + ']')
 31816            } catch (er) {
 31817              // not a valid class!
 31818              var sp = this.parse(cs, SUBPARSE)
 31819              re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]'
 31820              hasMagic = hasMagic || sp[1]
 31821              inClass = false
 31822              continue
 31823            }
 31824          }
 31825  
 31826          // finish up the class.
 31827          hasMagic = true
 31828          inClass = false
 31829          re += c
 31830        continue
 31831  
 31832        default:
 31833          // swallow any state char that wasn't consumed
 31834          clearStateChar()
 31835  
 31836          if (escaping) {
 31837            // no need
 31838            escaping = false
 31839          } else if (reSpecials[c]
 31840            && !(c === '^' && inClass)) {
 31841            re += '\\'
 31842          }
 31843  
 31844          re += c
 31845  
 31846      } // switch
 31847    } // for
 31848  
 31849    // handle the case where we left a class open.
 31850    // "[abc" is valid, equivalent to "\[abc"
 31851    if (inClass) {
 31852      // split where the last [ was, and escape it
 31853      // this is a huge pita.  We now have to re-walk
 31854      // the contents of the would-be class to re-translate
 31855      // any characters that were passed through as-is
 31856      cs = pattern.substr(classStart + 1)
 31857      sp = this.parse(cs, SUBPARSE)
 31858      re = re.substr(0, reClassStart) + '\\[' + sp[0]
 31859      hasMagic = hasMagic || sp[1]
 31860    }
 31861  
 31862    // handle the case where we had a +( thing at the *end*
 31863    // of the pattern.
 31864    // each pattern list stack adds 3 chars, and we need to go through
 31865    // and escape any | chars that were passed through as-is for the regexp.
 31866    // Go through and escape them, taking care not to double-escape any
 31867    // | chars that were already escaped.
 31868    for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
 31869      var tail = re.slice(pl.reStart + pl.open.length)
 31870      this.debug('setting tail', re, pl)
 31871      // maybe some even number of \, then maybe 1 \, followed by a |
 31872      tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) {
 31873        if (!$2) {
 31874          // the | isn't already escaped, so escape it.
 31875          $2 = '\\'
 31876        }
 31877  
 31878        // need to escape all those slashes *again*, without escaping the
 31879        // one that we need for escaping the | character.  As it works out,
 31880        // escaping an even number of slashes can be done by simply repeating
 31881        // it exactly after itself.  That's why this trick works.
 31882        //
 31883        // I am sorry that you have to see this.
 31884        return $1 + $1 + $2 + '|'
 31885      })
 31886  
 31887      this.debug('tail=%j\n   %s', tail, tail, pl, re)
 31888      var t = pl.type === '*' ? star
 31889        : pl.type === '?' ? qmark
 31890        : '\\' + pl.type
 31891  
 31892      hasMagic = true
 31893      re = re.slice(0, pl.reStart) + t + '\\(' + tail
 31894    }
 31895  
 31896    // handle trailing things that only matter at the very end.
 31897    clearStateChar()
 31898    if (escaping) {
 31899      // trailing \\
 31900      re += '\\\\'
 31901    }
 31902  
 31903    // only need to apply the nodot start if the re starts with
 31904    // something that could conceivably capture a dot
 31905    var addPatternStart = false
 31906    switch (re.charAt(0)) {
 31907      case '.':
 31908      case '[':
 31909      case '(': addPatternStart = true
 31910    }
 31911  
 31912    // Hack to work around lack of negative lookbehind in JS
 31913    // A pattern like: *.!(x).!(y|z) needs to ensure that a name
 31914    // like 'a.xyz.yz' doesn't match.  So, the first negative
 31915    // lookahead, has to look ALL the way ahead, to the end of
 31916    // the pattern.
 31917    for (var n = negativeLists.length - 1; n > -1; n--) {
 31918      var nl = negativeLists[n]
 31919  
 31920      var nlBefore = re.slice(0, nl.reStart)
 31921      var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)
 31922      var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)
 31923      var nlAfter = re.slice(nl.reEnd)
 31924  
 31925      nlLast += nlAfter
 31926  
 31927      // Handle nested stuff like *(*.js|!(*.json)), where open parens
 31928      // mean that we should *not* include the ) in the bit that is considered
 31929      // "after" the negated section.
 31930      var openParensBefore = nlBefore.split('(').length - 1
 31931      var cleanAfter = nlAfter
 31932      for (i = 0; i < openParensBefore; i++) {
 31933        cleanAfter = cleanAfter.replace(/\)[+*?]?/, '')
 31934      }
 31935      nlAfter = cleanAfter
 31936  
 31937      var dollar = ''
 31938      if (nlAfter === '' && isSub !== SUBPARSE) {
 31939        dollar = '$'
 31940      }
 31941      var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast
 31942      re = newRe
 31943    }
 31944  
 31945    // if the re is not "" at this point, then we need to make sure
 31946    // it doesn't match against an empty path part.
 31947    // Otherwise a/* will match a/, which it should not.
 31948    if (re !== '' && hasMagic) {
 31949      re = '(?=.)' + re
 31950    }
 31951  
 31952    if (addPatternStart) {
 31953      re = patternStart + re
 31954    }
 31955  
 31956    // parsing just a piece of a larger pattern.
 31957    if (isSub === SUBPARSE) {
 31958      return [re, hasMagic]
 31959    }
 31960  
 31961    // skip the regexp for non-magical patterns
 31962    // unescape anything in it, though, so that it'll be
 31963    // an exact match against a file etc.
 31964    if (!hasMagic) {
 31965      return globUnescape(pattern)
 31966    }
 31967  
 31968    var flags = options.nocase ? 'i' : ''
 31969    try {
 31970      var regExp = new RegExp('^' + re + '$', flags)
 31971    } catch (er) {
 31972      // If it was an invalid regular expression, then it can't match
 31973      // anything.  This trick looks for a character after the end of
 31974      // the string, which is of course impossible, except in multi-line
 31975      // mode, but it's not a /m regex.
 31976      return new RegExp('$.')
 31977    }
 31978  
 31979    regExp._glob = pattern
 31980    regExp._src = re
 31981  
 31982    return regExp
 31983  }
 31984  
 31985  minimatch.makeRe = function (pattern, options) {
 31986    return new Minimatch(pattern, options || {}).makeRe()
 31987  }
 31988  
 31989  Minimatch.prototype.makeRe = makeRe
 31990  function makeRe () {
 31991    if (this.regexp || this.regexp === false) return this.regexp
 31992  
 31993    // at this point, this.set is a 2d array of partial
 31994    // pattern strings, or "**".
 31995    //
 31996    // It's better to use .match().  This function shouldn't
 31997    // be used, really, but it's pretty convenient sometimes,
 31998    // when you just want to work with a regex.
 31999    var set = this.set
 32000  
 32001    if (!set.length) {
 32002      this.regexp = false
 32003      return this.regexp
 32004    }
 32005    var options = this.options
 32006  
 32007    var twoStar = options.noglobstar ? star
 32008      : options.dot ? twoStarDot
 32009      : twoStarNoDot
 32010    var flags = options.nocase ? 'i' : ''
 32011  
 32012    var re = set.map(function (pattern) {
 32013      return pattern.map(function (p) {
 32014        return (p === GLOBSTAR) ? twoStar
 32015        : (typeof p === 'string') ? regExpEscape(p)
 32016        : p._src
 32017      }).join('\\\/')
 32018    }).join('|')
 32019  
 32020    // must match entire pattern
 32021    // ending in a * or ** will make it less strict.
 32022    re = '^(?:' + re + ')$'
 32023  
 32024    // can match anything, as long as it's not this.
 32025    if (this.negate) re = '^(?!' + re + ').*$'
 32026  
 32027    try {
 32028      this.regexp = new RegExp(re, flags)
 32029    } catch (ex) {
 32030      this.regexp = false
 32031    }
 32032    return this.regexp
 32033  }
 32034  
 32035  minimatch.match = function (list, pattern, options) {
 32036    options = options || {}
 32037    var mm = new Minimatch(pattern, options)
 32038    list = list.filter(function (f) {
 32039      return mm.match(f)
 32040    })
 32041    if (mm.options.nonull && !list.length) {
 32042      list.push(pattern)
 32043    }
 32044    return list
 32045  }
 32046  
 32047  Minimatch.prototype.match = match
 32048  function match (f, partial) {
 32049    this.debug('match', f, this.pattern)
 32050    // short-circuit in the case of busted things.
 32051    // comments, etc.
 32052    if (this.comment) return false
 32053    if (this.empty) return f === ''
 32054  
 32055    if (f === '/' && partial) return true
 32056  
 32057    var options = this.options
 32058  
 32059    // windows: need to use /, not \
 32060    if (path.sep !== '/') {
 32061      f = f.split(path.sep).join('/')
 32062    }
 32063  
 32064    // treat the test path as a set of pathparts.
 32065    f = f.split(slashSplit)
 32066    this.debug(this.pattern, 'split', f)
 32067  
 32068    // just ONE of the pattern sets in this.set needs to match
 32069    // in order for it to be valid.  If negating, then just one
 32070    // match means that we have failed.
 32071    // Either way, return on the first hit.
 32072  
 32073    var set = this.set
 32074    this.debug(this.pattern, 'set', set)
 32075  
 32076    // Find the basename of the path by looking for the last non-empty segment
 32077    var filename
 32078    var i
 32079    for (i = f.length - 1; i >= 0; i--) {
 32080      filename = f[i]
 32081      if (filename) break
 32082    }
 32083  
 32084    for (i = 0; i < set.length; i++) {
 32085      var pattern = set[i]
 32086      var file = f
 32087      if (options.matchBase && pattern.length === 1) {
 32088        file = [filename]
 32089      }
 32090      var hit = this.matchOne(file, pattern, partial)
 32091      if (hit) {
 32092        if (options.flipNegate) return true
 32093        return !this.negate
 32094      }
 32095    }
 32096  
 32097    // didn't get any hits.  this is success if it's a negative
 32098    // pattern, failure otherwise.
 32099    if (options.flipNegate) return false
 32100    return this.negate
 32101  }
 32102  
 32103  // set partial to true to test if, for example,
 32104  // "/a/b" matches the start of "/*/b/*/d"
 32105  // Partial means, if you run out of file before you run
 32106  // out of pattern, then that's fine, as long as all
 32107  // the parts match.
 32108  Minimatch.prototype.matchOne = function (file, pattern, partial) {
 32109    var options = this.options
 32110  
 32111    this.debug('matchOne',
 32112      { 'this': this, file: file, pattern: pattern })
 32113  
 32114    this.debug('matchOne', file.length, pattern.length)
 32115  
 32116    for (var fi = 0,
 32117        pi = 0,
 32118        fl = file.length,
 32119        pl = pattern.length
 32120        ; (fi < fl) && (pi < pl)
 32121        ; fi++, pi++) {
 32122      this.debug('matchOne loop')
 32123      var p = pattern[pi]
 32124      var f = file[fi]
 32125  
 32126      this.debug(pattern, p, f)
 32127  
 32128      // should be impossible.
 32129      // some invalid regexp stuff in the set.
 32130      if (p === false) return false
 32131  
 32132      if (p === GLOBSTAR) {
 32133        this.debug('GLOBSTAR', [pattern, p, f])
 32134  
 32135        // "**"
 32136        // a/**/b/**/c would match the following:
 32137        // a/b/x/y/z/c
 32138        // a/x/y/z/b/c
 32139        // a/b/x/b/x/c
 32140        // a/b/c
 32141        // To do this, take the rest of the pattern after
 32142        // the **, and see if it would match the file remainder.
 32143        // If so, return success.
 32144        // If not, the ** "swallows" a segment, and try again.
 32145        // This is recursively awful.
 32146        //
 32147        // a/**/b/**/c matching a/b/x/y/z/c
 32148        // - a matches a
 32149        // - doublestar
 32150        //   - matchOne(b/x/y/z/c, b/**/c)
 32151        //     - b matches b
 32152        //     - doublestar
 32153        //       - matchOne(x/y/z/c, c) -> no
 32154        //       - matchOne(y/z/c, c) -> no
 32155        //       - matchOne(z/c, c) -> no
 32156        //       - matchOne(c, c) yes, hit
 32157        var fr = fi
 32158        var pr = pi + 1
 32159        if (pr === pl) {
 32160          this.debug('** at the end')
 32161          // a ** at the end will just swallow the rest.
 32162          // We have found a match.
 32163          // however, it will not swallow /.x, unless
 32164          // options.dot is set.
 32165          // . and .. are *never* matched by **, for explosively
 32166          // exponential reasons.
 32167          for (; fi < fl; fi++) {
 32168            if (file[fi] === '.' || file[fi] === '..' ||
 32169              (!options.dot && file[fi].charAt(0) === '.')) return false
 32170          }
 32171          return true
 32172        }
 32173  
 32174        // ok, let's see if we can swallow whatever we can.
 32175        while (fr < fl) {
 32176          var swallowee = file[fr]
 32177  
 32178          this.debug('\nglobstar while', file, fr, pattern, pr, swallowee)
 32179  
 32180          // XXX remove this slice.  Just pass the start index.
 32181          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
 32182            this.debug('globstar found match!', fr, fl, swallowee)
 32183            // found a match.
 32184            return true
 32185          } else {
 32186            // can't swallow "." or ".." ever.
 32187            // can only swallow ".foo" when explicitly asked.
 32188            if (swallowee === '.' || swallowee === '..' ||
 32189              (!options.dot && swallowee.charAt(0) === '.')) {
 32190              this.debug('dot detected!', file, fr, pattern, pr)
 32191              break
 32192            }
 32193  
 32194            // ** swallows a segment, and continue.
 32195            this.debug('globstar swallow a segment, and continue')
 32196            fr++
 32197          }
 32198        }
 32199  
 32200        // no match was found.
 32201        // However, in partial mode, we can't say this is necessarily over.
 32202        // If there's more *pattern* left, then
 32203        if (partial) {
 32204          // ran out of file
 32205          this.debug('\n>>> no match, partial?', file, fr, pattern, pr)
 32206          if (fr === fl) return true
 32207        }
 32208        return false
 32209      }
 32210  
 32211      // something other than **
 32212      // non-magic patterns just have to match exactly
 32213      // patterns with magic have been turned into regexps.
 32214      var hit
 32215      if (typeof p === 'string') {
 32216        if (options.nocase) {
 32217          hit = f.toLowerCase() === p.toLowerCase()
 32218        } else {
 32219          hit = f === p
 32220        }
 32221        this.debug('string match', p, f, hit)
 32222      } else {
 32223        hit = f.match(p)
 32224        this.debug('pattern match', p, f, hit)
 32225      }
 32226  
 32227      if (!hit) return false
 32228    }
 32229  
 32230    // Note: ending in / means that we'll get a final ""
 32231    // at the end of the pattern.  This can only match a
 32232    // corresponding "" at the end of the file.
 32233    // If the file ends in /, then it can only match a
 32234    // a pattern that ends in /, unless the pattern just
 32235    // doesn't have any more for it. But, a/b/ should *not*
 32236    // match "a/b/*", even though "" matches against the
 32237    // [^/]*? pattern, except in partial mode, where it might
 32238    // simply not be reached yet.
 32239    // However, a/b/ should still satisfy a/*
 32240  
 32241    // now either we fell off the end of the pattern, or we're done.
 32242    if (fi === fl && pi === pl) {
 32243      // ran out of pattern and filename at the same time.
 32244      // an exact hit!
 32245      return true
 32246    } else if (fi === fl) {
 32247      // ran out of file, but still had pattern left.
 32248      // this is ok if we're doing the match as part of
 32249      // a glob fs traversal.
 32250      return partial
 32251    } else if (pi === pl) {
 32252      // ran out of pattern, still have file left.
 32253      // this is only acceptable if we're on the very last
 32254      // empty segment of a file with a trailing slash.
 32255      // a/* should match a/b/
 32256      var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')
 32257      return emptyFileEnd
 32258    }
 32259  
 32260    // should be unreachable.
 32261    throw new Error('wtf?')
 32262  }
 32263  
 32264  // replace stuff like \* with *
 32265  function globUnescape (s) {
 32266    return s.replace(/\\(.)/g, '$1')
 32267  }
 32268  
 32269  function regExpEscape (s) {
 32270    return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&')
 32271  }
 32272  
 32273  
 32274  /***/ }),
 32275  /* 83 */
 32276  /***/ (function(module, exports, __webpack_require__) {
 32277  
 32278  var wrappy = __webpack_require__(161)
 32279  module.exports = wrappy(once)
 32280  module.exports.strict = wrappy(onceStrict)
 32281  
 32282  once.proto = once(function () {
 32283    Object.defineProperty(Function.prototype, 'once', {
 32284      value: function () {
 32285        return once(this)
 32286      },
 32287      configurable: true
 32288    })
 32289  
 32290    Object.defineProperty(Function.prototype, 'onceStrict', {
 32291      value: function () {
 32292        return onceStrict(this)
 32293      },
 32294      configurable: true
 32295    })
 32296  })
 32297  
 32298  function once (fn) {
 32299    var f = function () {
 32300      if (f.called) return f.value
 32301      f.called = true
 32302      return f.value = fn.apply(this, arguments)
 32303    }
 32304    f.called = false
 32305    return f
 32306  }
 32307  
 32308  function onceStrict (fn) {
 32309    var f = function () {
 32310      if (f.called)
 32311        throw new Error(f.onceError)
 32312      f.called = true
 32313      return f.value = fn.apply(this, arguments)
 32314    }
 32315    var name = fn.name || 'Function wrapped with `once`'
 32316    f.onceError = name + " shouldn't be called more than once"
 32317    f.called = false
 32318    return f
 32319  }
 32320  
 32321  
 32322  /***/ }),
 32323  /* 84 */
 32324  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 32325  
 32326  "use strict";
 32327  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return InnerSubscriber; });
 32328  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 32329  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
 32330  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
 32331  
 32332  
 32333  var InnerSubscriber = /*@__PURE__*/ (function (_super) {
 32334      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](InnerSubscriber, _super);
 32335      function InnerSubscriber(parent, outerValue, outerIndex) {
 32336          var _this = _super.call(this) || this;
 32337          _this.parent = parent;
 32338          _this.outerValue = outerValue;
 32339          _this.outerIndex = outerIndex;
 32340          _this.index = 0;
 32341          return _this;
 32342      }
 32343      InnerSubscriber.prototype._next = function (value) {
 32344          this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);
 32345      };
 32346      InnerSubscriber.prototype._error = function (error) {
 32347          this.parent.notifyError(error, this);
 32348          this.unsubscribe();
 32349      };
 32350      InnerSubscriber.prototype._complete = function () {
 32351          this.parent.notifyComplete(this);
 32352          this.unsubscribe();
 32353      };
 32354      return InnerSubscriber;
 32355  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
 32356  
 32357  //# sourceMappingURL=InnerSubscriber.js.map
 32358  
 32359  
 32360  /***/ }),
 32361  /* 85 */
 32362  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 32363  
 32364  "use strict";
 32365  /* harmony export (immutable) */ __webpack_exports__["a"] = fromArray;
 32366  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
 32367  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscription__ = __webpack_require__(25);
 32368  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_subscribeToArray__ = __webpack_require__(447);
 32369  /** PURE_IMPORTS_START _Observable,_Subscription,_util_subscribeToArray PURE_IMPORTS_END */
 32370  
 32371  
 32372  
 32373  function fromArray(input, scheduler) {
 32374      if (!scheduler) {
 32375          return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_subscribeToArray__["a" /* subscribeToArray */])(input));
 32376      }
 32377      else {
 32378          return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) {
 32379              var sub = new __WEBPACK_IMPORTED_MODULE_1__Subscription__["a" /* Subscription */]();
 32380              var i = 0;
 32381              sub.add(scheduler.schedule(function () {
 32382                  if (i === input.length) {
 32383                      subscriber.complete();
 32384                      return;
 32385                  }
 32386                  subscriber.next(input[i++]);
 32387                  if (!subscriber.closed) {
 32388                      sub.add(this.schedule());
 32389                  }
 32390              }));
 32391              return sub;
 32392          });
 32393      }
 32394  }
 32395  //# sourceMappingURL=fromArray.js.map
 32396  
 32397  
 32398  /***/ }),
 32399  /* 86 */
 32400  /***/ (function(module, exports, __webpack_require__) {
 32401  
 32402  // Copyright 2015 Joyent, Inc.
 32403  
 32404  module.exports = {
 32405  	read: read,
 32406  	write: write
 32407  };
 32408  
 32409  var assert = __webpack_require__(16);
 32410  var asn1 = __webpack_require__(66);
 32411  var crypto = __webpack_require__(11);
 32412  var Buffer = __webpack_require__(15).Buffer;
 32413  var algs = __webpack_require__(32);
 32414  var utils = __webpack_require__(26);
 32415  var Key = __webpack_require__(27);
 32416  var PrivateKey = __webpack_require__(33);
 32417  
 32418  var pkcs1 = __webpack_require__(327);
 32419  var pkcs8 = __webpack_require__(157);
 32420  var sshpriv = __webpack_require__(193);
 32421  var rfc4253 = __webpack_require__(103);
 32422  
 32423  var errors = __webpack_require__(74);
 32424  
 32425  /*
 32426   * For reading we support both PKCS#1 and PKCS#8. If we find a private key,
 32427   * we just take the public component of it and use that.
 32428   */
 32429  function read(buf, options, forceType) {
 32430  	var input = buf;
 32431  	if (typeof (buf) !== 'string') {
 32432  		assert.buffer(buf, 'buf');
 32433  		buf = buf.toString('ascii');
 32434  	}
 32435  
 32436  	var lines = buf.trim().split('\n');
 32437  
 32438  	var m = lines[0].match(/*JSSTYLED*/
 32439  	    /[-]+[ ]*BEGIN ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/);
 32440  	assert.ok(m, 'invalid PEM header');
 32441  
 32442  	var m2 = lines[lines.length - 1].match(/*JSSTYLED*/
 32443  	    /[-]+[ ]*END ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/);
 32444  	assert.ok(m2, 'invalid PEM footer');
 32445  
 32446  	/* Begin and end banners must match key type */
 32447  	assert.equal(m[2], m2[2]);
 32448  	var type = m[2].toLowerCase();
 32449  
 32450  	var alg;
 32451  	if (m[1]) {
 32452  		/* They also must match algorithms, if given */
 32453  		assert.equal(m[1], m2[1], 'PEM header and footer mismatch');
 32454  		alg = m[1].trim();
 32455  	}
 32456  
 32457  	var headers = {};
 32458  	while (true) {
 32459  		lines = lines.slice(1);
 32460  		m = lines[0].match(/*JSSTYLED*/
 32461  		    /^([A-Za-z0-9-]+): (.+)$/);
 32462  		if (!m)
 32463  			break;
 32464  		headers[m[1].toLowerCase()] = m[2];
 32465  	}
 32466  
 32467  	var cipher, key, iv;
 32468  	if (headers['proc-type']) {
 32469  		var parts = headers['proc-type'].split(',');
 32470  		if (parts[0] === '4' && parts[1] === 'ENCRYPTED') {
 32471  			if (typeof (options.passphrase) === 'string') {
 32472  				options.passphrase = Buffer.from(
 32473  				    options.passphrase, 'utf-8');
 32474  			}
 32475  			if (!Buffer.isBuffer(options.passphrase)) {
 32476  				throw (new errors.KeyEncryptedError(
 32477  				    options.filename, 'PEM'));
 32478  			} else {
 32479  				parts = headers['dek-info'].split(',');
 32480  				assert.ok(parts.length === 2);
 32481  				cipher = parts[0].toLowerCase();
 32482  				iv = Buffer.from(parts[1], 'hex');
 32483  				key = utils.opensslKeyDeriv(cipher, iv,
 32484  				    options.passphrase, 1).key;
 32485  			}
 32486  		}
 32487  	}
 32488  
 32489  	/* Chop off the first and last lines */
 32490  	lines = lines.slice(0, -1).join('');
 32491  	buf = Buffer.from(lines, 'base64');
 32492  
 32493  	if (cipher && key && iv) {
 32494  		var cipherStream = crypto.createDecipheriv(cipher, key, iv);
 32495  		var chunk, chunks = [];
 32496  		cipherStream.once('error', function (e) {
 32497  			if (e.toString().indexOf('bad decrypt') !== -1) {
 32498  				throw (new Error('Incorrect passphrase ' +
 32499  				    'supplied, could not decrypt key'));
 32500  			}
 32501  			throw (e);
 32502  		});
 32503  		cipherStream.write(buf);
 32504  		cipherStream.end();
 32505  		while ((chunk = cipherStream.read()) !== null)
 32506  			chunks.push(chunk);
 32507  		buf = Buffer.concat(chunks);
 32508  	}
 32509  
 32510  	/* The new OpenSSH internal format abuses PEM headers */
 32511  	if (alg && alg.toLowerCase() === 'openssh')
 32512  		return (sshpriv.readSSHPrivate(type, buf, options));
 32513  	if (alg && alg.toLowerCase() === 'ssh2')
 32514  		return (rfc4253.readType(type, buf, options));
 32515  
 32516  	var der = new asn1.BerReader(buf);
 32517  	der.originalInput = input;
 32518  
 32519  	/*
 32520  	 * All of the PEM file types start with a sequence tag, so chop it
 32521  	 * off here
 32522  	 */
 32523  	der.readSequence();
 32524  
 32525  	/* PKCS#1 type keys name an algorithm in the banner explicitly */
 32526  	if (alg) {
 32527  		if (forceType)
 32528  			assert.strictEqual(forceType, 'pkcs1');
 32529  		return (pkcs1.readPkcs1(alg, type, der));
 32530  	} else {
 32531  		if (forceType)
 32532  			assert.strictEqual(forceType, 'pkcs8');
 32533  		return (pkcs8.readPkcs8(alg, type, der));
 32534  	}
 32535  }
 32536  
 32537  function write(key, options, type) {
 32538  	assert.object(key);
 32539  
 32540  	var alg = {
 32541  	    'ecdsa': 'EC',
 32542  	    'rsa': 'RSA',
 32543  	    'dsa': 'DSA',
 32544  	    'ed25519': 'EdDSA'
 32545  	}[key.type];
 32546  	var header;
 32547  
 32548  	var der = new asn1.BerWriter();
 32549  
 32550  	if (PrivateKey.isPrivateKey(key)) {
 32551  		if (type && type === 'pkcs8') {
 32552  			header = 'PRIVATE KEY';
 32553  			pkcs8.writePkcs8(der, key);
 32554  		} else {
 32555  			if (type)
 32556  				assert.strictEqual(type, 'pkcs1');
 32557  			header = alg + ' PRIVATE KEY';
 32558  			pkcs1.writePkcs1(der, key);
 32559  		}
 32560  
 32561  	} else if (Key.isKey(key)) {
 32562  		if (type && type === 'pkcs1') {
 32563  			header = alg + ' PUBLIC KEY';
 32564  			pkcs1.writePkcs1(der, key);
 32565  		} else {
 32566  			if (type)
 32567  				assert.strictEqual(type, 'pkcs8');
 32568  			header = 'PUBLIC KEY';
 32569  			pkcs8.writePkcs8(der, key);
 32570  		}
 32571  
 32572  	} else {
 32573  		throw (new Error('key is not a Key or PrivateKey'));
 32574  	}
 32575  
 32576  	var tmp = der.buffer.toString('base64');
 32577  	var len = tmp.length + (tmp.length / 64) +
 32578  	    18 + 16 + header.length*2 + 10;
 32579  	var buf = Buffer.alloc(len);
 32580  	var o = 0;
 32581  	o += buf.write('-----BEGIN ' + header + '-----\n', o);
 32582  	for (var i = 0; i < tmp.length; ) {
 32583  		var limit = i + 64;
 32584  		if (limit > tmp.length)
 32585  			limit = tmp.length;
 32586  		o += buf.write(tmp.slice(i, limit), o);
 32587  		buf[o++] = 10;
 32588  		i = limit;
 32589  	}
 32590  	o += buf.write('-----END ' + header + '-----\n', o);
 32591  
 32592  	return (buf.slice(0, o));
 32593  }
 32594  
 32595  
 32596  /***/ }),
 32597  /* 87 */
 32598  /***/ (function(module, exports) {
 32599  
 32600  module.exports = require("http");
 32601  
 32602  /***/ }),
 32603  /* 88 */
 32604  /***/ (function(module, exports, __webpack_require__) {
 32605  
 32606  "use strict";
 32607  
 32608  
 32609  Object.defineProperty(exports, "__esModule", {
 32610    value: true
 32611  });
 32612  exports.SCOPE_SEPARATOR = undefined;
 32613  
 32614  var _extends2;
 32615  
 32616  function _load_extends() {
 32617    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 32618  }
 32619  
 32620  var _asyncToGenerator2;
 32621  
 32622  function _load_asyncToGenerator() {
 32623    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 32624  }
 32625  
 32626  var _constants;
 32627  
 32628  function _load_constants() {
 32629    return _constants = __webpack_require__(8);
 32630  }
 32631  
 32632  var _fs;
 32633  
 32634  function _load_fs() {
 32635    return _fs = _interopRequireWildcard(__webpack_require__(5));
 32636  }
 32637  
 32638  var _npmResolver;
 32639  
 32640  function _load_npmResolver() {
 32641    return _npmResolver = _interopRequireDefault(__webpack_require__(215));
 32642  }
 32643  
 32644  var _envReplace;
 32645  
 32646  function _load_envReplace() {
 32647    return _envReplace = _interopRequireDefault(__webpack_require__(545));
 32648  }
 32649  
 32650  var _baseRegistry;
 32651  
 32652  function _load_baseRegistry() {
 32653    return _baseRegistry = _interopRequireDefault(__webpack_require__(526));
 32654  }
 32655  
 32656  var _misc;
 32657  
 32658  function _load_misc() {
 32659    return _misc = __webpack_require__(18);
 32660  }
 32661  
 32662  var _path;
 32663  
 32664  function _load_path() {
 32665    return _path = __webpack_require__(371);
 32666  }
 32667  
 32668  var _normalizeUrl;
 32669  
 32670  function _load_normalizeUrl() {
 32671    return _normalizeUrl = _interopRequireDefault(__webpack_require__(402));
 32672  }
 32673  
 32674  var _userHomeDir;
 32675  
 32676  function _load_userHomeDir() {
 32677    return _userHomeDir = _interopRequireDefault(__webpack_require__(67));
 32678  }
 32679  
 32680  var _userHomeDir2;
 32681  
 32682  function _load_userHomeDir2() {
 32683    return _userHomeDir2 = __webpack_require__(67);
 32684  }
 32685  
 32686  var _errors;
 32687  
 32688  function _load_errors() {
 32689    return _errors = __webpack_require__(6);
 32690  }
 32691  
 32692  var _login;
 32693  
 32694  function _load_login() {
 32695    return _login = __webpack_require__(107);
 32696  }
 32697  
 32698  var _path2;
 32699  
 32700  function _load_path2() {
 32701    return _path2 = _interopRequireDefault(__webpack_require__(0));
 32702  }
 32703  
 32704  var _url;
 32705  
 32706  function _load_url() {
 32707    return _url = _interopRequireDefault(__webpack_require__(24));
 32708  }
 32709  
 32710  var _ini;
 32711  
 32712  function _load_ini() {
 32713    return _ini = _interopRequireDefault(__webpack_require__(684));
 32714  }
 32715  
 32716  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 32717  
 32718  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 32719  
 32720  const DEFAULT_REGISTRY = 'https://registry.npmjs.org/';
 32721  const REGEX_REGISTRY_ENFORCED_HTTPS = /^https?:\/\/([^\/]+\.)?(yarnpkg\.com|npmjs\.(org|com))(\/|$)/;
 32722  const REGEX_REGISTRY_HTTP_PROTOCOL = /^https?:/i;
 32723  const REGEX_REGISTRY_PREFIX = /^(https?:)?\/\//i;
 32724  const REGEX_REGISTRY_SUFFIX = /registry\/?$/;
 32725  
 32726  const SCOPE_SEPARATOR = exports.SCOPE_SEPARATOR = '%2f';
 32727  // All scoped package names are of the format `@scope%2fpkg` from the use of NpmRegistry.escapeName
 32728  // `(?:^|\/)` Match either the start of the string or a `/` but don't capture
 32729  // `[^\/?]+?` Match any character that is not '/' or '?' and capture, up until the first occurrence of:
 32730  // `(?=%2f|\/)` Match SCOPE_SEPARATOR, the escaped '/', or a raw `/` and don't capture
 32731  // The reason for matching a plain `/` is NPM registry being inconsistent about escaping `/` in
 32732  // scoped package names: when you're fetching a tarball, it is not escaped, when you want info
 32733  // about the package, it is escaped.
 32734  const SCOPED_PKG_REGEXP = /(?:^|\/)(@[^\/?]+?)(?=%2f|\/)/;
 32735  
 32736  // TODO: Use the method from src/cli/commands/global.js for this instead
 32737  function getGlobalPrefix() {
 32738    if (process.env.PREFIX) {
 32739      return process.env.PREFIX;
 32740    } else if (process.platform === 'win32') {
 32741      // c:\node\node.exe --> prefix=c:\node\
 32742      return (_path2 || _load_path2()).default.dirname(process.execPath);
 32743    } else {
 32744      // /usr/local/bin/node --> prefix=/usr/local
 32745      let prefix = (_path2 || _load_path2()).default.dirname((_path2 || _load_path2()).default.dirname(process.execPath));
 32746  
 32747      // destdir only is respected on Unix
 32748      if (process.env.DESTDIR) {
 32749        prefix = (_path2 || _load_path2()).default.join(process.env.DESTDIR, prefix);
 32750      }
 32751  
 32752      return prefix;
 32753    }
 32754  }
 32755  
 32756  const PATH_CONFIG_OPTIONS = new Set(['cache', 'cafile', 'prefix', 'userconfig']);
 32757  
 32758  function isPathConfigOption(key) {
 32759    return PATH_CONFIG_OPTIONS.has(key);
 32760  }
 32761  
 32762  function normalizePath(val) {
 32763    if (val === undefined) {
 32764      return undefined;
 32765    }
 32766  
 32767    if (typeof val !== 'string') {
 32768      val = String(val);
 32769    }
 32770  
 32771    return (0, (_path || _load_path()).resolveWithHome)(val);
 32772  }
 32773  
 32774  function urlParts(requestUrl) {
 32775    const normalizedUrl = (0, (_normalizeUrl || _load_normalizeUrl()).default)(requestUrl);
 32776    const parsed = (_url || _load_url()).default.parse(normalizedUrl);
 32777    const host = parsed.host || '';
 32778    const path = parsed.path || '';
 32779    return { host, path };
 32780  }
 32781  
 32782  class NpmRegistry extends (_baseRegistry || _load_baseRegistry()).default {
 32783    constructor(cwd, registries, requestManager, reporter, enableDefaultRc, extraneousRcFiles) {
 32784      super(cwd, registries, requestManager, reporter, enableDefaultRc, extraneousRcFiles);
 32785      this.folder = 'node_modules';
 32786    }
 32787  
 32788    static escapeName(name) {
 32789      // scoped packages contain slashes and the npm registry expects them to be escaped
 32790      return name.replace('/', SCOPE_SEPARATOR);
 32791    }
 32792  
 32793    isScopedPackage(packageIdent) {
 32794      return SCOPED_PKG_REGEXP.test(packageIdent);
 32795    }
 32796  
 32797    getRequestUrl(registry, pathname) {
 32798      let resolved = pathname;
 32799  
 32800      if (!REGEX_REGISTRY_PREFIX.test(pathname)) {
 32801        resolved = (_url || _load_url()).default.resolve((0, (_misc || _load_misc()).addSuffix)(registry, '/'), `./${pathname}`);
 32802      }
 32803  
 32804      if (REGEX_REGISTRY_ENFORCED_HTTPS.test(resolved)) {
 32805        resolved = resolved.replace(/^http:\/\//, 'https://');
 32806      }
 32807  
 32808      return resolved;
 32809    }
 32810  
 32811    isRequestToRegistry(requestUrl, registryUrl) {
 32812      const request = urlParts(requestUrl);
 32813      const registry = urlParts(registryUrl);
 32814      const customHostSuffix = this.getRegistryOrGlobalOption(registryUrl, 'custom-host-suffix');
 32815  
 32816      const requestToRegistryHost = request.host === registry.host;
 32817      const requestToYarn = (_constants || _load_constants()).YARN_REGISTRY.includes(request.host) && DEFAULT_REGISTRY.includes(registry.host);
 32818      const requestToRegistryPath = request.path.startsWith(registry.path);
 32819      // For some registries, the package path does not prefix with the registry path
 32820      const customHostSuffixInUse = typeof customHostSuffix === 'string' && request.host.endsWith(customHostSuffix);
 32821  
 32822      return (requestToRegistryHost || requestToYarn) && (requestToRegistryPath || customHostSuffixInUse);
 32823    }
 32824  
 32825    request(pathname, opts = {}, packageName) {
 32826      var _this = this;
 32827  
 32828      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 32829        // packageName needs to be escaped when if it is passed
 32830        const packageIdent = packageName && NpmRegistry.escapeName(packageName) || pathname;
 32831        const registry = opts.registry || _this.getRegistry(packageIdent);
 32832        const requestUrl = _this.getRequestUrl(registry, pathname);
 32833  
 32834        const alwaysAuth = _this.getRegistryOrGlobalOption(registry, 'always-auth');
 32835  
 32836        const headers = (0, (_extends2 || _load_extends()).default)({
 32837          Accept:
 32838          // This is to use less bandwidth unless we really need to get the full response.
 32839          // See https://github.com/npm/npm-registry-client#requests
 32840          opts.unfiltered ? 'application/json' : 'application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*'
 32841        }, opts.headers);
 32842  
 32843        const isToRegistry = _this.isRequestToRegistry(requestUrl, registry) || _this.requestNeedsAuth(requestUrl);
 32844  
 32845        // this.token must be checked to account for publish requests on non-scoped packages
 32846        if (_this.token || isToRegistry && (alwaysAuth || _this.isScopedPackage(packageIdent))) {
 32847          const authorization = _this.getAuth(packageIdent);
 32848          if (authorization) {
 32849            headers.authorization = authorization;
 32850          }
 32851        }
 32852  
 32853        if (_this.otp) {
 32854          headers['npm-otp'] = _this.otp;
 32855        }
 32856  
 32857        try {
 32858          return yield _this.requestManager.request({
 32859            url: requestUrl,
 32860            method: opts.method,
 32861            body: opts.body,
 32862            auth: opts.auth,
 32863            headers,
 32864            json: !opts.buffer,
 32865            buffer: opts.buffer,
 32866            process: opts.process,
 32867            gzip: true
 32868          });
 32869        } catch (error) {
 32870          if (error instanceof (_errors || _load_errors()).OneTimePasswordError) {
 32871            if (_this.otp) {
 32872              throw new (_errors || _load_errors()).MessageError(_this.reporter.lang('incorrectOneTimePassword'));
 32873            }
 32874  
 32875            _this.reporter.info(_this.reporter.lang('twoFactorAuthenticationEnabled'));
 32876            if (error.notice) {
 32877              _this.reporter.info(error.notice);
 32878            }
 32879  
 32880            _this.otp = yield (0, (_login || _load_login()).getOneTimePassword)(_this.reporter);
 32881  
 32882            _this.requestManager.clearCache();
 32883  
 32884            return _this.request(pathname, opts, packageName);
 32885          } else {
 32886            throw error;
 32887          }
 32888        }
 32889      })();
 32890    }
 32891  
 32892    requestNeedsAuth(requestUrl) {
 32893      const config = this.config;
 32894      const requestParts = urlParts(requestUrl);
 32895      return !!Object.keys(config).find(option => {
 32896        const parts = option.split(':');
 32897        if (parts.length === 2 && parts[1] === '_authToken' || parts[1] === '_password') {
 32898          const registryParts = urlParts(parts[0]);
 32899          if (requestParts.host === registryParts.host && requestParts.path.startsWith(registryParts.path)) {
 32900            return true;
 32901          }
 32902        }
 32903        return false;
 32904      });
 32905    }
 32906  
 32907    checkOutdated(config, name, range) {
 32908      var _this2 = this;
 32909  
 32910      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 32911        const escapedName = NpmRegistry.escapeName(name);
 32912        const req = yield _this2.request(escapedName, { unfiltered: true });
 32913        if (!req) {
 32914          throw new Error(`couldn't find ${name}`);
 32915        }
 32916  
 32917        // By default use top level 'repository' and 'homepage' values
 32918        let repository = req.repository,
 32919            homepage = req.homepage;
 32920  
 32921        const wantedPkg = yield (_npmResolver || _load_npmResolver()).default.findVersionInRegistryResponse(config, escapedName, range, req);
 32922  
 32923        // But some local repositories like Verdaccio do not return 'repository' nor 'homepage'
 32924        // in top level data structure, so we fallback to wanted package manifest
 32925        if (!repository && !homepage) {
 32926          repository = wantedPkg.repository;
 32927          homepage = wantedPkg.homepage;
 32928        }
 32929  
 32930        let latest = req['dist-tags'].latest;
 32931        // In certain cases, registries do not return a 'latest' tag.
 32932        if (!latest) {
 32933          latest = wantedPkg.version;
 32934        }
 32935  
 32936        const url = homepage || repository && repository.url || '';
 32937  
 32938        return {
 32939          latest,
 32940          wanted: wantedPkg.version,
 32941          url
 32942        };
 32943      })();
 32944    }
 32945  
 32946    getPossibleConfigLocations(filename, reporter) {
 32947      var _this3 = this;
 32948  
 32949      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 32950        let possibles = [];
 32951  
 32952        for (var _iterator = _this3.extraneousRcFiles.slice().reverse(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 32953          var _ref;
 32954  
 32955          if (_isArray) {
 32956            if (_i >= _iterator.length) break;
 32957            _ref = _iterator[_i++];
 32958          } else {
 32959            _i = _iterator.next();
 32960            if (_i.done) break;
 32961            _ref = _i.value;
 32962          }
 32963  
 32964          const rcFile = _ref;
 32965  
 32966          possibles.push([false, (_path2 || _load_path2()).default.resolve(process.cwd(), rcFile)]);
 32967        }
 32968  
 32969        if (_this3.enableDefaultRc) {
 32970          // npmrc --> ./.npmrc, ~/.npmrc, ${prefix}/etc/npmrc
 32971          const localfile = '.' + filename;
 32972          possibles = possibles.concat([[false, (_path2 || _load_path2()).default.join(_this3.cwd, localfile)], [true, _this3.config.userconfig || (_path2 || _load_path2()).default.join((_userHomeDir || _load_userHomeDir()).default, localfile)], [false, (_path2 || _load_path2()).default.join(getGlobalPrefix(), 'etc', filename)]]);
 32973  
 32974          // When home directory for global install is different from where $HOME/npmrc is stored,
 32975          // E.g. /usr/local/share vs /root on linux machines, check the additional location
 32976          if ((_userHomeDir2 || _load_userHomeDir2()).home !== (_userHomeDir || _load_userHomeDir()).default) {
 32977            possibles.push([true, (_path2 || _load_path2()).default.join((_userHomeDir2 || _load_userHomeDir2()).home, localfile)]);
 32978          }
 32979  
 32980          // npmrc --> ../.npmrc, ../../.npmrc, etc.
 32981          const foldersFromRootToCwd = (0, (_path || _load_path()).getPosixPath)(_this3.cwd).split('/');
 32982          while (foldersFromRootToCwd.length > 1) {
 32983            possibles.push([false, (_path2 || _load_path2()).default.join(foldersFromRootToCwd.join((_path2 || _load_path2()).default.sep), localfile)]);
 32984            foldersFromRootToCwd.pop();
 32985          }
 32986        }
 32987  
 32988        const actuals = [];
 32989        for (var _iterator2 = possibles, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 32990          var _ref3;
 32991  
 32992          if (_isArray2) {
 32993            if (_i2 >= _iterator2.length) break;
 32994            _ref3 = _iterator2[_i2++];
 32995          } else {
 32996            _i2 = _iterator2.next();
 32997            if (_i2.done) break;
 32998            _ref3 = _i2.value;
 32999          }
 33000  
 33001          const _ref2 = _ref3;
 33002          const isHome = _ref2[0];
 33003          const loc = _ref2[1];
 33004  
 33005          reporter.verbose(reporter.lang('configPossibleFile', loc));
 33006          if (yield (_fs || _load_fs()).exists(loc)) {
 33007            reporter.verbose(reporter.lang('configFileFound', loc));
 33008            actuals.push([isHome, loc, yield (_fs || _load_fs()).readFile(loc)]);
 33009          }
 33010        }
 33011  
 33012        return actuals;
 33013      })();
 33014    }
 33015  
 33016    static getConfigEnv(env = process.env) {
 33017      // To match NPM's behavior, HOME is always the user's home directory.
 33018      const overrideEnv = {
 33019        HOME: (_userHomeDir2 || _load_userHomeDir2()).home
 33020      };
 33021      return Object.assign({}, env, overrideEnv);
 33022    }
 33023  
 33024    static normalizeConfig(config) {
 33025      const env = NpmRegistry.getConfigEnv();
 33026      config = (_baseRegistry || _load_baseRegistry()).default.normalizeConfig(config);
 33027  
 33028      for (const key in config) {
 33029        config[key] = (0, (_envReplace || _load_envReplace()).default)(config[key], env);
 33030        if (isPathConfigOption(key)) {
 33031          config[key] = normalizePath(config[key]);
 33032        }
 33033      }
 33034  
 33035      return config;
 33036    }
 33037  
 33038    loadConfig() {
 33039      var _this4 = this;
 33040  
 33041      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 33042        // docs: https://docs.npmjs.com/misc/config
 33043        _this4.mergeEnv('npm_config_');
 33044  
 33045        for (var _iterator3 = yield _this4.getPossibleConfigLocations('npmrc', _this4.reporter), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 33046          var _ref5;
 33047  
 33048          if (_isArray3) {
 33049            if (_i3 >= _iterator3.length) break;
 33050            _ref5 = _iterator3[_i3++];
 33051          } else {
 33052            _i3 = _iterator3.next();
 33053            if (_i3.done) break;
 33054            _ref5 = _i3.value;
 33055          }
 33056  
 33057          const _ref4 = _ref5;
 33058          const loc = _ref4[1];
 33059          const file = _ref4[2];
 33060  
 33061          const config = NpmRegistry.normalizeConfig((_ini || _load_ini()).default.parse(file));
 33062  
 33063          // normalize offline mirror path relative to the current npmrc
 33064          const offlineLoc = config['yarn-offline-mirror'];
 33065          // don't normalize if we already have a mirror path
 33066          if (!_this4.config['yarn-offline-mirror'] && offlineLoc) {
 33067            const mirrorLoc = config['yarn-offline-mirror'] = (_path2 || _load_path2()).default.resolve((_path2 || _load_path2()).default.dirname(loc), offlineLoc);
 33068            yield (_fs || _load_fs()).mkdirp(mirrorLoc);
 33069          }
 33070  
 33071          _this4.config = Object.assign({}, config, _this4.config);
 33072        }
 33073      })();
 33074    }
 33075  
 33076    getScope(packageIdent) {
 33077      const match = packageIdent.match(SCOPED_PKG_REGEXP);
 33078      return match && match[1] || '';
 33079    }
 33080  
 33081    getRegistry(packageIdent) {
 33082      // Try extracting registry from the url, then scoped registry, and default registry
 33083      if (packageIdent.match(REGEX_REGISTRY_PREFIX)) {
 33084        const availableRegistries = this.getAvailableRegistries();
 33085        const registry = availableRegistries.find(registry => packageIdent.startsWith(registry));
 33086        if (registry) {
 33087          return String(registry);
 33088        }
 33089      }
 33090  
 33091      var _arr = [this.getScope(packageIdent), ''];
 33092      for (var _i4 = 0; _i4 < _arr.length; _i4++) {
 33093        const scope = _arr[_i4];
 33094        const registry = this.getScopedOption(scope, 'registry') || this.registries.yarn.getScopedOption(scope, 'registry');
 33095        if (registry) {
 33096          return String(registry);
 33097        }
 33098      }
 33099  
 33100      return DEFAULT_REGISTRY;
 33101    }
 33102  
 33103    getAuthByRegistry(registry) {
 33104      // Check for bearer token.
 33105      const authToken = this.getRegistryOrGlobalOption(registry, '_authToken');
 33106      if (authToken) {
 33107        return `Bearer ${String(authToken)}`;
 33108      }
 33109  
 33110      // Check for basic auth token.
 33111      const auth = this.getRegistryOrGlobalOption(registry, '_auth');
 33112      if (auth) {
 33113        return `Basic ${String(auth)}`;
 33114      }
 33115  
 33116      // Check for basic username/password auth.
 33117      const username = this.getRegistryOrGlobalOption(registry, 'username');
 33118      const password = this.getRegistryOrGlobalOption(registry, '_password');
 33119      if (username && password) {
 33120        const pw = Buffer.from(String(password), 'base64').toString();
 33121        return 'Basic ' + Buffer.from(String(username) + ':' + pw).toString('base64');
 33122      }
 33123  
 33124      return '';
 33125    }
 33126  
 33127    getAuth(packageIdent) {
 33128      if (this.token) {
 33129        return this.token;
 33130      }
 33131  
 33132      const baseRegistry = this.getRegistry(packageIdent);
 33133      const registries = [baseRegistry];
 33134  
 33135      // If sending a request to the Yarn registry, we must also send it the auth token for the npm registry
 33136      if (baseRegistry === (_constants || _load_constants()).YARN_REGISTRY) {
 33137        registries.push(DEFAULT_REGISTRY);
 33138      }
 33139  
 33140      for (var _iterator4 = registries, _isArray4 = Array.isArray(_iterator4), _i5 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 33141        var _ref6;
 33142  
 33143        if (_isArray4) {
 33144          if (_i5 >= _iterator4.length) break;
 33145          _ref6 = _iterator4[_i5++];
 33146        } else {
 33147          _i5 = _iterator4.next();
 33148          if (_i5.done) break;
 33149          _ref6 = _i5.value;
 33150        }
 33151  
 33152        const registry = _ref6;
 33153  
 33154        const auth = this.getAuthByRegistry(registry);
 33155  
 33156        if (auth) {
 33157          return auth;
 33158        }
 33159      }
 33160  
 33161      return '';
 33162    }
 33163  
 33164    getScopedOption(scope, option) {
 33165      return this.getOption(scope + (scope ? ':' : '') + option);
 33166    }
 33167  
 33168    getRegistryOption(registry, option) {
 33169      const pre = REGEX_REGISTRY_HTTP_PROTOCOL;
 33170      const suf = REGEX_REGISTRY_SUFFIX;
 33171  
 33172      // When registry is used config scope, the trailing '/' is required
 33173      const reg = (0, (_misc || _load_misc()).addSuffix)(registry, '/');
 33174  
 33175      // 1st attempt, try to get option for the given registry URL
 33176      // 2nd attempt, remove the 'https?:' prefix of the registry URL
 33177      // 3nd attempt, remove the 'registry/?' suffix of the registry URL
 33178      return this.getScopedOption(reg, option) || pre.test(reg) && this.getRegistryOption(reg.replace(pre, ''), option) || suf.test(reg) && this.getRegistryOption(reg.replace(suf, ''), option);
 33179    }
 33180  
 33181    getRegistryOrGlobalOption(registry, option) {
 33182      return this.getRegistryOption(registry, option) || this.getOption(option);
 33183    }
 33184  }
 33185  exports.default = NpmRegistry;
 33186  NpmRegistry.filename = 'package.json';
 33187  
 33188  /***/ }),
 33189  /* 89 */
 33190  /***/ (function(module, exports, __webpack_require__) {
 33191  
 33192  "use strict";
 33193  
 33194  
 33195  Object.defineProperty(exports, "__esModule", {
 33196    value: true
 33197  });
 33198  
 33199  var _baseResolver;
 33200  
 33201  function _load_baseResolver() {
 33202    return _baseResolver = _interopRequireDefault(__webpack_require__(123));
 33203  }
 33204  
 33205  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 33206  
 33207  class ExoticResolver extends (_baseResolver || _load_baseResolver()).default {
 33208  
 33209    static isVersion(pattern) {
 33210      const proto = this.protocol;
 33211      if (proto) {
 33212        return pattern.startsWith(`${proto}:`);
 33213      } else {
 33214        throw new Error('No protocol specified');
 33215      }
 33216    }
 33217  }
 33218  exports.default = ExoticResolver;
 33219  
 33220  /***/ }),
 33221  /* 90 */
 33222  /***/ (function(module, exports, __webpack_require__) {
 33223  
 33224  "use strict";
 33225  
 33226  
 33227  Object.defineProperty(exports, "__esModule", {
 33228    value: true
 33229  });
 33230  
 33231  var _normalizePattern2;
 33232  
 33233  function _load_normalizePattern() {
 33234    return _normalizePattern2 = __webpack_require__(37);
 33235  }
 33236  
 33237  const semver = __webpack_require__(22);
 33238  
 33239  class WorkspaceLayout {
 33240    constructor(workspaces, config) {
 33241      this.workspaces = workspaces;
 33242      this.config = config;
 33243    }
 33244  
 33245    getWorkspaceManifest(key) {
 33246      return this.workspaces[key];
 33247    }
 33248  
 33249    getManifestByPattern(pattern) {
 33250      var _normalizePattern = (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(pattern);
 33251  
 33252      const name = _normalizePattern.name,
 33253            range = _normalizePattern.range;
 33254  
 33255      const workspace = this.getWorkspaceManifest(name);
 33256      if (!workspace || !semver.satisfies(workspace.manifest.version, range, this.config.looseSemver)) {
 33257        return null;
 33258      }
 33259      return workspace;
 33260    }
 33261  }
 33262  exports.default = WorkspaceLayout;
 33263  
 33264  /***/ }),
 33265  /* 91 */
 33266  /***/ (function(module, exports) {
 33267  
 33268  // 7.2.1 RequireObjectCoercible(argument)
 33269  module.exports = function (it) {
 33270    if (it == undefined) throw TypeError("Can't call method on  " + it);
 33271    return it;
 33272  };
 33273  
 33274  
 33275  /***/ }),
 33276  /* 92 */
 33277  /***/ (function(module, exports, __webpack_require__) {
 33278  
 33279  var isObject = __webpack_require__(53);
 33280  var document = __webpack_require__(17).document;
 33281  // typeof document.createElement is 'object' in old IE
 33282  var is = isObject(document) && isObject(document.createElement);
 33283  module.exports = function (it) {
 33284    return is ? document.createElement(it) : {};
 33285  };
 33286  
 33287  
 33288  /***/ }),
 33289  /* 93 */
 33290  /***/ (function(module, exports) {
 33291  
 33292  module.exports = true;
 33293  
 33294  
 33295  /***/ }),
 33296  /* 94 */
 33297  /***/ (function(module, exports, __webpack_require__) {
 33298  
 33299  "use strict";
 33300  
 33301  // 25.4.1.5 NewPromiseCapability(C)
 33302  var aFunction = __webpack_require__(68);
 33303  
 33304  function PromiseCapability(C) {
 33305    var resolve, reject;
 33306    this.promise = new C(function ($$resolve, $$reject) {
 33307      if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
 33308      resolve = $$resolve;
 33309      reject = $$reject;
 33310    });
 33311    this.resolve = aFunction(resolve);
 33312    this.reject = aFunction(reject);
 33313  }
 33314  
 33315  module.exports.f = function (C) {
 33316    return new PromiseCapability(C);
 33317  };
 33318  
 33319  
 33320  /***/ }),
 33321  /* 95 */
 33322  /***/ (function(module, exports, __webpack_require__) {
 33323  
 33324  var def = __webpack_require__(72).f;
 33325  var has = __webpack_require__(71);
 33326  var TAG = __webpack_require__(21)('toStringTag');
 33327  
 33328  module.exports = function (it, tag, stat) {
 33329    if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
 33330  };
 33331  
 33332  
 33333  /***/ }),
 33334  /* 96 */
 33335  /***/ (function(module, exports, __webpack_require__) {
 33336  
 33337  var shared = __webpack_require__(133)('keys');
 33338  var uid = __webpack_require__(137);
 33339  module.exports = function (key) {
 33340    return shared[key] || (shared[key] = uid(key));
 33341  };
 33342  
 33343  
 33344  /***/ }),
 33345  /* 97 */
 33346  /***/ (function(module, exports) {
 33347  
 33348  // 7.1.4 ToInteger
 33349  var ceil = Math.ceil;
 33350  var floor = Math.floor;
 33351  module.exports = function (it) {
 33352    return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
 33353  };
 33354  
 33355  
 33356  /***/ }),
 33357  /* 98 */
 33358  /***/ (function(module, exports, __webpack_require__) {
 33359  
 33360  // to indexed object, toObject with fallback for non-array-like ES3 strings
 33361  var IObject = __webpack_require__(171);
 33362  var defined = __webpack_require__(91);
 33363  module.exports = function (it) {
 33364    return IObject(defined(it));
 33365  };
 33366  
 33367  
 33368  /***/ }),
 33369  /* 99 */
 33370  /***/ (function(module, exports, __webpack_require__) {
 33371  
 33372  // Approach:
 33373  //
 33374  // 1. Get the minimatch set
 33375  // 2. For each pattern in the set, PROCESS(pattern, false)
 33376  // 3. Store matches per-set, then uniq them
 33377  //
 33378  // PROCESS(pattern, inGlobStar)
 33379  // Get the first [n] items from pattern that are all strings
 33380  // Join these together.  This is PREFIX.
 33381  //   If there is no more remaining, then stat(PREFIX) and
 33382  //   add to matches if it succeeds.  END.
 33383  //
 33384  // If inGlobStar and PREFIX is symlink and points to dir
 33385  //   set ENTRIES = []
 33386  // else readdir(PREFIX) as ENTRIES
 33387  //   If fail, END
 33388  //
 33389  // with ENTRIES
 33390  //   If pattern[n] is GLOBSTAR
 33391  //     // handle the case where the globstar match is empty
 33392  //     // by pruning it out, and testing the resulting pattern
 33393  //     PROCESS(pattern[0..n] + pattern[n+1 .. $], false)
 33394  //     // handle other cases.
 33395  //     for ENTRY in ENTRIES (not dotfiles)
 33396  //       // attach globstar + tail onto the entry
 33397  //       // Mark that this entry is a globstar match
 33398  //       PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)
 33399  //
 33400  //   else // not globstar
 33401  //     for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)
 33402  //       Test ENTRY against pattern[n]
 33403  //       If fails, continue
 33404  //       If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])
 33405  //
 33406  // Caveat:
 33407  //   Cache all stats and readdirs results to minimize syscall.  Since all
 33408  //   we ever care about is existence and directory-ness, we can just keep
 33409  //   `true` for files, and [children,...] for directories, or `false` for
 33410  //   things that don't exist.
 33411  
 33412  module.exports = glob
 33413  
 33414  var fs = __webpack_require__(4)
 33415  var rp = __webpack_require__(140)
 33416  var minimatch = __webpack_require__(82)
 33417  var Minimatch = minimatch.Minimatch
 33418  var inherits = __webpack_require__(61)
 33419  var EE = __webpack_require__(77).EventEmitter
 33420  var path = __webpack_require__(0)
 33421  var assert = __webpack_require__(28)
 33422  var isAbsolute = __webpack_require__(101)
 33423  var globSync = __webpack_require__(269)
 33424  var common = __webpack_require__(141)
 33425  var alphasort = common.alphasort
 33426  var alphasorti = common.alphasorti
 33427  var setopts = common.setopts
 33428  var ownProp = common.ownProp
 33429  var inflight = __webpack_require__(274)
 33430  var util = __webpack_require__(3)
 33431  var childrenIgnored = common.childrenIgnored
 33432  var isIgnored = common.isIgnored
 33433  
 33434  var once = __webpack_require__(83)
 33435  
 33436  function glob (pattern, options, cb) {
 33437    if (typeof options === 'function') cb = options, options = {}
 33438    if (!options) options = {}
 33439  
 33440    if (options.sync) {
 33441      if (cb)
 33442        throw new TypeError('callback provided to sync glob')
 33443      return globSync(pattern, options)
 33444    }
 33445  
 33446    return new Glob(pattern, options, cb)
 33447  }
 33448  
 33449  glob.sync = globSync
 33450  var GlobSync = glob.GlobSync = globSync.GlobSync
 33451  
 33452  // old api surface
 33453  glob.glob = glob
 33454  
 33455  function extend (origin, add) {
 33456    if (add === null || typeof add !== 'object') {
 33457      return origin
 33458    }
 33459  
 33460    var keys = Object.keys(add)
 33461    var i = keys.length
 33462    while (i--) {
 33463      origin[keys[i]] = add[keys[i]]
 33464    }
 33465    return origin
 33466  }
 33467  
 33468  glob.hasMagic = function (pattern, options_) {
 33469    var options = extend({}, options_)
 33470    options.noprocess = true
 33471  
 33472    var g = new Glob(pattern, options)
 33473    var set = g.minimatch.set
 33474  
 33475    if (!pattern)
 33476      return false
 33477  
 33478    if (set.length > 1)
 33479      return true
 33480  
 33481    for (var j = 0; j < set[0].length; j++) {
 33482      if (typeof set[0][j] !== 'string')
 33483        return true
 33484    }
 33485  
 33486    return false
 33487  }
 33488  
 33489  glob.Glob = Glob
 33490  inherits(Glob, EE)
 33491  function Glob (pattern, options, cb) {
 33492    if (typeof options === 'function') {
 33493      cb = options
 33494      options = null
 33495    }
 33496  
 33497    if (options && options.sync) {
 33498      if (cb)
 33499        throw new TypeError('callback provided to sync glob')
 33500      return new GlobSync(pattern, options)
 33501    }
 33502  
 33503    if (!(this instanceof Glob))
 33504      return new Glob(pattern, options, cb)
 33505  
 33506    setopts(this, pattern, options)
 33507    this._didRealPath = false
 33508  
 33509    // process each pattern in the minimatch set
 33510    var n = this.minimatch.set.length
 33511  
 33512    // The matches are stored as {<filename>: true,...} so that
 33513    // duplicates are automagically pruned.
 33514    // Later, we do an Object.keys() on these.
 33515    // Keep them as a list so we can fill in when nonull is set.
 33516    this.matches = new Array(n)
 33517  
 33518    if (typeof cb === 'function') {
 33519      cb = once(cb)
 33520      this.on('error', cb)
 33521      this.on('end', function (matches) {
 33522        cb(null, matches)
 33523      })
 33524    }
 33525  
 33526    var self = this
 33527    this._processing = 0
 33528  
 33529    this._emitQueue = []
 33530    this._processQueue = []
 33531    this.paused = false
 33532  
 33533    if (this.noprocess)
 33534      return this
 33535  
 33536    if (n === 0)
 33537      return done()
 33538  
 33539    var sync = true
 33540    for (var i = 0; i < n; i ++) {
 33541      this._process(this.minimatch.set[i], i, false, done)
 33542    }
 33543    sync = false
 33544  
 33545    function done () {
 33546      --self._processing
 33547      if (self._processing <= 0) {
 33548        if (sync) {
 33549          process.nextTick(function () {
 33550            self._finish()
 33551          })
 33552        } else {
 33553          self._finish()
 33554        }
 33555      }
 33556    }
 33557  }
 33558  
 33559  Glob.prototype._finish = function () {
 33560    assert(this instanceof Glob)
 33561    if (this.aborted)
 33562      return
 33563  
 33564    if (this.realpath && !this._didRealpath)
 33565      return this._realpath()
 33566  
 33567    common.finish(this)
 33568    this.emit('end', this.found)
 33569  }
 33570  
 33571  Glob.prototype._realpath = function () {
 33572    if (this._didRealpath)
 33573      return
 33574  
 33575    this._didRealpath = true
 33576  
 33577    var n = this.matches.length
 33578    if (n === 0)
 33579      return this._finish()
 33580  
 33581    var self = this
 33582    for (var i = 0; i < this.matches.length; i++)
 33583      this._realpathSet(i, next)
 33584  
 33585    function next () {
 33586      if (--n === 0)
 33587        self._finish()
 33588    }
 33589  }
 33590  
 33591  Glob.prototype._realpathSet = function (index, cb) {
 33592    var matchset = this.matches[index]
 33593    if (!matchset)
 33594      return cb()
 33595  
 33596    var found = Object.keys(matchset)
 33597    var self = this
 33598    var n = found.length
 33599  
 33600    if (n === 0)
 33601      return cb()
 33602  
 33603    var set = this.matches[index] = Object.create(null)
 33604    found.forEach(function (p, i) {
 33605      // If there's a problem with the stat, then it means that
 33606      // one or more of the links in the realpath couldn't be
 33607      // resolved.  just return the abs value in that case.
 33608      p = self._makeAbs(p)
 33609      rp.realpath(p, self.realpathCache, function (er, real) {
 33610        if (!er)
 33611          set[real] = true
 33612        else if (er.syscall === 'stat')
 33613          set[p] = true
 33614        else
 33615          self.emit('error', er) // srsly wtf right here
 33616  
 33617        if (--n === 0) {
 33618          self.matches[index] = set
 33619          cb()
 33620        }
 33621      })
 33622    })
 33623  }
 33624  
 33625  Glob.prototype._mark = function (p) {
 33626    return common.mark(this, p)
 33627  }
 33628  
 33629  Glob.prototype._makeAbs = function (f) {
 33630    return common.makeAbs(this, f)
 33631  }
 33632  
 33633  Glob.prototype.abort = function () {
 33634    this.aborted = true
 33635    this.emit('abort')
 33636  }
 33637  
 33638  Glob.prototype.pause = function () {
 33639    if (!this.paused) {
 33640      this.paused = true
 33641      this.emit('pause')
 33642    }
 33643  }
 33644  
 33645  Glob.prototype.resume = function () {
 33646    if (this.paused) {
 33647      this.emit('resume')
 33648      this.paused = false
 33649      if (this._emitQueue.length) {
 33650        var eq = this._emitQueue.slice(0)
 33651        this._emitQueue.length = 0
 33652        for (var i = 0; i < eq.length; i ++) {
 33653          var e = eq[i]
 33654          this._emitMatch(e[0], e[1])
 33655        }
 33656      }
 33657      if (this._processQueue.length) {
 33658        var pq = this._processQueue.slice(0)
 33659        this._processQueue.length = 0
 33660        for (var i = 0; i < pq.length; i ++) {
 33661          var p = pq[i]
 33662          this._processing--
 33663          this._process(p[0], p[1], p[2], p[3])
 33664        }
 33665      }
 33666    }
 33667  }
 33668  
 33669  Glob.prototype._process = function (pattern, index, inGlobStar, cb) {
 33670    assert(this instanceof Glob)
 33671    assert(typeof cb === 'function')
 33672  
 33673    if (this.aborted)
 33674      return
 33675  
 33676    this._processing++
 33677    if (this.paused) {
 33678      this._processQueue.push([pattern, index, inGlobStar, cb])
 33679      return
 33680    }
 33681  
 33682    //console.error('PROCESS %d', this._processing, pattern)
 33683  
 33684    // Get the first [n] parts of pattern that are all strings.
 33685    var n = 0
 33686    while (typeof pattern[n] === 'string') {
 33687      n ++
 33688    }
 33689    // now n is the index of the first one that is *not* a string.
 33690  
 33691    // see if there's anything else
 33692    var prefix
 33693    switch (n) {
 33694      // if not, then this is rather simple
 33695      case pattern.length:
 33696        this._processSimple(pattern.join('/'), index, cb)
 33697        return
 33698  
 33699      case 0:
 33700        // pattern *starts* with some non-trivial item.
 33701        // going to readdir(cwd), but not include the prefix in matches.
 33702        prefix = null
 33703        break
 33704  
 33705      default:
 33706        // pattern has some string bits in the front.
 33707        // whatever it starts with, whether that's 'absolute' like /foo/bar,
 33708        // or 'relative' like '../baz'
 33709        prefix = pattern.slice(0, n).join('/')
 33710        break
 33711    }
 33712  
 33713    var remain = pattern.slice(n)
 33714  
 33715    // get the list of entries.
 33716    var read
 33717    if (prefix === null)
 33718      read = '.'
 33719    else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {
 33720      if (!prefix || !isAbsolute(prefix))
 33721        prefix = '/' + prefix
 33722      read = prefix
 33723    } else
 33724      read = prefix
 33725  
 33726    var abs = this._makeAbs(read)
 33727  
 33728    //if ignored, skip _processing
 33729    if (childrenIgnored(this, read))
 33730      return cb()
 33731  
 33732    var isGlobStar = remain[0] === minimatch.GLOBSTAR
 33733    if (isGlobStar)
 33734      this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)
 33735    else
 33736      this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)
 33737  }
 33738  
 33739  Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {
 33740    var self = this
 33741    this._readdir(abs, inGlobStar, function (er, entries) {
 33742      return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)
 33743    })
 33744  }
 33745  
 33746  Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
 33747  
 33748    // if the abs isn't a dir, then nothing can match!
 33749    if (!entries)
 33750      return cb()
 33751  
 33752    // It will only match dot entries if it starts with a dot, or if
 33753    // dot is set.  Stuff like @(.foo|.bar) isn't allowed.
 33754    var pn = remain[0]
 33755    var negate = !!this.minimatch.negate
 33756    var rawGlob = pn._glob
 33757    var dotOk = this.dot || rawGlob.charAt(0) === '.'
 33758  
 33759    var matchedEntries = []
 33760    for (var i = 0; i < entries.length; i++) {
 33761      var e = entries[i]
 33762      if (e.charAt(0) !== '.' || dotOk) {
 33763        var m
 33764        if (negate && !prefix) {
 33765          m = !e.match(pn)
 33766        } else {
 33767          m = e.match(pn)
 33768        }
 33769        if (m)
 33770          matchedEntries.push(e)
 33771      }
 33772    }
 33773  
 33774    //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)
 33775  
 33776    var len = matchedEntries.length
 33777    // If there are no matched entries, then nothing matches.
 33778    if (len === 0)
 33779      return cb()
 33780  
 33781    // if this is the last remaining pattern bit, then no need for
 33782    // an additional stat *unless* the user has specified mark or
 33783    // stat explicitly.  We know they exist, since readdir returned
 33784    // them.
 33785  
 33786    if (remain.length === 1 && !this.mark && !this.stat) {
 33787      if (!this.matches[index])
 33788        this.matches[index] = Object.create(null)
 33789  
 33790      for (var i = 0; i < len; i ++) {
 33791        var e = matchedEntries[i]
 33792        if (prefix) {
 33793          if (prefix !== '/')
 33794            e = prefix + '/' + e
 33795          else
 33796            e = prefix + e
 33797        }
 33798  
 33799        if (e.charAt(0) === '/' && !this.nomount) {
 33800          e = path.join(this.root, e)
 33801        }
 33802        this._emitMatch(index, e)
 33803      }
 33804      // This was the last one, and no stats were needed
 33805      return cb()
 33806    }
 33807  
 33808    // now test all matched entries as stand-ins for that part
 33809    // of the pattern.
 33810    remain.shift()
 33811    for (var i = 0; i < len; i ++) {
 33812      var e = matchedEntries[i]
 33813      var newPattern
 33814      if (prefix) {
 33815        if (prefix !== '/')
 33816          e = prefix + '/' + e
 33817        else
 33818          e = prefix + e
 33819      }
 33820      this._process([e].concat(remain), index, inGlobStar, cb)
 33821    }
 33822    cb()
 33823  }
 33824  
 33825  Glob.prototype._emitMatch = function (index, e) {
 33826    if (this.aborted)
 33827      return
 33828  
 33829    if (isIgnored(this, e))
 33830      return
 33831  
 33832    if (this.paused) {
 33833      this._emitQueue.push([index, e])
 33834      return
 33835    }
 33836  
 33837    var abs = isAbsolute(e) ? e : this._makeAbs(e)
 33838  
 33839    if (this.mark)
 33840      e = this._mark(e)
 33841  
 33842    if (this.absolute)
 33843      e = abs
 33844  
 33845    if (this.matches[index][e])
 33846      return
 33847  
 33848    if (this.nodir) {
 33849      var c = this.cache[abs]
 33850      if (c === 'DIR' || Array.isArray(c))
 33851        return
 33852    }
 33853  
 33854    this.matches[index][e] = true
 33855  
 33856    var st = this.statCache[abs]
 33857    if (st)
 33858      this.emit('stat', e, st)
 33859  
 33860    this.emit('match', e)
 33861  }
 33862  
 33863  Glob.prototype._readdirInGlobStar = function (abs, cb) {
 33864    if (this.aborted)
 33865      return
 33866  
 33867    // follow all symlinked directories forever
 33868    // just proceed as if this is a non-globstar situation
 33869    if (this.follow)
 33870      return this._readdir(abs, false, cb)
 33871  
 33872    var lstatkey = 'lstat\0' + abs
 33873    var self = this
 33874    var lstatcb = inflight(lstatkey, lstatcb_)
 33875  
 33876    if (lstatcb)
 33877      fs.lstat(abs, lstatcb)
 33878  
 33879    function lstatcb_ (er, lstat) {
 33880      if (er && er.code === 'ENOENT')
 33881        return cb()
 33882  
 33883      var isSym = lstat && lstat.isSymbolicLink()
 33884      self.symlinks[abs] = isSym
 33885  
 33886      // If it's not a symlink or a dir, then it's definitely a regular file.
 33887      // don't bother doing a readdir in that case.
 33888      if (!isSym && lstat && !lstat.isDirectory()) {
 33889        self.cache[abs] = 'FILE'
 33890        cb()
 33891      } else
 33892        self._readdir(abs, false, cb)
 33893    }
 33894  }
 33895  
 33896  Glob.prototype._readdir = function (abs, inGlobStar, cb) {
 33897    if (this.aborted)
 33898      return
 33899  
 33900    cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb)
 33901    if (!cb)
 33902      return
 33903  
 33904    //console.error('RD %j %j', +inGlobStar, abs)
 33905    if (inGlobStar && !ownProp(this.symlinks, abs))
 33906      return this._readdirInGlobStar(abs, cb)
 33907  
 33908    if (ownProp(this.cache, abs)) {
 33909      var c = this.cache[abs]
 33910      if (!c || c === 'FILE')
 33911        return cb()
 33912  
 33913      if (Array.isArray(c))
 33914        return cb(null, c)
 33915    }
 33916  
 33917    var self = this
 33918    fs.readdir(abs, readdirCb(this, abs, cb))
 33919  }
 33920  
 33921  function readdirCb (self, abs, cb) {
 33922    return function (er, entries) {
 33923      if (er)
 33924        self._readdirError(abs, er, cb)
 33925      else
 33926        self._readdirEntries(abs, entries, cb)
 33927    }
 33928  }
 33929  
 33930  Glob.prototype._readdirEntries = function (abs, entries, cb) {
 33931    if (this.aborted)
 33932      return
 33933  
 33934    // if we haven't asked to stat everything, then just
 33935    // assume that everything in there exists, so we can avoid
 33936    // having to stat it a second time.
 33937    if (!this.mark && !this.stat) {
 33938      for (var i = 0; i < entries.length; i ++) {
 33939        var e = entries[i]
 33940        if (abs === '/')
 33941          e = abs + e
 33942        else
 33943          e = abs + '/' + e
 33944        this.cache[e] = true
 33945      }
 33946    }
 33947  
 33948    this.cache[abs] = entries
 33949    return cb(null, entries)
 33950  }
 33951  
 33952  Glob.prototype._readdirError = function (f, er, cb) {
 33953    if (this.aborted)
 33954      return
 33955  
 33956    // handle errors, and cache the information
 33957    switch (er.code) {
 33958      case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205
 33959      case 'ENOTDIR': // totally normal. means it *does* exist.
 33960        var abs = this._makeAbs(f)
 33961        this.cache[abs] = 'FILE'
 33962        if (abs === this.cwdAbs) {
 33963          var error = new Error(er.code + ' invalid cwd ' + this.cwd)
 33964          error.path = this.cwd
 33965          error.code = er.code
 33966          this.emit('error', error)
 33967          this.abort()
 33968        }
 33969        break
 33970  
 33971      case 'ENOENT': // not terribly unusual
 33972      case 'ELOOP':
 33973      case 'ENAMETOOLONG':
 33974      case 'UNKNOWN':
 33975        this.cache[this._makeAbs(f)] = false
 33976        break
 33977  
 33978      default: // some unusual error.  Treat as failure.
 33979        this.cache[this._makeAbs(f)] = false
 33980        if (this.strict) {
 33981          this.emit('error', er)
 33982          // If the error is handled, then we abort
 33983          // if not, we threw out of here
 33984          this.abort()
 33985        }
 33986        if (!this.silent)
 33987          console.error('glob error', er)
 33988        break
 33989    }
 33990  
 33991    return cb()
 33992  }
 33993  
 33994  Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {
 33995    var self = this
 33996    this._readdir(abs, inGlobStar, function (er, entries) {
 33997      self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)
 33998    })
 33999  }
 34000  
 34001  
 34002  Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
 34003    //console.error('pgs2', prefix, remain[0], entries)
 34004  
 34005    // no entries means not a dir, so it can never have matches
 34006    // foo.txt/** doesn't match foo.txt
 34007    if (!entries)
 34008      return cb()
 34009  
 34010    // test without the globstar, and with every child both below
 34011    // and replacing the globstar.
 34012    var remainWithoutGlobStar = remain.slice(1)
 34013    var gspref = prefix ? [ prefix ] : []
 34014    var noGlobStar = gspref.concat(remainWithoutGlobStar)
 34015  
 34016    // the noGlobStar pattern exits the inGlobStar state
 34017    this._process(noGlobStar, index, false, cb)
 34018  
 34019    var isSym = this.symlinks[abs]
 34020    var len = entries.length
 34021  
 34022    // If it's a symlink, and we're in a globstar, then stop
 34023    if (isSym && inGlobStar)
 34024      return cb()
 34025  
 34026    for (var i = 0; i < len; i++) {
 34027      var e = entries[i]
 34028      if (e.charAt(0) === '.' && !this.dot)
 34029        continue
 34030  
 34031      // these two cases enter the inGlobStar state
 34032      var instead = gspref.concat(entries[i], remainWithoutGlobStar)
 34033      this._process(instead, index, true, cb)
 34034  
 34035      var below = gspref.concat(entries[i], remain)
 34036      this._process(below, index, true, cb)
 34037    }
 34038  
 34039    cb()
 34040  }
 34041  
 34042  Glob.prototype._processSimple = function (prefix, index, cb) {
 34043    // XXX review this.  Shouldn't it be doing the mounting etc
 34044    // before doing stat?  kinda weird?
 34045    var self = this
 34046    this._stat(prefix, function (er, exists) {
 34047      self._processSimple2(prefix, index, er, exists, cb)
 34048    })
 34049  }
 34050  Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {
 34051  
 34052    //console.error('ps2', prefix, exists)
 34053  
 34054    if (!this.matches[index])
 34055      this.matches[index] = Object.create(null)
 34056  
 34057    // If it doesn't exist, then just mark the lack of results
 34058    if (!exists)
 34059      return cb()
 34060  
 34061    if (prefix && isAbsolute(prefix) && !this.nomount) {
 34062      var trail = /[\/\\]$/.test(prefix)
 34063      if (prefix.charAt(0) === '/') {
 34064        prefix = path.join(this.root, prefix)
 34065      } else {
 34066        prefix = path.resolve(this.root, prefix)
 34067        if (trail)
 34068          prefix += '/'
 34069      }
 34070    }
 34071  
 34072    if (process.platform === 'win32')
 34073      prefix = prefix.replace(/\\/g, '/')
 34074  
 34075    // Mark this as a match
 34076    this._emitMatch(index, prefix)
 34077    cb()
 34078  }
 34079  
 34080  // Returns either 'DIR', 'FILE', or false
 34081  Glob.prototype._stat = function (f, cb) {
 34082    var abs = this._makeAbs(f)
 34083    var needDir = f.slice(-1) === '/'
 34084  
 34085    if (f.length > this.maxLength)
 34086      return cb()
 34087  
 34088    if (!this.stat && ownProp(this.cache, abs)) {
 34089      var c = this.cache[abs]
 34090  
 34091      if (Array.isArray(c))
 34092        c = 'DIR'
 34093  
 34094      // It exists, but maybe not how we need it
 34095      if (!needDir || c === 'DIR')
 34096        return cb(null, c)
 34097  
 34098      if (needDir && c === 'FILE')
 34099        return cb()
 34100  
 34101      // otherwise we have to stat, because maybe c=true
 34102      // if we know it exists, but not what it is.
 34103    }
 34104  
 34105    var exists
 34106    var stat = this.statCache[abs]
 34107    if (stat !== undefined) {
 34108      if (stat === false)
 34109        return cb(null, stat)
 34110      else {
 34111        var type = stat.isDirectory() ? 'DIR' : 'FILE'
 34112        if (needDir && type === 'FILE')
 34113          return cb()
 34114        else
 34115          return cb(null, type, stat)
 34116      }
 34117    }
 34118  
 34119    var self = this
 34120    var statcb = inflight('stat\0' + abs, lstatcb_)
 34121    if (statcb)
 34122      fs.lstat(abs, statcb)
 34123  
 34124    function lstatcb_ (er, lstat) {
 34125      if (lstat && lstat.isSymbolicLink()) {
 34126        // If it's a symlink, then treat it as the target, unless
 34127        // the target does not exist, then treat it as a file.
 34128        return fs.stat(abs, function (er, stat) {
 34129          if (er)
 34130            self._stat2(f, abs, null, lstat, cb)
 34131          else
 34132            self._stat2(f, abs, er, stat, cb)
 34133        })
 34134      } else {
 34135        self._stat2(f, abs, er, lstat, cb)
 34136      }
 34137    }
 34138  }
 34139  
 34140  Glob.prototype._stat2 = function (f, abs, er, stat, cb) {
 34141    if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {
 34142      this.statCache[abs] = false
 34143      return cb()
 34144    }
 34145  
 34146    var needDir = f.slice(-1) === '/'
 34147    this.statCache[abs] = stat
 34148  
 34149    if (abs.slice(-1) === '/' && stat && !stat.isDirectory())
 34150      return cb(null, false, stat)
 34151  
 34152    var c = true
 34153    if (stat)
 34154      c = stat.isDirectory() ? 'DIR' : 'FILE'
 34155    this.cache[abs] = this.cache[abs] || c
 34156  
 34157    if (needDir && c === 'FILE')
 34158      return cb()
 34159  
 34160    return cb(null, c, stat)
 34161  }
 34162  
 34163  
 34164  /***/ }),
 34165  /* 100 */
 34166  /***/ (function(module, exports, __webpack_require__) {
 34167  
 34168  "use strict";
 34169  // Standard YAML's Failsafe schema.
 34170  // http://www.yaml.org/spec/1.2/spec.html#id2802346
 34171  
 34172  
 34173  
 34174  
 34175  
 34176  var Schema = __webpack_require__(44);
 34177  
 34178  
 34179  module.exports = new Schema({
 34180    explicit: [
 34181      __webpack_require__(298),
 34182      __webpack_require__(296),
 34183      __webpack_require__(291)
 34184    ]
 34185  });
 34186  
 34187  
 34188  /***/ }),
 34189  /* 101 */
 34190  /***/ (function(module, exports, __webpack_require__) {
 34191  
 34192  "use strict";
 34193  
 34194  
 34195  function posix(path) {
 34196  	return path.charAt(0) === '/';
 34197  }
 34198  
 34199  function win32(path) {
 34200  	// https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56
 34201  	var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/;
 34202  	var result = splitDeviceRe.exec(path);
 34203  	var device = result[1] || '';
 34204  	var isUnc = Boolean(device && device.charAt(1) !== ':');
 34205  
 34206  	// UNC paths are always absolute
 34207  	return Boolean(result[2] || isUnc);
 34208  }
 34209  
 34210  module.exports = process.platform === 'win32' ? win32 : posix;
 34211  module.exports.posix = posix;
 34212  module.exports.win32 = win32;
 34213  
 34214  
 34215  /***/ }),
 34216  /* 102 */
 34217  /***/ (function(module, exports, __webpack_require__) {
 34218  
 34219  var Stream = __webpack_require__(23);
 34220  if (process.env.READABLE_STREAM === 'disable' && Stream) {
 34221    module.exports = Stream;
 34222    exports = module.exports = Stream.Readable;
 34223    exports.Readable = Stream.Readable;
 34224    exports.Writable = Stream.Writable;
 34225    exports.Duplex = Stream.Duplex;
 34226    exports.Transform = Stream.Transform;
 34227    exports.PassThrough = Stream.PassThrough;
 34228    exports.Stream = Stream;
 34229  } else {
 34230    exports = module.exports = __webpack_require__(406);
 34231    exports.Stream = Stream || exports;
 34232    exports.Readable = exports;
 34233    exports.Writable = __webpack_require__(408);
 34234    exports.Duplex = __webpack_require__(116);
 34235    exports.Transform = __webpack_require__(407);
 34236    exports.PassThrough = __webpack_require__(792);
 34237  }
 34238  
 34239  
 34240  /***/ }),
 34241  /* 103 */
 34242  /***/ (function(module, exports, __webpack_require__) {
 34243  
 34244  // Copyright 2015 Joyent, Inc.
 34245  
 34246  module.exports = {
 34247  	read: read.bind(undefined, false, undefined),
 34248  	readType: read.bind(undefined, false),
 34249  	write: write,
 34250  	/* semi-private api, used by sshpk-agent */
 34251  	readPartial: read.bind(undefined, true),
 34252  
 34253  	/* shared with ssh format */
 34254  	readInternal: read,
 34255  	keyTypeToAlg: keyTypeToAlg,
 34256  	algToKeyType: algToKeyType
 34257  };
 34258  
 34259  var assert = __webpack_require__(16);
 34260  var Buffer = __webpack_require__(15).Buffer;
 34261  var algs = __webpack_require__(32);
 34262  var utils = __webpack_require__(26);
 34263  var Key = __webpack_require__(27);
 34264  var PrivateKey = __webpack_require__(33);
 34265  var SSHBuffer = __webpack_require__(159);
 34266  
 34267  function algToKeyType(alg) {
 34268  	assert.string(alg);
 34269  	if (alg === 'ssh-dss')
 34270  		return ('dsa');
 34271  	else if (alg === 'ssh-rsa')
 34272  		return ('rsa');
 34273  	else if (alg === 'ssh-ed25519')
 34274  		return ('ed25519');
 34275  	else if (alg === 'ssh-curve25519')
 34276  		return ('curve25519');
 34277  	else if (alg.match(/^ecdsa-sha2-/))
 34278  		return ('ecdsa');
 34279  	else
 34280  		throw (new Error('Unknown algorithm ' + alg));
 34281  }
 34282  
 34283  function keyTypeToAlg(key) {
 34284  	assert.object(key);
 34285  	if (key.type === 'dsa')
 34286  		return ('ssh-dss');
 34287  	else if (key.type === 'rsa')
 34288  		return ('ssh-rsa');
 34289  	else if (key.type === 'ed25519')
 34290  		return ('ssh-ed25519');
 34291  	else if (key.type === 'curve25519')
 34292  		return ('ssh-curve25519');
 34293  	else if (key.type === 'ecdsa')
 34294  		return ('ecdsa-sha2-' + key.part.curve.data.toString());
 34295  	else
 34296  		throw (new Error('Unknown key type ' + key.type));
 34297  }
 34298  
 34299  function read(partial, type, buf, options) {
 34300  	if (typeof (buf) === 'string')
 34301  		buf = Buffer.from(buf);
 34302  	assert.buffer(buf, 'buf');
 34303  
 34304  	var key = {};
 34305  
 34306  	var parts = key.parts = [];
 34307  	var sshbuf = new SSHBuffer({buffer: buf});
 34308  
 34309  	var alg = sshbuf.readString();
 34310  	assert.ok(!sshbuf.atEnd(), 'key must have at least one part');
 34311  
 34312  	key.type = algToKeyType(alg);
 34313  
 34314  	var partCount = algs.info[key.type].parts.length;
 34315  	if (type && type === 'private')
 34316  		partCount = algs.privInfo[key.type].parts.length;
 34317  
 34318  	while (!sshbuf.atEnd() && parts.length < partCount)
 34319  		parts.push(sshbuf.readPart());
 34320  	while (!partial && !sshbuf.atEnd())
 34321  		parts.push(sshbuf.readPart());
 34322  
 34323  	assert.ok(parts.length >= 1,
 34324  	    'key must have at least one part');
 34325  	assert.ok(partial || sshbuf.atEnd(),
 34326  	    'leftover bytes at end of key');
 34327  
 34328  	var Constructor = Key;
 34329  	var algInfo = algs.info[key.type];
 34330  	if (type === 'private' || algInfo.parts.length !== parts.length) {
 34331  		algInfo = algs.privInfo[key.type];
 34332  		Constructor = PrivateKey;
 34333  	}
 34334  	assert.strictEqual(algInfo.parts.length, parts.length);
 34335  
 34336  	if (key.type === 'ecdsa') {
 34337  		var res = /^ecdsa-sha2-(.+)$/.exec(alg);
 34338  		assert.ok(res !== null);
 34339  		assert.strictEqual(res[1], parts[0].data.toString());
 34340  	}
 34341  
 34342  	var normalized = true;
 34343  	for (var i = 0; i < algInfo.parts.length; ++i) {
 34344  		var p = parts[i];
 34345  		p.name = algInfo.parts[i];
 34346  		/*
 34347  		 * OpenSSH stores ed25519 "private" keys as seed + public key
 34348  		 * concat'd together (k followed by A). We want to keep them
 34349  		 * separate for other formats that don't do this.
 34350  		 */
 34351  		if (key.type === 'ed25519' && p.name === 'k')
 34352  			p.data = p.data.slice(0, 32);
 34353  
 34354  		if (p.name !== 'curve' && algInfo.normalize !== false) {
 34355  			var nd;
 34356  			if (key.type === 'ed25519') {
 34357  				nd = utils.zeroPadToLength(p.data, 32);
 34358  			} else {
 34359  				nd = utils.mpNormalize(p.data);
 34360  			}
 34361  			if (nd.toString('binary') !==
 34362  			    p.data.toString('binary')) {
 34363  				p.data = nd;
 34364  				normalized = false;
 34365  			}
 34366  		}
 34367  	}
 34368  
 34369  	if (normalized)
 34370  		key._rfc4253Cache = sshbuf.toBuffer();
 34371  
 34372  	if (partial && typeof (partial) === 'object') {
 34373  		partial.remainder = sshbuf.remainder();
 34374  		partial.consumed = sshbuf._offset;
 34375  	}
 34376  
 34377  	return (new Constructor(key));
 34378  }
 34379  
 34380  function write(key, options) {
 34381  	assert.object(key);
 34382  
 34383  	var alg = keyTypeToAlg(key);
 34384  	var i;
 34385  
 34386  	var algInfo = algs.info[key.type];
 34387  	if (PrivateKey.isPrivateKey(key))
 34388  		algInfo = algs.privInfo[key.type];
 34389  	var parts = algInfo.parts;
 34390  
 34391  	var buf = new SSHBuffer({});
 34392  
 34393  	buf.writeString(alg);
 34394  
 34395  	for (i = 0; i < parts.length; ++i) {
 34396  		var data = key.part[parts[i]].data;
 34397  		if (algInfo.normalize !== false) {
 34398  			if (key.type === 'ed25519')
 34399  				data = utils.zeroPadToLength(data, 32);
 34400  			else
 34401  				data = utils.mpNormalize(data);
 34402  		}
 34403  		if (key.type === 'ed25519' && parts[i] === 'k')
 34404  			data = Buffer.concat([data, key.part.A.data]);
 34405  		buf.writeBuffer(data);
 34406  	}
 34407  
 34408  	return (buf.toBuffer());
 34409  }
 34410  
 34411  
 34412  /***/ }),
 34413  /* 104 */
 34414  /***/ (function(module, exports) {
 34415  
 34416  module.exports = require("tty");
 34417  
 34418  /***/ }),
 34419  /* 105 */
 34420  /***/ (function(module, exports, __webpack_require__) {
 34421  
 34422  "use strict";
 34423  
 34424  
 34425  Object.defineProperty(exports, "__esModule", {
 34426    value: true
 34427  });
 34428  exports.getInstallationMethod = exports.version = undefined;
 34429  
 34430  var _asyncToGenerator2;
 34431  
 34432  function _load_asyncToGenerator() {
 34433    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 34434  }
 34435  
 34436  let getInstallationMethod = exports.getInstallationMethod = (() => {
 34437    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 34438      let installationMethod = originalInstallationMethod;
 34439  
 34440      // If there's a package.json in the parent directory, it could have an
 34441      // override for the installation method, so we should prefer that over
 34442      // whatever was originally in Yarn's package.json. This is the case with
 34443      // systems such as Homebrew, which take the tarball and modify the
 34444      // installation method so we're aware of the fact that Yarn was installed via
 34445      // Homebrew (so things like update notifications can point out the correct
 34446      // command to upgrade).
 34447      try {
 34448        const manifestPath = (_path || _load_path()).default.join(__dirname, '..', 'package.json');
 34449        if ((_fs2 || _load_fs2()).default.existsSync(manifestPath)) {
 34450          // non-async version is deprecated
 34451          const manifest = yield (0, (_fs || _load_fs()).readJson)(manifestPath);
 34452          if (manifest.installationMethod) {
 34453            installationMethod = manifest.installationMethod;
 34454          }
 34455        }
 34456      } catch (e) {
 34457        // Ignore any errors; this is not critical functionality.
 34458      }
 34459      return installationMethod;
 34460    });
 34461  
 34462    return function getInstallationMethod() {
 34463      return _ref.apply(this, arguments);
 34464    };
 34465  })();
 34466  
 34467  var _fs;
 34468  
 34469  function _load_fs() {
 34470    return _fs = __webpack_require__(5);
 34471  }
 34472  
 34473  var _fs2;
 34474  
 34475  function _load_fs2() {
 34476    return _fs2 = _interopRequireDefault(__webpack_require__(4));
 34477  }
 34478  
 34479  var _path;
 34480  
 34481  function _load_path() {
 34482    return _path = _interopRequireDefault(__webpack_require__(0));
 34483  }
 34484  
 34485  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 34486  
 34487  // This will be bundled directly in the .js file for production builds
 34488  var _require = __webpack_require__(195); /**
 34489                                                 * Determines the current version of Yarn itself.
 34490                                                 * 
 34491                                                 */
 34492  
 34493  const version = _require.version,
 34494        originalInstallationMethod = _require.installationMethod;
 34495  exports.version = version;
 34496  
 34497  /***/ }),
 34498  /* 106 */
 34499  /***/ (function(module, exports, __webpack_require__) {
 34500  
 34501  "use strict";
 34502  
 34503  
 34504  Object.defineProperty(exports, "__esModule", {
 34505    value: true
 34506  });
 34507  
 34508  exports.default = function (str, fileLoc = 'lockfile') {
 34509    str = (0, (_stripBom || _load_stripBom()).default)(str);
 34510    return hasMergeConflicts(str) ? parseWithConflict(str, fileLoc) : { type: 'success', object: parse(str, fileLoc) };
 34511  };
 34512  
 34513  var _util;
 34514  
 34515  function _load_util() {
 34516    return _util = _interopRequireDefault(__webpack_require__(3));
 34517  }
 34518  
 34519  var _invariant;
 34520  
 34521  function _load_invariant() {
 34522    return _invariant = _interopRequireDefault(__webpack_require__(9));
 34523  }
 34524  
 34525  var _stripBom;
 34526  
 34527  function _load_stripBom() {
 34528    return _stripBom = _interopRequireDefault(__webpack_require__(160));
 34529  }
 34530  
 34531  var _constants;
 34532  
 34533  function _load_constants() {
 34534    return _constants = __webpack_require__(8);
 34535  }
 34536  
 34537  var _errors;
 34538  
 34539  function _load_errors() {
 34540    return _errors = __webpack_require__(6);
 34541  }
 34542  
 34543  var _map;
 34544  
 34545  function _load_map() {
 34546    return _map = _interopRequireDefault(__webpack_require__(29));
 34547  }
 34548  
 34549  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 34550  
 34551  /* eslint quotes: 0 */
 34552  
 34553  var _require = __webpack_require__(279);
 34554  
 34555  const safeLoad = _require.safeLoad,
 34556        FAILSAFE_SCHEMA = _require.FAILSAFE_SCHEMA;
 34557  
 34558  
 34559  const VERSION_REGEX = /^yarn lockfile v(\d+)$/;
 34560  
 34561  const TOKEN_TYPES = {
 34562    boolean: 'BOOLEAN',
 34563    string: 'STRING',
 34564    identifier: 'IDENTIFIER',
 34565    eof: 'EOF',
 34566    colon: 'COLON',
 34567    newline: 'NEWLINE',
 34568    comment: 'COMMENT',
 34569    indent: 'INDENT',
 34570    invalid: 'INVALID',
 34571    number: 'NUMBER',
 34572    comma: 'COMMA'
 34573  };
 34574  
 34575  const VALID_PROP_VALUE_TOKENS = [TOKEN_TYPES.boolean, TOKEN_TYPES.string, TOKEN_TYPES.number];
 34576  
 34577  function isValidPropValueToken(token) {
 34578    return VALID_PROP_VALUE_TOKENS.indexOf(token.type) >= 0;
 34579  }
 34580  
 34581  function* tokenise(input) {
 34582    let lastNewline = false;
 34583    let line = 1;
 34584    let col = 0;
 34585  
 34586    function buildToken(type, value) {
 34587      return { line, col, type, value };
 34588    }
 34589  
 34590    while (input.length) {
 34591      let chop = 0;
 34592  
 34593      if (input[0] === '\n' || input[0] === '\r') {
 34594        chop++;
 34595        // If this is a \r\n line, ignore both chars but only add one new line
 34596        if (input[1] === '\n') {
 34597          chop++;
 34598        }
 34599        line++;
 34600        col = 0;
 34601        yield buildToken(TOKEN_TYPES.newline);
 34602      } else if (input[0] === '#') {
 34603        chop++;
 34604  
 34605        let nextNewline = input.indexOf('\n', chop);
 34606        if (nextNewline === -1) {
 34607          nextNewline = input.length;
 34608        }
 34609        const val = input.substring(chop, nextNewline);
 34610        chop = nextNewline;
 34611        yield buildToken(TOKEN_TYPES.comment, val);
 34612      } else if (input[0] === ' ') {
 34613        if (lastNewline) {
 34614          let indentSize = 1;
 34615          for (let i = 1; input[i] === ' '; i++) {
 34616            indentSize++;
 34617          }
 34618  
 34619          if (indentSize % 2) {
 34620            throw new TypeError('Invalid number of spaces');
 34621          } else {
 34622            chop = indentSize;
 34623            yield buildToken(TOKEN_TYPES.indent, indentSize / 2);
 34624          }
 34625        } else {
 34626          chop++;
 34627        }
 34628      } else if (input[0] === '"') {
 34629        let i = 1;
 34630        for (; i < input.length; i++) {
 34631          if (input[i] === '"') {
 34632            const isEscaped = input[i - 1] === '\\' && input[i - 2] !== '\\';
 34633            if (!isEscaped) {
 34634              i++;
 34635              break;
 34636            }
 34637          }
 34638        }
 34639        const val = input.substring(0, i);
 34640  
 34641        chop = i;
 34642  
 34643        try {
 34644          yield buildToken(TOKEN_TYPES.string, JSON.parse(val));
 34645        } catch (err) {
 34646          if (err instanceof SyntaxError) {
 34647            yield buildToken(TOKEN_TYPES.invalid);
 34648          } else {
 34649            throw err;
 34650          }
 34651        }
 34652      } else if (/^[0-9]/.test(input)) {
 34653        const val = /^[0-9]+/.exec(input)[0];
 34654        chop = val.length;
 34655  
 34656        yield buildToken(TOKEN_TYPES.number, +val);
 34657      } else if (/^true/.test(input)) {
 34658        yield buildToken(TOKEN_TYPES.boolean, true);
 34659        chop = 4;
 34660      } else if (/^false/.test(input)) {
 34661        yield buildToken(TOKEN_TYPES.boolean, false);
 34662        chop = 5;
 34663      } else if (input[0] === ':') {
 34664        yield buildToken(TOKEN_TYPES.colon);
 34665        chop++;
 34666      } else if (input[0] === ',') {
 34667        yield buildToken(TOKEN_TYPES.comma);
 34668        chop++;
 34669      } else if (/^[a-zA-Z\/.-]/g.test(input)) {
 34670        let i = 0;
 34671        for (; i < input.length; i++) {
 34672          const char = input[i];
 34673          if (char === ':' || char === ' ' || char === '\n' || char === '\r' || char === ',') {
 34674            break;
 34675          }
 34676        }
 34677        const name = input.substring(0, i);
 34678        chop = i;
 34679  
 34680        yield buildToken(TOKEN_TYPES.string, name);
 34681      } else {
 34682        yield buildToken(TOKEN_TYPES.invalid);
 34683      }
 34684  
 34685      if (!chop) {
 34686        // will trigger infinite recursion
 34687        yield buildToken(TOKEN_TYPES.invalid);
 34688      }
 34689  
 34690      col += chop;
 34691      lastNewline = input[0] === '\n' || input[0] === '\r' && input[1] === '\n';
 34692      input = input.slice(chop);
 34693    }
 34694  
 34695    yield buildToken(TOKEN_TYPES.eof);
 34696  }
 34697  
 34698  class Parser {
 34699    constructor(input, fileLoc = 'lockfile') {
 34700      this.comments = [];
 34701      this.tokens = tokenise(input);
 34702      this.fileLoc = fileLoc;
 34703    }
 34704  
 34705    onComment(token) {
 34706      const value = token.value;
 34707      (0, (_invariant || _load_invariant()).default)(typeof value === 'string', 'expected token value to be a string');
 34708  
 34709      const comment = value.trim();
 34710  
 34711      const versionMatch = comment.match(VERSION_REGEX);
 34712      if (versionMatch) {
 34713        const version = +versionMatch[1];
 34714        if (version > (_constants || _load_constants()).LOCKFILE_VERSION) {
 34715          throw new (_errors || _load_errors()).MessageError(`Can't install from a lockfile of version ${version} as you're on an old yarn version that only supports ` + `versions up to ${(_constants || _load_constants()).LOCKFILE_VERSION}. Run \`$ yarn self-update\` to upgrade to the latest version.`);
 34716        }
 34717      }
 34718  
 34719      this.comments.push(comment);
 34720    }
 34721  
 34722    next() {
 34723      const item = this.tokens.next();
 34724      (0, (_invariant || _load_invariant()).default)(item, 'expected a token');
 34725  
 34726      const done = item.done,
 34727            value = item.value;
 34728  
 34729      if (done || !value) {
 34730        throw new Error('No more tokens');
 34731      } else if (value.type === TOKEN_TYPES.comment) {
 34732        this.onComment(value);
 34733        return this.next();
 34734      } else {
 34735        return this.token = value;
 34736      }
 34737    }
 34738  
 34739    unexpected(msg = 'Unexpected token') {
 34740      throw new SyntaxError(`${msg} ${this.token.line}:${this.token.col} in ${this.fileLoc}`);
 34741    }
 34742  
 34743    expect(tokType) {
 34744      if (this.token.type === tokType) {
 34745        this.next();
 34746      } else {
 34747        this.unexpected();
 34748      }
 34749    }
 34750  
 34751    eat(tokType) {
 34752      if (this.token.type === tokType) {
 34753        this.next();
 34754        return true;
 34755      } else {
 34756        return false;
 34757      }
 34758    }
 34759  
 34760    parse(indent = 0) {
 34761      const obj = (0, (_map || _load_map()).default)();
 34762  
 34763      while (true) {
 34764        const propToken = this.token;
 34765  
 34766        if (propToken.type === TOKEN_TYPES.newline) {
 34767          const nextToken = this.next();
 34768          if (!indent) {
 34769            // if we have 0 indentation then the next token doesn't matter
 34770            continue;
 34771          }
 34772  
 34773          if (nextToken.type !== TOKEN_TYPES.indent) {
 34774            // if we have no indentation after a newline then we've gone down a level
 34775            break;
 34776          }
 34777  
 34778          if (nextToken.value === indent) {
 34779            // all is good, the indent is on our level
 34780            this.next();
 34781          } else {
 34782            // the indentation is less than our level
 34783            break;
 34784          }
 34785        } else if (propToken.type === TOKEN_TYPES.indent) {
 34786          if (propToken.value === indent) {
 34787            this.next();
 34788          } else {
 34789            break;
 34790          }
 34791        } else if (propToken.type === TOKEN_TYPES.eof) {
 34792          break;
 34793        } else if (propToken.type === TOKEN_TYPES.string) {
 34794          // property key
 34795          const key = propToken.value;
 34796          (0, (_invariant || _load_invariant()).default)(key, 'Expected a key');
 34797  
 34798          const keys = [key];
 34799          this.next();
 34800  
 34801          // support multiple keys
 34802          while (this.token.type === TOKEN_TYPES.comma) {
 34803            this.next(); // skip comma
 34804  
 34805            const keyToken = this.token;
 34806            if (keyToken.type !== TOKEN_TYPES.string) {
 34807              this.unexpected('Expected string');
 34808            }
 34809  
 34810            const key = keyToken.value;
 34811            (0, (_invariant || _load_invariant()).default)(key, 'Expected a key');
 34812            keys.push(key);
 34813            this.next();
 34814          }
 34815  
 34816          const wasColon = this.token.type === TOKEN_TYPES.colon;
 34817          if (wasColon) {
 34818            this.next();
 34819          }
 34820  
 34821          if (isValidPropValueToken(this.token)) {
 34822            // plain value
 34823            for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 34824              var _ref;
 34825  
 34826              if (_isArray) {
 34827                if (_i >= _iterator.length) break;
 34828                _ref = _iterator[_i++];
 34829              } else {
 34830                _i = _iterator.next();
 34831                if (_i.done) break;
 34832                _ref = _i.value;
 34833              }
 34834  
 34835              const key = _ref;
 34836  
 34837              obj[key] = this.token.value;
 34838            }
 34839  
 34840            this.next();
 34841          } else if (wasColon) {
 34842            // parse object
 34843            const val = this.parse(indent + 1);
 34844  
 34845            for (var _iterator2 = keys, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 34846              var _ref2;
 34847  
 34848              if (_isArray2) {
 34849                if (_i2 >= _iterator2.length) break;
 34850                _ref2 = _iterator2[_i2++];
 34851              } else {
 34852                _i2 = _iterator2.next();
 34853                if (_i2.done) break;
 34854                _ref2 = _i2.value;
 34855              }
 34856  
 34857              const key = _ref2;
 34858  
 34859              obj[key] = val;
 34860            }
 34861  
 34862            if (indent && this.token.type !== TOKEN_TYPES.indent) {
 34863              break;
 34864            }
 34865          } else {
 34866            this.unexpected('Invalid value type');
 34867          }
 34868        } else {
 34869          this.unexpected(`Unknown token: ${(_util || _load_util()).default.inspect(propToken)}`);
 34870        }
 34871      }
 34872  
 34873      return obj;
 34874    }
 34875  }
 34876  
 34877  const MERGE_CONFLICT_ANCESTOR = '|||||||';
 34878  const MERGE_CONFLICT_END = '>>>>>>>';
 34879  const MERGE_CONFLICT_SEP = '=======';
 34880  const MERGE_CONFLICT_START = '<<<<<<<';
 34881  
 34882  /**
 34883   * Extract the two versions of the lockfile from a merge conflict.
 34884   */
 34885  function extractConflictVariants(str) {
 34886    const variants = [[], []];
 34887    const lines = str.split(/\r?\n/g);
 34888    let skip = false;
 34889  
 34890    while (lines.length) {
 34891      const line = lines.shift();
 34892      if (line.startsWith(MERGE_CONFLICT_START)) {
 34893        // get the first variant
 34894        while (lines.length) {
 34895          const conflictLine = lines.shift();
 34896          if (conflictLine === MERGE_CONFLICT_SEP) {
 34897            skip = false;
 34898            break;
 34899          } else if (skip || conflictLine.startsWith(MERGE_CONFLICT_ANCESTOR)) {
 34900            skip = true;
 34901            continue;
 34902          } else {
 34903            variants[0].push(conflictLine);
 34904          }
 34905        }
 34906  
 34907        // get the second variant
 34908        while (lines.length) {
 34909          const conflictLine = lines.shift();
 34910          if (conflictLine.startsWith(MERGE_CONFLICT_END)) {
 34911            break;
 34912          } else {
 34913            variants[1].push(conflictLine);
 34914          }
 34915        }
 34916      } else {
 34917        variants[0].push(line);
 34918        variants[1].push(line);
 34919      }
 34920    }
 34921  
 34922    return [variants[0].join('\n'), variants[1].join('\n')];
 34923  }
 34924  
 34925  /**
 34926   * Check if a lockfile has merge conflicts.
 34927   */
 34928  function hasMergeConflicts(str) {
 34929    return str.includes(MERGE_CONFLICT_START) && str.includes(MERGE_CONFLICT_SEP) && str.includes(MERGE_CONFLICT_END);
 34930  }
 34931  
 34932  /**
 34933   * Parse the lockfile.
 34934   */
 34935  function parse(str, fileLoc) {
 34936    const parser = new Parser(str, fileLoc);
 34937    parser.next();
 34938  
 34939    if (!fileLoc.endsWith(`.yml`)) {
 34940      try {
 34941        return parser.parse();
 34942      } catch (error1) {
 34943        try {
 34944          return safeLoad(str, {
 34945            schema: FAILSAFE_SCHEMA
 34946          });
 34947        } catch (error2) {
 34948          throw error1;
 34949        }
 34950      }
 34951    } else {
 34952      const result = safeLoad(str, {
 34953        schema: FAILSAFE_SCHEMA
 34954      });
 34955      if (typeof result === 'object') {
 34956        return result;
 34957      } else {
 34958        return {};
 34959      }
 34960    }
 34961  }
 34962  
 34963  /**
 34964   * Parse and merge the two variants in a conflicted lockfile.
 34965   */
 34966  function parseWithConflict(str, fileLoc) {
 34967    const variants = extractConflictVariants(str);
 34968    try {
 34969      return { type: 'merge', object: Object.assign({}, parse(variants[0], fileLoc), parse(variants[1], fileLoc)) };
 34970    } catch (err) {
 34971      if (err instanceof SyntaxError) {
 34972        return { type: 'conflict', object: {} };
 34973      } else {
 34974        throw err;
 34975      }
 34976    }
 34977  }
 34978  
 34979  /***/ }),
 34980  /* 107 */
 34981  /***/ (function(module, exports, __webpack_require__) {
 34982  
 34983  "use strict";
 34984  
 34985  
 34986  Object.defineProperty(exports, "__esModule", {
 34987    value: true
 34988  });
 34989  exports.run = exports.getToken = undefined;
 34990  
 34991  var _asyncToGenerator2;
 34992  
 34993  function _load_asyncToGenerator() {
 34994    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 34995  }
 34996  
 34997  let getCredentials = (() => {
 34998    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter) {
 34999      var _config$registries$ya = config.registries.yarn.config;
 35000      let username = _config$registries$ya.username,
 35001          email = _config$registries$ya.email;
 35002  
 35003  
 35004      if (username) {
 35005        reporter.info(`${reporter.lang('npmUsername')}: ${username}`);
 35006      } else {
 35007        username = yield reporter.question(reporter.lang('npmUsername'));
 35008        if (!username) {
 35009          return null;
 35010        }
 35011      }
 35012  
 35013      if (email) {
 35014        reporter.info(`${reporter.lang('npmEmail')}: ${email}`);
 35015      } else {
 35016        email = yield reporter.question(reporter.lang('npmEmail'));
 35017        if (!email) {
 35018          return null;
 35019        }
 35020      }
 35021  
 35022      yield config.registries.yarn.saveHomeConfig({ username, email });
 35023  
 35024      return { username, email };
 35025    });
 35026  
 35027    return function getCredentials(_x, _x2) {
 35028      return _ref.apply(this, arguments);
 35029    };
 35030  })();
 35031  
 35032  let getToken = exports.getToken = (() => {
 35033    var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, name = '', flags = {}, registry = '') {
 35034      const auth = registry ? config.registries.npm.getAuthByRegistry(registry) : config.registries.npm.getAuth(name);
 35035  
 35036      if (config.otp) {
 35037        config.registries.npm.setOtp(config.otp);
 35038      }
 35039  
 35040      if (auth) {
 35041        config.registries.npm.setToken(auth);
 35042        return function revoke() {
 35043          reporter.info(reporter.lang('notRevokingConfigToken'));
 35044          return Promise.resolve();
 35045        };
 35046      }
 35047  
 35048      const env = process.env.YARN_AUTH_TOKEN || process.env.NPM_AUTH_TOKEN;
 35049      if (env) {
 35050        config.registries.npm.setToken(`Bearer ${env}`);
 35051        return function revoke() {
 35052          reporter.info(reporter.lang('notRevokingEnvToken'));
 35053          return Promise.resolve();
 35054        };
 35055      }
 35056  
 35057      // make sure we're not running in non-interactive mode before asking for login
 35058      if (flags.nonInteractive || config.nonInteractive) {
 35059        throw new (_errors || _load_errors()).MessageError(reporter.lang('nonInteractiveNoToken'));
 35060      }
 35061  
 35062      //
 35063      const creds = yield getCredentials(config, reporter);
 35064      if (!creds) {
 35065        reporter.warn(reporter.lang('loginAsPublic'));
 35066        return function revoke() {
 35067          reporter.info(reporter.lang('noTokenToRevoke'));
 35068          return Promise.resolve();
 35069        };
 35070      }
 35071  
 35072      const username = creds.username,
 35073            email = creds.email;
 35074  
 35075      const password = yield reporter.question(reporter.lang('npmPassword'), {
 35076        password: true,
 35077        required: true
 35078      });
 35079  
 35080      //
 35081      const userobj = {
 35082        _id: `org.couchdb.user:${username}`,
 35083        name: username,
 35084        password,
 35085        email,
 35086        type: 'user',
 35087        roles: [],
 35088        date: new Date().toISOString()
 35089      };
 35090  
 35091      //
 35092      const res = yield config.registries.npm.request(`-/user/org.couchdb.user:${encodeURIComponent(username)}`, {
 35093        method: 'PUT',
 35094        registry,
 35095        body: userobj,
 35096        auth: { username, password, email }
 35097      });
 35098  
 35099      if (res && res.ok) {
 35100        reporter.success(reporter.lang('loggedIn'));
 35101  
 35102        const token = res.token;
 35103        config.registries.npm.setToken(`Bearer ${token}`);
 35104  
 35105        return (() => {
 35106          var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 35107            reporter.success(reporter.lang('revokedToken'));
 35108            yield config.registries.npm.request(`-/user/token/${token}`, {
 35109              method: 'DELETE',
 35110              registry
 35111            });
 35112          });
 35113  
 35114          function revoke() {
 35115            return _ref3.apply(this, arguments);
 35116          }
 35117  
 35118          return revoke;
 35119        })();
 35120      } else {
 35121        throw new (_errors || _load_errors()).MessageError(reporter.lang('incorrectCredentials'));
 35122      }
 35123    });
 35124  
 35125    return function getToken(_x3, _x4) {
 35126      return _ref2.apply(this, arguments);
 35127    };
 35128  })();
 35129  
 35130  let run = exports.run = (() => {
 35131    var _ref4 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 35132      yield getCredentials(config, reporter);
 35133    });
 35134  
 35135    return function run(_x5, _x6, _x7, _x8) {
 35136      return _ref4.apply(this, arguments);
 35137    };
 35138  })();
 35139  
 35140  exports.getOneTimePassword = getOneTimePassword;
 35141  exports.hasWrapper = hasWrapper;
 35142  exports.setFlags = setFlags;
 35143  
 35144  var _errors;
 35145  
 35146  function _load_errors() {
 35147    return _errors = __webpack_require__(6);
 35148  }
 35149  
 35150  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 35151  
 35152  function getOneTimePassword(reporter) {
 35153    return reporter.question(reporter.lang('npmOneTimePassword'));
 35154  }
 35155  
 35156  function hasWrapper(commander, args) {
 35157    return true;
 35158  }
 35159  
 35160  function setFlags(commander) {
 35161    commander.description('Stores registry username and email.');
 35162  }
 35163  
 35164  /***/ }),
 35165  /* 108 */
 35166  /***/ (function(module, exports, __webpack_require__) {
 35167  
 35168  "use strict";
 35169  
 35170  
 35171  Object.defineProperty(exports, "__esModule", {
 35172    value: true
 35173  });
 35174  
 35175  var _asyncToGenerator2;
 35176  
 35177  function _load_asyncToGenerator() {
 35178    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 35179  }
 35180  
 35181  exports.stringifyLangArgs = stringifyLangArgs;
 35182  
 35183  var _format;
 35184  
 35185  function _load_format() {
 35186    return _format = __webpack_require__(534);
 35187  }
 35188  
 35189  var _index;
 35190  
 35191  function _load_index() {
 35192    return _index = _interopRequireWildcard(__webpack_require__(536));
 35193  }
 35194  
 35195  var _isCi;
 35196  
 35197  function _load_isCi() {
 35198    return _isCi = _interopRequireDefault(__webpack_require__(397));
 35199  }
 35200  
 35201  var _os;
 35202  
 35203  function _load_os() {
 35204    return _os = _interopRequireDefault(__webpack_require__(46));
 35205  }
 35206  
 35207  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 35208  
 35209  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 35210  
 35211  /* eslint no-unused-vars: 0 */
 35212  
 35213  const util = __webpack_require__(3);
 35214  const EventEmitter = __webpack_require__(77).EventEmitter;
 35215  
 35216  function stringifyLangArgs(args) {
 35217    return args.map(function (val) {
 35218      if (val != null && val.inspect) {
 35219        return val.inspect();
 35220      } else {
 35221        try {
 35222          const str = JSON.stringify(val) || val + '';
 35223          // should match all literal line breaks and
 35224          // "u001b" that follow an odd number of backslashes and convert them to ESC
 35225          // we do this because the JSON.stringify process has escaped these characters
 35226          return str.replace(/((?:^|[^\\])(?:\\{2})*)\\u001[bB]/g, '$1\u001b').replace(/[\\]r[\\]n|([\\])?[\\]n/g, (match, precededBacklash) => {
 35227            // precededBacklash not null when "\n" is preceded by a backlash ("\\n")
 35228            // match will be "\\n" and we don't replace it with os.EOL
 35229            return precededBacklash ? match : (_os || _load_os()).default.EOL;
 35230          });
 35231        } catch (e) {
 35232          return util.inspect(val);
 35233        }
 35234      }
 35235    });
 35236  }
 35237  
 35238  class BaseReporter {
 35239    constructor(opts = {}) {
 35240      const lang = 'en';
 35241      this.language = lang;
 35242  
 35243      this.stdout = opts.stdout || process.stdout;
 35244      this.stderr = opts.stderr || process.stderr;
 35245      this.stdin = opts.stdin || this._getStandardInput();
 35246      this.emoji = !!opts.emoji;
 35247      this.nonInteractive = !!opts.nonInteractive;
 35248      this.noProgress = !!opts.noProgress || (_isCi || _load_isCi()).default;
 35249      this.isVerbose = !!opts.verbose;
 35250  
 35251      // $FlowFixMe: this is valid!
 35252      this.isTTY = this.stdout.isTTY;
 35253  
 35254      this.peakMemory = 0;
 35255      this.startTime = Date.now();
 35256      this.format = (_format || _load_format()).defaultFormatter;
 35257    }
 35258  
 35259    lang(key, ...args) {
 35260      const msg = (_index || _load_index())[this.language][key] || (_index || _load_index()).en[key];
 35261      if (!msg) {
 35262        throw new ReferenceError(`No message defined for language key ${key}`);
 35263      }
 35264  
 35265      // stringify args
 35266      const stringifiedArgs = stringifyLangArgs(args);
 35267  
 35268      // replace $0 placeholders with args
 35269      return msg.replace(/\$(\d+)/g, (str, i) => {
 35270        return stringifiedArgs[i];
 35271      });
 35272    }
 35273  
 35274    /**
 35275     * `stringifyLangArgs` run `JSON.stringify` on strings too causing
 35276     * them to appear quoted. This marks them as "raw" and prevents
 35277     * the quoting and escaping
 35278     */
 35279    rawText(str) {
 35280      return {
 35281        inspect() {
 35282          return str;
 35283        }
 35284      };
 35285    }
 35286  
 35287    verbose(msg) {
 35288      if (this.isVerbose) {
 35289        this._verbose(msg);
 35290      }
 35291    }
 35292  
 35293    verboseInspect(val) {
 35294      if (this.isVerbose) {
 35295        this._verboseInspect(val);
 35296      }
 35297    }
 35298  
 35299    _verbose(msg) {}
 35300    _verboseInspect(val) {}
 35301  
 35302    _getStandardInput() {
 35303      let standardInput;
 35304  
 35305      // Accessing stdin in a win32 headless process (e.g., Visual Studio) may throw an exception.
 35306      try {
 35307        standardInput = process.stdin;
 35308      } catch (e) {
 35309        console.warn(e.message);
 35310        delete process.stdin;
 35311        // $FlowFixMe: this is valid!
 35312        process.stdin = new EventEmitter();
 35313        standardInput = process.stdin;
 35314      }
 35315  
 35316      return standardInput;
 35317    }
 35318  
 35319    initPeakMemoryCounter() {
 35320      this.checkPeakMemory();
 35321      this.peakMemoryInterval = setInterval(() => {
 35322        this.checkPeakMemory();
 35323      }, 1000);
 35324      // $FlowFixMe: Node's setInterval returns a Timeout, not a Number
 35325      this.peakMemoryInterval.unref();
 35326    }
 35327  
 35328    checkPeakMemory() {
 35329      var _process$memoryUsage = process.memoryUsage();
 35330  
 35331      const heapTotal = _process$memoryUsage.heapTotal;
 35332  
 35333      if (heapTotal > this.peakMemory) {
 35334        this.peakMemory = heapTotal;
 35335      }
 35336    }
 35337  
 35338    close() {
 35339      if (this.peakMemoryInterval) {
 35340        clearInterval(this.peakMemoryInterval);
 35341        this.peakMemoryInterval = null;
 35342      }
 35343    }
 35344  
 35345    getTotalTime() {
 35346      return Date.now() - this.startTime;
 35347    }
 35348  
 35349    // TODO
 35350    list(key, items, hints) {}
 35351  
 35352    // Outputs basic tree structure to console
 35353    tree(key, obj, { force = false } = {}) {}
 35354  
 35355    // called whenever we begin a step in the CLI.
 35356    step(current, total, message, emoji) {}
 35357  
 35358    // a error message has been triggered. this however does not always meant an abrupt
 35359    // program end.
 35360    error(message) {}
 35361  
 35362    // an info message has been triggered. this provides things like stats and diagnostics.
 35363    info(message) {}
 35364  
 35365    // a warning message has been triggered.
 35366    warn(message) {}
 35367  
 35368    // a success message has been triggered.
 35369    success(message) {}
 35370  
 35371    // a simple log message
 35372    // TODO: rethink the {force} parameter. In the meantime, please don't use it (cf comments in #4143).
 35373    log(message, { force = false } = {}) {}
 35374  
 35375    // a shell command has been executed
 35376    command(command) {}
 35377  
 35378    // inspect and pretty-print any value
 35379    inspect(value) {}
 35380  
 35381    // the screen shown at the very start of the CLI
 35382    header(command, pkg) {}
 35383  
 35384    // the screen shown at the very end of the CLI
 35385    footer(showPeakMemory) {}
 35386  
 35387    // a table structure
 35388    table(head, body) {}
 35389  
 35390    // security audit action to resolve advisories
 35391    auditAction(recommendation) {}
 35392  
 35393    // security audit requires manual review
 35394    auditManualReview() {}
 35395  
 35396    // security audit advisory
 35397    auditAdvisory(resolution, auditAdvisory) {}
 35398  
 35399    // summary for security audit report
 35400    auditSummary(auditMetadata) {}
 35401  
 35402    // render an activity spinner and return a function that will trigger an update
 35403    activity() {
 35404      return {
 35405        tick(name) {},
 35406        end() {}
 35407      };
 35408    }
 35409  
 35410    //
 35411    activitySet(total, workers) {
 35412      return {
 35413        spinners: Array(workers).fill({
 35414          clear() {},
 35415          setPrefix() {},
 35416          tick() {},
 35417          end() {}
 35418        }),
 35419        end() {}
 35420      };
 35421    }
 35422  
 35423    //
 35424    question(question, options = {}) {
 35425      return Promise.reject(new Error('Not implemented'));
 35426    }
 35427  
 35428    //
 35429    questionAffirm(question) {
 35430      var _this = this;
 35431  
 35432      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 35433        const condition = true; // trick eslint
 35434        if (_this.nonInteractive) {
 35435          return true;
 35436        }
 35437  
 35438        while (condition) {
 35439          let answer = yield _this.question(question);
 35440          answer = answer.toLowerCase();
 35441  
 35442          if (answer === 'y' || answer === 'yes') {
 35443            return true;
 35444          }
 35445          if (answer === 'n' || answer === 'no') {
 35446            return false;
 35447          }
 35448  
 35449          _this.error('Invalid answer for question');
 35450        }
 35451  
 35452        return false;
 35453      })();
 35454    }
 35455  
 35456    // prompt the user to select an option from an array
 35457    select(header, question, options) {
 35458      return Promise.reject(new Error('Not implemented'));
 35459    }
 35460  
 35461    // render a progress bar and return a function which when called will trigger an update
 35462    progress(total) {
 35463      return function () {};
 35464    }
 35465  
 35466    // utility function to disable progress bar
 35467    disableProgress() {
 35468      this.noProgress = true;
 35469    }
 35470  
 35471    //
 35472    prompt(message, choices, options = {}) {
 35473      return Promise.reject(new Error('Not implemented'));
 35474    }
 35475  }
 35476  exports.default = BaseReporter;
 35477  
 35478  /***/ }),
 35479  /* 109 */
 35480  /***/ (function(module, exports, __webpack_require__) {
 35481  
 35482  "use strict";
 35483  
 35484  
 35485  Object.defineProperty(exports, "__esModule", {
 35486    value: true
 35487  });
 35488  
 35489  var _asyncToGenerator2;
 35490  
 35491  function _load_asyncToGenerator() {
 35492    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 35493  }
 35494  
 35495  exports.explodeHostedGitFragment = explodeHostedGitFragment;
 35496  
 35497  var _errors;
 35498  
 35499  function _load_errors() {
 35500    return _errors = __webpack_require__(6);
 35501  }
 35502  
 35503  var _index;
 35504  
 35505  function _load_index() {
 35506    return _index = __webpack_require__(58);
 35507  }
 35508  
 35509  var _gitResolver;
 35510  
 35511  function _load_gitResolver() {
 35512    return _gitResolver = _interopRequireDefault(__webpack_require__(124));
 35513  }
 35514  
 35515  var _exoticResolver;
 35516  
 35517  function _load_exoticResolver() {
 35518    return _exoticResolver = _interopRequireDefault(__webpack_require__(89));
 35519  }
 35520  
 35521  var _git;
 35522  
 35523  function _load_git() {
 35524    return _git = _interopRequireDefault(__webpack_require__(217));
 35525  }
 35526  
 35527  var _guessName;
 35528  
 35529  function _load_guessName() {
 35530    return _guessName = _interopRequireDefault(__webpack_require__(169));
 35531  }
 35532  
 35533  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 35534  
 35535  function parseHash(fragment) {
 35536    const hashPosition = fragment.indexOf('#');
 35537    return hashPosition === -1 ? '' : fragment.substr(hashPosition + 1);
 35538  }
 35539  
 35540  function explodeHostedGitFragment(fragment, reporter) {
 35541    const hash = parseHash(fragment);
 35542  
 35543    const preParts = fragment.split('@');
 35544    if (preParts.length > 2) {
 35545      fragment = preParts[1] + '@' + preParts[2];
 35546    }
 35547  
 35548    const parts = fragment.replace(/(.*?)#.*/, '$1') // Strip hash
 35549    .replace(/.*:(.*)/, '$1') // Strip prefixed protocols
 35550    .replace(/.git$/, '') // Strip the .git suffix
 35551    .split('/');
 35552  
 35553    const user = parts[parts.length - 2];
 35554    const repo = parts[parts.length - 1];
 35555  
 35556    if (user === undefined || repo === undefined) {
 35557      throw new (_errors || _load_errors()).MessageError(reporter.lang('invalidHostedGitFragment', fragment));
 35558    }
 35559  
 35560    return {
 35561      user,
 35562      repo,
 35563      hash
 35564    };
 35565  }
 35566  
 35567  class HostedGitResolver extends (_exoticResolver || _load_exoticResolver()).default {
 35568    constructor(request, fragment) {
 35569      super(request, fragment);
 35570  
 35571      const exploded = this.exploded = explodeHostedGitFragment(fragment, this.reporter);
 35572      const user = exploded.user,
 35573            repo = exploded.repo,
 35574            hash = exploded.hash;
 35575  
 35576      this.user = user;
 35577      this.repo = repo;
 35578      this.hash = hash;
 35579    }
 35580  
 35581    static getTarballUrl(exploded, commit) {
 35582      exploded;
 35583      commit;
 35584      throw new Error('Not implemented');
 35585    }
 35586  
 35587    static getGitHTTPUrl(exploded) {
 35588      exploded;
 35589      throw new Error('Not implemented');
 35590    }
 35591  
 35592    static getGitHTTPBaseUrl(exploded) {
 35593      exploded;
 35594      throw new Error('Not implemented');
 35595    }
 35596  
 35597    static getGitSSHUrl(exploded) {
 35598      exploded;
 35599      throw new Error('Not implemented');
 35600    }
 35601  
 35602    static getHTTPFileUrl(exploded, filename, commit) {
 35603      exploded;
 35604      filename;
 35605      commit;
 35606      throw new Error('Not implemented');
 35607    }
 35608  
 35609    getRefOverHTTP(url) {
 35610      var _this = this;
 35611  
 35612      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 35613        const gitUrl = (_git || _load_git()).default.npmUrlToGitUrl(url);
 35614        const client = new (_git || _load_git()).default(_this.config, gitUrl, _this.hash);
 35615  
 35616        let out = yield _this.config.requestManager.request({
 35617          url: `${url}/info/refs?service=git-upload-pack`,
 35618          queue: _this.resolver.fetchingQueue
 35619        });
 35620  
 35621        if (out) {
 35622          // clean up output
 35623          let lines = out.trim().split('\n');
 35624  
 35625          // remove first two lines which contains compatibility info etc
 35626          lines = lines.slice(2);
 35627  
 35628          // remove last line which contains the terminator "0000"
 35629          lines.pop();
 35630  
 35631          // remove line lengths from start of each line
 35632          lines = lines.map(function (line) {
 35633            return line.slice(4);
 35634          });
 35635  
 35636          out = lines.join('\n');
 35637        } else {
 35638          throw new Error(_this.reporter.lang('hostedGitResolveError'));
 35639        }
 35640  
 35641        return client.setRefHosted(out);
 35642      })();
 35643    }
 35644  
 35645    resolveOverHTTP(url) {
 35646      var _this2 = this;
 35647  
 35648      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 35649        const commit = yield _this2.getRefOverHTTP(url);
 35650        const config = _this2.config;
 35651  
 35652  
 35653        const tarballUrl = _this2.constructor.getTarballUrl(_this2.exploded, commit);
 35654  
 35655        const tryRegistry = (() => {
 35656          var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (registry) {
 35657            const filename = (_index || _load_index()).registries[registry].filename;
 35658  
 35659            const href = _this2.constructor.getHTTPFileUrl(_this2.exploded, filename, commit);
 35660            const file = yield config.requestManager.request({
 35661              url: href,
 35662              queue: _this2.resolver.fetchingQueue
 35663            });
 35664            if (!file) {
 35665              return null;
 35666            }
 35667  
 35668            const json = yield config.readJson(href, function () {
 35669              return JSON.parse(file);
 35670            });
 35671            json._uid = commit;
 35672            json._remote = {
 35673              resolved: tarballUrl,
 35674              type: 'tarball',
 35675              reference: tarballUrl,
 35676              registry
 35677            };
 35678            return json;
 35679          });
 35680  
 35681          return function tryRegistry(_x) {
 35682            return _ref.apply(this, arguments);
 35683          };
 35684        })();
 35685  
 35686        const file = yield tryRegistry(_this2.registry);
 35687        if (file) {
 35688          return file;
 35689        }
 35690  
 35691        for (const registry in (_index || _load_index()).registries) {
 35692          if (registry === _this2.registry) {
 35693            continue;
 35694          }
 35695  
 35696          const file = yield tryRegistry(registry);
 35697          if (file) {
 35698            return file;
 35699          }
 35700        }
 35701  
 35702        return {
 35703          name: (0, (_guessName || _load_guessName()).default)(url),
 35704          version: '0.0.0',
 35705          _uid: commit,
 35706          _remote: {
 35707            resolved: tarballUrl,
 35708            type: 'tarball',
 35709            reference: tarballUrl,
 35710            registry: 'npm',
 35711            hash: undefined
 35712          }
 35713        };
 35714      })();
 35715    }
 35716  
 35717    hasHTTPCapability(url) {
 35718      var _this3 = this;
 35719  
 35720      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 35721        return (yield _this3.config.requestManager.request({
 35722          url,
 35723          method: 'HEAD',
 35724          queue: _this3.resolver.fetchingQueue,
 35725          followRedirect: false
 35726        })) !== false;
 35727      })();
 35728    }
 35729  
 35730    resolve() {
 35731      var _this4 = this;
 35732  
 35733      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 35734        // If we already have the tarball, just return it without having to make any HTTP requests.
 35735        const shrunk = _this4.request.getLocked('tarball');
 35736        if (shrunk) {
 35737          return shrunk;
 35738        }
 35739  
 35740        const httpUrl = _this4.constructor.getGitHTTPUrl(_this4.exploded);
 35741        const httpBaseUrl = _this4.constructor.getGitHTTPBaseUrl(_this4.exploded);
 35742        const sshUrl = _this4.constructor.getGitSSHUrl(_this4.exploded);
 35743  
 35744        // If we can access the files over HTTP then we should as it's MUCH faster than git
 35745        // archive and tarball unarchiving. The HTTP API is only available for public repos
 35746        // though.
 35747        if (yield _this4.hasHTTPCapability(httpBaseUrl)) {
 35748          return _this4.resolveOverHTTP(httpUrl);
 35749        }
 35750  
 35751        // If the url is accessible over git archive then we should immediately delegate to
 35752        // the git resolver.
 35753        //
 35754        // NOTE: Here we use a different url than when we delegate to the git resolver later on.
 35755        // This is because `git archive` requires access over ssh and github only allows that
 35756        // if you have write permissions
 35757        const sshGitUrl = (_git || _load_git()).default.npmUrlToGitUrl(sshUrl);
 35758        if (yield (_git || _load_git()).default.hasArchiveCapability(sshGitUrl)) {
 35759          const archiveClient = new (_git || _load_git()).default(_this4.config, sshGitUrl, _this4.hash);
 35760          const commit = yield archiveClient.init();
 35761          return _this4.fork((_gitResolver || _load_gitResolver()).default, true, `${sshUrl}#${commit}`);
 35762        }
 35763  
 35764        // fallback to the plain git resolver
 35765        return _this4.fork((_gitResolver || _load_gitResolver()).default, true, sshUrl);
 35766      })();
 35767    }
 35768  }
 35769  exports.default = HostedGitResolver;
 35770  
 35771  /***/ }),
 35772  /* 110 */
 35773  /***/ (function(module, exports, __webpack_require__) {
 35774  
 35775  "use strict";
 35776  
 35777  
 35778  Object.defineProperty(exports, "__esModule", {
 35779    value: true
 35780  });
 35781  
 35782  var _map;
 35783  
 35784  function _load_map() {
 35785    return _map = _interopRequireDefault(__webpack_require__(29));
 35786  }
 35787  
 35788  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 35789  
 35790  const debug = __webpack_require__(263)('yarn');
 35791  
 35792  class BlockingQueue {
 35793    constructor(alias, maxConcurrency = Infinity) {
 35794      this.concurrencyQueue = [];
 35795      this.maxConcurrency = maxConcurrency;
 35796      this.runningCount = 0;
 35797      this.warnedStuck = false;
 35798      this.alias = alias;
 35799      this.first = true;
 35800  
 35801      this.running = (0, (_map || _load_map()).default)();
 35802      this.queue = (0, (_map || _load_map()).default)();
 35803  
 35804      this.stuckTick = this.stuckTick.bind(this);
 35805    }
 35806  
 35807    stillActive() {
 35808      if (this.stuckTimer) {
 35809        clearTimeout(this.stuckTimer);
 35810      }
 35811  
 35812      this.stuckTimer = setTimeout(this.stuckTick, 5000);
 35813  
 35814      // We need to check the existence of unref because of https://github.com/facebook/jest/issues/4559
 35815      // $FlowFixMe: Node's setInterval returns a Timeout, not a Number
 35816      this.stuckTimer.unref && this.stuckTimer.unref();
 35817    }
 35818  
 35819    stuckTick() {
 35820      if (this.runningCount === 1) {
 35821        this.warnedStuck = true;
 35822        debug(`The ${JSON.stringify(this.alias)} blocking queue may be stuck. 5 seconds ` + `without any activity with 1 worker: ${Object.keys(this.running)[0]}`);
 35823      }
 35824    }
 35825  
 35826    push(key, factory) {
 35827      if (this.first) {
 35828        this.first = false;
 35829      } else {
 35830        this.stillActive();
 35831      }
 35832  
 35833      return new Promise((resolve, reject) => {
 35834        // we're already running so push ourselves to the queue
 35835        const queue = this.queue[key] = this.queue[key] || [];
 35836        queue.push({ factory, resolve, reject });
 35837  
 35838        if (!this.running[key]) {
 35839          this.shift(key);
 35840        }
 35841      });
 35842    }
 35843  
 35844    shift(key) {
 35845      if (this.running[key]) {
 35846        delete this.running[key];
 35847        this.runningCount--;
 35848  
 35849        if (this.stuckTimer) {
 35850          clearTimeout(this.stuckTimer);
 35851          this.stuckTimer = null;
 35852        }
 35853  
 35854        if (this.warnedStuck) {
 35855          this.warnedStuck = false;
 35856          debug(`${JSON.stringify(this.alias)} blocking queue finally resolved. Nothing to worry about.`);
 35857        }
 35858      }
 35859  
 35860      const queue = this.queue[key];
 35861      if (!queue) {
 35862        return;
 35863      }
 35864  
 35865      var _queue$shift = queue.shift();
 35866  
 35867      const resolve = _queue$shift.resolve,
 35868            reject = _queue$shift.reject,
 35869            factory = _queue$shift.factory;
 35870  
 35871      if (!queue.length) {
 35872        delete this.queue[key];
 35873      }
 35874  
 35875      const next = () => {
 35876        this.shift(key);
 35877        this.shiftConcurrencyQueue();
 35878      };
 35879  
 35880      const run = () => {
 35881        this.running[key] = true;
 35882        this.runningCount++;
 35883  
 35884        factory().then(function (val) {
 35885          resolve(val);
 35886          next();
 35887          return null;
 35888        }).catch(function (err) {
 35889          reject(err);
 35890          next();
 35891        });
 35892      };
 35893  
 35894      this.maybePushConcurrencyQueue(run);
 35895    }
 35896  
 35897    maybePushConcurrencyQueue(run) {
 35898      if (this.runningCount < this.maxConcurrency) {
 35899        run();
 35900      } else {
 35901        this.concurrencyQueue.push(run);
 35902      }
 35903    }
 35904  
 35905    shiftConcurrencyQueue() {
 35906      if (this.runningCount < this.maxConcurrency) {
 35907        const fn = this.concurrencyQueue.shift();
 35908        if (fn) {
 35909          fn();
 35910        }
 35911      }
 35912    }
 35913  }
 35914  exports.default = BlockingQueue;
 35915  
 35916  /***/ }),
 35917  /* 111 */
 35918  /***/ (function(module, exports, __webpack_require__) {
 35919  
 35920  "use strict";
 35921  
 35922  
 35923  Object.defineProperty(exports, "__esModule", {
 35924    value: true
 35925  });
 35926  exports.execCommand = exports.execFromManifest = exports.executeLifecycleScript = exports.makeEnv = exports.getWrappersFolder = exports.IGNORE_MANIFEST_KEYS = undefined;
 35927  
 35928  var _extends2;
 35929  
 35930  function _load_extends() {
 35931    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 35932  }
 35933  
 35934  var _asyncToGenerator2;
 35935  
 35936  function _load_asyncToGenerator() {
 35937    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 35938  }
 35939  
 35940  let getWrappersFolder = exports.getWrappersFolder = (() => {
 35941    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config) {
 35942      if (wrappersFolder) {
 35943        return wrappersFolder;
 35944      }
 35945  
 35946      wrappersFolder = yield (_fs || _load_fs()).makeTempDir();
 35947  
 35948      yield (0, (_portableScript || _load_portableScript()).makePortableProxyScript)(process.execPath, wrappersFolder, {
 35949        proxyBasename: 'node'
 35950      });
 35951  
 35952      yield (0, (_portableScript || _load_portableScript()).makePortableProxyScript)(process.execPath, wrappersFolder, {
 35953        proxyBasename: 'yarn',
 35954        prependArguments: [process.argv[1]]
 35955      });
 35956  
 35957      return wrappersFolder;
 35958    });
 35959  
 35960    return function getWrappersFolder(_x) {
 35961      return _ref.apply(this, arguments);
 35962    };
 35963  })();
 35964  
 35965  let makeEnv = exports.makeEnv = (() => {
 35966    var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (stage, cwd, config) {
 35967      const env = (0, (_extends2 || _load_extends()).default)({
 35968        NODE: process.execPath,
 35969        INIT_CWD: process.cwd()
 35970      }, process.env);
 35971  
 35972      // Merge in the `env` object specified in .yarnrc
 35973      const customEnv = config.getOption('env');
 35974      if (customEnv && typeof customEnv === 'object') {
 35975        Object.assign(env, customEnv);
 35976      }
 35977  
 35978      env.npm_lifecycle_event = stage;
 35979      env.npm_node_execpath = env.NODE;
 35980      env.npm_execpath = env.npm_execpath || process.mainModule && process.mainModule.filename;
 35981  
 35982      // Set the env to production for npm compat if production mode.
 35983      // https://github.com/npm/npm/blob/30d75e738b9cb7a6a3f9b50e971adcbe63458ed3/lib/utils/lifecycle.js#L336
 35984      if (config.production) {
 35985        env.NODE_ENV = 'production';
 35986      }
 35987  
 35988      // Note: npm_config_argv environment variable contains output of nopt - command-line
 35989      // parser used by npm. Since we use other parser, we just roughly emulate it's output. (See: #684)
 35990      env.npm_config_argv = JSON.stringify({
 35991        remain: [],
 35992        cooked: config.commandName === 'run' ? [config.commandName, stage] : [config.commandName],
 35993        original: process.argv.slice(2)
 35994      });
 35995  
 35996      const manifest = yield config.maybeReadManifest(cwd);
 35997      if (manifest) {
 35998        if (manifest.scripts && Object.prototype.hasOwnProperty.call(manifest.scripts, stage)) {
 35999          env.npm_lifecycle_script = manifest.scripts[stage];
 36000        }
 36001  
 36002        // add npm_package_*
 36003        const queue = [['', manifest]];
 36004        while (queue.length) {
 36005          var _queue$pop = queue.pop();
 36006  
 36007          const key = _queue$pop[0],
 36008                val = _queue$pop[1];
 36009  
 36010          if (typeof val === 'object') {
 36011            for (const subKey in val) {
 36012              const fullKey = [key, subKey].filter(Boolean).join('_');
 36013              if (fullKey && fullKey[0] !== '_' && !IGNORE_MANIFEST_KEYS.has(fullKey)) {
 36014                queue.push([fullKey, val[subKey]]);
 36015              }
 36016            }
 36017          } else {
 36018            let cleanVal = String(val);
 36019            if (cleanVal.indexOf('\n') >= 0) {
 36020              cleanVal = JSON.stringify(cleanVal);
 36021            }
 36022  
 36023            //replacing invalid chars with underscore
 36024            const cleanKey = key.replace(INVALID_CHAR_REGEX, '_');
 36025  
 36026            env[`npm_package_${cleanKey}`] = cleanVal;
 36027          }
 36028        }
 36029      }
 36030  
 36031      // add npm_config_* and npm_package_config_* from yarn config
 36032      const keys = new Set([...Object.keys(config.registries.yarn.config), ...Object.keys(config.registries.npm.config)]);
 36033      const cleaned = Array.from(keys).filter(function (key) {
 36034        return !key.match(/:_/) && IGNORE_CONFIG_KEYS.indexOf(key) === -1;
 36035      }).map(function (key) {
 36036        let val = config.getOption(key);
 36037        if (!val) {
 36038          val = '';
 36039        } else if (typeof val === 'number') {
 36040          val = '' + val;
 36041        } else if (typeof val !== 'string') {
 36042          val = JSON.stringify(val);
 36043        }
 36044  
 36045        if (val.indexOf('\n') >= 0) {
 36046          val = JSON.stringify(val);
 36047        }
 36048        return [key, val];
 36049      });
 36050      // add npm_config_*
 36051      for (var _iterator = cleaned, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 36052        var _ref4;
 36053  
 36054        if (_isArray) {
 36055          if (_i >= _iterator.length) break;
 36056          _ref4 = _iterator[_i++];
 36057        } else {
 36058          _i = _iterator.next();
 36059          if (_i.done) break;
 36060          _ref4 = _i.value;
 36061        }
 36062  
 36063        const _ref3 = _ref4;
 36064        const key = _ref3[0];
 36065        const val = _ref3[1];
 36066  
 36067        const cleanKey = key.replace(/^_+/, '');
 36068        const envKey = `npm_config_${cleanKey}`.replace(INVALID_CHAR_REGEX, '_');
 36069        env[envKey] = val;
 36070      }
 36071      // add npm_package_config_*
 36072      if (manifest && manifest.name) {
 36073        const packageConfigPrefix = `${manifest.name}:`;
 36074        for (var _iterator2 = cleaned, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 36075          var _ref6;
 36076  
 36077          if (_isArray2) {
 36078            if (_i2 >= _iterator2.length) break;
 36079            _ref6 = _iterator2[_i2++];
 36080          } else {
 36081            _i2 = _iterator2.next();
 36082            if (_i2.done) break;
 36083            _ref6 = _i2.value;
 36084          }
 36085  
 36086          const _ref5 = _ref6;
 36087          const key = _ref5[0];
 36088          const val = _ref5[1];
 36089  
 36090          if (key.indexOf(packageConfigPrefix) !== 0) {
 36091            continue;
 36092          }
 36093          const cleanKey = key.replace(/^_+/, '').replace(packageConfigPrefix, '');
 36094          const envKey = `npm_package_config_${cleanKey}`.replace(INVALID_CHAR_REGEX, '_');
 36095          env[envKey] = val;
 36096        }
 36097      }
 36098  
 36099      // split up the path
 36100      const envPath = env[(_constants || _load_constants()).ENV_PATH_KEY];
 36101      const pathParts = envPath ? envPath.split(path.delimiter) : [];
 36102  
 36103      // Include node-gyp version that was bundled with the current Node.js version,
 36104      // if available.
 36105      pathParts.unshift(path.join(path.dirname(process.execPath), 'node_modules', 'npm', 'bin', 'node-gyp-bin'));
 36106      pathParts.unshift(path.join(path.dirname(process.execPath), '..', 'lib', 'node_modules', 'npm', 'bin', 'node-gyp-bin'));
 36107      // Include node-gyp version from homebrew managed npm, if available.
 36108      pathParts.unshift(path.join(path.dirname(process.execPath), '..', 'libexec', 'lib', 'node_modules', 'npm', 'bin', 'node-gyp-bin'));
 36109  
 36110      // Add global bin folder if it is not present already, as some packages depend
 36111      // on a globally-installed version of node-gyp.
 36112      const globalBin = yield (0, (_global || _load_global()).getBinFolder)(config, {});
 36113      if (pathParts.indexOf(globalBin) === -1) {
 36114        pathParts.unshift(globalBin);
 36115      }
 36116  
 36117      // Add node_modules .bin folders to the PATH
 36118      for (var _iterator3 = config.registryFolders, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 36119        var _ref7;
 36120  
 36121        if (_isArray3) {
 36122          if (_i3 >= _iterator3.length) break;
 36123          _ref7 = _iterator3[_i3++];
 36124        } else {
 36125          _i3 = _iterator3.next();
 36126          if (_i3.done) break;
 36127          _ref7 = _i3.value;
 36128        }
 36129  
 36130        const registryFolder = _ref7;
 36131  
 36132        const binFolder = path.join(registryFolder, '.bin');
 36133        if (config.workspacesEnabled && config.workspaceRootFolder) {
 36134          pathParts.unshift(path.join(config.workspaceRootFolder, binFolder));
 36135        }
 36136        pathParts.unshift(path.join(config.linkFolder, binFolder));
 36137        pathParts.unshift(path.join(cwd, binFolder));
 36138      }
 36139  
 36140      let pnpFile;
 36141  
 36142      if (process.versions.pnp) {
 36143        pnpFile = (_dynamicRequire || _load_dynamicRequire()).dynamicRequire.resolve('pnpapi');
 36144      } else {
 36145        const candidate = `${config.lockfileFolder}/${(_constants || _load_constants()).PNP_FILENAME}`;
 36146        if (yield (_fs || _load_fs()).exists(candidate)) {
 36147          pnpFile = candidate;
 36148        }
 36149      }
 36150  
 36151      if (pnpFile) {
 36152        const pnpApi = (0, (_dynamicRequire || _load_dynamicRequire()).dynamicRequire)(pnpFile);
 36153  
 36154        const packageLocator = pnpApi.findPackageLocator(`${cwd}/`);
 36155        const packageInformation = pnpApi.getPackageInformation(packageLocator);
 36156  
 36157        for (var _iterator4 = packageInformation.packageDependencies.entries(), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 36158          var _ref9;
 36159  
 36160          if (_isArray4) {
 36161            if (_i4 >= _iterator4.length) break;
 36162            _ref9 = _iterator4[_i4++];
 36163          } else {
 36164            _i4 = _iterator4.next();
 36165            if (_i4.done) break;
 36166            _ref9 = _i4.value;
 36167          }
 36168  
 36169          const _ref8 = _ref9;
 36170          const name = _ref8[0];
 36171          const reference = _ref8[1];
 36172  
 36173          const dependencyInformation = pnpApi.getPackageInformation({ name, reference });
 36174  
 36175          if (!dependencyInformation || !dependencyInformation.packageLocation) {
 36176            continue;
 36177          }
 36178  
 36179          const binFolder = `${dependencyInformation.packageLocation}/.bin`;
 36180          if (yield (_fs || _load_fs()).exists(binFolder)) {
 36181            pathParts.unshift(binFolder);
 36182          }
 36183        }
 36184  
 36185        // Note that NODE_OPTIONS doesn't support any style of quoting its arguments at the moment
 36186        // For this reason, it won't work if the user has a space inside its $PATH
 36187        env.NODE_OPTIONS = env.NODE_OPTIONS || '';
 36188        env.NODE_OPTIONS = `--require ${pnpFile} ${env.NODE_OPTIONS}`;
 36189      }
 36190  
 36191      pathParts.unshift((yield getWrappersFolder(config)));
 36192  
 36193      // join path back together
 36194      env[(_constants || _load_constants()).ENV_PATH_KEY] = pathParts.join(path.delimiter);
 36195  
 36196      return env;
 36197    });
 36198  
 36199    return function makeEnv(_x2, _x3, _x4) {
 36200      return _ref2.apply(this, arguments);
 36201    };
 36202  })();
 36203  
 36204  let executeLifecycleScript = exports.executeLifecycleScript = (() => {
 36205    var _ref10 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* ({
 36206      stage,
 36207      config,
 36208      cwd,
 36209      cmd,
 36210      isInteractive,
 36211      onProgress,
 36212      customShell
 36213    }) {
 36214      const env = yield makeEnv(stage, cwd, config);
 36215  
 36216      yield checkForGypIfNeeded(config, cmd, env[(_constants || _load_constants()).ENV_PATH_KEY].split(path.delimiter));
 36217  
 36218      if (process.platform === 'win32' && (!customShell || customShell === 'cmd')) {
 36219        // handle windows run scripts starting with a relative path
 36220        cmd = (0, (_fixCmdWinSlashes || _load_fixCmdWinSlashes()).fixCmdWinSlashes)(cmd);
 36221      }
 36222  
 36223      // By default (non-interactive), pipe everything to the terminal and run child process detached
 36224      // as long as it's not Windows (since windows does not have /dev/tty)
 36225      let stdio = ['ignore', 'pipe', 'pipe'];
 36226      let detached = process.platform !== 'win32';
 36227  
 36228      if (isInteractive) {
 36229        stdio = 'inherit';
 36230        detached = false;
 36231      }
 36232  
 36233      const shell = customShell || true;
 36234      const stdout = yield (_child || _load_child()).spawn(cmd, [], { cwd, env, stdio, detached, shell }, onProgress);
 36235  
 36236      return { cwd, command: cmd, stdout };
 36237    });
 36238  
 36239    return function executeLifecycleScript(_x5) {
 36240      return _ref10.apply(this, arguments);
 36241    };
 36242  })();
 36243  
 36244  let _checkForGyp = (() => {
 36245    var _ref11 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, paths) {
 36246      const reporter = config.reporter;
 36247  
 36248      // Check every directory in the PATH
 36249  
 36250      const allChecks = yield Promise.all(paths.map(function (dir) {
 36251        return (_fs || _load_fs()).exists(path.join(dir, 'node-gyp'));
 36252      }));
 36253      if (allChecks.some(Boolean)) {
 36254        // node-gyp is available somewhere
 36255        return;
 36256      }
 36257  
 36258      reporter.info(reporter.lang('packageRequiresNodeGyp'));
 36259  
 36260      try {
 36261        yield (0, (_global || _load_global()).run)(config, reporter, {}, ['add', 'node-gyp']);
 36262      } catch (e) {
 36263        throw new (_errors || _load_errors()).MessageError(reporter.lang('nodeGypAutoInstallFailed', e.message));
 36264      }
 36265    });
 36266  
 36267    return function _checkForGyp(_x6, _x7) {
 36268      return _ref11.apply(this, arguments);
 36269    };
 36270  })();
 36271  
 36272  let execFromManifest = exports.execFromManifest = (() => {
 36273    var _ref12 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, commandName, cwd) {
 36274      const pkg = yield config.maybeReadManifest(cwd);
 36275      if (!pkg || !pkg.scripts) {
 36276        return;
 36277      }
 36278  
 36279      const cmd = pkg.scripts[commandName];
 36280      if (cmd) {
 36281        yield execCommand({ stage: commandName, config, cmd, cwd, isInteractive: true });
 36282      }
 36283    });
 36284  
 36285    return function execFromManifest(_x8, _x9, _x10) {
 36286      return _ref12.apply(this, arguments);
 36287    };
 36288  })();
 36289  
 36290  let execCommand = exports.execCommand = (() => {
 36291    var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* ({
 36292      stage,
 36293      config,
 36294      cmd,
 36295      cwd,
 36296      isInteractive,
 36297      customShell
 36298    }) {
 36299      const reporter = config.reporter;
 36300  
 36301      try {
 36302        reporter.command(cmd);
 36303        yield executeLifecycleScript({ stage, config, cwd, cmd, isInteractive, customShell });
 36304        return Promise.resolve();
 36305      } catch (err) {
 36306        if (err instanceof (_errors || _load_errors()).ProcessTermError) {
 36307          const formattedError = new (_errors || _load_errors()).ProcessTermError(err.EXIT_SIGNAL ? reporter.lang('commandFailedWithSignal', err.EXIT_SIGNAL) : reporter.lang('commandFailedWithCode', err.EXIT_CODE));
 36308          formattedError.EXIT_CODE = err.EXIT_CODE;
 36309          formattedError.EXIT_SIGNAL = err.EXIT_SIGNAL;
 36310          throw formattedError;
 36311        } else {
 36312          throw err;
 36313        }
 36314      }
 36315    });
 36316  
 36317    return function execCommand(_x11) {
 36318      return _ref13.apply(this, arguments);
 36319    };
 36320  })();
 36321  
 36322  var _errors;
 36323  
 36324  function _load_errors() {
 36325    return _errors = __webpack_require__(6);
 36326  }
 36327  
 36328  var _constants;
 36329  
 36330  function _load_constants() {
 36331    return _constants = _interopRequireWildcard(__webpack_require__(8));
 36332  }
 36333  
 36334  var _child;
 36335  
 36336  function _load_child() {
 36337    return _child = _interopRequireWildcard(__webpack_require__(50));
 36338  }
 36339  
 36340  var _fs;
 36341  
 36342  function _load_fs() {
 36343    return _fs = _interopRequireWildcard(__webpack_require__(5));
 36344  }
 36345  
 36346  var _dynamicRequire;
 36347  
 36348  function _load_dynamicRequire() {
 36349    return _dynamicRequire = __webpack_require__(365);
 36350  }
 36351  
 36352  var _portableScript;
 36353  
 36354  function _load_portableScript() {
 36355    return _portableScript = __webpack_require__(557);
 36356  }
 36357  
 36358  var _fixCmdWinSlashes;
 36359  
 36360  function _load_fixCmdWinSlashes() {
 36361    return _fixCmdWinSlashes = __webpack_require__(546);
 36362  }
 36363  
 36364  var _global;
 36365  
 36366  function _load_global() {
 36367    return _global = __webpack_require__(121);
 36368  }
 36369  
 36370  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 36371  
 36372  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 36373  
 36374  const path = __webpack_require__(0);
 36375  
 36376  const IGNORE_MANIFEST_KEYS = exports.IGNORE_MANIFEST_KEYS = new Set(['readme', 'notice', 'licenseText', 'activationEvents', 'contributes']);
 36377  
 36378  // We treat these configs as internal, thus not expose them to process.env.
 36379  // This helps us avoid some gyp issues when building native modules.
 36380  // See https://github.com/yarnpkg/yarn/issues/2286.
 36381  const IGNORE_CONFIG_KEYS = ['lastUpdateCheck'];
 36382  
 36383  let wrappersFolder = null;
 36384  
 36385  const INVALID_CHAR_REGEX = /\W/g;
 36386  
 36387  exports.default = executeLifecycleScript;
 36388  
 36389  
 36390  let checkGypPromise = null;
 36391  /**
 36392   * Special case: Some packages depend on node-gyp, but don't specify this in
 36393   * their package.json dependencies. They assume that node-gyp is available
 36394   * globally. We need to detect this case and show an error message.
 36395   */
 36396  function checkForGypIfNeeded(config, cmd, paths) {
 36397    if (cmd.substr(0, cmd.indexOf(' ')) !== 'node-gyp') {
 36398      return Promise.resolve();
 36399    }
 36400  
 36401    // Ensure this only runs once, rather than multiple times in parallel.
 36402    if (!checkGypPromise) {
 36403      checkGypPromise = _checkForGyp(config, paths);
 36404    }
 36405    return checkGypPromise;
 36406  }
 36407  
 36408  /***/ }),
 36409  /* 112 */
 36410  /***/ (function(module, exports) {
 36411  
 36412  module.exports = function (exec) {
 36413    try {
 36414      return !!exec();
 36415    } catch (e) {
 36416      return true;
 36417    }
 36418  };
 36419  
 36420  
 36421  /***/ }),
 36422  /* 113 */
 36423  /***/ (function(module, exports) {
 36424  
 36425  // Copyright Joyent, Inc. and other Node contributors.
 36426  //
 36427  // Permission is hereby granted, free of charge, to any person obtaining a
 36428  // copy of this software and associated documentation files (the
 36429  // "Software"), to deal in the Software without restriction, including
 36430  // without limitation the rights to use, copy, modify, merge, publish,
 36431  // distribute, sublicense, and/or sell copies of the Software, and to permit
 36432  // persons to whom the Software is furnished to do so, subject to the
 36433  // following conditions:
 36434  //
 36435  // The above copyright notice and this permission notice shall be included
 36436  // in all copies or substantial portions of the Software.
 36437  //
 36438  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 36439  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 36440  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 36441  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 36442  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 36443  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 36444  // USE OR OTHER DEALINGS IN THE SOFTWARE.
 36445  
 36446  // NOTE: These type checking functions intentionally don't use `instanceof`
 36447  // because it is fragile and can be easily faked with `Object.create()`.
 36448  
 36449  function isArray(arg) {
 36450    if (Array.isArray) {
 36451      return Array.isArray(arg);
 36452    }
 36453    return objectToString(arg) === '[object Array]';
 36454  }
 36455  exports.isArray = isArray;
 36456  
 36457  function isBoolean(arg) {
 36458    return typeof arg === 'boolean';
 36459  }
 36460  exports.isBoolean = isBoolean;
 36461  
 36462  function isNull(arg) {
 36463    return arg === null;
 36464  }
 36465  exports.isNull = isNull;
 36466  
 36467  function isNullOrUndefined(arg) {
 36468    return arg == null;
 36469  }
 36470  exports.isNullOrUndefined = isNullOrUndefined;
 36471  
 36472  function isNumber(arg) {
 36473    return typeof arg === 'number';
 36474  }
 36475  exports.isNumber = isNumber;
 36476  
 36477  function isString(arg) {
 36478    return typeof arg === 'string';
 36479  }
 36480  exports.isString = isString;
 36481  
 36482  function isSymbol(arg) {
 36483    return typeof arg === 'symbol';
 36484  }
 36485  exports.isSymbol = isSymbol;
 36486  
 36487  function isUndefined(arg) {
 36488    return arg === void 0;
 36489  }
 36490  exports.isUndefined = isUndefined;
 36491  
 36492  function isRegExp(re) {
 36493    return objectToString(re) === '[object RegExp]';
 36494  }
 36495  exports.isRegExp = isRegExp;
 36496  
 36497  function isObject(arg) {
 36498    return typeof arg === 'object' && arg !== null;
 36499  }
 36500  exports.isObject = isObject;
 36501  
 36502  function isDate(d) {
 36503    return objectToString(d) === '[object Date]';
 36504  }
 36505  exports.isDate = isDate;
 36506  
 36507  function isError(e) {
 36508    return (objectToString(e) === '[object Error]' || e instanceof Error);
 36509  }
 36510  exports.isError = isError;
 36511  
 36512  function isFunction(arg) {
 36513    return typeof arg === 'function';
 36514  }
 36515  exports.isFunction = isFunction;
 36516  
 36517  function isPrimitive(arg) {
 36518    return arg === null ||
 36519           typeof arg === 'boolean' ||
 36520           typeof arg === 'number' ||
 36521           typeof arg === 'string' ||
 36522           typeof arg === 'symbol' ||  // ES6 symbol
 36523           typeof arg === 'undefined';
 36524  }
 36525  exports.isPrimitive = isPrimitive;
 36526  
 36527  exports.isBuffer = Buffer.isBuffer;
 36528  
 36529  function objectToString(o) {
 36530    return Object.prototype.toString.call(o);
 36531  }
 36532  
 36533  
 36534  /***/ }),
 36535  /* 114 */
 36536  /***/ (function(module, exports, __webpack_require__) {
 36537  
 36538  "use strict";
 36539  
 36540  
 36541  
 36542  module.exports = {
 36543    copy: copy,
 36544    checkDataType: checkDataType,
 36545    checkDataTypes: checkDataTypes,
 36546    coerceToTypes: coerceToTypes,
 36547    toHash: toHash,
 36548    getProperty: getProperty,
 36549    escapeQuotes: escapeQuotes,
 36550    equal: __webpack_require__(272),
 36551    ucs2length: __webpack_require__(654),
 36552    varOccurences: varOccurences,
 36553    varReplace: varReplace,
 36554    cleanUpCode: cleanUpCode,
 36555    finalCleanUpCode: finalCleanUpCode,
 36556    schemaHasRules: schemaHasRules,
 36557    schemaHasRulesExcept: schemaHasRulesExcept,
 36558    toQuotedString: toQuotedString,
 36559    getPathExpr: getPathExpr,
 36560    getPath: getPath,
 36561    getData: getData,
 36562    unescapeFragment: unescapeFragment,
 36563    unescapeJsonPointer: unescapeJsonPointer,
 36564    escapeFragment: escapeFragment,
 36565    escapeJsonPointer: escapeJsonPointer
 36566  };
 36567  
 36568  
 36569  function copy(o, to) {
 36570    to = to || {};
 36571    for (var key in o) to[key] = o[key];
 36572    return to;
 36573  }
 36574  
 36575  
 36576  function checkDataType(dataType, data, negate) {
 36577    var EQUAL = negate ? ' !== ' : ' === '
 36578      , AND = negate ? ' || ' : ' && '
 36579      , OK = negate ? '!' : ''
 36580      , NOT = negate ? '' : '!';
 36581    switch (dataType) {
 36582      case 'null': return data + EQUAL + 'null';
 36583      case 'array': return OK + 'Array.isArray(' + data + ')';
 36584      case 'object': return '(' + OK + data + AND +
 36585                            'typeof ' + data + EQUAL + '"object"' + AND +
 36586                            NOT + 'Array.isArray(' + data + '))';
 36587      case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND +
 36588                             NOT + '(' + data + ' % 1)' +
 36589                             AND + data + EQUAL + data + ')';
 36590      default: return 'typeof ' + data + EQUAL + '"' + dataType + '"';
 36591    }
 36592  }
 36593  
 36594  
 36595  function checkDataTypes(dataTypes, data) {
 36596    switch (dataTypes.length) {
 36597      case 1: return checkDataType(dataTypes[0], data, true);
 36598      default:
 36599        var code = '';
 36600        var types = toHash(dataTypes);
 36601        if (types.array && types.object) {
 36602          code = types.null ? '(': '(!' + data + ' || ';
 36603          code += 'typeof ' + data + ' !== "object")';
 36604          delete types.null;
 36605          delete types.array;
 36606          delete types.object;
 36607        }
 36608        if (types.number) delete types.integer;
 36609        for (var t in types)
 36610          code += (code ? ' && ' : '' ) + checkDataType(t, data, true);
 36611  
 36612        return code;
 36613    }
 36614  }
 36615  
 36616  
 36617  var COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]);
 36618  function coerceToTypes(optionCoerceTypes, dataTypes) {
 36619    if (Array.isArray(dataTypes)) {
 36620      var types = [];
 36621      for (var i=0; i<dataTypes.length; i++) {
 36622        var t = dataTypes[i];
 36623        if (COERCE_TO_TYPES[t]) types[types.length] = t;
 36624        else if (optionCoerceTypes === 'array' && t === 'array') types[types.length] = t;
 36625      }
 36626      if (types.length) return types;
 36627    } else if (COERCE_TO_TYPES[dataTypes]) {
 36628      return [dataTypes];
 36629    } else if (optionCoerceTypes === 'array' && dataTypes === 'array') {
 36630      return ['array'];
 36631    }
 36632  }
 36633  
 36634  
 36635  function toHash(arr) {
 36636    var hash = {};
 36637    for (var i=0; i<arr.length; i++) hash[arr[i]] = true;
 36638    return hash;
 36639  }
 36640  
 36641  
 36642  var IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;
 36643  var SINGLE_QUOTE = /'|\\/g;
 36644  function getProperty(key) {
 36645    return typeof key == 'number'
 36646            ? '[' + key + ']'
 36647            : IDENTIFIER.test(key)
 36648              ? '.' + key
 36649              : "['" + escapeQuotes(key) + "']";
 36650  }
 36651  
 36652  
 36653  function escapeQuotes(str) {
 36654    return str.replace(SINGLE_QUOTE, '\\$&')
 36655              .replace(/\n/g, '\\n')
 36656              .replace(/\r/g, '\\r')
 36657              .replace(/\f/g, '\\f')
 36658              .replace(/\t/g, '\\t');
 36659  }
 36660  
 36661  
 36662  function varOccurences(str, dataVar) {
 36663    dataVar += '[^0-9]';
 36664    var matches = str.match(new RegExp(dataVar, 'g'));
 36665    return matches ? matches.length : 0;
 36666  }
 36667  
 36668  
 36669  function varReplace(str, dataVar, expr) {
 36670    dataVar += '([^0-9])';
 36671    expr = expr.replace(/\$/g, '$$$$');
 36672    return str.replace(new RegExp(dataVar, 'g'), expr + '$1');
 36673  }
 36674  
 36675  
 36676  var EMPTY_ELSE = /else\s*{\s*}/g
 36677    , EMPTY_IF_NO_ELSE = /if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g
 36678    , EMPTY_IF_WITH_ELSE = /if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g;
 36679  function cleanUpCode(out) {
 36680    return out.replace(EMPTY_ELSE, '')
 36681              .replace(EMPTY_IF_NO_ELSE, '')
 36682              .replace(EMPTY_IF_WITH_ELSE, 'if (!($1))');
 36683  }
 36684  
 36685  
 36686  var ERRORS_REGEXP = /[^v.]errors/g
 36687    , REMOVE_ERRORS = /var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g
 36688    , REMOVE_ERRORS_ASYNC = /var errors = 0;|var vErrors = null;/g
 36689    , RETURN_VALID = 'return errors === 0;'
 36690    , RETURN_TRUE = 'validate.errors = null; return true;'
 36691    , RETURN_ASYNC = /if \(errors === 0\) return data;\s*else throw new ValidationError\(vErrors\);/
 36692    , RETURN_DATA_ASYNC = 'return data;'
 36693    , ROOTDATA_REGEXP = /[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g
 36694    , REMOVE_ROOTDATA = /if \(rootData === undefined\) rootData = data;/;
 36695  
 36696  function finalCleanUpCode(out, async) {
 36697    var matches = out.match(ERRORS_REGEXP);
 36698    if (matches && matches.length == 2) {
 36699      out = async
 36700            ? out.replace(REMOVE_ERRORS_ASYNC, '')
 36701                 .replace(RETURN_ASYNC, RETURN_DATA_ASYNC)
 36702            : out.replace(REMOVE_ERRORS, '')
 36703                 .replace(RETURN_VALID, RETURN_TRUE);
 36704    }
 36705  
 36706    matches = out.match(ROOTDATA_REGEXP);
 36707    if (!matches || matches.length !== 3) return out;
 36708    return out.replace(REMOVE_ROOTDATA, '');
 36709  }
 36710  
 36711  
 36712  function schemaHasRules(schema, rules) {
 36713    if (typeof schema == 'boolean') return !schema;
 36714    for (var key in schema) if (rules[key]) return true;
 36715  }
 36716  
 36717  
 36718  function schemaHasRulesExcept(schema, rules, exceptKeyword) {
 36719    if (typeof schema == 'boolean') return !schema && exceptKeyword != 'not';
 36720    for (var key in schema) if (key != exceptKeyword && rules[key]) return true;
 36721  }
 36722  
 36723  
 36724  function toQuotedString(str) {
 36725    return '\'' + escapeQuotes(str) + '\'';
 36726  }
 36727  
 36728  
 36729  function getPathExpr(currentPath, expr, jsonPointers, isNumber) {
 36730    var path = jsonPointers // false by default
 36731                ? '\'/\' + ' + expr + (isNumber ? '' : '.replace(/~/g, \'~0\').replace(/\\//g, \'~1\')')
 36732                : (isNumber ? '\'[\' + ' + expr + ' + \']\'' : '\'[\\\'\' + ' + expr + ' + \'\\\']\'');
 36733    return joinPaths(currentPath, path);
 36734  }
 36735  
 36736  
 36737  function getPath(currentPath, prop, jsonPointers) {
 36738    var path = jsonPointers // false by default
 36739                ? toQuotedString('/' + escapeJsonPointer(prop))
 36740                : toQuotedString(getProperty(prop));
 36741    return joinPaths(currentPath, path);
 36742  }
 36743  
 36744  
 36745  var JSON_POINTER = /^\/(?:[^~]|~0|~1)*$/;
 36746  var RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;
 36747  function getData($data, lvl, paths) {
 36748    var up, jsonPointer, data, matches;
 36749    if ($data === '') return 'rootData';
 36750    if ($data[0] == '/') {
 36751      if (!JSON_POINTER.test($data)) throw new Error('Invalid JSON-pointer: ' + $data);
 36752      jsonPointer = $data;
 36753      data = 'rootData';
 36754    } else {
 36755      matches = $data.match(RELATIVE_JSON_POINTER);
 36756      if (!matches) throw new Error('Invalid JSON-pointer: ' + $data);
 36757      up = +matches[1];
 36758      jsonPointer = matches[2];
 36759      if (jsonPointer == '#') {
 36760        if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);
 36761        return paths[lvl - up];
 36762      }
 36763  
 36764      if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);
 36765      data = 'data' + ((lvl - up) || '');
 36766      if (!jsonPointer) return data;
 36767    }
 36768  
 36769    var expr = data;
 36770    var segments = jsonPointer.split('/');
 36771    for (var i=0; i<segments.length; i++) {
 36772      var segment = segments[i];
 36773      if (segment) {
 36774        data += getProperty(unescapeJsonPointer(segment));
 36775        expr += ' && ' + data;
 36776      }
 36777    }
 36778    return expr;
 36779  }
 36780  
 36781  
 36782  function joinPaths (a, b) {
 36783    if (a == '""') return b;
 36784    return (a + ' + ' + b).replace(/' \+ '/g, '');
 36785  }
 36786  
 36787  
 36788  function unescapeFragment(str) {
 36789    return unescapeJsonPointer(decodeURIComponent(str));
 36790  }
 36791  
 36792  
 36793  function escapeFragment(str) {
 36794    return encodeURIComponent(escapeJsonPointer(str));
 36795  }
 36796  
 36797  
 36798  function escapeJsonPointer(str) {
 36799    return str.replace(/~/g, '~0').replace(/\//g, '~1');
 36800  }
 36801  
 36802  
 36803  function unescapeJsonPointer(str) {
 36804    return str.replace(/~1/g, '/').replace(/~0/g, '~');
 36805  }
 36806  
 36807  
 36808  /***/ }),
 36809  /* 115 */
 36810  /***/ (function(module, exports, __webpack_require__) {
 36811  
 36812  "use strict";
 36813  /*!
 36814   * micromatch <https://github.com/jonschlinkert/micromatch>
 36815   *
 36816   * Copyright (c) 2014-2015, Jon Schlinkert.
 36817   * Licensed under the MIT License.
 36818   */
 36819  
 36820  
 36821  
 36822  var expand = __webpack_require__(753);
 36823  var utils = __webpack_require__(300);
 36824  
 36825  /**
 36826   * The main function. Pass an array of filepaths,
 36827   * and a string or array of glob patterns
 36828   *
 36829   * @param  {Array|String} `files`
 36830   * @param  {Array|String} `patterns`
 36831   * @param  {Object} `opts`
 36832   * @return {Array} Array of matches
 36833   */
 36834  
 36835  function micromatch(files, patterns, opts) {
 36836    if (!files || !patterns) return [];
 36837    opts = opts || {};
 36838  
 36839    if (typeof opts.cache === 'undefined') {
 36840      opts.cache = true;
 36841    }
 36842  
 36843    if (!Array.isArray(patterns)) {
 36844      return match(files, patterns, opts);
 36845    }
 36846  
 36847    var len = patterns.length, i = 0;
 36848    var omit = [], keep = [];
 36849  
 36850    while (len--) {
 36851      var glob = patterns[i++];
 36852      if (typeof glob === 'string' && glob.charCodeAt(0) === 33 /* ! */) {
 36853        omit.push.apply(omit, match(files, glob.slice(1), opts));
 36854      } else {
 36855        keep.push.apply(keep, match(files, glob, opts));
 36856      }
 36857    }
 36858    return utils.diff(keep, omit);
 36859  }
 36860  
 36861  /**
 36862   * Return an array of files that match the given glob pattern.
 36863   *
 36864   * This function is called by the main `micromatch` function If you only
 36865   * need to pass a single pattern you might get very minor speed improvements
 36866   * using this function.
 36867   *
 36868   * @param  {Array} `files`
 36869   * @param  {String} `pattern`
 36870   * @param  {Object} `options`
 36871   * @return {Array}
 36872   */
 36873  
 36874  function match(files, pattern, opts) {
 36875    if (utils.typeOf(files) !== 'string' && !Array.isArray(files)) {
 36876      throw new Error(msg('match', 'files', 'a string or array'));
 36877    }
 36878  
 36879    files = utils.arrayify(files);
 36880    opts = opts || {};
 36881  
 36882    var negate = opts.negate || false;
 36883    var orig = pattern;
 36884  
 36885    if (typeof pattern === 'string') {
 36886      negate = pattern.charAt(0) === '!';
 36887      if (negate) {
 36888        pattern = pattern.slice(1);
 36889      }
 36890  
 36891      // we need to remove the character regardless,
 36892      // so the above logic is still needed
 36893      if (opts.nonegate === true) {
 36894        negate = false;
 36895      }
 36896    }
 36897  
 36898    var _isMatch = matcher(pattern, opts);
 36899    var len = files.length, i = 0;
 36900    var res = [];
 36901  
 36902    while (i < len) {
 36903      var file = files[i++];
 36904      var fp = utils.unixify(file, opts);
 36905  
 36906      if (!_isMatch(fp)) { continue; }
 36907      res.push(fp);
 36908    }
 36909  
 36910    if (res.length === 0) {
 36911      if (opts.failglob === true) {
 36912        throw new Error('micromatch.match() found no matches for: "' + orig + '".');
 36913      }
 36914  
 36915      if (opts.nonull || opts.nullglob) {
 36916        res.push(utils.unescapeGlob(orig));
 36917      }
 36918    }
 36919  
 36920    // if `negate` was defined, diff negated files
 36921    if (negate) { res = utils.diff(files, res); }
 36922  
 36923    // if `ignore` was defined, diff ignored filed
 36924    if (opts.ignore && opts.ignore.length) {
 36925      pattern = opts.ignore;
 36926      opts = utils.omit(opts, ['ignore']);
 36927      res = utils.diff(res, micromatch(res, pattern, opts));
 36928    }
 36929  
 36930    if (opts.nodupes) {
 36931      return utils.unique(res);
 36932    }
 36933    return res;
 36934  }
 36935  
 36936  /**
 36937   * Returns a function that takes a glob pattern or array of glob patterns
 36938   * to be used with `Array#filter()`. (Internally this function generates
 36939   * the matching function using the [matcher] method).
 36940   *
 36941   * ```js
 36942   * var fn = mm.filter('[a-c]');
 36943   * ['a', 'b', 'c', 'd', 'e'].filter(fn);
 36944   * //=> ['a', 'b', 'c']
 36945   * ```
 36946   * @param  {String|Array} `patterns` Can be a glob or array of globs.
 36947   * @param  {Options} `opts` Options to pass to the [matcher] method.
 36948   * @return {Function} Filter function to be passed to `Array#filter()`.
 36949   */
 36950  
 36951  function filter(patterns, opts) {
 36952    if (!Array.isArray(patterns) && typeof patterns !== 'string') {
 36953      throw new TypeError(msg('filter', 'patterns', 'a string or array'));
 36954    }
 36955  
 36956    patterns = utils.arrayify(patterns);
 36957    var len = patterns.length, i = 0;
 36958    var patternMatchers = Array(len);
 36959    while (i < len) {
 36960      patternMatchers[i] = matcher(patterns[i++], opts);
 36961    }
 36962  
 36963    return function(fp) {
 36964      if (fp == null) return [];
 36965      var len = patternMatchers.length, i = 0;
 36966      var res = true;
 36967  
 36968      fp = utils.unixify(fp, opts);
 36969      while (i < len) {
 36970        var fn = patternMatchers[i++];
 36971        if (!fn(fp)) {
 36972          res = false;
 36973          break;
 36974        }
 36975      }
 36976      return res;
 36977    };
 36978  }
 36979  
 36980  /**
 36981   * Returns true if the filepath contains the given
 36982   * pattern. Can also return a function for matching.
 36983   *
 36984   * ```js
 36985   * isMatch('foo.md', '*.md', {});
 36986   * //=> true
 36987   *
 36988   * isMatch('*.md', {})('foo.md')
 36989   * //=> true
 36990   * ```
 36991   * @param  {String} `fp`
 36992   * @param  {String} `pattern`
 36993   * @param  {Object} `opts`
 36994   * @return {Boolean}
 36995   */
 36996  
 36997  function isMatch(fp, pattern, opts) {
 36998    if (typeof fp !== 'string') {
 36999      throw new TypeError(msg('isMatch', 'filepath', 'a string'));
 37000    }
 37001  
 37002    fp = utils.unixify(fp, opts);
 37003    if (utils.typeOf(pattern) === 'object') {
 37004      return matcher(fp, pattern);
 37005    }
 37006    return matcher(pattern, opts)(fp);
 37007  }
 37008  
 37009  /**
 37010   * Returns true if the filepath matches the
 37011   * given pattern.
 37012   */
 37013  
 37014  function contains(fp, pattern, opts) {
 37015    if (typeof fp !== 'string') {
 37016      throw new TypeError(msg('contains', 'pattern', 'a string'));
 37017    }
 37018  
 37019    opts = opts || {};
 37020    opts.contains = (pattern !== '');
 37021    fp = utils.unixify(fp, opts);
 37022  
 37023    if (opts.contains && !utils.isGlob(pattern)) {
 37024      return fp.indexOf(pattern) !== -1;
 37025    }
 37026    return matcher(pattern, opts)(fp);
 37027  }
 37028  
 37029  /**
 37030   * Returns true if a file path matches any of the
 37031   * given patterns.
 37032   *
 37033   * @param  {String} `fp` The filepath to test.
 37034   * @param  {String|Array} `patterns` Glob patterns to use.
 37035   * @param  {Object} `opts` Options to pass to the `matcher()` function.
 37036   * @return {String}
 37037   */
 37038  
 37039  function any(fp, patterns, opts) {
 37040    if (!Array.isArray(patterns) && typeof patterns !== 'string') {
 37041      throw new TypeError(msg('any', 'patterns', 'a string or array'));
 37042    }
 37043  
 37044    patterns = utils.arrayify(patterns);
 37045    var len = patterns.length;
 37046  
 37047    fp = utils.unixify(fp, opts);
 37048    while (len--) {
 37049      var isMatch = matcher(patterns[len], opts);
 37050      if (isMatch(fp)) {
 37051        return true;
 37052      }
 37053    }
 37054    return false;
 37055  }
 37056  
 37057  /**
 37058   * Filter the keys of an object with the given `glob` pattern
 37059   * and `options`
 37060   *
 37061   * @param  {Object} `object`
 37062   * @param  {Pattern} `object`
 37063   * @return {Array}
 37064   */
 37065  
 37066  function matchKeys(obj, glob, options) {
 37067    if (utils.typeOf(obj) !== 'object') {
 37068      throw new TypeError(msg('matchKeys', 'first argument', 'an object'));
 37069    }
 37070  
 37071    var fn = matcher(glob, options);
 37072    var res = {};
 37073  
 37074    for (var key in obj) {
 37075      if (obj.hasOwnProperty(key) && fn(key)) {
 37076        res[key] = obj[key];
 37077      }
 37078    }
 37079    return res;
 37080  }
 37081  
 37082  /**
 37083   * Return a function for matching based on the
 37084   * given `pattern` and `options`.
 37085   *
 37086   * @param  {String} `pattern`
 37087   * @param  {Object} `options`
 37088   * @return {Function}
 37089   */
 37090  
 37091  function matcher(pattern, opts) {
 37092    // pattern is a function
 37093    if (typeof pattern === 'function') {
 37094      return pattern;
 37095    }
 37096    // pattern is a regex
 37097    if (pattern instanceof RegExp) {
 37098      return function(fp) {
 37099        return pattern.test(fp);
 37100      };
 37101    }
 37102  
 37103    if (typeof pattern !== 'string') {
 37104      throw new TypeError(msg('matcher', 'pattern', 'a string, regex, or function'));
 37105    }
 37106  
 37107    // strings, all the way down...
 37108    pattern = utils.unixify(pattern, opts);
 37109  
 37110    // pattern is a non-glob string
 37111    if (!utils.isGlob(pattern)) {
 37112      return utils.matchPath(pattern, opts);
 37113    }
 37114    // pattern is a glob string
 37115    var re = makeRe(pattern, opts);
 37116  
 37117    // `matchBase` is defined
 37118    if (opts && opts.matchBase) {
 37119      return utils.hasFilename(re, opts);
 37120    }
 37121    // `matchBase` is not defined
 37122    return function(fp) {
 37123      fp = utils.unixify(fp, opts);
 37124      return re.test(fp);
 37125    };
 37126  }
 37127  
 37128  /**
 37129   * Create and cache a regular expression for matching
 37130   * file paths.
 37131   *
 37132   * If the leading character in the `glob` is `!`, a negation
 37133   * regex is returned.
 37134   *
 37135   * @param  {String} `glob`
 37136   * @param  {Object} `options`
 37137   * @return {RegExp}
 37138   */
 37139  
 37140  function toRegex(glob, options) {
 37141    // clone options to prevent  mutating the original object
 37142    var opts = Object.create(options || {});
 37143    var flags = opts.flags || '';
 37144    if (opts.nocase && flags.indexOf('i') === -1) {
 37145      flags += 'i';
 37146    }
 37147  
 37148    var parsed = expand(glob, opts);
 37149  
 37150    // pass in tokens to avoid parsing more than once
 37151    opts.negated = opts.negated || parsed.negated;
 37152    opts.negate = opts.negated;
 37153    glob = wrapGlob(parsed.pattern, opts);
 37154    var re;
 37155  
 37156    try {
 37157      re = new RegExp(glob, flags);
 37158      return re;
 37159    } catch (err) {
 37160      err.reason = 'micromatch invalid regex: (' + re + ')';
 37161      if (opts.strict) throw new SyntaxError(err);
 37162    }
 37163  
 37164    // we're only here if a bad pattern was used and the user
 37165    // passed `options.silent`, so match nothing
 37166    return /$^/;
 37167  }
 37168  
 37169  /**
 37170   * Create the regex to do the matching. If the leading
 37171   * character in the `glob` is `!` a negation regex is returned.
 37172   *
 37173   * @param {String} `glob`
 37174   * @param {Boolean} `negate`
 37175   */
 37176  
 37177  function wrapGlob(glob, opts) {
 37178    var prefix = (opts && !opts.contains) ? '^' : '';
 37179    var after = (opts && !opts.contains) ? '$' : '';
 37180    glob = ('(?:' + glob + ')' + after);
 37181    if (opts && opts.negate) {
 37182      return prefix + ('(?!^' + glob + ').*$');
 37183    }
 37184    return prefix + glob;
 37185  }
 37186  
 37187  /**
 37188   * Create and cache a regular expression for matching file paths.
 37189   * If the leading character in the `glob` is `!`, a negation
 37190   * regex is returned.
 37191   *
 37192   * @param  {String} `glob`
 37193   * @param  {Object} `options`
 37194   * @return {RegExp}
 37195   */
 37196  
 37197  function makeRe(glob, opts) {
 37198    if (utils.typeOf(glob) !== 'string') {
 37199      throw new Error(msg('makeRe', 'glob', 'a string'));
 37200    }
 37201    return utils.cache(toRegex, glob, opts);
 37202  }
 37203  
 37204  /**
 37205   * Make error messages consistent. Follows this format:
 37206   *
 37207   * ```js
 37208   * msg(methodName, argNumber, nativeType);
 37209   * // example:
 37210   * msg('matchKeys', 'first', 'an object');
 37211   * ```
 37212   *
 37213   * @param  {String} `method`
 37214   * @param  {String} `num`
 37215   * @param  {String} `type`
 37216   * @return {String}
 37217   */
 37218  
 37219  function msg(method, what, type) {
 37220    return 'micromatch.' + method + '(): ' + what + ' should be ' + type + '.';
 37221  }
 37222  
 37223  /**
 37224   * Public methods
 37225   */
 37226  
 37227  /* eslint no-multi-spaces: 0 */
 37228  micromatch.any       = any;
 37229  micromatch.braces    = micromatch.braceExpand = utils.braces;
 37230  micromatch.contains  = contains;
 37231  micromatch.expand    = expand;
 37232  micromatch.filter    = filter;
 37233  micromatch.isMatch   = isMatch;
 37234  micromatch.makeRe    = makeRe;
 37235  micromatch.match     = match;
 37236  micromatch.matcher   = matcher;
 37237  micromatch.matchKeys = matchKeys;
 37238  
 37239  /**
 37240   * Expose `micromatch`
 37241   */
 37242  
 37243  module.exports = micromatch;
 37244  
 37245  
 37246  /***/ }),
 37247  /* 116 */
 37248  /***/ (function(module, exports, __webpack_require__) {
 37249  
 37250  "use strict";
 37251  // Copyright Joyent, Inc. and other Node contributors.
 37252  //
 37253  // Permission is hereby granted, free of charge, to any person obtaining a
 37254  // copy of this software and associated documentation files (the
 37255  // "Software"), to deal in the Software without restriction, including
 37256  // without limitation the rights to use, copy, modify, merge, publish,
 37257  // distribute, sublicense, and/or sell copies of the Software, and to permit
 37258  // persons to whom the Software is furnished to do so, subject to the
 37259  // following conditions:
 37260  //
 37261  // The above copyright notice and this permission notice shall be included
 37262  // in all copies or substantial portions of the Software.
 37263  //
 37264  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 37265  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 37266  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 37267  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 37268  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 37269  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 37270  // USE OR OTHER DEALINGS IN THE SOFTWARE.
 37271  
 37272  // a duplex stream is just a stream that is both readable and writable.
 37273  // Since JS doesn't have multiple prototypal inheritance, this class
 37274  // prototypally inherits from Readable, and then parasitically from
 37275  // Writable.
 37276  
 37277  
 37278  
 37279  /*<replacement>*/
 37280  
 37281  var pna = __webpack_require__(181);
 37282  /*</replacement>*/
 37283  
 37284  /*<replacement>*/
 37285  var objectKeys = Object.keys || function (obj) {
 37286    var keys = [];
 37287    for (var key in obj) {
 37288      keys.push(key);
 37289    }return keys;
 37290  };
 37291  /*</replacement>*/
 37292  
 37293  module.exports = Duplex;
 37294  
 37295  /*<replacement>*/
 37296  var util = __webpack_require__(113);
 37297  util.inherits = __webpack_require__(61);
 37298  /*</replacement>*/
 37299  
 37300  var Readable = __webpack_require__(406);
 37301  var Writable = __webpack_require__(408);
 37302  
 37303  util.inherits(Duplex, Readable);
 37304  
 37305  {
 37306    // avoid scope creep, the keys array can then be collected
 37307    var keys = objectKeys(Writable.prototype);
 37308    for (var v = 0; v < keys.length; v++) {
 37309      var method = keys[v];
 37310      if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
 37311    }
 37312  }
 37313  
 37314  function Duplex(options) {
 37315    if (!(this instanceof Duplex)) return new Duplex(options);
 37316  
 37317    Readable.call(this, options);
 37318    Writable.call(this, options);
 37319  
 37320    if (options && options.readable === false) this.readable = false;
 37321  
 37322    if (options && options.writable === false) this.writable = false;
 37323  
 37324    this.allowHalfOpen = true;
 37325    if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
 37326  
 37327    this.once('end', onend);
 37328  }
 37329  
 37330  Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', {
 37331    // making it explicit this property is not enumerable
 37332    // because otherwise some prototype manipulation in
 37333    // userland will fail
 37334    enumerable: false,
 37335    get: function () {
 37336      return this._writableState.highWaterMark;
 37337    }
 37338  });
 37339  
 37340  // the no-half-open enforcer
 37341  function onend() {
 37342    // if we allow half-open state, or if the writable side ended,
 37343    // then we're ok.
 37344    if (this.allowHalfOpen || this._writableState.ended) return;
 37345  
 37346    // no more data can be written.
 37347    // But allow more writes to happen in this tick.
 37348    pna.nextTick(onEndNT, this);
 37349  }
 37350  
 37351  function onEndNT(self) {
 37352    self.end();
 37353  }
 37354  
 37355  Object.defineProperty(Duplex.prototype, 'destroyed', {
 37356    get: function () {
 37357      if (this._readableState === undefined || this._writableState === undefined) {
 37358        return false;
 37359      }
 37360      return this._readableState.destroyed && this._writableState.destroyed;
 37361    },
 37362    set: function (value) {
 37363      // we ignore the value if the stream
 37364      // has not been initialized yet
 37365      if (this._readableState === undefined || this._writableState === undefined) {
 37366        return;
 37367      }
 37368  
 37369      // backward compatibility, the user is explicitly
 37370      // managing destroyed
 37371      this._readableState.destroyed = value;
 37372      this._writableState.destroyed = value;
 37373    }
 37374  });
 37375  
 37376  Duplex.prototype._destroy = function (err, cb) {
 37377    this.push(null);
 37378    this.end();
 37379  
 37380    pna.nextTick(cb, err);
 37381  };
 37382  
 37383  /***/ }),
 37384  /* 117 */
 37385  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 37386  
 37387  "use strict";
 37388  /* harmony export (immutable) */ __webpack_exports__["a"] = multicast;
 37389  /* unused harmony export MulticastOperator */
 37390  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable_ConnectableObservable__ = __webpack_require__(423);
 37391  /** PURE_IMPORTS_START _observable_ConnectableObservable PURE_IMPORTS_END */
 37392  
 37393  function multicast(subjectOrSubjectFactory, selector) {
 37394      return function multicastOperatorFunction(source) {
 37395          var subjectFactory;
 37396          if (typeof subjectOrSubjectFactory === 'function') {
 37397              subjectFactory = subjectOrSubjectFactory;
 37398          }
 37399          else {
 37400              subjectFactory = function subjectFactory() {
 37401                  return subjectOrSubjectFactory;
 37402              };
 37403          }
 37404          if (typeof selector === 'function') {
 37405              return source.lift(new MulticastOperator(subjectFactory, selector));
 37406          }
 37407          var connectable = Object.create(source, __WEBPACK_IMPORTED_MODULE_0__observable_ConnectableObservable__["b" /* connectableObservableDescriptor */]);
 37408          connectable.source = source;
 37409          connectable.subjectFactory = subjectFactory;
 37410          return connectable;
 37411      };
 37412  }
 37413  var MulticastOperator = /*@__PURE__*/ (function () {
 37414      function MulticastOperator(subjectFactory, selector) {
 37415          this.subjectFactory = subjectFactory;
 37416          this.selector = selector;
 37417      }
 37418      MulticastOperator.prototype.call = function (subscriber, source) {
 37419          var selector = this.selector;
 37420          var subject = this.subjectFactory();
 37421          var subscription = selector(subject).subscribe(subscriber);
 37422          subscription.add(source.subscribe(subject));
 37423          return subscription;
 37424      };
 37425      return MulticastOperator;
 37426  }());
 37427  
 37428  //# sourceMappingURL=multicast.js.map
 37429  
 37430  
 37431  /***/ }),
 37432  /* 118 */
 37433  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 37434  
 37435  "use strict";
 37436  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return observable; });
 37437  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 37438  var observable = typeof Symbol === 'function' && Symbol.observable || '@@observable';
 37439  //# sourceMappingURL=observable.js.map
 37440  
 37441  
 37442  /***/ }),
 37443  /* 119 */
 37444  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 37445  
 37446  "use strict";
 37447  /* harmony export (immutable) */ __webpack_exports__["a"] = identity;
 37448  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 37449  function identity(x) {
 37450      return x;
 37451  }
 37452  //# sourceMappingURL=identity.js.map
 37453  
 37454  
 37455  /***/ }),
 37456  /* 120 */
 37457  /***/ (function(module, exports, __webpack_require__) {
 37458  
 37459  var v1 = __webpack_require__(957);
 37460  var v4 = __webpack_require__(958);
 37461  
 37462  var uuid = v4;
 37463  uuid.v1 = v1;
 37464  uuid.v4 = v4;
 37465  
 37466  module.exports = uuid;
 37467  
 37468  
 37469  /***/ }),
 37470  /* 121 */
 37471  /***/ (function(module, exports, __webpack_require__) {
 37472  
 37473  "use strict";
 37474  
 37475  
 37476  Object.defineProperty(exports, "__esModule", {
 37477    value: true
 37478  });
 37479  exports.run = exports.getBinFolder = undefined;
 37480  
 37481  var _asyncToGenerator2;
 37482  
 37483  function _load_asyncToGenerator() {
 37484    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 37485  }
 37486  
 37487  let updateCwd = (() => {
 37488    var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config) {
 37489      yield (_fs || _load_fs()).mkdirp(config.globalFolder);
 37490  
 37491      yield config.init({
 37492        cwd: config.globalFolder,
 37493        offline: config.offline,
 37494        binLinks: true,
 37495        globalFolder: config.globalFolder,
 37496        cacheFolder: config._cacheRootFolder,
 37497        linkFolder: config.linkFolder,
 37498        enableDefaultRc: config.enableDefaultRc,
 37499        extraneousYarnrcFiles: config.extraneousYarnrcFiles
 37500      });
 37501    });
 37502  
 37503    return function updateCwd(_x) {
 37504      return _ref2.apply(this, arguments);
 37505    };
 37506  })();
 37507  
 37508  let getBins = (() => {
 37509    var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config) {
 37510      // build up list of registry folders to search for binaries
 37511      const dirs = [];
 37512      for (var _iterator2 = Object.keys((_index || _load_index()).registries), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 37513        var _ref4;
 37514  
 37515        if (_isArray2) {
 37516          if (_i2 >= _iterator2.length) break;
 37517          _ref4 = _iterator2[_i2++];
 37518        } else {
 37519          _i2 = _iterator2.next();
 37520          if (_i2.done) break;
 37521          _ref4 = _i2.value;
 37522        }
 37523  
 37524        const registryName = _ref4;
 37525  
 37526        const registry = config.registries[registryName];
 37527        dirs.push(registry.loc);
 37528      }
 37529  
 37530      // build up list of binary files
 37531      const paths = new Set();
 37532      for (var _iterator3 = dirs, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 37533        var _ref5;
 37534  
 37535        if (_isArray3) {
 37536          if (_i3 >= _iterator3.length) break;
 37537          _ref5 = _iterator3[_i3++];
 37538        } else {
 37539          _i3 = _iterator3.next();
 37540          if (_i3.done) break;
 37541          _ref5 = _i3.value;
 37542        }
 37543  
 37544        const dir = _ref5;
 37545  
 37546        const binDir = path.join(dir, '.bin');
 37547        if (!(yield (_fs || _load_fs()).exists(binDir))) {
 37548          continue;
 37549        }
 37550  
 37551        for (var _iterator4 = yield (_fs || _load_fs()).readdir(binDir), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 37552          var _ref6;
 37553  
 37554          if (_isArray4) {
 37555            if (_i4 >= _iterator4.length) break;
 37556            _ref6 = _iterator4[_i4++];
 37557          } else {
 37558            _i4 = _iterator4.next();
 37559            if (_i4.done) break;
 37560            _ref6 = _i4.value;
 37561          }
 37562  
 37563          const name = _ref6;
 37564  
 37565          paths.add(path.join(binDir, name));
 37566        }
 37567      }
 37568      return paths;
 37569    });
 37570  
 37571    return function getBins(_x2) {
 37572      return _ref3.apply(this, arguments);
 37573    };
 37574  })();
 37575  
 37576  let getGlobalPrefix = (() => {
 37577    var _ref7 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, flags) {
 37578      if (flags.prefix) {
 37579        return flags.prefix;
 37580      } else if (config.getOption('prefix', true)) {
 37581        return String(config.getOption('prefix', true));
 37582      } else if (process.env.PREFIX) {
 37583        return process.env.PREFIX;
 37584      }
 37585  
 37586      const potentialPrefixFolders = [(_constants || _load_constants()).FALLBACK_GLOBAL_PREFIX];
 37587      if (process.platform === 'win32') {
 37588        // %LOCALAPPDATA%\Yarn --> C:\Users\Alice\AppData\Local\Yarn
 37589        if (process.env.LOCALAPPDATA) {
 37590          potentialPrefixFolders.unshift(path.join(process.env.LOCALAPPDATA, 'Yarn'));
 37591        }
 37592      } else {
 37593        potentialPrefixFolders.unshift((_constants || _load_constants()).POSIX_GLOBAL_PREFIX);
 37594      }
 37595  
 37596      const binFolders = potentialPrefixFolders.map(function (prefix) {
 37597        return path.join(prefix, 'bin');
 37598      });
 37599      const prefixFolderQueryResult = yield (_fs || _load_fs()).getFirstSuitableFolder(binFolders);
 37600      const prefix = prefixFolderQueryResult.folder && path.dirname(prefixFolderQueryResult.folder);
 37601  
 37602      if (!prefix) {
 37603        config.reporter.warn(config.reporter.lang('noGlobalFolder', prefixFolderQueryResult.skipped.map(function (item) {
 37604          return path.dirname(item.folder);
 37605        }).join(', ')));
 37606  
 37607        return (_constants || _load_constants()).FALLBACK_GLOBAL_PREFIX;
 37608      }
 37609  
 37610      return prefix;
 37611    });
 37612  
 37613    return function getGlobalPrefix(_x3, _x4) {
 37614      return _ref7.apply(this, arguments);
 37615    };
 37616  })();
 37617  
 37618  let getBinFolder = exports.getBinFolder = (() => {
 37619    var _ref8 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, flags) {
 37620      const prefix = yield getGlobalPrefix(config, flags);
 37621      return path.resolve(prefix, 'bin');
 37622    });
 37623  
 37624    return function getBinFolder(_x5, _x6) {
 37625      return _ref8.apply(this, arguments);
 37626    };
 37627  })();
 37628  
 37629  let initUpdateBins = (() => {
 37630    var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags) {
 37631      const beforeBins = yield getBins(config);
 37632      const binFolder = yield getBinFolder(config, flags);
 37633  
 37634      function throwPermError(err, dest) {
 37635        if (err.code === 'EACCES') {
 37636          throw new (_errors || _load_errors()).MessageError(reporter.lang('noPermission', dest));
 37637        } else {
 37638          throw err;
 37639        }
 37640      }
 37641  
 37642      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 37643        try {
 37644          yield (_fs || _load_fs()).mkdirp(binFolder);
 37645        } catch (err) {
 37646          throwPermError(err, binFolder);
 37647        }
 37648  
 37649        const afterBins = yield getBins(config);
 37650  
 37651        // remove old bins
 37652        for (var _iterator5 = beforeBins, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
 37653          var _ref11;
 37654  
 37655          if (_isArray5) {
 37656            if (_i5 >= _iterator5.length) break;
 37657            _ref11 = _iterator5[_i5++];
 37658          } else {
 37659            _i5 = _iterator5.next();
 37660            if (_i5.done) break;
 37661            _ref11 = _i5.value;
 37662          }
 37663  
 37664          const src = _ref11;
 37665  
 37666          if (afterBins.has(src)) {
 37667            // not old
 37668            continue;
 37669          }
 37670  
 37671          // remove old bin
 37672          const dest = path.join(binFolder, path.basename(src));
 37673          try {
 37674            yield (_fs || _load_fs()).unlink(dest);
 37675          } catch (err) {
 37676            throwPermError(err, dest);
 37677          }
 37678        }
 37679  
 37680        // add new bins
 37681        for (var _iterator6 = afterBins, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
 37682          var _ref12;
 37683  
 37684          if (_isArray6) {
 37685            if (_i6 >= _iterator6.length) break;
 37686            _ref12 = _iterator6[_i6++];
 37687          } else {
 37688            _i6 = _iterator6.next();
 37689            if (_i6.done) break;
 37690            _ref12 = _i6.value;
 37691          }
 37692  
 37693          const src = _ref12;
 37694  
 37695          // insert new bin
 37696          const dest = path.join(binFolder, path.basename(src));
 37697          try {
 37698            yield (_fs || _load_fs()).unlink(dest);
 37699            yield (0, (_packageLinker || _load_packageLinker()).linkBin)(src, dest);
 37700            if (process.platform === 'win32' && dest.indexOf('.cmd') !== -1) {
 37701              yield (_fs || _load_fs()).rename(dest + '.cmd', dest);
 37702            }
 37703          } catch (err) {
 37704            throwPermError(err, dest);
 37705          }
 37706        }
 37707      });
 37708    });
 37709  
 37710    return function initUpdateBins(_x7, _x8, _x9) {
 37711      return _ref9.apply(this, arguments);
 37712    };
 37713  })();
 37714  
 37715  let list = (() => {
 37716    var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 37717      yield updateCwd(config);
 37718  
 37719      // install so we get hard file paths
 37720      const lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.cwd);
 37721      const install = new (_install || _load_install()).Install({}, config, new (_baseReporter || _load_baseReporter()).default(), lockfile);
 37722      const patterns = yield install.getFlattenedDeps();
 37723  
 37724      // dump global modules
 37725      for (var _iterator7 = patterns, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
 37726        var _ref14;
 37727  
 37728        if (_isArray7) {
 37729          if (_i7 >= _iterator7.length) break;
 37730          _ref14 = _iterator7[_i7++];
 37731        } else {
 37732          _i7 = _iterator7.next();
 37733          if (_i7.done) break;
 37734          _ref14 = _i7.value;
 37735        }
 37736  
 37737        const pattern = _ref14;
 37738  
 37739        const manifest = install.resolver.getStrictResolvedPattern(pattern);
 37740        ls(manifest, reporter, false);
 37741      }
 37742    });
 37743  
 37744    return function list(_x10, _x11, _x12, _x13) {
 37745      return _ref13.apply(this, arguments);
 37746    };
 37747  })();
 37748  
 37749  exports.hasWrapper = hasWrapper;
 37750  exports.setFlags = setFlags;
 37751  
 37752  var _errors;
 37753  
 37754  function _load_errors() {
 37755    return _errors = __webpack_require__(6);
 37756  }
 37757  
 37758  var _index;
 37759  
 37760  function _load_index() {
 37761    return _index = __webpack_require__(58);
 37762  }
 37763  
 37764  var _baseReporter;
 37765  
 37766  function _load_baseReporter() {
 37767    return _baseReporter = _interopRequireDefault(__webpack_require__(108));
 37768  }
 37769  
 37770  var _buildSubCommands2;
 37771  
 37772  function _load_buildSubCommands() {
 37773    return _buildSubCommands2 = _interopRequireDefault(__webpack_require__(59));
 37774  }
 37775  
 37776  var _lockfile;
 37777  
 37778  function _load_lockfile() {
 37779    return _lockfile = _interopRequireDefault(__webpack_require__(19));
 37780  }
 37781  
 37782  var _install;
 37783  
 37784  function _load_install() {
 37785    return _install = __webpack_require__(34);
 37786  }
 37787  
 37788  var _add;
 37789  
 37790  function _load_add() {
 37791    return _add = __webpack_require__(165);
 37792  }
 37793  
 37794  var _remove;
 37795  
 37796  function _load_remove() {
 37797    return _remove = __webpack_require__(353);
 37798  }
 37799  
 37800  var _upgrade;
 37801  
 37802  function _load_upgrade() {
 37803    return _upgrade = __webpack_require__(205);
 37804  }
 37805  
 37806  var _upgradeInteractive;
 37807  
 37808  function _load_upgradeInteractive() {
 37809    return _upgradeInteractive = __webpack_require__(356);
 37810  }
 37811  
 37812  var _packageLinker;
 37813  
 37814  function _load_packageLinker() {
 37815    return _packageLinker = __webpack_require__(209);
 37816  }
 37817  
 37818  var _constants;
 37819  
 37820  function _load_constants() {
 37821    return _constants = __webpack_require__(8);
 37822  }
 37823  
 37824  var _fs;
 37825  
 37826  function _load_fs() {
 37827    return _fs = _interopRequireWildcard(__webpack_require__(5));
 37828  }
 37829  
 37830  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 37831  
 37832  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 37833  
 37834  class GlobalAdd extends (_add || _load_add()).Add {
 37835    constructor(args, flags, config, reporter, lockfile) {
 37836      super(args, flags, config, reporter, lockfile);
 37837  
 37838      this.linker.setTopLevelBinLinking(false);
 37839    }
 37840  
 37841    maybeOutputSaveTree() {
 37842      for (var _iterator = this.addedPatterns, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 37843        var _ref;
 37844  
 37845        if (_isArray) {
 37846          if (_i >= _iterator.length) break;
 37847          _ref = _iterator[_i++];
 37848        } else {
 37849          _i = _iterator.next();
 37850          if (_i.done) break;
 37851          _ref = _i.value;
 37852        }
 37853  
 37854        const pattern = _ref;
 37855  
 37856        const manifest = this.resolver.getStrictResolvedPattern(pattern);
 37857        ls(manifest, this.reporter, true);
 37858      }
 37859      return Promise.resolve();
 37860    }
 37861  
 37862    _logSuccessSaveLockfile() {
 37863      // noop
 37864    }
 37865  }
 37866  
 37867  const path = __webpack_require__(0);
 37868  
 37869  function hasWrapper(flags, args) {
 37870    return args[0] !== 'bin' && args[0] !== 'dir';
 37871  }
 37872  
 37873  function ls(manifest, reporter, saved) {
 37874    const bins = manifest.bin ? Object.keys(manifest.bin) : [];
 37875    const human = `${manifest.name}@${manifest.version}`;
 37876    if (bins.length) {
 37877      if (saved) {
 37878        reporter.success(reporter.lang('packageInstalledWithBinaries', human));
 37879      } else {
 37880        reporter.info(reporter.lang('packageHasBinaries', human));
 37881      }
 37882      reporter.list(`bins-${manifest.name}`, bins);
 37883    } else if (saved) {
 37884      reporter.warn(reporter.lang('packageHasNoBinaries', human));
 37885    }
 37886  }
 37887  
 37888  var _buildSubCommands = (0, (_buildSubCommands2 || _load_buildSubCommands()).default)('global', {
 37889    add(config, reporter, flags, args) {
 37890      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 37891        yield updateCwd(config);
 37892  
 37893        const updateBins = yield initUpdateBins(config, reporter, flags);
 37894        if (args.indexOf('yarn') !== -1) {
 37895          reporter.warn(reporter.lang('packageContainsYarnAsGlobal'));
 37896        }
 37897  
 37898        // install module
 37899        const lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.cwd);
 37900        const install = new GlobalAdd(args, flags, config, reporter, lockfile);
 37901        yield install.init();
 37902  
 37903        // link binaries
 37904        yield updateBins();
 37905      })();
 37906    },
 37907  
 37908    bin(config, reporter, flags, args) {
 37909      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 37910        reporter.log((yield getBinFolder(config, flags)), { force: true });
 37911      })();
 37912    },
 37913  
 37914    dir(config, reporter, flags, args) {
 37915      reporter.log(config.globalFolder, { force: true });
 37916      return Promise.resolve();
 37917    },
 37918  
 37919    ls(config, reporter, flags, args) {
 37920      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 37921        reporter.warn(`\`yarn global ls\` is deprecated. Please use \`yarn global list\`.`);
 37922        yield list(config, reporter, flags, args);
 37923      })();
 37924    },
 37925  
 37926    list(config, reporter, flags, args) {
 37927      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 37928        yield list(config, reporter, flags, args);
 37929      })();
 37930    },
 37931  
 37932    remove(config, reporter, flags, args) {
 37933      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 37934        yield updateCwd(config);
 37935  
 37936        const updateBins = yield initUpdateBins(config, reporter, flags);
 37937  
 37938        // remove module
 37939        yield (0, (_remove || _load_remove()).run)(config, reporter, flags, args);
 37940  
 37941        // remove binaries
 37942        yield updateBins();
 37943      })();
 37944    },
 37945  
 37946    upgrade(config, reporter, flags, args) {
 37947      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 37948        yield updateCwd(config);
 37949  
 37950        const updateBins = yield initUpdateBins(config, reporter, flags);
 37951  
 37952        // upgrade module
 37953        yield (0, (_upgrade || _load_upgrade()).run)(config, reporter, flags, args);
 37954  
 37955        // update binaries
 37956        yield updateBins();
 37957      })();
 37958    },
 37959  
 37960    upgradeInteractive(config, reporter, flags, args) {
 37961      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 37962        yield updateCwd(config);
 37963  
 37964        const updateBins = yield initUpdateBins(config, reporter, flags);
 37965  
 37966        // upgrade module
 37967        yield (0, (_upgradeInteractive || _load_upgradeInteractive()).run)(config, reporter, flags, args);
 37968  
 37969        // update binaries
 37970        yield updateBins();
 37971      })();
 37972    }
 37973  });
 37974  
 37975  const run = _buildSubCommands.run,
 37976        _setFlags = _buildSubCommands.setFlags;
 37977  exports.run = run;
 37978  function setFlags(commander) {
 37979    _setFlags(commander);
 37980    commander.description('Installs packages globally on your operating system.');
 37981    commander.option('--prefix <prefix>', 'bin prefix to use to install binaries');
 37982    commander.option('--latest', 'upgrade to the latest version of packages');
 37983  }
 37984  
 37985  /***/ }),
 37986  /* 122 */
 37987  /***/ (function(module, exports, __webpack_require__) {
 37988  
 37989  "use strict";
 37990  
 37991  
 37992  Object.defineProperty(exports, "__esModule", {
 37993    value: true
 37994  });
 37995  
 37996  var _asyncToGenerator2;
 37997  
 37998  function _load_asyncToGenerator() {
 37999    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 38000  }
 38001  
 38002  var _path;
 38003  
 38004  function _load_path() {
 38005    return _path = _interopRequireDefault(__webpack_require__(0));
 38006  }
 38007  
 38008  var _invariant;
 38009  
 38010  function _load_invariant() {
 38011    return _invariant = _interopRequireDefault(__webpack_require__(9));
 38012  }
 38013  
 38014  var _semver;
 38015  
 38016  function _load_semver() {
 38017    return _semver = _interopRequireDefault(__webpack_require__(22));
 38018  }
 38019  
 38020  var _validate;
 38021  
 38022  function _load_validate() {
 38023    return _validate = __webpack_require__(125);
 38024  }
 38025  
 38026  var _lockfile;
 38027  
 38028  function _load_lockfile() {
 38029    return _lockfile = _interopRequireDefault(__webpack_require__(19));
 38030  }
 38031  
 38032  var _packageReference;
 38033  
 38034  function _load_packageReference() {
 38035    return _packageReference = _interopRequireDefault(__webpack_require__(359));
 38036  }
 38037  
 38038  var _index;
 38039  
 38040  function _load_index() {
 38041    return _index = __webpack_require__(78);
 38042  }
 38043  
 38044  var _errors;
 38045  
 38046  function _load_errors() {
 38047    return _errors = __webpack_require__(6);
 38048  }
 38049  
 38050  var _constants;
 38051  
 38052  function _load_constants() {
 38053    return _constants = _interopRequireWildcard(__webpack_require__(8));
 38054  }
 38055  
 38056  var _version;
 38057  
 38058  function _load_version() {
 38059    return _version = _interopRequireWildcard(__webpack_require__(223));
 38060  }
 38061  
 38062  var _workspaceResolver;
 38063  
 38064  function _load_workspaceResolver() {
 38065    return _workspaceResolver = _interopRequireDefault(__webpack_require__(538));
 38066  }
 38067  
 38068  var _fs;
 38069  
 38070  function _load_fs() {
 38071    return _fs = _interopRequireWildcard(__webpack_require__(5));
 38072  }
 38073  
 38074  var _normalizePattern4;
 38075  
 38076  function _load_normalizePattern() {
 38077    return _normalizePattern4 = __webpack_require__(37);
 38078  }
 38079  
 38080  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 38081  
 38082  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 38083  
 38084  const micromatch = __webpack_require__(115);
 38085  
 38086  class PackageRequest {
 38087    constructor(req, resolver) {
 38088      this.parentRequest = req.parentRequest;
 38089      this.parentNames = req.parentNames || [];
 38090      this.lockfile = resolver.lockfile;
 38091      this.registry = req.registry;
 38092      this.reporter = resolver.reporter;
 38093      this.resolver = resolver;
 38094      this.optional = req.optional;
 38095      this.hint = req.hint;
 38096      this.pattern = req.pattern;
 38097      this.config = resolver.config;
 38098      this.foundInfo = null;
 38099    }
 38100  
 38101    init() {
 38102      this.resolver.usedRegistries.add(this.registry);
 38103    }
 38104  
 38105    getLocked(remoteType) {
 38106      // always prioritise root lockfile
 38107      const shrunk = this.lockfile.getLocked(this.pattern);
 38108  
 38109      if (shrunk && shrunk.resolved) {
 38110        const resolvedParts = (_version || _load_version()).explodeHashedUrl(shrunk.resolved);
 38111  
 38112        // Detect Git protocols (git://HOST/PATH or git+PROTOCOL://HOST/PATH)
 38113        const preferredRemoteType = /^git(\+[a-z0-9]+)?:\/\//.test(resolvedParts.url) ? 'git' : remoteType;
 38114  
 38115        return {
 38116          name: shrunk.name,
 38117          version: shrunk.version,
 38118          _uid: shrunk.uid,
 38119          _remote: {
 38120            resolved: shrunk.resolved,
 38121            type: preferredRemoteType,
 38122            reference: resolvedParts.url,
 38123            hash: resolvedParts.hash,
 38124            integrity: shrunk.integrity,
 38125            registry: shrunk.registry,
 38126            packageName: shrunk.name
 38127          },
 38128          optionalDependencies: shrunk.optionalDependencies || {},
 38129          dependencies: shrunk.dependencies || {},
 38130          prebuiltVariants: shrunk.prebuiltVariants || {}
 38131        };
 38132      } else {
 38133        return null;
 38134      }
 38135    }
 38136  
 38137    /**
 38138     * If the input pattern matches a registry one then attempt to find it on the registry.
 38139     * Otherwise fork off to an exotic resolver if one matches.
 38140     */
 38141  
 38142    findVersionOnRegistry(pattern) {
 38143      var _this = this;
 38144  
 38145      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 38146        var _ref = yield _this.normalize(pattern);
 38147  
 38148        const range = _ref.range,
 38149              name = _ref.name;
 38150  
 38151  
 38152        const exoticResolver = (0, (_index || _load_index()).getExoticResolver)(range);
 38153        if (exoticResolver) {
 38154          let data = yield _this.findExoticVersionInfo(exoticResolver, range);
 38155  
 38156          // clone data as we're manipulating it in place and this could be resolved multiple
 38157          // times
 38158          data = Object.assign({}, data);
 38159  
 38160          // this is so the returned package response uses the overridden name. ie. if the
 38161          // package's actual name is `bar`, but it's been specified in the manifest like:
 38162          //   "foo": "http://foo.com/bar.tar.gz"
 38163          // then we use the foo name
 38164          data.name = name;
 38165          return data;
 38166        }
 38167  
 38168        const Resolver = _this.getRegistryResolver();
 38169        const resolver = new Resolver(_this, name, range);
 38170        try {
 38171          return yield resolver.resolve();
 38172        } catch (err) {
 38173          // if it is not an error thrown by yarn and it has a parent request,
 38174          // thow a more readable error
 38175          if (!(err instanceof (_errors || _load_errors()).MessageError) && _this.parentRequest && _this.parentRequest.pattern) {
 38176            throw new (_errors || _load_errors()).MessageError(_this.reporter.lang('requiredPackageNotFoundRegistry', pattern, _this.parentRequest.pattern, _this.registry));
 38177          }
 38178          throw err;
 38179        }
 38180      })();
 38181    }
 38182  
 38183    /**
 38184     * Get the registry resolver associated with this package request.
 38185     */
 38186  
 38187    getRegistryResolver() {
 38188      const Resolver = (_index || _load_index()).registries[this.registry];
 38189      if (Resolver) {
 38190        return Resolver;
 38191      } else {
 38192        throw new (_errors || _load_errors()).MessageError(this.reporter.lang('unknownRegistryResolver', this.registry));
 38193      }
 38194    }
 38195  
 38196    normalizeRange(pattern) {
 38197      var _this2 = this;
 38198  
 38199      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 38200        if (pattern.indexOf(':') > -1 || pattern.indexOf('@') > -1 || (0, (_index || _load_index()).getExoticResolver)(pattern)) {
 38201          return pattern;
 38202        }
 38203  
 38204        if (!(_semver || _load_semver()).default.validRange(pattern)) {
 38205          try {
 38206            if (yield (_fs || _load_fs()).exists((_path || _load_path()).default.join(_this2.config.cwd, pattern, (_constants || _load_constants()).NODE_PACKAGE_JSON))) {
 38207              _this2.reporter.warn(_this2.reporter.lang('implicitFileDeprecated', pattern));
 38208              return `file:${pattern}`;
 38209            }
 38210          } catch (err) {
 38211            // pass
 38212          }
 38213        }
 38214  
 38215        return pattern;
 38216      })();
 38217    }
 38218  
 38219    normalize(pattern) {
 38220      var _this3 = this;
 38221  
 38222      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 38223        var _normalizePattern = (0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(pattern);
 38224  
 38225        const name = _normalizePattern.name,
 38226              range = _normalizePattern.range,
 38227              hasVersion = _normalizePattern.hasVersion;
 38228  
 38229        const newRange = yield _this3.normalizeRange(range);
 38230        return { name, range: newRange, hasVersion };
 38231      })();
 38232    }
 38233  
 38234    /**
 38235     * Construct an exotic resolver instance with the input `ExoticResolver` and `range`.
 38236     */
 38237  
 38238    findExoticVersionInfo(ExoticResolver, range) {
 38239      const resolver = new ExoticResolver(this, range);
 38240      return resolver.resolve();
 38241    }
 38242  
 38243    /**
 38244     * If the current pattern matches an exotic resolver then delegate to it or else try
 38245     * the registry.
 38246     */
 38247  
 38248    findVersionInfo() {
 38249      var _this4 = this;
 38250  
 38251      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 38252        const exoticResolver = (0, (_index || _load_index()).getExoticResolver)(_this4.pattern);
 38253        if (exoticResolver) {
 38254          return _this4.findExoticVersionInfo(exoticResolver, _this4.pattern);
 38255        } else if ((_workspaceResolver || _load_workspaceResolver()).default.isWorkspace(_this4.pattern, _this4.resolver.workspaceLayout)) {
 38256          (0, (_invariant || _load_invariant()).default)(_this4.resolver.workspaceLayout, 'expected workspaceLayout');
 38257          const resolver = new (_workspaceResolver || _load_workspaceResolver()).default(_this4, _this4.pattern, _this4.resolver.workspaceLayout);
 38258          let manifest;
 38259          if (_this4.config.focus && !_this4.pattern.includes(_this4.resolver.workspaceLayout.virtualManifestName) && !_this4.pattern.startsWith(_this4.config.focusedWorkspaceName + '@')) {
 38260            const localInfo = _this4.resolver.workspaceLayout.getManifestByPattern(_this4.pattern);
 38261            (0, (_invariant || _load_invariant()).default)(localInfo, 'expected local info for ' + _this4.pattern);
 38262            const localManifest = localInfo.manifest;
 38263            const requestPattern = localManifest.name + '@' + localManifest.version;
 38264            manifest = yield _this4.findVersionOnRegistry(requestPattern);
 38265          }
 38266          return resolver.resolve(manifest);
 38267        } else {
 38268          return _this4.findVersionOnRegistry(_this4.pattern);
 38269        }
 38270      })();
 38271    }
 38272  
 38273    reportResolvedRangeMatch(info, resolved) {}
 38274  
 38275    /**
 38276     * Do the final resolve of a package that had a match with an existing version.
 38277     * After all unique versions have been discovered, so the best available version
 38278     * is found.
 38279     */
 38280    resolveToExistingVersion(info) {
 38281      // get final resolved version
 38282      var _normalizePattern2 = (0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(this.pattern);
 38283  
 38284      const range = _normalizePattern2.range,
 38285            name = _normalizePattern2.name;
 38286  
 38287      const solvedRange = (_semver || _load_semver()).default.validRange(range) ? info.version : range;
 38288      const resolved = this.resolver.getHighestRangeVersionMatch(name, solvedRange, info);
 38289      (0, (_invariant || _load_invariant()).default)(resolved, 'should have a resolved reference');
 38290  
 38291      this.reportResolvedRangeMatch(info, resolved);
 38292      const ref = resolved._reference;
 38293      (0, (_invariant || _load_invariant()).default)(ref, 'Resolved package info has no package reference');
 38294      ref.addRequest(this);
 38295      ref.addPattern(this.pattern, resolved);
 38296      ref.addOptional(this.optional);
 38297    }
 38298  
 38299    /**
 38300     * TODO description
 38301     */
 38302    find({ fresh, frozen }) {
 38303      var _this5 = this;
 38304  
 38305      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 38306        // find version info for this package pattern
 38307        const info = yield _this5.findVersionInfo();
 38308  
 38309        if (!(_semver || _load_semver()).default.valid(info.version)) {
 38310          throw new (_errors || _load_errors()).MessageError(_this5.reporter.lang('invalidPackageVersion', info.name, info.version));
 38311        }
 38312  
 38313        info.fresh = fresh;
 38314        (0, (_validate || _load_validate()).cleanDependencies)(info, false, _this5.reporter, function () {
 38315          // swallow warnings
 38316        });
 38317  
 38318        // check if while we were resolving this dep we've already resolved one that satisfies
 38319        // the same range
 38320  
 38321        var _normalizePattern3 = (0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(_this5.pattern);
 38322  
 38323        const range = _normalizePattern3.range,
 38324              name = _normalizePattern3.name;
 38325  
 38326        const solvedRange = (_semver || _load_semver()).default.validRange(range) ? info.version : range;
 38327        const resolved = !info.fresh || frozen ? _this5.resolver.getExactVersionMatch(name, solvedRange, info) : _this5.resolver.getHighestRangeVersionMatch(name, solvedRange, info);
 38328  
 38329        if (resolved) {
 38330          _this5.resolver.reportPackageWithExistingVersion(_this5, info);
 38331          return;
 38332        }
 38333  
 38334        if (info.flat && !_this5.resolver.flat) {
 38335          throw new (_errors || _load_errors()).MessageError(_this5.reporter.lang('flatGlobalError', `${info.name}@${info.version}`));
 38336        }
 38337  
 38338        // validate version info
 38339        PackageRequest.validateVersionInfo(info, _this5.reporter);
 38340  
 38341        //
 38342        const remote = info._remote;
 38343        (0, (_invariant || _load_invariant()).default)(remote, 'Missing remote');
 38344  
 38345        // set package reference
 38346        const ref = new (_packageReference || _load_packageReference()).default(_this5, info, remote);
 38347        ref.addPattern(_this5.pattern, info);
 38348        ref.addOptional(_this5.optional);
 38349        ref.setFresh(fresh);
 38350        info._reference = ref;
 38351        info._remote = remote;
 38352        // start installation of dependencies
 38353        const promises = [];
 38354        const deps = [];
 38355        const parentNames = [..._this5.parentNames, name];
 38356        // normal deps
 38357        for (const depName in info.dependencies) {
 38358          const depPattern = depName + '@' + info.dependencies[depName];
 38359          deps.push(depPattern);
 38360          promises.push(_this5.resolver.find({
 38361            pattern: depPattern,
 38362            registry: remote.registry,
 38363            // dependencies of optional dependencies should themselves be optional
 38364            optional: _this5.optional,
 38365            parentRequest: _this5,
 38366            parentNames
 38367          }));
 38368        }
 38369  
 38370        // optional deps
 38371        for (const depName in info.optionalDependencies) {
 38372          const depPattern = depName + '@' + info.optionalDependencies[depName];
 38373          deps.push(depPattern);
 38374          promises.push(_this5.resolver.find({
 38375            hint: 'optional',
 38376            pattern: depPattern,
 38377            registry: remote.registry,
 38378            optional: true,
 38379            parentRequest: _this5,
 38380            parentNames
 38381          }));
 38382        }
 38383        if (remote.type === 'workspace' && !_this5.config.production) {
 38384          // workspaces support dev dependencies
 38385          for (const depName in info.devDependencies) {
 38386            const depPattern = depName + '@' + info.devDependencies[depName];
 38387            deps.push(depPattern);
 38388            promises.push(_this5.resolver.find({
 38389              hint: 'dev',
 38390              pattern: depPattern,
 38391              registry: remote.registry,
 38392              optional: false,
 38393              parentRequest: _this5,
 38394              parentNames
 38395            }));
 38396          }
 38397        }
 38398  
 38399        for (var _iterator = promises, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 38400          var _ref2;
 38401  
 38402          if (_isArray) {
 38403            if (_i >= _iterator.length) break;
 38404            _ref2 = _iterator[_i++];
 38405          } else {
 38406            _i = _iterator.next();
 38407            if (_i.done) break;
 38408            _ref2 = _i.value;
 38409          }
 38410  
 38411          const promise = _ref2;
 38412  
 38413          yield promise;
 38414        }
 38415  
 38416        ref.addDependencies(deps);
 38417  
 38418        // Now that we have all dependencies, it's safe to propagate optional
 38419        for (var _iterator2 = ref.requests.slice(1), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 38420          var _ref3;
 38421  
 38422          if (_isArray2) {
 38423            if (_i2 >= _iterator2.length) break;
 38424            _ref3 = _iterator2[_i2++];
 38425          } else {
 38426            _i2 = _iterator2.next();
 38427            if (_i2.done) break;
 38428            _ref3 = _i2.value;
 38429          }
 38430  
 38431          const otherRequest = _ref3;
 38432  
 38433          ref.addOptional(otherRequest.optional);
 38434        }
 38435      })();
 38436    }
 38437  
 38438    /**
 38439     * TODO description
 38440     */
 38441  
 38442    static validateVersionInfo(info, reporter) {
 38443      // human readable name to use in errors
 38444      const human = `${info.name}@${info.version}`;
 38445  
 38446      info.version = PackageRequest.getPackageVersion(info);
 38447  
 38448      for (var _iterator3 = (_constants || _load_constants()).REQUIRED_PACKAGE_KEYS, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 38449        var _ref4;
 38450  
 38451        if (_isArray3) {
 38452          if (_i3 >= _iterator3.length) break;
 38453          _ref4 = _iterator3[_i3++];
 38454        } else {
 38455          _i3 = _iterator3.next();
 38456          if (_i3.done) break;
 38457          _ref4 = _i3.value;
 38458        }
 38459  
 38460        const key = _ref4;
 38461  
 38462        if (!info[key]) {
 38463          throw new (_errors || _load_errors()).MessageError(reporter.lang('missingRequiredPackageKey', human, key));
 38464        }
 38465      }
 38466    }
 38467  
 38468    /**
 38469     * Returns the package version if present, else defaults to the uid
 38470     */
 38471  
 38472    static getPackageVersion(info) {
 38473      // TODO possibly reconsider this behaviour
 38474      return info.version === undefined ? info._uid : info.version;
 38475    }
 38476  
 38477    /**
 38478     * Gets all of the outdated packages and sorts them appropriately
 38479     */
 38480  
 38481    static getOutdatedPackages(lockfile, install, config, reporter, filterByPatterns, flags) {
 38482      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 38483        var _ref5 = yield install.fetchRequestFromCwd();
 38484  
 38485        const reqPatterns = _ref5.requests,
 38486              workspaceLayout = _ref5.workspaceLayout;
 38487  
 38488        // Filter out workspace patterns if necessary
 38489  
 38490        let depReqPatterns = workspaceLayout ? reqPatterns.filter(function (p) {
 38491          return !workspaceLayout.getManifestByPattern(p.pattern);
 38492        }) : reqPatterns;
 38493  
 38494        // filter the list down to just the packages requested.
 38495        // prevents us from having to query the metadata for all packages.
 38496        if (filterByPatterns && filterByPatterns.length || flags && flags.pattern) {
 38497          const filterByNames = filterByPatterns && filterByPatterns.length ? filterByPatterns.map(function (pattern) {
 38498            return (0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(pattern).name;
 38499          }) : [];
 38500          depReqPatterns = depReqPatterns.filter(function (dep) {
 38501            return filterByNames.indexOf((0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(dep.pattern).name) >= 0 || flags && flags.pattern && micromatch.contains((0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(dep.pattern).name, flags.pattern);
 38502          });
 38503        }
 38504  
 38505        const deps = yield Promise.all(depReqPatterns.map((() => {
 38506          var _ref6 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* ({ pattern, hint, workspaceName, workspaceLoc }) {
 38507            const locked = lockfile.getLocked(pattern);
 38508            if (!locked) {
 38509              throw new (_errors || _load_errors()).MessageError(reporter.lang('lockfileOutdated'));
 38510            }
 38511  
 38512            const name = locked.name,
 38513                  current = locked.version;
 38514  
 38515            let latest = '';
 38516            let wanted = '';
 38517            let url = '';
 38518  
 38519            const normalized = (0, (_normalizePattern4 || _load_normalizePattern()).normalizePattern)(pattern);
 38520  
 38521            if ((0, (_index || _load_index()).getExoticResolver)(pattern) || (0, (_index || _load_index()).getExoticResolver)(normalized.range)) {
 38522              latest = wanted = 'exotic';
 38523              url = normalized.range;
 38524            } else {
 38525              const registry = config.registries[locked.registry];
 38526  
 38527              var _ref7 = yield registry.checkOutdated(config, name, normalized.range);
 38528  
 38529              latest = _ref7.latest;
 38530              wanted = _ref7.wanted;
 38531              url = _ref7.url;
 38532            }
 38533  
 38534            return {
 38535              name,
 38536              current,
 38537              wanted,
 38538              latest,
 38539              url,
 38540              hint,
 38541              range: normalized.range,
 38542              upgradeTo: '',
 38543              workspaceName: workspaceName || '',
 38544              workspaceLoc: workspaceLoc || ''
 38545            };
 38546          });
 38547  
 38548          return function (_x) {
 38549            return _ref6.apply(this, arguments);
 38550          };
 38551        })()));
 38552  
 38553        // Make sure to always output `exotic` versions to be compatible with npm
 38554        const isDepOld = function isDepOld({ current, latest, wanted }) {
 38555          return latest === 'exotic' || (_semver || _load_semver()).default.lt(current, wanted) || (_semver || _load_semver()).default.lt(current, latest);
 38556        };
 38557        const orderByName = function orderByName(depA, depB) {
 38558          return depA.name.localeCompare(depB.name);
 38559        };
 38560        return deps.filter(isDepOld).sort(orderByName);
 38561      })();
 38562    }
 38563  }
 38564  exports.default = PackageRequest;
 38565  
 38566  /***/ }),
 38567  /* 123 */
 38568  /***/ (function(module, exports, __webpack_require__) {
 38569  
 38570  "use strict";
 38571  
 38572  
 38573  Object.defineProperty(exports, "__esModule", {
 38574    value: true
 38575  });
 38576  class BaseResolver {
 38577    constructor(request, fragment) {
 38578      this.resolver = request.resolver;
 38579      this.reporter = request.reporter;
 38580      this.fragment = fragment;
 38581      this.registry = request.registry;
 38582      this.request = request;
 38583      this.pattern = request.pattern;
 38584      this.config = request.config;
 38585    }
 38586  
 38587    fork(Resolver, resolveArg, ...args) {
 38588      const resolver = new Resolver(this.request, ...args);
 38589      resolver.registry = this.registry;
 38590      return resolver.resolve(resolveArg);
 38591    }
 38592  
 38593    resolve(resolveArg) {
 38594      throw new Error('Not implemented');
 38595    }
 38596  }
 38597  exports.default = BaseResolver;
 38598  
 38599  /***/ }),
 38600  /* 124 */
 38601  /***/ (function(module, exports, __webpack_require__) {
 38602  
 38603  "use strict";
 38604  
 38605  
 38606  Object.defineProperty(exports, "__esModule", {
 38607    value: true
 38608  });
 38609  
 38610  var _asyncToGenerator2;
 38611  
 38612  function _load_asyncToGenerator() {
 38613    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 38614  }
 38615  
 38616  var _index;
 38617  
 38618  function _load_index() {
 38619    return _index = __webpack_require__(78);
 38620  }
 38621  
 38622  var _misc;
 38623  
 38624  function _load_misc() {
 38625    return _misc = _interopRequireWildcard(__webpack_require__(18));
 38626  }
 38627  
 38628  var _version;
 38629  
 38630  function _load_version() {
 38631    return _version = _interopRequireWildcard(__webpack_require__(223));
 38632  }
 38633  
 38634  var _guessName;
 38635  
 38636  function _load_guessName() {
 38637    return _guessName = _interopRequireDefault(__webpack_require__(169));
 38638  }
 38639  
 38640  var _index2;
 38641  
 38642  function _load_index2() {
 38643    return _index2 = __webpack_require__(58);
 38644  }
 38645  
 38646  var _exoticResolver;
 38647  
 38648  function _load_exoticResolver() {
 38649    return _exoticResolver = _interopRequireDefault(__webpack_require__(89));
 38650  }
 38651  
 38652  var _git;
 38653  
 38654  function _load_git() {
 38655    return _git = _interopRequireDefault(__webpack_require__(217));
 38656  }
 38657  
 38658  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 38659  
 38660  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 38661  
 38662  const urlParse = __webpack_require__(24).parse;
 38663  
 38664  const GIT_HOSTS = ['github.com', 'gitlab.com', 'bitbucket.com', 'bitbucket.org'];
 38665  
 38666  const GIT_PATTERN_MATCHERS = [/^git:/, /^git\+.+:/, /^ssh:/, /^https?:.+\.git$/, /^https?:.+\.git#.+/];
 38667  
 38668  class GitResolver extends (_exoticResolver || _load_exoticResolver()).default {
 38669    constructor(request, fragment) {
 38670      super(request, fragment);
 38671  
 38672      var _versionUtil$explodeH = (_version || _load_version()).explodeHashedUrl(fragment);
 38673  
 38674      const url = _versionUtil$explodeH.url,
 38675            hash = _versionUtil$explodeH.hash;
 38676  
 38677      this.url = url;
 38678      this.hash = hash;
 38679    }
 38680  
 38681    static isVersion(pattern) {
 38682      for (var _iterator = GIT_PATTERN_MATCHERS, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 38683        var _ref;
 38684  
 38685        if (_isArray) {
 38686          if (_i >= _iterator.length) break;
 38687          _ref = _iterator[_i++];
 38688        } else {
 38689          _i = _iterator.next();
 38690          if (_i.done) break;
 38691          _ref = _i.value;
 38692        }
 38693  
 38694        const matcher = _ref;
 38695  
 38696        if (matcher.test(pattern)) {
 38697          return true;
 38698        }
 38699      }
 38700  
 38701      var _urlParse = urlParse(pattern);
 38702  
 38703      const hostname = _urlParse.hostname,
 38704            path = _urlParse.path;
 38705  
 38706      if (hostname && path && GIT_HOSTS.indexOf(hostname) >= 0) {
 38707        // only if dependency is pointing to a git repo,
 38708        // e.g. facebook/flow and not file in a git repo facebook/flow/archive/v1.0.0.tar.gz
 38709        return path.split('/').filter(p => !!p).length === 2;
 38710      }
 38711  
 38712      return false;
 38713    }
 38714  
 38715    resolve(forked) {
 38716      var _this = this;
 38717  
 38718      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 38719        let tryRegistry = (() => {
 38720          var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (registry) {
 38721            const filename = (_index2 || _load_index2()).registries[registry].filename;
 38722  
 38723            const file = yield client.getFile(filename);
 38724            if (!file) {
 38725              return null;
 38726            }
 38727  
 38728            const json = yield config.readJson(`${url}/${filename}`, function () {
 38729              return JSON.parse(file);
 38730            });
 38731            json._uid = commit;
 38732            json._remote = {
 38733              resolved: `${url}#${commit}`,
 38734              type: 'git',
 38735              reference: url,
 38736              hash: commit,
 38737              registry
 38738            };
 38739            return json;
 38740          });
 38741  
 38742          return function tryRegistry(_x) {
 38743            return _ref2.apply(this, arguments);
 38744          };
 38745        })();
 38746  
 38747        const url = _this.url;
 38748  
 38749        // shortcut for hosted git. we will fallback to a GitResolver if the hosted git
 38750        // optimisations fail which the `forked` flag indicates so we don't get into an
 38751        // infinite loop
 38752  
 38753        const parts = urlParse(url);
 38754        if (false) {
 38755          // check if this git url uses any of the hostnames defined in our hosted git resolvers
 38756          for (const name in (_index || _load_index()).hostedGit) {
 38757            const Resolver = (_index || _load_index()).hostedGit[name];
 38758            if (Resolver.hostname !== parts.hostname) {
 38759              continue;
 38760            }
 38761  
 38762            // we have a match! clean up the pathname of url artifacts
 38763            let pathname = parts.pathname;
 38764            pathname = (_misc || _load_misc()).removePrefix(pathname, '/'); // remove prefixed slash
 38765            pathname = (_misc || _load_misc()).removeSuffix(pathname, '.git'); // remove .git suffix if present
 38766  
 38767            const url = `${pathname}${_this.hash ? '#' + decodeURIComponent(_this.hash) : ''}`;
 38768            return _this.fork(Resolver, false, url);
 38769          }
 38770        }
 38771  
 38772        // get from lockfile
 38773        const shrunk = _this.request.getLocked('git');
 38774        if (shrunk) {
 38775          return shrunk;
 38776        }
 38777  
 38778        const config = _this.config;
 38779  
 38780  
 38781        const gitUrl = (_git || _load_git()).default.npmUrlToGitUrl(url);
 38782        const client = new (_git || _load_git()).default(config, gitUrl, _this.hash);
 38783        const commit = yield client.init();
 38784  
 38785        const file = yield tryRegistry(_this.registry);
 38786        if (file) {
 38787          return file;
 38788        }
 38789  
 38790        for (const registry in (_index2 || _load_index2()).registries) {
 38791          if (registry === _this.registry) {
 38792            continue;
 38793          }
 38794  
 38795          const file = yield tryRegistry(registry);
 38796          if (file) {
 38797            return file;
 38798          }
 38799        }
 38800  
 38801        return {
 38802          // This is just the default, it can be overridden with key of dependencies
 38803          name: (0, (_guessName || _load_guessName()).default)(url),
 38804          version: '0.0.0',
 38805          _uid: commit,
 38806          _remote: {
 38807            resolved: `${url}#${commit}`,
 38808            type: 'git',
 38809            reference: url,
 38810            hash: commit,
 38811            registry: 'npm'
 38812          }
 38813        };
 38814      })();
 38815    }
 38816  }
 38817  exports.default = GitResolver;
 38818  
 38819  /***/ }),
 38820  /* 125 */
 38821  /***/ (function(module, exports, __webpack_require__) {
 38822  
 38823  "use strict";
 38824  
 38825  
 38826  Object.defineProperty(exports, "__esModule", {
 38827    value: true
 38828  });
 38829  exports.isValidPackageName = isValidPackageName;
 38830  
 38831  exports.default = function (info, isRoot, reporter, warn) {
 38832    if (isRoot) {
 38833      for (const key in (_typos || _load_typos()).default) {
 38834        if (key in info) {
 38835          warn(reporter.lang('manifestPotentialTypo', key, (_typos || _load_typos()).default[key]));
 38836        }
 38837      }
 38838    }
 38839  
 38840    // validate name
 38841    const name = info.name;
 38842  
 38843    if (typeof name === 'string') {
 38844      if (isRoot && isBuiltinModule(name)) {
 38845        warn(reporter.lang('manifestBuiltinModule', name));
 38846      }
 38847  
 38848      // cannot start with a dot
 38849      if (name[0] === '.') {
 38850        throw new (_errors || _load_errors()).MessageError(reporter.lang('manifestNameDot'));
 38851      }
 38852  
 38853      // cannot contain the following characters
 38854      if (!isValidPackageName(name)) {
 38855        throw new (_errors || _load_errors()).MessageError(reporter.lang('manifestNameIllegalChars'));
 38856      }
 38857  
 38858      // cannot equal node_modules or favicon.ico
 38859      const lower = name.toLowerCase();
 38860      if (lower === 'node_modules' || lower === 'favicon.ico') {
 38861        throw new (_errors || _load_errors()).MessageError(reporter.lang('manifestNameBlacklisted'));
 38862      }
 38863    }
 38864  
 38865    // validate license
 38866    if (isRoot && !info.private) {
 38867      if (typeof info.license === 'string') {
 38868        const license = info.license.replace(/\*$/g, '');
 38869        if (!(0, (_util || _load_util()).isValidLicense)(license)) {
 38870          warn(reporter.lang('manifestLicenseInvalid'));
 38871        }
 38872      } else {
 38873        warn(reporter.lang('manifestLicenseNone'));
 38874      }
 38875    }
 38876  
 38877    // validate strings
 38878    for (var _iterator = strings, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 38879      var _ref;
 38880  
 38881      if (_isArray) {
 38882        if (_i >= _iterator.length) break;
 38883        _ref = _iterator[_i++];
 38884      } else {
 38885        _i = _iterator.next();
 38886        if (_i.done) break;
 38887        _ref = _i.value;
 38888      }
 38889  
 38890      const key = _ref;
 38891  
 38892      const val = info[key];
 38893      if (val && typeof val !== 'string') {
 38894        throw new (_errors || _load_errors()).MessageError(reporter.lang('manifestStringExpected', key));
 38895      }
 38896    }
 38897  
 38898    cleanDependencies(info, isRoot, reporter, warn);
 38899  };
 38900  
 38901  exports.cleanDependencies = cleanDependencies;
 38902  
 38903  var _errors;
 38904  
 38905  function _load_errors() {
 38906    return _errors = __webpack_require__(6);
 38907  }
 38908  
 38909  var _util;
 38910  
 38911  function _load_util() {
 38912    return _util = __webpack_require__(219);
 38913  }
 38914  
 38915  var _typos;
 38916  
 38917  function _load_typos() {
 38918    return _typos = _interopRequireDefault(__webpack_require__(555));
 38919  }
 38920  
 38921  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 38922  
 38923  const isBuiltinModule = __webpack_require__(730);
 38924  
 38925  const strings = ['name', 'version'];
 38926  
 38927  const dependencyKeys = [
 38928  // npm registry will include optionalDependencies in dependencies and we'll want to dedupe them from the
 38929  // other fields first
 38930  'optionalDependencies',
 38931  
 38932  // it's seemingly common to include a dependency in dependencies and devDependencies of the same name but
 38933  // different ranges, this can cause a lot of issues with our determinism and the behaviour of npm is
 38934  // currently unspecified.
 38935  'dependencies', 'devDependencies'];
 38936  
 38937  function isValidName(name) {
 38938    return !name.match(/[\/@\s\+%:]/) && encodeURIComponent(name) === name;
 38939  }
 38940  
 38941  function isValidScopedName(name) {
 38942    if (name[0] !== '@') {
 38943      return false;
 38944    }
 38945  
 38946    const parts = name.slice(1).split('/');
 38947    return parts.length === 2 && isValidName(parts[0]) && isValidName(parts[1]);
 38948  }
 38949  
 38950  function isValidPackageName(name) {
 38951    return isValidName(name) || isValidScopedName(name);
 38952  }
 38953  
 38954  function cleanDependencies(info, isRoot, reporter, warn) {
 38955    // get dependency objects
 38956    const depTypes = [];
 38957    for (var _iterator2 = dependencyKeys, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 38958      var _ref2;
 38959  
 38960      if (_isArray2) {
 38961        if (_i2 >= _iterator2.length) break;
 38962        _ref2 = _iterator2[_i2++];
 38963      } else {
 38964        _i2 = _iterator2.next();
 38965        if (_i2.done) break;
 38966        _ref2 = _i2.value;
 38967      }
 38968  
 38969      const type = _ref2;
 38970  
 38971      const deps = info[type];
 38972      if (!deps || typeof deps !== 'object') {
 38973        continue;
 38974      }
 38975      depTypes.push([type, deps]);
 38976    }
 38977  
 38978    // aggregate all non-trivial deps (not '' or '*')
 38979    const nonTrivialDeps = new Map();
 38980    for (var _iterator3 = depTypes, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 38981      var _ref4;
 38982  
 38983      if (_isArray3) {
 38984        if (_i3 >= _iterator3.length) break;
 38985        _ref4 = _iterator3[_i3++];
 38986      } else {
 38987        _i3 = _iterator3.next();
 38988        if (_i3.done) break;
 38989        _ref4 = _i3.value;
 38990      }
 38991  
 38992      const _ref3 = _ref4;
 38993      const type = _ref3[0];
 38994      const deps = _ref3[1];
 38995  
 38996      for (var _iterator5 = Object.keys(deps), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
 38997        var _ref7;
 38998  
 38999        if (_isArray5) {
 39000          if (_i5 >= _iterator5.length) break;
 39001          _ref7 = _iterator5[_i5++];
 39002        } else {
 39003          _i5 = _iterator5.next();
 39004          if (_i5.done) break;
 39005          _ref7 = _i5.value;
 39006        }
 39007  
 39008        const name = _ref7;
 39009  
 39010        const version = deps[name];
 39011        if (!nonTrivialDeps.has(name) && version && version !== '*') {
 39012          nonTrivialDeps.set(name, { type, version });
 39013        }
 39014      }
 39015    }
 39016  
 39017    // overwrite first dep of package with non-trivial version, remove the rest
 39018    const setDeps = new Set();
 39019    for (var _iterator4 = depTypes, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 39020      var _ref6;
 39021  
 39022      if (_isArray4) {
 39023        if (_i4 >= _iterator4.length) break;
 39024        _ref6 = _iterator4[_i4++];
 39025      } else {
 39026        _i4 = _iterator4.next();
 39027        if (_i4.done) break;
 39028        _ref6 = _i4.value;
 39029      }
 39030  
 39031      const _ref5 = _ref6;
 39032      const type = _ref5[0];
 39033      const deps = _ref5[1];
 39034  
 39035      for (var _iterator6 = Object.keys(deps), _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
 39036        var _ref8;
 39037  
 39038        if (_isArray6) {
 39039          if (_i6 >= _iterator6.length) break;
 39040          _ref8 = _iterator6[_i6++];
 39041        } else {
 39042          _i6 = _iterator6.next();
 39043          if (_i6.done) break;
 39044          _ref8 = _i6.value;
 39045        }
 39046  
 39047        const name = _ref8;
 39048  
 39049        let version = deps[name];
 39050  
 39051        const dep = nonTrivialDeps.get(name);
 39052        if (dep) {
 39053          if (version && version !== '*' && version !== dep.version && isRoot) {
 39054            // only throw a warning when at the root
 39055            warn(reporter.lang('manifestDependencyCollision', dep.type, name, dep.version, type, version));
 39056          }
 39057          version = dep.version;
 39058        }
 39059  
 39060        if (setDeps.has(name)) {
 39061          delete deps[name];
 39062        } else {
 39063          deps[name] = version;
 39064          setDeps.add(name);
 39065        }
 39066      }
 39067    }
 39068  }
 39069  
 39070  /***/ }),
 39071  /* 126 */
 39072  /***/ (function(module, exports, __webpack_require__) {
 39073  
 39074  // getting tag from 19.1.3.6 Object.prototype.toString()
 39075  var cof = __webpack_require__(69);
 39076  var TAG = __webpack_require__(21)('toStringTag');
 39077  // ES3 wrong here
 39078  var ARG = cof(function () { return arguments; }()) == 'Arguments';
 39079  
 39080  // fallback for IE11 Script Access Denied error
 39081  var tryGet = function (it, key) {
 39082    try {
 39083      return it[key];
 39084    } catch (e) { /* empty */ }
 39085  };
 39086  
 39087  module.exports = function (it) {
 39088    var O, T, B;
 39089    return it === undefined ? 'Undefined' : it === null ? 'Null'
 39090      // @@toStringTag case
 39091      : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
 39092      // builtinTag case
 39093      : ARG ? cof(O)
 39094      // ES3 arguments fallback
 39095      : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
 39096  };
 39097  
 39098  
 39099  /***/ }),
 39100  /* 127 */
 39101  /***/ (function(module, exports) {
 39102  
 39103  // IE 8- don't enum bug keys
 39104  module.exports = (
 39105    'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
 39106  ).split(',');
 39107  
 39108  
 39109  /***/ }),
 39110  /* 128 */
 39111  /***/ (function(module, exports, __webpack_require__) {
 39112  
 39113  var document = __webpack_require__(17).document;
 39114  module.exports = document && document.documentElement;
 39115  
 39116  
 39117  /***/ }),
 39118  /* 129 */
 39119  /***/ (function(module, exports, __webpack_require__) {
 39120  
 39121  "use strict";
 39122  
 39123  var LIBRARY = __webpack_require__(93);
 39124  var $export = __webpack_require__(60);
 39125  var redefine = __webpack_require__(248);
 39126  var hide = __webpack_require__(42);
 39127  var Iterators = __webpack_require__(54);
 39128  var $iterCreate = __webpack_require__(239);
 39129  var setToStringTag = __webpack_require__(95);
 39130  var getPrototypeOf = __webpack_require__(245);
 39131  var ITERATOR = __webpack_require__(21)('iterator');
 39132  var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
 39133  var FF_ITERATOR = '@@iterator';
 39134  var KEYS = 'keys';
 39135  var VALUES = 'values';
 39136  
 39137  var returnThis = function () { return this; };
 39138  
 39139  module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
 39140    $iterCreate(Constructor, NAME, next);
 39141    var getMethod = function (kind) {
 39142      if (!BUGGY && kind in proto) return proto[kind];
 39143      switch (kind) {
 39144        case KEYS: return function keys() { return new Constructor(this, kind); };
 39145        case VALUES: return function values() { return new Constructor(this, kind); };
 39146      } return function entries() { return new Constructor(this, kind); };
 39147    };
 39148    var TAG = NAME + ' Iterator';
 39149    var DEF_VALUES = DEFAULT == VALUES;
 39150    var VALUES_BUG = false;
 39151    var proto = Base.prototype;
 39152    var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
 39153    var $default = $native || getMethod(DEFAULT);
 39154    var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
 39155    var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
 39156    var methods, key, IteratorPrototype;
 39157    // Fix native
 39158    if ($anyNative) {
 39159      IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
 39160      if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
 39161        // Set @@toStringTag to native iterators
 39162        setToStringTag(IteratorPrototype, TAG, true);
 39163        // fix for some old engines
 39164        if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
 39165      }
 39166    }
 39167    // fix Array#{values, @@iterator}.name in V8 / FF
 39168    if (DEF_VALUES && $native && $native.name !== VALUES) {
 39169      VALUES_BUG = true;
 39170      $default = function values() { return $native.call(this); };
 39171    }
 39172    // Define iterator
 39173    if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
 39174      hide(proto, ITERATOR, $default);
 39175    }
 39176    // Plug for library
 39177    Iterators[NAME] = $default;
 39178    Iterators[TAG] = returnThis;
 39179    if (DEFAULT) {
 39180      methods = {
 39181        values: DEF_VALUES ? $default : getMethod(VALUES),
 39182        keys: IS_SET ? $default : getMethod(KEYS),
 39183        entries: $entries
 39184      };
 39185      if (FORCED) for (key in methods) {
 39186        if (!(key in proto)) redefine(proto, key, methods[key]);
 39187      } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
 39188    }
 39189    return methods;
 39190  };
 39191  
 39192  
 39193  /***/ }),
 39194  /* 130 */
 39195  /***/ (function(module, exports) {
 39196  
 39197  module.exports = function (exec) {
 39198    try {
 39199      return { e: false, v: exec() };
 39200    } catch (e) {
 39201      return { e: true, v: e };
 39202    }
 39203  };
 39204  
 39205  
 39206  /***/ }),
 39207  /* 131 */
 39208  /***/ (function(module, exports, __webpack_require__) {
 39209  
 39210  var anObject = __webpack_require__(35);
 39211  var isObject = __webpack_require__(53);
 39212  var newPromiseCapability = __webpack_require__(94);
 39213  
 39214  module.exports = function (C, x) {
 39215    anObject(C);
 39216    if (isObject(x) && x.constructor === C) return x;
 39217    var promiseCapability = newPromiseCapability.f(C);
 39218    var resolve = promiseCapability.resolve;
 39219    resolve(x);
 39220    return promiseCapability.promise;
 39221  };
 39222  
 39223  
 39224  /***/ }),
 39225  /* 132 */
 39226  /***/ (function(module, exports) {
 39227  
 39228  module.exports = function (bitmap, value) {
 39229    return {
 39230      enumerable: !(bitmap & 1),
 39231      configurable: !(bitmap & 2),
 39232      writable: !(bitmap & 4),
 39233      value: value
 39234    };
 39235  };
 39236  
 39237  
 39238  /***/ }),
 39239  /* 133 */
 39240  /***/ (function(module, exports, __webpack_require__) {
 39241  
 39242  var core = __webpack_require__(31);
 39243  var global = __webpack_require__(17);
 39244  var SHARED = '__core-js_shared__';
 39245  var store = global[SHARED] || (global[SHARED] = {});
 39246  
 39247  (module.exports = function (key, value) {
 39248    return store[key] || (store[key] = value !== undefined ? value : {});
 39249  })('versions', []).push({
 39250    version: core.version,
 39251    mode: __webpack_require__(93) ? 'pure' : 'global',
 39252    copyright: '© 2018 Denis Pushkarev (zloirock.ru)'
 39253  });
 39254  
 39255  
 39256  /***/ }),
 39257  /* 134 */
 39258  /***/ (function(module, exports, __webpack_require__) {
 39259  
 39260  // 7.3.20 SpeciesConstructor(O, defaultConstructor)
 39261  var anObject = __webpack_require__(35);
 39262  var aFunction = __webpack_require__(68);
 39263  var SPECIES = __webpack_require__(21)('species');
 39264  module.exports = function (O, D) {
 39265    var C = anObject(O).constructor;
 39266    var S;
 39267    return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
 39268  };
 39269  
 39270  
 39271  /***/ }),
 39272  /* 135 */
 39273  /***/ (function(module, exports, __webpack_require__) {
 39274  
 39275  var ctx = __webpack_require__(70);
 39276  var invoke = __webpack_require__(236);
 39277  var html = __webpack_require__(128);
 39278  var cel = __webpack_require__(92);
 39279  var global = __webpack_require__(17);
 39280  var process = global.process;
 39281  var setTask = global.setImmediate;
 39282  var clearTask = global.clearImmediate;
 39283  var MessageChannel = global.MessageChannel;
 39284  var Dispatch = global.Dispatch;
 39285  var counter = 0;
 39286  var queue = {};
 39287  var ONREADYSTATECHANGE = 'onreadystatechange';
 39288  var defer, channel, port;
 39289  var run = function () {
 39290    var id = +this;
 39291    // eslint-disable-next-line no-prototype-builtins
 39292    if (queue.hasOwnProperty(id)) {
 39293      var fn = queue[id];
 39294      delete queue[id];
 39295      fn();
 39296    }
 39297  };
 39298  var listener = function (event) {
 39299    run.call(event.data);
 39300  };
 39301  // Node.js 0.9+ & IE10+ has setImmediate, otherwise:
 39302  if (!setTask || !clearTask) {
 39303    setTask = function setImmediate(fn) {
 39304      var args = [];
 39305      var i = 1;
 39306      while (arguments.length > i) args.push(arguments[i++]);
 39307      queue[++counter] = function () {
 39308        // eslint-disable-next-line no-new-func
 39309        invoke(typeof fn == 'function' ? fn : Function(fn), args);
 39310      };
 39311      defer(counter);
 39312      return counter;
 39313    };
 39314    clearTask = function clearImmediate(id) {
 39315      delete queue[id];
 39316    };
 39317    // Node.js 0.8-
 39318    if (__webpack_require__(69)(process) == 'process') {
 39319      defer = function (id) {
 39320        process.nextTick(ctx(run, id, 1));
 39321      };
 39322    // Sphere (JS game engine) Dispatch API
 39323    } else if (Dispatch && Dispatch.now) {
 39324      defer = function (id) {
 39325        Dispatch.now(ctx(run, id, 1));
 39326      };
 39327    // Browsers with MessageChannel, includes WebWorkers
 39328    } else if (MessageChannel) {
 39329      channel = new MessageChannel();
 39330      port = channel.port2;
 39331      channel.port1.onmessage = listener;
 39332      defer = ctx(port.postMessage, port, 1);
 39333    // Browsers with postMessage, skip WebWorkers
 39334    // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
 39335    } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
 39336      defer = function (id) {
 39337        global.postMessage(id + '', '*');
 39338      };
 39339      global.addEventListener('message', listener, false);
 39340    // IE8-
 39341    } else if (ONREADYSTATECHANGE in cel('script')) {
 39342      defer = function (id) {
 39343        html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
 39344          html.removeChild(this);
 39345          run.call(id);
 39346        };
 39347      };
 39348    // Rest old browsers
 39349    } else {
 39350      defer = function (id) {
 39351        setTimeout(ctx(run, id, 1), 0);
 39352      };
 39353    }
 39354  }
 39355  module.exports = {
 39356    set: setTask,
 39357    clear: clearTask
 39358  };
 39359  
 39360  
 39361  /***/ }),
 39362  /* 136 */
 39363  /***/ (function(module, exports, __webpack_require__) {
 39364  
 39365  // 7.1.15 ToLength
 39366  var toInteger = __webpack_require__(97);
 39367  var min = Math.min;
 39368  module.exports = function (it) {
 39369    return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
 39370  };
 39371  
 39372  
 39373  /***/ }),
 39374  /* 137 */
 39375  /***/ (function(module, exports) {
 39376  
 39377  var id = 0;
 39378  var px = Math.random();
 39379  module.exports = function (key) {
 39380    return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
 39381  };
 39382  
 39383  
 39384  /***/ }),
 39385  /* 138 */
 39386  /***/ (function(module, exports, __webpack_require__) {
 39387  
 39388  
 39389  /**
 39390   * This is the common logic for both the Node.js and web browser
 39391   * implementations of `debug()`.
 39392   *
 39393   * Expose `debug()` as the module.
 39394   */
 39395  
 39396  exports = module.exports = createDebug.debug = createDebug['default'] = createDebug;
 39397  exports.coerce = coerce;
 39398  exports.disable = disable;
 39399  exports.enable = enable;
 39400  exports.enabled = enabled;
 39401  exports.humanize = __webpack_require__(301);
 39402  
 39403  /**
 39404   * Active `debug` instances.
 39405   */
 39406  exports.instances = [];
 39407  
 39408  /**
 39409   * The currently active debug mode names, and names to skip.
 39410   */
 39411  
 39412  exports.names = [];
 39413  exports.skips = [];
 39414  
 39415  /**
 39416   * Map of special "%n" handling functions, for the debug "format" argument.
 39417   *
 39418   * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
 39419   */
 39420  
 39421  exports.formatters = {};
 39422  
 39423  /**
 39424   * Select a color.
 39425   * @param {String} namespace
 39426   * @return {Number}
 39427   * @api private
 39428   */
 39429  
 39430  function selectColor(namespace) {
 39431    var hash = 0, i;
 39432  
 39433    for (i in namespace) {
 39434      hash  = ((hash << 5) - hash) + namespace.charCodeAt(i);
 39435      hash |= 0; // Convert to 32bit integer
 39436    }
 39437  
 39438    return exports.colors[Math.abs(hash) % exports.colors.length];
 39439  }
 39440  
 39441  /**
 39442   * Create a debugger with the given `namespace`.
 39443   *
 39444   * @param {String} namespace
 39445   * @return {Function}
 39446   * @api public
 39447   */
 39448  
 39449  function createDebug(namespace) {
 39450  
 39451    var prevTime;
 39452  
 39453    function debug() {
 39454      // disabled?
 39455      if (!debug.enabled) return;
 39456  
 39457      var self = debug;
 39458  
 39459      // set `diff` timestamp
 39460      var curr = +new Date();
 39461      var ms = curr - (prevTime || curr);
 39462      self.diff = ms;
 39463      self.prev = prevTime;
 39464      self.curr = curr;
 39465      prevTime = curr;
 39466  
 39467      // turn the `arguments` into a proper Array
 39468      var args = new Array(arguments.length);
 39469      for (var i = 0; i < args.length; i++) {
 39470        args[i] = arguments[i];
 39471      }
 39472  
 39473      args[0] = exports.coerce(args[0]);
 39474  
 39475      if ('string' !== typeof args[0]) {
 39476        // anything else let's inspect with %O
 39477        args.unshift('%O');
 39478      }
 39479  
 39480      // apply any `formatters` transformations
 39481      var index = 0;
 39482      args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {
 39483        // if we encounter an escaped % then don't increase the array index
 39484        if (match === '%%') return match;
 39485        index++;
 39486        var formatter = exports.formatters[format];
 39487        if ('function' === typeof formatter) {
 39488          var val = args[index];
 39489          match = formatter.call(self, val);
 39490  
 39491          // now we need to remove `args[index]` since it's inlined in the `format`
 39492          args.splice(index, 1);
 39493          index--;
 39494        }
 39495        return match;
 39496      });
 39497  
 39498      // apply env-specific formatting (colors, etc.)
 39499      exports.formatArgs.call(self, args);
 39500  
 39501      var logFn = debug.log || exports.log || console.log.bind(console);
 39502      logFn.apply(self, args);
 39503    }
 39504  
 39505    debug.namespace = namespace;
 39506    debug.enabled = exports.enabled(namespace);
 39507    debug.useColors = exports.useColors();
 39508    debug.color = selectColor(namespace);
 39509    debug.destroy = destroy;
 39510  
 39511    // env-specific initialization logic for debug instances
 39512    if ('function' === typeof exports.init) {
 39513      exports.init(debug);
 39514    }
 39515  
 39516    exports.instances.push(debug);
 39517  
 39518    return debug;
 39519  }
 39520  
 39521  function destroy () {
 39522    var index = exports.instances.indexOf(this);
 39523    if (index !== -1) {
 39524      exports.instances.splice(index, 1);
 39525      return true;
 39526    } else {
 39527      return false;
 39528    }
 39529  }
 39530  
 39531  /**
 39532   * Enables a debug mode by namespaces. This can include modes
 39533   * separated by a colon and wildcards.
 39534   *
 39535   * @param {String} namespaces
 39536   * @api public
 39537   */
 39538  
 39539  function enable(namespaces) {
 39540    exports.save(namespaces);
 39541  
 39542    exports.names = [];
 39543    exports.skips = [];
 39544  
 39545    var i;
 39546    var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
 39547    var len = split.length;
 39548  
 39549    for (i = 0; i < len; i++) {
 39550      if (!split[i]) continue; // ignore empty strings
 39551      namespaces = split[i].replace(/\*/g, '.*?');
 39552      if (namespaces[0] === '-') {
 39553        exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));
 39554      } else {
 39555        exports.names.push(new RegExp('^' + namespaces + '$'));
 39556      }
 39557    }
 39558  
 39559    for (i = 0; i < exports.instances.length; i++) {
 39560      var instance = exports.instances[i];
 39561      instance.enabled = exports.enabled(instance.namespace);
 39562    }
 39563  }
 39564  
 39565  /**
 39566   * Disable debug output.
 39567   *
 39568   * @api public
 39569   */
 39570  
 39571  function disable() {
 39572    exports.enable('');
 39573  }
 39574  
 39575  /**
 39576   * Returns true if the given mode name is enabled, false otherwise.
 39577   *
 39578   * @param {String} name
 39579   * @return {Boolean}
 39580   * @api public
 39581   */
 39582  
 39583  function enabled(name) {
 39584    if (name[name.length - 1] === '*') {
 39585      return true;
 39586    }
 39587    var i, len;
 39588    for (i = 0, len = exports.skips.length; i < len; i++) {
 39589      if (exports.skips[i].test(name)) {
 39590        return false;
 39591      }
 39592    }
 39593    for (i = 0, len = exports.names.length; i < len; i++) {
 39594      if (exports.names[i].test(name)) {
 39595        return true;
 39596      }
 39597    }
 39598    return false;
 39599  }
 39600  
 39601  /**
 39602   * Coerce `val`.
 39603   *
 39604   * @param {Mixed} val
 39605   * @return {Mixed}
 39606   * @api private
 39607   */
 39608  
 39609  function coerce(val) {
 39610    if (val instanceof Error) return val.stack || val.message;
 39611    return val;
 39612  }
 39613  
 39614  
 39615  /***/ }),
 39616  /* 139 */
 39617  /***/ (function(module, exports, __webpack_require__) {
 39618  
 39619  // Basic Javascript Elliptic Curve implementation
 39620  // Ported loosely from BouncyCastle's Java EC code
 39621  // Only Fp curves implemented for now
 39622  
 39623  // Requires jsbn.js and jsbn2.js
 39624  var BigInteger = __webpack_require__(81).BigInteger
 39625  var Barrett = BigInteger.prototype.Barrett
 39626  
 39627  // ----------------
 39628  // ECFieldElementFp
 39629  
 39630  // constructor
 39631  function ECFieldElementFp(q,x) {
 39632      this.x = x;
 39633      // TODO if(x.compareTo(q) >= 0) error
 39634      this.q = q;
 39635  }
 39636  
 39637  function feFpEquals(other) {
 39638      if(other == this) return true;
 39639      return (this.q.equals(other.q) && this.x.equals(other.x));
 39640  }
 39641  
 39642  function feFpToBigInteger() {
 39643      return this.x;
 39644  }
 39645  
 39646  function feFpNegate() {
 39647      return new ECFieldElementFp(this.q, this.x.negate().mod(this.q));
 39648  }
 39649  
 39650  function feFpAdd(b) {
 39651      return new ECFieldElementFp(this.q, this.x.add(b.toBigInteger()).mod(this.q));
 39652  }
 39653  
 39654  function feFpSubtract(b) {
 39655      return new ECFieldElementFp(this.q, this.x.subtract(b.toBigInteger()).mod(this.q));
 39656  }
 39657  
 39658  function feFpMultiply(b) {
 39659      return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger()).mod(this.q));
 39660  }
 39661  
 39662  function feFpSquare() {
 39663      return new ECFieldElementFp(this.q, this.x.square().mod(this.q));
 39664  }
 39665  
 39666  function feFpDivide(b) {
 39667      return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger().modInverse(this.q)).mod(this.q));
 39668  }
 39669  
 39670  ECFieldElementFp.prototype.equals = feFpEquals;
 39671  ECFieldElementFp.prototype.toBigInteger = feFpToBigInteger;
 39672  ECFieldElementFp.prototype.negate = feFpNegate;
 39673  ECFieldElementFp.prototype.add = feFpAdd;
 39674  ECFieldElementFp.prototype.subtract = feFpSubtract;
 39675  ECFieldElementFp.prototype.multiply = feFpMultiply;
 39676  ECFieldElementFp.prototype.square = feFpSquare;
 39677  ECFieldElementFp.prototype.divide = feFpDivide;
 39678  
 39679  // ----------------
 39680  // ECPointFp
 39681  
 39682  // constructor
 39683  function ECPointFp(curve,x,y,z) {
 39684      this.curve = curve;
 39685      this.x = x;
 39686      this.y = y;
 39687      // Projective coordinates: either zinv == null or z * zinv == 1
 39688      // z and zinv are just BigIntegers, not fieldElements
 39689      if(z == null) {
 39690        this.z = BigInteger.ONE;
 39691      }
 39692      else {
 39693        this.z = z;
 39694      }
 39695      this.zinv = null;
 39696      //TODO: compression flag
 39697  }
 39698  
 39699  function pointFpGetX() {
 39700      if(this.zinv == null) {
 39701        this.zinv = this.z.modInverse(this.curve.q);
 39702      }
 39703      var r = this.x.toBigInteger().multiply(this.zinv);
 39704      this.curve.reduce(r);
 39705      return this.curve.fromBigInteger(r);
 39706  }
 39707  
 39708  function pointFpGetY() {
 39709      if(this.zinv == null) {
 39710        this.zinv = this.z.modInverse(this.curve.q);
 39711      }
 39712      var r = this.y.toBigInteger().multiply(this.zinv);
 39713      this.curve.reduce(r);
 39714      return this.curve.fromBigInteger(r);
 39715  }
 39716  
 39717  function pointFpEquals(other) {
 39718      if(other == this) return true;
 39719      if(this.isInfinity()) return other.isInfinity();
 39720      if(other.isInfinity()) return this.isInfinity();
 39721      var u, v;
 39722      // u = Y2 * Z1 - Y1 * Z2
 39723      u = other.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(other.z)).mod(this.curve.q);
 39724      if(!u.equals(BigInteger.ZERO)) return false;
 39725      // v = X2 * Z1 - X1 * Z2
 39726      v = other.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(other.z)).mod(this.curve.q);
 39727      return v.equals(BigInteger.ZERO);
 39728  }
 39729  
 39730  function pointFpIsInfinity() {
 39731      if((this.x == null) && (this.y == null)) return true;
 39732      return this.z.equals(BigInteger.ZERO) && !this.y.toBigInteger().equals(BigInteger.ZERO);
 39733  }
 39734  
 39735  function pointFpNegate() {
 39736      return new ECPointFp(this.curve, this.x, this.y.negate(), this.z);
 39737  }
 39738  
 39739  function pointFpAdd(b) {
 39740      if(this.isInfinity()) return b;
 39741      if(b.isInfinity()) return this;
 39742  
 39743      // u = Y2 * Z1 - Y1 * Z2
 39744      var u = b.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(b.z)).mod(this.curve.q);
 39745      // v = X2 * Z1 - X1 * Z2
 39746      var v = b.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(b.z)).mod(this.curve.q);
 39747  
 39748      if(BigInteger.ZERO.equals(v)) {
 39749          if(BigInteger.ZERO.equals(u)) {
 39750              return this.twice(); // this == b, so double
 39751          }
 39752  	return this.curve.getInfinity(); // this = -b, so infinity
 39753      }
 39754  
 39755      var THREE = new BigInteger("3");
 39756      var x1 = this.x.toBigInteger();
 39757      var y1 = this.y.toBigInteger();
 39758      var x2 = b.x.toBigInteger();
 39759      var y2 = b.y.toBigInteger();
 39760  
 39761      var v2 = v.square();
 39762      var v3 = v2.multiply(v);
 39763      var x1v2 = x1.multiply(v2);
 39764      var zu2 = u.square().multiply(this.z);
 39765  
 39766      // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)
 39767      var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.q);
 39768      // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3
 39769      var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.q);
 39770      // z3 = v^3 * z1 * z2
 39771      var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.q);
 39772  
 39773      return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3);
 39774  }
 39775  
 39776  function pointFpTwice() {
 39777      if(this.isInfinity()) return this;
 39778      if(this.y.toBigInteger().signum() == 0) return this.curve.getInfinity();
 39779  
 39780      // TODO: optimized handling of constants
 39781      var THREE = new BigInteger("3");
 39782      var x1 = this.x.toBigInteger();
 39783      var y1 = this.y.toBigInteger();
 39784  
 39785      var y1z1 = y1.multiply(this.z);
 39786      var y1sqz1 = y1z1.multiply(y1).mod(this.curve.q);
 39787      var a = this.curve.a.toBigInteger();
 39788  
 39789      // w = 3 * x1^2 + a * z1^2
 39790      var w = x1.square().multiply(THREE);
 39791      if(!BigInteger.ZERO.equals(a)) {
 39792        w = w.add(this.z.square().multiply(a));
 39793      }
 39794      w = w.mod(this.curve.q);
 39795      //this.curve.reduce(w);
 39796      // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)
 39797      var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.q);
 39798      // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3
 39799      var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.square().multiply(w)).mod(this.curve.q);
 39800      // z3 = 8 * (y1 * z1)^3
 39801      var z3 = y1z1.square().multiply(y1z1).shiftLeft(3).mod(this.curve.q);
 39802  
 39803      return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3);
 39804  }
 39805  
 39806  // Simple NAF (Non-Adjacent Form) multiplication algorithm
 39807  // TODO: modularize the multiplication algorithm
 39808  function pointFpMultiply(k) {
 39809      if(this.isInfinity()) return this;
 39810      if(k.signum() == 0) return this.curve.getInfinity();
 39811  
 39812      var e = k;
 39813      var h = e.multiply(new BigInteger("3"));
 39814  
 39815      var neg = this.negate();
 39816      var R = this;
 39817  
 39818      var i;
 39819      for(i = h.bitLength() - 2; i > 0; --i) {
 39820  	R = R.twice();
 39821  
 39822  	var hBit = h.testBit(i);
 39823  	var eBit = e.testBit(i);
 39824  
 39825  	if (hBit != eBit) {
 39826  	    R = R.add(hBit ? this : neg);
 39827  	}
 39828      }
 39829  
 39830      return R;
 39831  }
 39832  
 39833  // Compute this*j + x*k (simultaneous multiplication)
 39834  function pointFpMultiplyTwo(j,x,k) {
 39835    var i;
 39836    if(j.bitLength() > k.bitLength())
 39837      i = j.bitLength() - 1;
 39838    else
 39839      i = k.bitLength() - 1;
 39840  
 39841    var R = this.curve.getInfinity();
 39842    var both = this.add(x);
 39843    while(i >= 0) {
 39844      R = R.twice();
 39845      if(j.testBit(i)) {
 39846        if(k.testBit(i)) {
 39847          R = R.add(both);
 39848        }
 39849        else {
 39850          R = R.add(this);
 39851        }
 39852      }
 39853      else {
 39854        if(k.testBit(i)) {
 39855          R = R.add(x);
 39856        }
 39857      }
 39858      --i;
 39859    }
 39860  
 39861    return R;
 39862  }
 39863  
 39864  ECPointFp.prototype.getX = pointFpGetX;
 39865  ECPointFp.prototype.getY = pointFpGetY;
 39866  ECPointFp.prototype.equals = pointFpEquals;
 39867  ECPointFp.prototype.isInfinity = pointFpIsInfinity;
 39868  ECPointFp.prototype.negate = pointFpNegate;
 39869  ECPointFp.prototype.add = pointFpAdd;
 39870  ECPointFp.prototype.twice = pointFpTwice;
 39871  ECPointFp.prototype.multiply = pointFpMultiply;
 39872  ECPointFp.prototype.multiplyTwo = pointFpMultiplyTwo;
 39873  
 39874  // ----------------
 39875  // ECCurveFp
 39876  
 39877  // constructor
 39878  function ECCurveFp(q,a,b) {
 39879      this.q = q;
 39880      this.a = this.fromBigInteger(a);
 39881      this.b = this.fromBigInteger(b);
 39882      this.infinity = new ECPointFp(this, null, null);
 39883      this.reducer = new Barrett(this.q);
 39884  }
 39885  
 39886  function curveFpGetQ() {
 39887      return this.q;
 39888  }
 39889  
 39890  function curveFpGetA() {
 39891      return this.a;
 39892  }
 39893  
 39894  function curveFpGetB() {
 39895      return this.b;
 39896  }
 39897  
 39898  function curveFpEquals(other) {
 39899      if(other == this) return true;
 39900      return(this.q.equals(other.q) && this.a.equals(other.a) && this.b.equals(other.b));
 39901  }
 39902  
 39903  function curveFpGetInfinity() {
 39904      return this.infinity;
 39905  }
 39906  
 39907  function curveFpFromBigInteger(x) {
 39908      return new ECFieldElementFp(this.q, x);
 39909  }
 39910  
 39911  function curveReduce(x) {
 39912      this.reducer.reduce(x);
 39913  }
 39914  
 39915  // for now, work with hex strings because they're easier in JS
 39916  function curveFpDecodePointHex(s) {
 39917      switch(parseInt(s.substr(0,2), 16)) { // first byte
 39918      case 0:
 39919  	return this.infinity;
 39920      case 2:
 39921      case 3:
 39922  	// point compression not supported yet
 39923  	return null;
 39924      case 4:
 39925      case 6:
 39926      case 7:
 39927  	var len = (s.length - 2) / 2;
 39928  	var xHex = s.substr(2, len);
 39929  	var yHex = s.substr(len+2, len);
 39930  
 39931  	return new ECPointFp(this,
 39932  			     this.fromBigInteger(new BigInteger(xHex, 16)),
 39933  			     this.fromBigInteger(new BigInteger(yHex, 16)));
 39934  
 39935      default: // unsupported
 39936  	return null;
 39937      }
 39938  }
 39939  
 39940  function curveFpEncodePointHex(p) {
 39941  	if (p.isInfinity()) return "00";
 39942  	var xHex = p.getX().toBigInteger().toString(16);
 39943  	var yHex = p.getY().toBigInteger().toString(16);
 39944  	var oLen = this.getQ().toString(16).length;
 39945  	if ((oLen % 2) != 0) oLen++;
 39946  	while (xHex.length < oLen) {
 39947  		xHex = "0" + xHex;
 39948  	}
 39949  	while (yHex.length < oLen) {
 39950  		yHex = "0" + yHex;
 39951  	}
 39952  	return "04" + xHex + yHex;
 39953  }
 39954  
 39955  ECCurveFp.prototype.getQ = curveFpGetQ;
 39956  ECCurveFp.prototype.getA = curveFpGetA;
 39957  ECCurveFp.prototype.getB = curveFpGetB;
 39958  ECCurveFp.prototype.equals = curveFpEquals;
 39959  ECCurveFp.prototype.getInfinity = curveFpGetInfinity;
 39960  ECCurveFp.prototype.fromBigInteger = curveFpFromBigInteger;
 39961  ECCurveFp.prototype.reduce = curveReduce;
 39962  //ECCurveFp.prototype.decodePointHex = curveFpDecodePointHex;
 39963  ECCurveFp.prototype.encodePointHex = curveFpEncodePointHex;
 39964  
 39965  // from: https://github.com/kaielvin/jsbn-ec-point-compression
 39966  ECCurveFp.prototype.decodePointHex = function(s)
 39967  {
 39968  	var yIsEven;
 39969      switch(parseInt(s.substr(0,2), 16)) { // first byte
 39970      case 0:
 39971  	return this.infinity;
 39972      case 2:
 39973  	yIsEven = false;
 39974      case 3:
 39975  	if(yIsEven == undefined) yIsEven = true;
 39976  	var len = s.length - 2;
 39977  	var xHex = s.substr(2, len);
 39978  	var x = this.fromBigInteger(new BigInteger(xHex,16));
 39979  	var alpha = x.multiply(x.square().add(this.getA())).add(this.getB());
 39980  	var beta = alpha.sqrt();
 39981  
 39982      if (beta == null) throw "Invalid point compression";
 39983  
 39984      var betaValue = beta.toBigInteger();
 39985      if (betaValue.testBit(0) != yIsEven)
 39986      {
 39987          // Use the other root
 39988          beta = this.fromBigInteger(this.getQ().subtract(betaValue));
 39989      }
 39990      return new ECPointFp(this,x,beta);
 39991      case 4:
 39992      case 6:
 39993      case 7:
 39994  	var len = (s.length - 2) / 2;
 39995  	var xHex = s.substr(2, len);
 39996  	var yHex = s.substr(len+2, len);
 39997  
 39998  	return new ECPointFp(this,
 39999  			     this.fromBigInteger(new BigInteger(xHex, 16)),
 40000  			     this.fromBigInteger(new BigInteger(yHex, 16)));
 40001  
 40002      default: // unsupported
 40003  	return null;
 40004      }
 40005  }
 40006  ECCurveFp.prototype.encodeCompressedPointHex = function(p)
 40007  {
 40008  	if (p.isInfinity()) return "00";
 40009  	var xHex = p.getX().toBigInteger().toString(16);
 40010  	var oLen = this.getQ().toString(16).length;
 40011  	if ((oLen % 2) != 0) oLen++;
 40012  	while (xHex.length < oLen)
 40013  		xHex = "0" + xHex;
 40014  	var yPrefix;
 40015  	if(p.getY().toBigInteger().isEven()) yPrefix = "02";
 40016  	else                                 yPrefix = "03";
 40017  
 40018  	return yPrefix + xHex;
 40019  }
 40020  
 40021  
 40022  ECFieldElementFp.prototype.getR = function()
 40023  {
 40024  	if(this.r != undefined) return this.r;
 40025  
 40026      this.r = null;
 40027      var bitLength = this.q.bitLength();
 40028      if (bitLength > 128)
 40029      {
 40030          var firstWord = this.q.shiftRight(bitLength - 64);
 40031          if (firstWord.intValue() == -1)
 40032          {
 40033              this.r = BigInteger.ONE.shiftLeft(bitLength).subtract(this.q);
 40034          }
 40035      }
 40036      return this.r;
 40037  }
 40038  ECFieldElementFp.prototype.modMult = function(x1,x2)
 40039  {
 40040      return this.modReduce(x1.multiply(x2));
 40041  }
 40042  ECFieldElementFp.prototype.modReduce = function(x)
 40043  {
 40044      if (this.getR() != null)
 40045      {
 40046          var qLen = q.bitLength();
 40047          while (x.bitLength() > (qLen + 1))
 40048          {
 40049              var u = x.shiftRight(qLen);
 40050              var v = x.subtract(u.shiftLeft(qLen));
 40051              if (!this.getR().equals(BigInteger.ONE))
 40052              {
 40053                  u = u.multiply(this.getR());
 40054              }
 40055              x = u.add(v); 
 40056          }
 40057          while (x.compareTo(q) >= 0)
 40058          {
 40059              x = x.subtract(q);
 40060          }
 40061      }
 40062      else
 40063      {
 40064          x = x.mod(q);
 40065      }
 40066      return x;
 40067  }
 40068  ECFieldElementFp.prototype.sqrt = function()
 40069  {
 40070      if (!this.q.testBit(0)) throw "unsupported";
 40071  
 40072      // p mod 4 == 3
 40073      if (this.q.testBit(1))
 40074      {
 40075      	var z = new ECFieldElementFp(this.q,this.x.modPow(this.q.shiftRight(2).add(BigInteger.ONE),this.q));
 40076      	return z.square().equals(this) ? z : null;
 40077      }
 40078  
 40079      // p mod 4 == 1
 40080      var qMinusOne = this.q.subtract(BigInteger.ONE);
 40081  
 40082      var legendreExponent = qMinusOne.shiftRight(1);
 40083      if (!(this.x.modPow(legendreExponent, this.q).equals(BigInteger.ONE)))
 40084      {
 40085          return null;
 40086      }
 40087  
 40088      var u = qMinusOne.shiftRight(2);
 40089      var k = u.shiftLeft(1).add(BigInteger.ONE);
 40090  
 40091      var Q = this.x;
 40092      var fourQ = modDouble(modDouble(Q));
 40093  
 40094      var U, V;
 40095      do
 40096      {
 40097          var P;
 40098          do
 40099          {
 40100              P = new BigInteger(this.q.bitLength(), new SecureRandom());
 40101          }
 40102          while (P.compareTo(this.q) >= 0
 40103              || !(P.multiply(P).subtract(fourQ).modPow(legendreExponent, this.q).equals(qMinusOne)));
 40104  
 40105          var result = this.lucasSequence(P, Q, k);
 40106          U = result[0];
 40107          V = result[1];
 40108  
 40109          if (this.modMult(V, V).equals(fourQ))
 40110          {
 40111              // Integer division by 2, mod q
 40112              if (V.testBit(0))
 40113              {
 40114                  V = V.add(q);
 40115              }
 40116  
 40117              V = V.shiftRight(1);
 40118  
 40119              return new ECFieldElementFp(q,V);
 40120          }
 40121      }
 40122      while (U.equals(BigInteger.ONE) || U.equals(qMinusOne));
 40123  
 40124      return null;
 40125  }
 40126  ECFieldElementFp.prototype.lucasSequence = function(P,Q,k)
 40127  {
 40128      var n = k.bitLength();
 40129      var s = k.getLowestSetBit();
 40130  
 40131      var Uh = BigInteger.ONE;
 40132      var Vl = BigInteger.TWO;
 40133      var Vh = P;
 40134      var Ql = BigInteger.ONE;
 40135      var Qh = BigInteger.ONE;
 40136  
 40137      for (var j = n - 1; j >= s + 1; --j)
 40138      {
 40139          Ql = this.modMult(Ql, Qh);
 40140  
 40141          if (k.testBit(j))
 40142          {
 40143              Qh = this.modMult(Ql, Q);
 40144              Uh = this.modMult(Uh, Vh);
 40145              Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql)));
 40146              Vh = this.modReduce(Vh.multiply(Vh).subtract(Qh.shiftLeft(1)));
 40147          }
 40148          else
 40149          {
 40150              Qh = Ql;
 40151              Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql));
 40152              Vh = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql)));
 40153              Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1)));
 40154          }
 40155      }
 40156  
 40157      Ql = this.modMult(Ql, Qh);
 40158      Qh = this.modMult(Ql, Q);
 40159      Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql));
 40160      Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql)));
 40161      Ql = this.modMult(Ql, Qh);
 40162  
 40163      for (var j = 1; j <= s; ++j)
 40164      {
 40165          Uh = this.modMult(Uh, Vl);
 40166          Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1)));
 40167          Ql = this.modMult(Ql, Ql);
 40168      }
 40169  
 40170      return [ Uh, Vl ];
 40171  }
 40172  
 40173  var exports = {
 40174    ECCurveFp: ECCurveFp,
 40175    ECPointFp: ECPointFp,
 40176    ECFieldElementFp: ECFieldElementFp
 40177  }
 40178  
 40179  module.exports = exports
 40180  
 40181  
 40182  /***/ }),
 40183  /* 140 */
 40184  /***/ (function(module, exports, __webpack_require__) {
 40185  
 40186  module.exports = realpath
 40187  realpath.realpath = realpath
 40188  realpath.sync = realpathSync
 40189  realpath.realpathSync = realpathSync
 40190  realpath.monkeypatch = monkeypatch
 40191  realpath.unmonkeypatch = unmonkeypatch
 40192  
 40193  var fs = __webpack_require__(4)
 40194  var origRealpath = fs.realpath
 40195  var origRealpathSync = fs.realpathSync
 40196  
 40197  var version = process.version
 40198  var ok = /^v[0-5]\./.test(version)
 40199  var old = __webpack_require__(268)
 40200  
 40201  function newError (er) {
 40202    return er && er.syscall === 'realpath' && (
 40203      er.code === 'ELOOP' ||
 40204      er.code === 'ENOMEM' ||
 40205      er.code === 'ENAMETOOLONG'
 40206    )
 40207  }
 40208  
 40209  function realpath (p, cache, cb) {
 40210    if (ok) {
 40211      return origRealpath(p, cache, cb)
 40212    }
 40213  
 40214    if (typeof cache === 'function') {
 40215      cb = cache
 40216      cache = null
 40217    }
 40218    origRealpath(p, cache, function (er, result) {
 40219      if (newError(er)) {
 40220        old.realpath(p, cache, cb)
 40221      } else {
 40222        cb(er, result)
 40223      }
 40224    })
 40225  }
 40226  
 40227  function realpathSync (p, cache) {
 40228    if (ok) {
 40229      return origRealpathSync(p, cache)
 40230    }
 40231  
 40232    try {
 40233      return origRealpathSync(p, cache)
 40234    } catch (er) {
 40235      if (newError(er)) {
 40236        return old.realpathSync(p, cache)
 40237      } else {
 40238        throw er
 40239      }
 40240    }
 40241  }
 40242  
 40243  function monkeypatch () {
 40244    fs.realpath = realpath
 40245    fs.realpathSync = realpathSync
 40246  }
 40247  
 40248  function unmonkeypatch () {
 40249    fs.realpath = origRealpath
 40250    fs.realpathSync = origRealpathSync
 40251  }
 40252  
 40253  
 40254  /***/ }),
 40255  /* 141 */
 40256  /***/ (function(module, exports, __webpack_require__) {
 40257  
 40258  exports.alphasort = alphasort
 40259  exports.alphasorti = alphasorti
 40260  exports.setopts = setopts
 40261  exports.ownProp = ownProp
 40262  exports.makeAbs = makeAbs
 40263  exports.finish = finish
 40264  exports.mark = mark
 40265  exports.isIgnored = isIgnored
 40266  exports.childrenIgnored = childrenIgnored
 40267  
 40268  function ownProp (obj, field) {
 40269    return Object.prototype.hasOwnProperty.call(obj, field)
 40270  }
 40271  
 40272  var path = __webpack_require__(0)
 40273  var minimatch = __webpack_require__(82)
 40274  var isAbsolute = __webpack_require__(101)
 40275  var Minimatch = minimatch.Minimatch
 40276  
 40277  function alphasorti (a, b) {
 40278    return a.toLowerCase().localeCompare(b.toLowerCase())
 40279  }
 40280  
 40281  function alphasort (a, b) {
 40282    return a.localeCompare(b)
 40283  }
 40284  
 40285  function setupIgnores (self, options) {
 40286    self.ignore = options.ignore || []
 40287  
 40288    if (!Array.isArray(self.ignore))
 40289      self.ignore = [self.ignore]
 40290  
 40291    if (self.ignore.length) {
 40292      self.ignore = self.ignore.map(ignoreMap)
 40293    }
 40294  }
 40295  
 40296  // ignore patterns are always in dot:true mode.
 40297  function ignoreMap (pattern) {
 40298    var gmatcher = null
 40299    if (pattern.slice(-3) === '/**') {
 40300      var gpattern = pattern.replace(/(\/\*\*)+$/, '')
 40301      gmatcher = new Minimatch(gpattern, { dot: true })
 40302    }
 40303  
 40304    return {
 40305      matcher: new Minimatch(pattern, { dot: true }),
 40306      gmatcher: gmatcher
 40307    }
 40308  }
 40309  
 40310  function setopts (self, pattern, options) {
 40311    if (!options)
 40312      options = {}
 40313  
 40314    // base-matching: just use globstar for that.
 40315    if (options.matchBase && -1 === pattern.indexOf("/")) {
 40316      if (options.noglobstar) {
 40317        throw new Error("base matching requires globstar")
 40318      }
 40319      pattern = "**/" + pattern
 40320    }
 40321  
 40322    self.silent = !!options.silent
 40323    self.pattern = pattern
 40324    self.strict = options.strict !== false
 40325    self.realpath = !!options.realpath
 40326    self.realpathCache = options.realpathCache || Object.create(null)
 40327    self.follow = !!options.follow
 40328    self.dot = !!options.dot
 40329    self.mark = !!options.mark
 40330    self.nodir = !!options.nodir
 40331    if (self.nodir)
 40332      self.mark = true
 40333    self.sync = !!options.sync
 40334    self.nounique = !!options.nounique
 40335    self.nonull = !!options.nonull
 40336    self.nosort = !!options.nosort
 40337    self.nocase = !!options.nocase
 40338    self.stat = !!options.stat
 40339    self.noprocess = !!options.noprocess
 40340    self.absolute = !!options.absolute
 40341  
 40342    self.maxLength = options.maxLength || Infinity
 40343    self.cache = options.cache || Object.create(null)
 40344    self.statCache = options.statCache || Object.create(null)
 40345    self.symlinks = options.symlinks || Object.create(null)
 40346  
 40347    setupIgnores(self, options)
 40348  
 40349    self.changedCwd = false
 40350    var cwd = process.cwd()
 40351    if (!ownProp(options, "cwd"))
 40352      self.cwd = cwd
 40353    else {
 40354      self.cwd = path.resolve(options.cwd)
 40355      self.changedCwd = self.cwd !== cwd
 40356    }
 40357  
 40358    self.root = options.root || path.resolve(self.cwd, "/")
 40359    self.root = path.resolve(self.root)
 40360    if (process.platform === "win32")
 40361      self.root = self.root.replace(/\\/g, "/")
 40362  
 40363    // TODO: is an absolute `cwd` supposed to be resolved against `root`?
 40364    // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')
 40365    self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd)
 40366    if (process.platform === "win32")
 40367      self.cwdAbs = self.cwdAbs.replace(/\\/g, "/")
 40368    self.nomount = !!options.nomount
 40369  
 40370    // disable comments and negation in Minimatch.
 40371    // Note that they are not supported in Glob itself anyway.
 40372    options.nonegate = true
 40373    options.nocomment = true
 40374  
 40375    self.minimatch = new Minimatch(pattern, options)
 40376    self.options = self.minimatch.options
 40377  }
 40378  
 40379  function finish (self) {
 40380    var nou = self.nounique
 40381    var all = nou ? [] : Object.create(null)
 40382  
 40383    for (var i = 0, l = self.matches.length; i < l; i ++) {
 40384      var matches = self.matches[i]
 40385      if (!matches || Object.keys(matches).length === 0) {
 40386        if (self.nonull) {
 40387          // do like the shell, and spit out the literal glob
 40388          var literal = self.minimatch.globSet[i]
 40389          if (nou)
 40390            all.push(literal)
 40391          else
 40392            all[literal] = true
 40393        }
 40394      } else {
 40395        // had matches
 40396        var m = Object.keys(matches)
 40397        if (nou)
 40398          all.push.apply(all, m)
 40399        else
 40400          m.forEach(function (m) {
 40401            all[m] = true
 40402          })
 40403      }
 40404    }
 40405  
 40406    if (!nou)
 40407      all = Object.keys(all)
 40408  
 40409    if (!self.nosort)
 40410      all = all.sort(self.nocase ? alphasorti : alphasort)
 40411  
 40412    // at *some* point we statted all of these
 40413    if (self.mark) {
 40414      for (var i = 0; i < all.length; i++) {
 40415        all[i] = self._mark(all[i])
 40416      }
 40417      if (self.nodir) {
 40418        all = all.filter(function (e) {
 40419          var notDir = !(/\/$/.test(e))
 40420          var c = self.cache[e] || self.cache[makeAbs(self, e)]
 40421          if (notDir && c)
 40422            notDir = c !== 'DIR' && !Array.isArray(c)
 40423          return notDir
 40424        })
 40425      }
 40426    }
 40427  
 40428    if (self.ignore.length)
 40429      all = all.filter(function(m) {
 40430        return !isIgnored(self, m)
 40431      })
 40432  
 40433    self.found = all
 40434  }
 40435  
 40436  function mark (self, p) {
 40437    var abs = makeAbs(self, p)
 40438    var c = self.cache[abs]
 40439    var m = p
 40440    if (c) {
 40441      var isDir = c === 'DIR' || Array.isArray(c)
 40442      var slash = p.slice(-1) === '/'
 40443  
 40444      if (isDir && !slash)
 40445        m += '/'
 40446      else if (!isDir && slash)
 40447        m = m.slice(0, -1)
 40448  
 40449      if (m !== p) {
 40450        var mabs = makeAbs(self, m)
 40451        self.statCache[mabs] = self.statCache[abs]
 40452        self.cache[mabs] = self.cache[abs]
 40453      }
 40454    }
 40455  
 40456    return m
 40457  }
 40458  
 40459  // lotta situps...
 40460  function makeAbs (self, f) {
 40461    var abs = f
 40462    if (f.charAt(0) === '/') {
 40463      abs = path.join(self.root, f)
 40464    } else if (isAbsolute(f) || f === '') {
 40465      abs = f
 40466    } else if (self.changedCwd) {
 40467      abs = path.resolve(self.cwd, f)
 40468    } else {
 40469      abs = path.resolve(f)
 40470    }
 40471  
 40472    if (process.platform === 'win32')
 40473      abs = abs.replace(/\\/g, '/')
 40474  
 40475    return abs
 40476  }
 40477  
 40478  
 40479  // Return true, if pattern ends with globstar '**', for the accompanying parent directory.
 40480  // Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents
 40481  function isIgnored (self, path) {
 40482    if (!self.ignore.length)
 40483      return false
 40484  
 40485    return self.ignore.some(function(item) {
 40486      return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))
 40487    })
 40488  }
 40489  
 40490  function childrenIgnored (self, path) {
 40491    if (!self.ignore.length)
 40492      return false
 40493  
 40494    return self.ignore.some(function(item) {
 40495      return !!(item.gmatcher && item.gmatcher.match(path))
 40496    })
 40497  }
 40498  
 40499  
 40500  /***/ }),
 40501  /* 142 */
 40502  /***/ (function(module, exports) {
 40503  
 40504  
 40505  module.exports = function(det, rec, confidence, name, lang) {
 40506    this.confidence = confidence;
 40507    this.name = name || rec.name(det);
 40508    this.lang = lang;
 40509  };
 40510  
 40511  
 40512  /***/ }),
 40513  /* 143 */
 40514  /***/ (function(module, exports, __webpack_require__) {
 40515  
 40516  "use strict";
 40517  // Standard YAML's Core schema.
 40518  // http://www.yaml.org/spec/1.2/spec.html#id2804923
 40519  //
 40520  // NOTE: JS-YAML does not support schema-specific tag resolution restrictions.
 40521  // So, Core schema has no distinctions from JSON schema is JS-YAML.
 40522  
 40523  
 40524  
 40525  
 40526  
 40527  var Schema = __webpack_require__(44);
 40528  
 40529  
 40530  module.exports = new Schema({
 40531    include: [
 40532      __webpack_require__(144)
 40533    ]
 40534  });
 40535  
 40536  
 40537  /***/ }),
 40538  /* 144 */
 40539  /***/ (function(module, exports, __webpack_require__) {
 40540  
 40541  "use strict";
 40542  // Standard YAML's JSON schema.
 40543  // http://www.yaml.org/spec/1.2/spec.html#id2803231
 40544  //
 40545  // NOTE: JS-YAML does not support schema-specific tag resolution restrictions.
 40546  // So, this schema is not such strict as defined in the YAML specification.
 40547  // It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.
 40548  
 40549  
 40550  
 40551  
 40552  
 40553  var Schema = __webpack_require__(44);
 40554  
 40555  
 40556  module.exports = new Schema({
 40557    include: [
 40558      __webpack_require__(100)
 40559    ],
 40560    implicit: [
 40561      __webpack_require__(293),
 40562      __webpack_require__(285),
 40563      __webpack_require__(287),
 40564      __webpack_require__(286)
 40565    ]
 40566  });
 40567  
 40568  
 40569  /***/ }),
 40570  /* 145 */
 40571  /***/ (function(module, exports, __webpack_require__) {
 40572  
 40573  var path = __webpack_require__(0);
 40574  var fs = __webpack_require__(4);
 40575  var _0777 = parseInt('0777', 8);
 40576  
 40577  module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
 40578  
 40579  function mkdirP (p, opts, f, made) {
 40580      if (typeof opts === 'function') {
 40581          f = opts;
 40582          opts = {};
 40583      }
 40584      else if (!opts || typeof opts !== 'object') {
 40585          opts = { mode: opts };
 40586      }
 40587      
 40588      var mode = opts.mode;
 40589      var xfs = opts.fs || fs;
 40590      
 40591      if (mode === undefined) {
 40592          mode = _0777 & (~process.umask());
 40593      }
 40594      if (!made) made = null;
 40595      
 40596      var cb = f || function () {};
 40597      p = path.resolve(p);
 40598      
 40599      xfs.mkdir(p, mode, function (er) {
 40600          if (!er) {
 40601              made = made || p;
 40602              return cb(null, made);
 40603          }
 40604          switch (er.code) {
 40605              case 'ENOENT':
 40606                  mkdirP(path.dirname(p), opts, function (er, made) {
 40607                      if (er) cb(er, made);
 40608                      else mkdirP(p, opts, cb, made);
 40609                  });
 40610                  break;
 40611  
 40612              // In the case of any other error, just see if there's a dir
 40613              // there already.  If so, then hooray!  If not, then something
 40614              // is borked.
 40615              default:
 40616                  xfs.stat(p, function (er2, stat) {
 40617                      // if the stat fails, then that's super weird.
 40618                      // let the original error be the failure reason.
 40619                      if (er2 || !stat.isDirectory()) cb(er, made)
 40620                      else cb(null, made);
 40621                  });
 40622                  break;
 40623          }
 40624      });
 40625  }
 40626  
 40627  mkdirP.sync = function sync (p, opts, made) {
 40628      if (!opts || typeof opts !== 'object') {
 40629          opts = { mode: opts };
 40630      }
 40631      
 40632      var mode = opts.mode;
 40633      var xfs = opts.fs || fs;
 40634      
 40635      if (mode === undefined) {
 40636          mode = _0777 & (~process.umask());
 40637      }
 40638      if (!made) made = null;
 40639  
 40640      p = path.resolve(p);
 40641  
 40642      try {
 40643          xfs.mkdirSync(p, mode);
 40644          made = made || p;
 40645      }
 40646      catch (err0) {
 40647          switch (err0.code) {
 40648              case 'ENOENT' :
 40649                  made = sync(path.dirname(p), opts, made);
 40650                  sync(p, opts, made);
 40651                  break;
 40652  
 40653              // In the case of any other error, just see if there's a dir
 40654              // there already.  If so, then hooray!  If not, then something
 40655              // is borked.
 40656              default:
 40657                  var stat;
 40658                  try {
 40659                      stat = xfs.statSync(p);
 40660                  }
 40661                  catch (err1) {
 40662                      throw err0;
 40663                  }
 40664                  if (!stat.isDirectory()) throw err0;
 40665                  break;
 40666          }
 40667      }
 40668  
 40669      return made;
 40670  };
 40671  
 40672  
 40673  /***/ }),
 40674  /* 146 */
 40675  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 40676  
 40677  "use strict";
 40678  /* harmony export (immutable) */ __webpack_exports__["a"] = defaultIfEmpty;
 40679  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 40680  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
 40681  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
 40682  
 40683  
 40684  function defaultIfEmpty(defaultValue) {
 40685      if (defaultValue === void 0) {
 40686          defaultValue = null;
 40687      }
 40688      return function (source) { return source.lift(new DefaultIfEmptyOperator(defaultValue)); };
 40689  }
 40690  var DefaultIfEmptyOperator = /*@__PURE__*/ (function () {
 40691      function DefaultIfEmptyOperator(defaultValue) {
 40692          this.defaultValue = defaultValue;
 40693      }
 40694      DefaultIfEmptyOperator.prototype.call = function (subscriber, source) {
 40695          return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue));
 40696      };
 40697      return DefaultIfEmptyOperator;
 40698  }());
 40699  var DefaultIfEmptySubscriber = /*@__PURE__*/ (function (_super) {
 40700      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](DefaultIfEmptySubscriber, _super);
 40701      function DefaultIfEmptySubscriber(destination, defaultValue) {
 40702          var _this = _super.call(this, destination) || this;
 40703          _this.defaultValue = defaultValue;
 40704          _this.isEmpty = true;
 40705          return _this;
 40706      }
 40707      DefaultIfEmptySubscriber.prototype._next = function (value) {
 40708          this.isEmpty = false;
 40709          this.destination.next(value);
 40710      };
 40711      DefaultIfEmptySubscriber.prototype._complete = function () {
 40712          if (this.isEmpty) {
 40713              this.destination.next(this.defaultValue);
 40714          }
 40715          this.destination.complete();
 40716      };
 40717      return DefaultIfEmptySubscriber;
 40718  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
 40719  //# sourceMappingURL=defaultIfEmpty.js.map
 40720  
 40721  
 40722  /***/ }),
 40723  /* 147 */
 40724  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 40725  
 40726  "use strict";
 40727  /* harmony export (immutable) */ __webpack_exports__["a"] = filter;
 40728  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 40729  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
 40730  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
 40731  
 40732  
 40733  function filter(predicate, thisArg) {
 40734      return function filterOperatorFunction(source) {
 40735          return source.lift(new FilterOperator(predicate, thisArg));
 40736      };
 40737  }
 40738  var FilterOperator = /*@__PURE__*/ (function () {
 40739      function FilterOperator(predicate, thisArg) {
 40740          this.predicate = predicate;
 40741          this.thisArg = thisArg;
 40742      }
 40743      FilterOperator.prototype.call = function (subscriber, source) {
 40744          return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));
 40745      };
 40746      return FilterOperator;
 40747  }());
 40748  var FilterSubscriber = /*@__PURE__*/ (function (_super) {
 40749      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](FilterSubscriber, _super);
 40750      function FilterSubscriber(destination, predicate, thisArg) {
 40751          var _this = _super.call(this, destination) || this;
 40752          _this.predicate = predicate;
 40753          _this.thisArg = thisArg;
 40754          _this.count = 0;
 40755          return _this;
 40756      }
 40757      FilterSubscriber.prototype._next = function (value) {
 40758          var result;
 40759          try {
 40760              result = this.predicate.call(this.thisArg, value, this.count++);
 40761          }
 40762          catch (err) {
 40763              this.destination.error(err);
 40764              return;
 40765          }
 40766          if (result) {
 40767              this.destination.next(value);
 40768          }
 40769      };
 40770      return FilterSubscriber;
 40771  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
 40772  //# sourceMappingURL=filter.js.map
 40773  
 40774  
 40775  /***/ }),
 40776  /* 148 */
 40777  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 40778  
 40779  "use strict";
 40780  /* harmony export (immutable) */ __webpack_exports__["a"] = mergeMap;
 40781  /* unused harmony export MergeMapOperator */
 40782  /* unused harmony export MergeMapSubscriber */
 40783  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 40784  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_subscribeToResult__ = __webpack_require__(14);
 40785  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__OuterSubscriber__ = __webpack_require__(13);
 40786  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__InnerSubscriber__ = __webpack_require__(84);
 40787  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__map__ = __webpack_require__(47);
 40788  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__observable_from__ = __webpack_require__(62);
 40789  /** PURE_IMPORTS_START tslib,_util_subscribeToResult,_OuterSubscriber,_InnerSubscriber,_map,_observable_from PURE_IMPORTS_END */
 40790  
 40791  
 40792  
 40793  
 40794  
 40795  
 40796  function mergeMap(project, resultSelector, concurrent) {
 40797      if (concurrent === void 0) {
 40798          concurrent = Number.POSITIVE_INFINITY;
 40799      }
 40800      if (typeof resultSelector === 'function') {
 40801          return function (source) { return source.pipe(mergeMap(function (a, i) { return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__observable_from__["a" /* from */])(project(a, i)).pipe(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__map__["a" /* map */])(function (b, ii) { return resultSelector(a, b, i, ii); })); }, concurrent)); };
 40802      }
 40803      else if (typeof resultSelector === 'number') {
 40804          concurrent = resultSelector;
 40805      }
 40806      return function (source) { return source.lift(new MergeMapOperator(project, concurrent)); };
 40807  }
 40808  var MergeMapOperator = /*@__PURE__*/ (function () {
 40809      function MergeMapOperator(project, concurrent) {
 40810          if (concurrent === void 0) {
 40811              concurrent = Number.POSITIVE_INFINITY;
 40812          }
 40813          this.project = project;
 40814          this.concurrent = concurrent;
 40815      }
 40816      MergeMapOperator.prototype.call = function (observer, source) {
 40817          return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent));
 40818      };
 40819      return MergeMapOperator;
 40820  }());
 40821  
 40822  var MergeMapSubscriber = /*@__PURE__*/ (function (_super) {
 40823      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](MergeMapSubscriber, _super);
 40824      function MergeMapSubscriber(destination, project, concurrent) {
 40825          if (concurrent === void 0) {
 40826              concurrent = Number.POSITIVE_INFINITY;
 40827          }
 40828          var _this = _super.call(this, destination) || this;
 40829          _this.project = project;
 40830          _this.concurrent = concurrent;
 40831          _this.hasCompleted = false;
 40832          _this.buffer = [];
 40833          _this.active = 0;
 40834          _this.index = 0;
 40835          return _this;
 40836      }
 40837      MergeMapSubscriber.prototype._next = function (value) {
 40838          if (this.active < this.concurrent) {
 40839              this._tryNext(value);
 40840          }
 40841          else {
 40842              this.buffer.push(value);
 40843          }
 40844      };
 40845      MergeMapSubscriber.prototype._tryNext = function (value) {
 40846          var result;
 40847          var index = this.index++;
 40848          try {
 40849              result = this.project(value, index);
 40850          }
 40851          catch (err) {
 40852              this.destination.error(err);
 40853              return;
 40854          }
 40855          this.active++;
 40856          this._innerSub(result, value, index);
 40857      };
 40858      MergeMapSubscriber.prototype._innerSub = function (ish, value, index) {
 40859          var innerSubscriber = new __WEBPACK_IMPORTED_MODULE_3__InnerSubscriber__["a" /* InnerSubscriber */](this, undefined, undefined);
 40860          var destination = this.destination;
 40861          destination.add(innerSubscriber);
 40862          __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_subscribeToResult__["a" /* subscribeToResult */])(this, ish, value, index, innerSubscriber);
 40863      };
 40864      MergeMapSubscriber.prototype._complete = function () {
 40865          this.hasCompleted = true;
 40866          if (this.active === 0 && this.buffer.length === 0) {
 40867              this.destination.complete();
 40868          }
 40869          this.unsubscribe();
 40870      };
 40871      MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
 40872          this.destination.next(innerValue);
 40873      };
 40874      MergeMapSubscriber.prototype.notifyComplete = function (innerSub) {
 40875          var buffer = this.buffer;
 40876          this.remove(innerSub);
 40877          this.active--;
 40878          if (buffer.length > 0) {
 40879              this._next(buffer.shift());
 40880          }
 40881          else if (this.active === 0 && this.hasCompleted) {
 40882              this.destination.complete();
 40883          }
 40884      };
 40885      return MergeMapSubscriber;
 40886  }(__WEBPACK_IMPORTED_MODULE_2__OuterSubscriber__["a" /* OuterSubscriber */]));
 40887  
 40888  //# sourceMappingURL=mergeMap.js.map
 40889  
 40890  
 40891  /***/ }),
 40892  /* 149 */
 40893  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 40894  
 40895  "use strict";
 40896  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsyncAction; });
 40897  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 40898  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Action__ = __webpack_require__(918);
 40899  /** PURE_IMPORTS_START tslib,_Action PURE_IMPORTS_END */
 40900  
 40901  
 40902  var AsyncAction = /*@__PURE__*/ (function (_super) {
 40903      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](AsyncAction, _super);
 40904      function AsyncAction(scheduler, work) {
 40905          var _this = _super.call(this, scheduler, work) || this;
 40906          _this.scheduler = scheduler;
 40907          _this.work = work;
 40908          _this.pending = false;
 40909          return _this;
 40910      }
 40911      AsyncAction.prototype.schedule = function (state, delay) {
 40912          if (delay === void 0) {
 40913              delay = 0;
 40914          }
 40915          if (this.closed) {
 40916              return this;
 40917          }
 40918          this.state = state;
 40919          var id = this.id;
 40920          var scheduler = this.scheduler;
 40921          if (id != null) {
 40922              this.id = this.recycleAsyncId(scheduler, id, delay);
 40923          }
 40924          this.pending = true;
 40925          this.delay = delay;
 40926          this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);
 40927          return this;
 40928      };
 40929      AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) {
 40930          if (delay === void 0) {
 40931              delay = 0;
 40932          }
 40933          return setInterval(scheduler.flush.bind(scheduler, this), delay);
 40934      };
 40935      AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) {
 40936          if (delay === void 0) {
 40937              delay = 0;
 40938          }
 40939          if (delay !== null && this.delay === delay && this.pending === false) {
 40940              return id;
 40941          }
 40942          clearInterval(id);
 40943      };
 40944      AsyncAction.prototype.execute = function (state, delay) {
 40945          if (this.closed) {
 40946              return new Error('executing a cancelled action');
 40947          }
 40948          this.pending = false;
 40949          var error = this._execute(state, delay);
 40950          if (error) {
 40951              return error;
 40952          }
 40953          else if (this.pending === false && this.id != null) {
 40954              this.id = this.recycleAsyncId(this.scheduler, this.id, null);
 40955          }
 40956      };
 40957      AsyncAction.prototype._execute = function (state, delay) {
 40958          var errored = false;
 40959          var errorValue = undefined;
 40960          try {
 40961              this.work(state);
 40962          }
 40963          catch (e) {
 40964              errored = true;
 40965              errorValue = !!e && e || new Error(e);
 40966          }
 40967          if (errored) {
 40968              this.unsubscribe();
 40969              return errorValue;
 40970          }
 40971      };
 40972      AsyncAction.prototype._unsubscribe = function () {
 40973          var id = this.id;
 40974          var scheduler = this.scheduler;
 40975          var actions = scheduler.actions;
 40976          var index = actions.indexOf(this);
 40977          this.work = null;
 40978          this.state = null;
 40979          this.pending = false;
 40980          this.scheduler = null;
 40981          if (index !== -1) {
 40982              actions.splice(index, 1);
 40983          }
 40984          if (id != null) {
 40985              this.id = this.recycleAsyncId(scheduler, id, null);
 40986          }
 40987          this.delay = null;
 40988      };
 40989      return AsyncAction;
 40990  }(__WEBPACK_IMPORTED_MODULE_1__Action__["a" /* Action */]));
 40991  
 40992  //# sourceMappingURL=AsyncAction.js.map
 40993  
 40994  
 40995  /***/ }),
 40996  /* 150 */
 40997  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 40998  
 40999  "use strict";
 41000  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsyncScheduler; });
 41001  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 41002  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Scheduler__ = __webpack_require__(421);
 41003  /** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */
 41004  
 41005  
 41006  var AsyncScheduler = /*@__PURE__*/ (function (_super) {
 41007      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](AsyncScheduler, _super);
 41008      function AsyncScheduler(SchedulerAction, now) {
 41009          if (now === void 0) {
 41010              now = __WEBPACK_IMPORTED_MODULE_1__Scheduler__["a" /* Scheduler */].now;
 41011          }
 41012          var _this = _super.call(this, SchedulerAction, function () {
 41013              if (AsyncScheduler.delegate && AsyncScheduler.delegate !== _this) {
 41014                  return AsyncScheduler.delegate.now();
 41015              }
 41016              else {
 41017                  return now();
 41018              }
 41019          }) || this;
 41020          _this.actions = [];
 41021          _this.active = false;
 41022          _this.scheduled = undefined;
 41023          return _this;
 41024      }
 41025      AsyncScheduler.prototype.schedule = function (work, delay, state) {
 41026          if (delay === void 0) {
 41027              delay = 0;
 41028          }
 41029          if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {
 41030              return AsyncScheduler.delegate.schedule(work, delay, state);
 41031          }
 41032          else {
 41033              return _super.prototype.schedule.call(this, work, delay, state);
 41034          }
 41035      };
 41036      AsyncScheduler.prototype.flush = function (action) {
 41037          var actions = this.actions;
 41038          if (this.active) {
 41039              actions.push(action);
 41040              return;
 41041          }
 41042          var error;
 41043          this.active = true;
 41044          do {
 41045              if (error = action.execute(action.state, action.delay)) {
 41046                  break;
 41047              }
 41048          } while (action = actions.shift());
 41049          this.active = false;
 41050          if (error) {
 41051              while (action = actions.shift()) {
 41052                  action.unsubscribe();
 41053              }
 41054              throw error;
 41055          }
 41056      };
 41057      return AsyncScheduler;
 41058  }(__WEBPACK_IMPORTED_MODULE_1__Scheduler__["a" /* Scheduler */]));
 41059  
 41060  //# sourceMappingURL=AsyncScheduler.js.map
 41061  
 41062  
 41063  /***/ }),
 41064  /* 151 */
 41065  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 41066  
 41067  "use strict";
 41068  /* unused harmony export getSymbolIterator */
 41069  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return iterator; });
 41070  /* unused harmony export $$iterator */
 41071  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 41072  function getSymbolIterator() {
 41073      if (typeof Symbol !== 'function' || !Symbol.iterator) {
 41074          return '@@iterator';
 41075      }
 41076      return Symbol.iterator;
 41077  }
 41078  var iterator = /*@__PURE__*/ getSymbolIterator();
 41079  var $$iterator = iterator;
 41080  //# sourceMappingURL=iterator.js.map
 41081  
 41082  
 41083  /***/ }),
 41084  /* 152 */
 41085  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 41086  
 41087  "use strict";
 41088  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ArgumentOutOfRangeError; });
 41089  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 41090  function ArgumentOutOfRangeErrorImpl() {
 41091      Error.call(this);
 41092      this.message = 'argument out of range';
 41093      this.name = 'ArgumentOutOfRangeError';
 41094      return this;
 41095  }
 41096  ArgumentOutOfRangeErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);
 41097  var ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl;
 41098  //# sourceMappingURL=ArgumentOutOfRangeError.js.map
 41099  
 41100  
 41101  /***/ }),
 41102  /* 153 */
 41103  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 41104  
 41105  "use strict";
 41106  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return EmptyError; });
 41107  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 41108  function EmptyErrorImpl() {
 41109      Error.call(this);
 41110      this.message = 'no elements in sequence';
 41111      this.name = 'EmptyError';
 41112      return this;
 41113  }
 41114  EmptyErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);
 41115  var EmptyError = EmptyErrorImpl;
 41116  //# sourceMappingURL=EmptyError.js.map
 41117  
 41118  
 41119  /***/ }),
 41120  /* 154 */
 41121  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 41122  
 41123  "use strict";
 41124  /* harmony export (immutable) */ __webpack_exports__["a"] = isFunction;
 41125  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 41126  function isFunction(x) {
 41127      return typeof x === 'function';
 41128  }
 41129  //# sourceMappingURL=isFunction.js.map
 41130  
 41131  
 41132  /***/ }),
 41133  /* 155 */
 41134  /***/ (function(module, exports, __webpack_require__) {
 41135  
 41136  // Copyright 2016 Joyent, Inc.
 41137  
 41138  module.exports = Certificate;
 41139  
 41140  var assert = __webpack_require__(16);
 41141  var Buffer = __webpack_require__(15).Buffer;
 41142  var algs = __webpack_require__(32);
 41143  var crypto = __webpack_require__(11);
 41144  var Fingerprint = __webpack_require__(156);
 41145  var Signature = __webpack_require__(75);
 41146  var errs = __webpack_require__(74);
 41147  var util = __webpack_require__(3);
 41148  var utils = __webpack_require__(26);
 41149  var Key = __webpack_require__(27);
 41150  var PrivateKey = __webpack_require__(33);
 41151  var Identity = __webpack_require__(158);
 41152  
 41153  var formats = {};
 41154  formats['openssh'] = __webpack_require__(940);
 41155  formats['x509'] = __webpack_require__(457);
 41156  formats['pem'] = __webpack_require__(941);
 41157  
 41158  var CertificateParseError = errs.CertificateParseError;
 41159  var InvalidAlgorithmError = errs.InvalidAlgorithmError;
 41160  
 41161  function Certificate(opts) {
 41162  	assert.object(opts, 'options');
 41163  	assert.arrayOfObject(opts.subjects, 'options.subjects');
 41164  	utils.assertCompatible(opts.subjects[0], Identity, [1, 0],
 41165  	    'options.subjects');
 41166  	utils.assertCompatible(opts.subjectKey, Key, [1, 0],
 41167  	    'options.subjectKey');
 41168  	utils.assertCompatible(opts.issuer, Identity, [1, 0], 'options.issuer');
 41169  	if (opts.issuerKey !== undefined) {
 41170  		utils.assertCompatible(opts.issuerKey, Key, [1, 0],
 41171  		    'options.issuerKey');
 41172  	}
 41173  	assert.object(opts.signatures, 'options.signatures');
 41174  	assert.buffer(opts.serial, 'options.serial');
 41175  	assert.date(opts.validFrom, 'options.validFrom');
 41176  	assert.date(opts.validUntil, 'optons.validUntil');
 41177  
 41178  	assert.optionalArrayOfString(opts.purposes, 'options.purposes');
 41179  
 41180  	this._hashCache = {};
 41181  
 41182  	this.subjects = opts.subjects;
 41183  	this.issuer = opts.issuer;
 41184  	this.subjectKey = opts.subjectKey;
 41185  	this.issuerKey = opts.issuerKey;
 41186  	this.signatures = opts.signatures;
 41187  	this.serial = opts.serial;
 41188  	this.validFrom = opts.validFrom;
 41189  	this.validUntil = opts.validUntil;
 41190  	this.purposes = opts.purposes;
 41191  }
 41192  
 41193  Certificate.formats = formats;
 41194  
 41195  Certificate.prototype.toBuffer = function (format, options) {
 41196  	if (format === undefined)
 41197  		format = 'x509';
 41198  	assert.string(format, 'format');
 41199  	assert.object(formats[format], 'formats[format]');
 41200  	assert.optionalObject(options, 'options');
 41201  
 41202  	return (formats[format].write(this, options));
 41203  };
 41204  
 41205  Certificate.prototype.toString = function (format, options) {
 41206  	if (format === undefined)
 41207  		format = 'pem';
 41208  	return (this.toBuffer(format, options).toString());
 41209  };
 41210  
 41211  Certificate.prototype.fingerprint = function (algo) {
 41212  	if (algo === undefined)
 41213  		algo = 'sha256';
 41214  	assert.string(algo, 'algorithm');
 41215  	var opts = {
 41216  		type: 'certificate',
 41217  		hash: this.hash(algo),
 41218  		algorithm: algo
 41219  	};
 41220  	return (new Fingerprint(opts));
 41221  };
 41222  
 41223  Certificate.prototype.hash = function (algo) {
 41224  	assert.string(algo, 'algorithm');
 41225  	algo = algo.toLowerCase();
 41226  	if (algs.hashAlgs[algo] === undefined)
 41227  		throw (new InvalidAlgorithmError(algo));
 41228  
 41229  	if (this._hashCache[algo])
 41230  		return (this._hashCache[algo]);
 41231  
 41232  	var hash = crypto.createHash(algo).
 41233  	    update(this.toBuffer('x509')).digest();
 41234  	this._hashCache[algo] = hash;
 41235  	return (hash);
 41236  };
 41237  
 41238  Certificate.prototype.isExpired = function (when) {
 41239  	if (when === undefined)
 41240  		when = new Date();
 41241  	return (!((when.getTime() >= this.validFrom.getTime()) &&
 41242  		(when.getTime() < this.validUntil.getTime())));
 41243  };
 41244  
 41245  Certificate.prototype.isSignedBy = function (issuerCert) {
 41246  	utils.assertCompatible(issuerCert, Certificate, [1, 0], 'issuer');
 41247  
 41248  	if (!this.issuer.equals(issuerCert.subjects[0]))
 41249  		return (false);
 41250  	if (this.issuer.purposes && this.issuer.purposes.length > 0 &&
 41251  	    this.issuer.purposes.indexOf('ca') === -1) {
 41252  		return (false);
 41253  	}
 41254  
 41255  	return (this.isSignedByKey(issuerCert.subjectKey));
 41256  };
 41257  
 41258  Certificate.prototype.isSignedByKey = function (issuerKey) {
 41259  	utils.assertCompatible(issuerKey, Key, [1, 2], 'issuerKey');
 41260  
 41261  	if (this.issuerKey !== undefined) {
 41262  		return (this.issuerKey.
 41263  		    fingerprint('sha512').matches(issuerKey));
 41264  	}
 41265  
 41266  	var fmt = Object.keys(this.signatures)[0];
 41267  	var valid = formats[fmt].verify(this, issuerKey);
 41268  	if (valid)
 41269  		this.issuerKey = issuerKey;
 41270  	return (valid);
 41271  };
 41272  
 41273  Certificate.prototype.signWith = function (key) {
 41274  	utils.assertCompatible(key, PrivateKey, [1, 2], 'key');
 41275  	var fmts = Object.keys(formats);
 41276  	var didOne = false;
 41277  	for (var i = 0; i < fmts.length; ++i) {
 41278  		if (fmts[i] !== 'pem') {
 41279  			var ret = formats[fmts[i]].sign(this, key);
 41280  			if (ret === true)
 41281  				didOne = true;
 41282  		}
 41283  	}
 41284  	if (!didOne) {
 41285  		throw (new Error('Failed to sign the certificate for any ' +
 41286  		    'available certificate formats'));
 41287  	}
 41288  };
 41289  
 41290  Certificate.createSelfSigned = function (subjectOrSubjects, key, options) {
 41291  	var subjects;
 41292  	if (Array.isArray(subjectOrSubjects))
 41293  		subjects = subjectOrSubjects;
 41294  	else
 41295  		subjects = [subjectOrSubjects];
 41296  
 41297  	assert.arrayOfObject(subjects);
 41298  	subjects.forEach(function (subject) {
 41299  		utils.assertCompatible(subject, Identity, [1, 0], 'subject');
 41300  	});
 41301  
 41302  	utils.assertCompatible(key, PrivateKey, [1, 2], 'private key');
 41303  
 41304  	assert.optionalObject(options, 'options');
 41305  	if (options === undefined)
 41306  		options = {};
 41307  	assert.optionalObject(options.validFrom, 'options.validFrom');
 41308  	assert.optionalObject(options.validUntil, 'options.validUntil');
 41309  	var validFrom = options.validFrom;
 41310  	var validUntil = options.validUntil;
 41311  	if (validFrom === undefined)
 41312  		validFrom = new Date();
 41313  	if (validUntil === undefined) {
 41314  		assert.optionalNumber(options.lifetime, 'options.lifetime');
 41315  		var lifetime = options.lifetime;
 41316  		if (lifetime === undefined)
 41317  			lifetime = 10*365*24*3600;
 41318  		validUntil = new Date();
 41319  		validUntil.setTime(validUntil.getTime() + lifetime*1000);
 41320  	}
 41321  	assert.optionalBuffer(options.serial, 'options.serial');
 41322  	var serial = options.serial;
 41323  	if (serial === undefined)
 41324  		serial = Buffer.from('0000000000000001', 'hex');
 41325  
 41326  	var purposes = options.purposes;
 41327  	if (purposes === undefined)
 41328  		purposes = [];
 41329  
 41330  	if (purposes.indexOf('signature') === -1)
 41331  		purposes.push('signature');
 41332  
 41333  	/* Self-signed certs are always CAs. */
 41334  	if (purposes.indexOf('ca') === -1)
 41335  		purposes.push('ca');
 41336  	if (purposes.indexOf('crl') === -1)
 41337  		purposes.push('crl');
 41338  
 41339  	/*
 41340  	 * If we weren't explicitly given any other purposes, do the sensible
 41341  	 * thing and add some basic ones depending on the subject type.
 41342  	 */
 41343  	if (purposes.length <= 3) {
 41344  		var hostSubjects = subjects.filter(function (subject) {
 41345  			return (subject.type === 'host');
 41346  		});
 41347  		var userSubjects = subjects.filter(function (subject) {
 41348  			return (subject.type === 'user');
 41349  		});
 41350  		if (hostSubjects.length > 0) {
 41351  			if (purposes.indexOf('serverAuth') === -1)
 41352  				purposes.push('serverAuth');
 41353  		}
 41354  		if (userSubjects.length > 0) {
 41355  			if (purposes.indexOf('clientAuth') === -1)
 41356  				purposes.push('clientAuth');
 41357  		}
 41358  		if (userSubjects.length > 0 || hostSubjects.length > 0) {
 41359  			if (purposes.indexOf('keyAgreement') === -1)
 41360  				purposes.push('keyAgreement');
 41361  			if (key.type === 'rsa' &&
 41362  			    purposes.indexOf('encryption') === -1)
 41363  				purposes.push('encryption');
 41364  		}
 41365  	}
 41366  
 41367  	var cert = new Certificate({
 41368  		subjects: subjects,
 41369  		issuer: subjects[0],
 41370  		subjectKey: key.toPublic(),
 41371  		issuerKey: key.toPublic(),
 41372  		signatures: {},
 41373  		serial: serial,
 41374  		validFrom: validFrom,
 41375  		validUntil: validUntil,
 41376  		purposes: purposes
 41377  	});
 41378  	cert.signWith(key);
 41379  
 41380  	return (cert);
 41381  };
 41382  
 41383  Certificate.create =
 41384      function (subjectOrSubjects, key, issuer, issuerKey, options) {
 41385  	var subjects;
 41386  	if (Array.isArray(subjectOrSubjects))
 41387  		subjects = subjectOrSubjects;
 41388  	else
 41389  		subjects = [subjectOrSubjects];
 41390  
 41391  	assert.arrayOfObject(subjects);
 41392  	subjects.forEach(function (subject) {
 41393  		utils.assertCompatible(subject, Identity, [1, 0], 'subject');
 41394  	});
 41395  
 41396  	utils.assertCompatible(key, Key, [1, 0], 'key');
 41397  	if (PrivateKey.isPrivateKey(key))
 41398  		key = key.toPublic();
 41399  	utils.assertCompatible(issuer, Identity, [1, 0], 'issuer');
 41400  	utils.assertCompatible(issuerKey, PrivateKey, [1, 2], 'issuer key');
 41401  
 41402  	assert.optionalObject(options, 'options');
 41403  	if (options === undefined)
 41404  		options = {};
 41405  	assert.optionalObject(options.validFrom, 'options.validFrom');
 41406  	assert.optionalObject(options.validUntil, 'options.validUntil');
 41407  	var validFrom = options.validFrom;
 41408  	var validUntil = options.validUntil;
 41409  	if (validFrom === undefined)
 41410  		validFrom = new Date();
 41411  	if (validUntil === undefined) {
 41412  		assert.optionalNumber(options.lifetime, 'options.lifetime');
 41413  		var lifetime = options.lifetime;
 41414  		if (lifetime === undefined)
 41415  			lifetime = 10*365*24*3600;
 41416  		validUntil = new Date();
 41417  		validUntil.setTime(validUntil.getTime() + lifetime*1000);
 41418  	}
 41419  	assert.optionalBuffer(options.serial, 'options.serial');
 41420  	var serial = options.serial;
 41421  	if (serial === undefined)
 41422  		serial = Buffer.from('0000000000000001', 'hex');
 41423  
 41424  	var purposes = options.purposes;
 41425  	if (purposes === undefined)
 41426  		purposes = [];
 41427  
 41428  	if (purposes.indexOf('signature') === -1)
 41429  		purposes.push('signature');
 41430  
 41431  	if (options.ca === true) {
 41432  		if (purposes.indexOf('ca') === -1)
 41433  			purposes.push('ca');
 41434  		if (purposes.indexOf('crl') === -1)
 41435  			purposes.push('crl');
 41436  	}
 41437  
 41438  	var hostSubjects = subjects.filter(function (subject) {
 41439  		return (subject.type === 'host');
 41440  	});
 41441  	var userSubjects = subjects.filter(function (subject) {
 41442  		return (subject.type === 'user');
 41443  	});
 41444  	if (hostSubjects.length > 0) {
 41445  		if (purposes.indexOf('serverAuth') === -1)
 41446  			purposes.push('serverAuth');
 41447  	}
 41448  	if (userSubjects.length > 0) {
 41449  		if (purposes.indexOf('clientAuth') === -1)
 41450  			purposes.push('clientAuth');
 41451  	}
 41452  	if (userSubjects.length > 0 || hostSubjects.length > 0) {
 41453  		if (purposes.indexOf('keyAgreement') === -1)
 41454  			purposes.push('keyAgreement');
 41455  		if (key.type === 'rsa' &&
 41456  		    purposes.indexOf('encryption') === -1)
 41457  			purposes.push('encryption');
 41458  	}
 41459  
 41460  	var cert = new Certificate({
 41461  		subjects: subjects,
 41462  		issuer: issuer,
 41463  		subjectKey: key,
 41464  		issuerKey: issuerKey.toPublic(),
 41465  		signatures: {},
 41466  		serial: serial,
 41467  		validFrom: validFrom,
 41468  		validUntil: validUntil,
 41469  		purposes: purposes
 41470  	});
 41471  	cert.signWith(issuerKey);
 41472  
 41473  	return (cert);
 41474  };
 41475  
 41476  Certificate.parse = function (data, format, options) {
 41477  	if (typeof (data) !== 'string')
 41478  		assert.buffer(data, 'data');
 41479  	if (format === undefined)
 41480  		format = 'auto';
 41481  	assert.string(format, 'format');
 41482  	if (typeof (options) === 'string')
 41483  		options = { filename: options };
 41484  	assert.optionalObject(options, 'options');
 41485  	if (options === undefined)
 41486  		options = {};
 41487  	assert.optionalString(options.filename, 'options.filename');
 41488  	if (options.filename === undefined)
 41489  		options.filename = '(unnamed)';
 41490  
 41491  	assert.object(formats[format], 'formats[format]');
 41492  
 41493  	try {
 41494  		var k = formats[format].read(data, options);
 41495  		return (k);
 41496  	} catch (e) {
 41497  		throw (new CertificateParseError(options.filename, format, e));
 41498  	}
 41499  };
 41500  
 41501  Certificate.isCertificate = function (obj, ver) {
 41502  	return (utils.isCompatible(obj, Certificate, ver));
 41503  };
 41504  
 41505  /*
 41506   * API versions for Certificate:
 41507   * [1,0] -- initial ver
 41508   */
 41509  Certificate.prototype._sshpkApiVersion = [1, 0];
 41510  
 41511  Certificate._oldVersionDetect = function (obj) {
 41512  	return ([1, 0]);
 41513  };
 41514  
 41515  
 41516  /***/ }),
 41517  /* 156 */
 41518  /***/ (function(module, exports, __webpack_require__) {
 41519  
 41520  // Copyright 2015 Joyent, Inc.
 41521  
 41522  module.exports = Fingerprint;
 41523  
 41524  var assert = __webpack_require__(16);
 41525  var Buffer = __webpack_require__(15).Buffer;
 41526  var algs = __webpack_require__(32);
 41527  var crypto = __webpack_require__(11);
 41528  var errs = __webpack_require__(74);
 41529  var Key = __webpack_require__(27);
 41530  var Certificate = __webpack_require__(155);
 41531  var utils = __webpack_require__(26);
 41532  
 41533  var FingerprintFormatError = errs.FingerprintFormatError;
 41534  var InvalidAlgorithmError = errs.InvalidAlgorithmError;
 41535  
 41536  function Fingerprint(opts) {
 41537  	assert.object(opts, 'options');
 41538  	assert.string(opts.type, 'options.type');
 41539  	assert.buffer(opts.hash, 'options.hash');
 41540  	assert.string(opts.algorithm, 'options.algorithm');
 41541  
 41542  	this.algorithm = opts.algorithm.toLowerCase();
 41543  	if (algs.hashAlgs[this.algorithm] !== true)
 41544  		throw (new InvalidAlgorithmError(this.algorithm));
 41545  
 41546  	this.hash = opts.hash;
 41547  	this.type = opts.type;
 41548  }
 41549  
 41550  Fingerprint.prototype.toString = function (format) {
 41551  	if (format === undefined) {
 41552  		if (this.algorithm === 'md5')
 41553  			format = 'hex';
 41554  		else
 41555  			format = 'base64';
 41556  	}
 41557  	assert.string(format);
 41558  
 41559  	switch (format) {
 41560  	case 'hex':
 41561  		return (addColons(this.hash.toString('hex')));
 41562  	case 'base64':
 41563  		return (sshBase64Format(this.algorithm,
 41564  		    this.hash.toString('base64')));
 41565  	default:
 41566  		throw (new FingerprintFormatError(undefined, format));
 41567  	}
 41568  };
 41569  
 41570  Fingerprint.prototype.matches = function (other) {
 41571  	assert.object(other, 'key or certificate');
 41572  	if (this.type === 'key') {
 41573  		utils.assertCompatible(other, Key, [1, 0], 'key');
 41574  	} else {
 41575  		utils.assertCompatible(other, Certificate, [1, 0],
 41576  		    'certificate');
 41577  	}
 41578  
 41579  	var theirHash = other.hash(this.algorithm);
 41580  	var theirHash2 = crypto.createHash(this.algorithm).
 41581  	    update(theirHash).digest('base64');
 41582  
 41583  	if (this.hash2 === undefined)
 41584  		this.hash2 = crypto.createHash(this.algorithm).
 41585  		    update(this.hash).digest('base64');
 41586  
 41587  	return (this.hash2 === theirHash2);
 41588  };
 41589  
 41590  Fingerprint.parse = function (fp, options) {
 41591  	assert.string(fp, 'fingerprint');
 41592  
 41593  	var alg, hash, enAlgs;
 41594  	if (Array.isArray(options)) {
 41595  		enAlgs = options;
 41596  		options = {};
 41597  	}
 41598  	assert.optionalObject(options, 'options');
 41599  	if (options === undefined)
 41600  		options = {};
 41601  	if (options.enAlgs !== undefined)
 41602  		enAlgs = options.enAlgs;
 41603  	assert.optionalArrayOfString(enAlgs, 'algorithms');
 41604  
 41605  	var parts = fp.split(':');
 41606  	if (parts.length == 2) {
 41607  		alg = parts[0].toLowerCase();
 41608  		/*JSSTYLED*/
 41609  		var base64RE = /^[A-Za-z0-9+\/=]+$/;
 41610  		if (!base64RE.test(parts[1]))
 41611  			throw (new FingerprintFormatError(fp));
 41612  		try {
 41613  			hash = Buffer.from(parts[1], 'base64');
 41614  		} catch (e) {
 41615  			throw (new FingerprintFormatError(fp));
 41616  		}
 41617  	} else if (parts.length > 2) {
 41618  		alg = 'md5';
 41619  		if (parts[0].toLowerCase() === 'md5')
 41620  			parts = parts.slice(1);
 41621  		parts = parts.join('');
 41622  		/*JSSTYLED*/
 41623  		var md5RE = /^[a-fA-F0-9]+$/;
 41624  		if (!md5RE.test(parts))
 41625  			throw (new FingerprintFormatError(fp));
 41626  		try {
 41627  			hash = Buffer.from(parts, 'hex');
 41628  		} catch (e) {
 41629  			throw (new FingerprintFormatError(fp));
 41630  		}
 41631  	}
 41632  
 41633  	if (alg === undefined)
 41634  		throw (new FingerprintFormatError(fp));
 41635  
 41636  	if (algs.hashAlgs[alg] === undefined)
 41637  		throw (new InvalidAlgorithmError(alg));
 41638  
 41639  	if (enAlgs !== undefined) {
 41640  		enAlgs = enAlgs.map(function (a) { return a.toLowerCase(); });
 41641  		if (enAlgs.indexOf(alg) === -1)
 41642  			throw (new InvalidAlgorithmError(alg));
 41643  	}
 41644  
 41645  	return (new Fingerprint({
 41646  		algorithm: alg,
 41647  		hash: hash,
 41648  		type: options.type || 'key'
 41649  	}));
 41650  };
 41651  
 41652  function addColons(s) {
 41653  	/*JSSTYLED*/
 41654  	return (s.replace(/(.{2})(?=.)/g, '$1:'));
 41655  }
 41656  
 41657  function base64Strip(s) {
 41658  	/*JSSTYLED*/
 41659  	return (s.replace(/=*$/, ''));
 41660  }
 41661  
 41662  function sshBase64Format(alg, h) {
 41663  	return (alg.toUpperCase() + ':' + base64Strip(h));
 41664  }
 41665  
 41666  Fingerprint.isFingerprint = function (obj, ver) {
 41667  	return (utils.isCompatible(obj, Fingerprint, ver));
 41668  };
 41669  
 41670  /*
 41671   * API versions for Fingerprint:
 41672   * [1,0] -- initial ver
 41673   * [1,1] -- first tagged ver
 41674   */
 41675  Fingerprint.prototype._sshpkApiVersion = [1, 1];
 41676  
 41677  Fingerprint._oldVersionDetect = function (obj) {
 41678  	assert.func(obj.toString);
 41679  	assert.func(obj.matches);
 41680  	return ([1, 0]);
 41681  };
 41682  
 41683  
 41684  /***/ }),
 41685  /* 157 */
 41686  /***/ (function(module, exports, __webpack_require__) {
 41687  
 41688  // Copyright 2015 Joyent, Inc.
 41689  
 41690  module.exports = {
 41691  	read: read,
 41692  	readPkcs8: readPkcs8,
 41693  	write: write,
 41694  	writePkcs8: writePkcs8,
 41695  
 41696  	readECDSACurve: readECDSACurve,
 41697  	writeECDSACurve: writeECDSACurve
 41698  };
 41699  
 41700  var assert = __webpack_require__(16);
 41701  var asn1 = __webpack_require__(66);
 41702  var Buffer = __webpack_require__(15).Buffer;
 41703  var algs = __webpack_require__(32);
 41704  var utils = __webpack_require__(26);
 41705  var Key = __webpack_require__(27);
 41706  var PrivateKey = __webpack_require__(33);
 41707  var pem = __webpack_require__(86);
 41708  
 41709  function read(buf, options) {
 41710  	return (pem.read(buf, options, 'pkcs8'));
 41711  }
 41712  
 41713  function write(key, options) {
 41714  	return (pem.write(key, options, 'pkcs8'));
 41715  }
 41716  
 41717  /* Helper to read in a single mpint */
 41718  function readMPInt(der, nm) {
 41719  	assert.strictEqual(der.peek(), asn1.Ber.Integer,
 41720  	    nm + ' is not an Integer');
 41721  	return (utils.mpNormalize(der.readString(asn1.Ber.Integer, true)));
 41722  }
 41723  
 41724  function readPkcs8(alg, type, der) {
 41725  	/* Private keys in pkcs#8 format have a weird extra int */
 41726  	if (der.peek() === asn1.Ber.Integer) {
 41727  		assert.strictEqual(type, 'private',
 41728  		    'unexpected Integer at start of public key');
 41729  		der.readString(asn1.Ber.Integer, true);
 41730  	}
 41731  
 41732  	der.readSequence();
 41733  	var next = der.offset + der.length;
 41734  
 41735  	var oid = der.readOID();
 41736  	switch (oid) {
 41737  	case '1.2.840.113549.1.1.1':
 41738  		der._offset = next;
 41739  		if (type === 'public')
 41740  			return (readPkcs8RSAPublic(der));
 41741  		else
 41742  			return (readPkcs8RSAPrivate(der));
 41743  	case '1.2.840.10040.4.1':
 41744  		if (type === 'public')
 41745  			return (readPkcs8DSAPublic(der));
 41746  		else
 41747  			return (readPkcs8DSAPrivate(der));
 41748  	case '1.2.840.10045.2.1':
 41749  		if (type === 'public')
 41750  			return (readPkcs8ECDSAPublic(der));
 41751  		else
 41752  			return (readPkcs8ECDSAPrivate(der));
 41753  	case '1.3.101.112':
 41754  		if (type === 'public') {
 41755  			return (readPkcs8EdDSAPublic(der));
 41756  		} else {
 41757  			return (readPkcs8EdDSAPrivate(der));
 41758  		}
 41759  	case '1.3.101.110':
 41760  		if (type === 'public') {
 41761  			return (readPkcs8X25519Public(der));
 41762  		} else {
 41763  			return (readPkcs8X25519Private(der));
 41764  		}
 41765  	default:
 41766  		throw (new Error('Unknown key type OID ' + oid));
 41767  	}
 41768  }
 41769  
 41770  function readPkcs8RSAPublic(der) {
 41771  	// bit string sequence
 41772  	der.readSequence(asn1.Ber.BitString);
 41773  	der.readByte();
 41774  	der.readSequence();
 41775  
 41776  	// modulus
 41777  	var n = readMPInt(der, 'modulus');
 41778  	var e = readMPInt(der, 'exponent');
 41779  
 41780  	// now, make the key
 41781  	var key = {
 41782  		type: 'rsa',
 41783  		source: der.originalInput,
 41784  		parts: [
 41785  			{ name: 'e', data: e },
 41786  			{ name: 'n', data: n }
 41787  		]
 41788  	};
 41789  
 41790  	return (new Key(key));
 41791  }
 41792  
 41793  function readPkcs8RSAPrivate(der) {
 41794  	der.readSequence(asn1.Ber.OctetString);
 41795  	der.readSequence();
 41796  
 41797  	var ver = readMPInt(der, 'version');
 41798  	assert.equal(ver[0], 0x0, 'unknown RSA private key version');
 41799  
 41800  	// modulus then public exponent
 41801  	var n = readMPInt(der, 'modulus');
 41802  	var e = readMPInt(der, 'public exponent');
 41803  	var d = readMPInt(der, 'private exponent');
 41804  	var p = readMPInt(der, 'prime1');
 41805  	var q = readMPInt(der, 'prime2');
 41806  	var dmodp = readMPInt(der, 'exponent1');
 41807  	var dmodq = readMPInt(der, 'exponent2');
 41808  	var iqmp = readMPInt(der, 'iqmp');
 41809  
 41810  	// now, make the key
 41811  	var key = {
 41812  		type: 'rsa',
 41813  		parts: [
 41814  			{ name: 'n', data: n },
 41815  			{ name: 'e', data: e },
 41816  			{ name: 'd', data: d },
 41817  			{ name: 'iqmp', data: iqmp },
 41818  			{ name: 'p', data: p },
 41819  			{ name: 'q', data: q },
 41820  			{ name: 'dmodp', data: dmodp },
 41821  			{ name: 'dmodq', data: dmodq }
 41822  		]
 41823  	};
 41824  
 41825  	return (new PrivateKey(key));
 41826  }
 41827  
 41828  function readPkcs8DSAPublic(der) {
 41829  	der.readSequence();
 41830  
 41831  	var p = readMPInt(der, 'p');
 41832  	var q = readMPInt(der, 'q');
 41833  	var g = readMPInt(der, 'g');
 41834  
 41835  	// bit string sequence
 41836  	der.readSequence(asn1.Ber.BitString);
 41837  	der.readByte();
 41838  
 41839  	var y = readMPInt(der, 'y');
 41840  
 41841  	// now, make the key
 41842  	var key = {
 41843  		type: 'dsa',
 41844  		parts: [
 41845  			{ name: 'p', data: p },
 41846  			{ name: 'q', data: q },
 41847  			{ name: 'g', data: g },
 41848  			{ name: 'y', data: y }
 41849  		]
 41850  	};
 41851  
 41852  	return (new Key(key));
 41853  }
 41854  
 41855  function readPkcs8DSAPrivate(der) {
 41856  	der.readSequence();
 41857  
 41858  	var p = readMPInt(der, 'p');
 41859  	var q = readMPInt(der, 'q');
 41860  	var g = readMPInt(der, 'g');
 41861  
 41862  	der.readSequence(asn1.Ber.OctetString);
 41863  	var x = readMPInt(der, 'x');
 41864  
 41865  	/* The pkcs#8 format does not include the public key */
 41866  	var y = utils.calculateDSAPublic(g, p, x);
 41867  
 41868  	var key = {
 41869  		type: 'dsa',
 41870  		parts: [
 41871  			{ name: 'p', data: p },
 41872  			{ name: 'q', data: q },
 41873  			{ name: 'g', data: g },
 41874  			{ name: 'y', data: y },
 41875  			{ name: 'x', data: x }
 41876  		]
 41877  	};
 41878  
 41879  	return (new PrivateKey(key));
 41880  }
 41881  
 41882  function readECDSACurve(der) {
 41883  	var curveName, curveNames;
 41884  	var j, c, cd;
 41885  
 41886  	if (der.peek() === asn1.Ber.OID) {
 41887  		var oid = der.readOID();
 41888  
 41889  		curveNames = Object.keys(algs.curves);
 41890  		for (j = 0; j < curveNames.length; ++j) {
 41891  			c = curveNames[j];
 41892  			cd = algs.curves[c];
 41893  			if (cd.pkcs8oid === oid) {
 41894  				curveName = c;
 41895  				break;
 41896  			}
 41897  		}
 41898  
 41899  	} else {
 41900  		// ECParameters sequence
 41901  		der.readSequence();
 41902  		var version = der.readString(asn1.Ber.Integer, true);
 41903  		assert.strictEqual(version[0], 1, 'ECDSA key not version 1');
 41904  
 41905  		var curve = {};
 41906  
 41907  		// FieldID sequence
 41908  		der.readSequence();
 41909  		var fieldTypeOid = der.readOID();
 41910  		assert.strictEqual(fieldTypeOid, '1.2.840.10045.1.1',
 41911  		    'ECDSA key is not from a prime-field');
 41912  		var p = curve.p = utils.mpNormalize(
 41913  		    der.readString(asn1.Ber.Integer, true));
 41914  		/*
 41915  		 * p always starts with a 1 bit, so count the zeros to get its
 41916  		 * real size.
 41917  		 */
 41918  		curve.size = p.length * 8 - utils.countZeros(p);
 41919  
 41920  		// Curve sequence
 41921  		der.readSequence();
 41922  		curve.a = utils.mpNormalize(
 41923  		    der.readString(asn1.Ber.OctetString, true));
 41924  		curve.b = utils.mpNormalize(
 41925  		    der.readString(asn1.Ber.OctetString, true));
 41926  		if (der.peek() === asn1.Ber.BitString)
 41927  			curve.s = der.readString(asn1.Ber.BitString, true);
 41928  
 41929  		// Combined Gx and Gy
 41930  		curve.G = der.readString(asn1.Ber.OctetString, true);
 41931  		assert.strictEqual(curve.G[0], 0x4,
 41932  		    'uncompressed G is required');
 41933  
 41934  		curve.n = utils.mpNormalize(
 41935  		    der.readString(asn1.Ber.Integer, true));
 41936  		curve.h = utils.mpNormalize(
 41937  		    der.readString(asn1.Ber.Integer, true));
 41938  		assert.strictEqual(curve.h[0], 0x1, 'a cofactor=1 curve is ' +
 41939  		    'required');
 41940  
 41941  		curveNames = Object.keys(algs.curves);
 41942  		var ks = Object.keys(curve);
 41943  		for (j = 0; j < curveNames.length; ++j) {
 41944  			c = curveNames[j];
 41945  			cd = algs.curves[c];
 41946  			var equal = true;
 41947  			for (var i = 0; i < ks.length; ++i) {
 41948  				var k = ks[i];
 41949  				if (cd[k] === undefined)
 41950  					continue;
 41951  				if (typeof (cd[k]) === 'object' &&
 41952  				    cd[k].equals !== undefined) {
 41953  					if (!cd[k].equals(curve[k])) {
 41954  						equal = false;
 41955  						break;
 41956  					}
 41957  				} else if (Buffer.isBuffer(cd[k])) {
 41958  					if (cd[k].toString('binary')
 41959  					    !== curve[k].toString('binary')) {
 41960  						equal = false;
 41961  						break;
 41962  					}
 41963  				} else {
 41964  					if (cd[k] !== curve[k]) {
 41965  						equal = false;
 41966  						break;
 41967  					}
 41968  				}
 41969  			}
 41970  			if (equal) {
 41971  				curveName = c;
 41972  				break;
 41973  			}
 41974  		}
 41975  	}
 41976  	return (curveName);
 41977  }
 41978  
 41979  function readPkcs8ECDSAPrivate(der) {
 41980  	var curveName = readECDSACurve(der);
 41981  	assert.string(curveName, 'a known elliptic curve');
 41982  
 41983  	der.readSequence(asn1.Ber.OctetString);
 41984  	der.readSequence();
 41985  
 41986  	var version = readMPInt(der, 'version');
 41987  	assert.equal(version[0], 1, 'unknown version of ECDSA key');
 41988  
 41989  	var d = der.readString(asn1.Ber.OctetString, true);
 41990  	der.readSequence(0xa1);
 41991  
 41992  	var Q = der.readString(asn1.Ber.BitString, true);
 41993  	Q = utils.ecNormalize(Q);
 41994  
 41995  	var key = {
 41996  		type: 'ecdsa',
 41997  		parts: [
 41998  			{ name: 'curve', data: Buffer.from(curveName) },
 41999  			{ name: 'Q', data: Q },
 42000  			{ name: 'd', data: d }
 42001  		]
 42002  	};
 42003  
 42004  	return (new PrivateKey(key));
 42005  }
 42006  
 42007  function readPkcs8ECDSAPublic(der) {
 42008  	var curveName = readECDSACurve(der);
 42009  	assert.string(curveName, 'a known elliptic curve');
 42010  
 42011  	var Q = der.readString(asn1.Ber.BitString, true);
 42012  	Q = utils.ecNormalize(Q);
 42013  
 42014  	var key = {
 42015  		type: 'ecdsa',
 42016  		parts: [
 42017  			{ name: 'curve', data: Buffer.from(curveName) },
 42018  			{ name: 'Q', data: Q }
 42019  		]
 42020  	};
 42021  
 42022  	return (new Key(key));
 42023  }
 42024  
 42025  function readPkcs8EdDSAPublic(der) {
 42026  	if (der.peek() === 0x00)
 42027  		der.readByte();
 42028  
 42029  	var A = utils.readBitString(der);
 42030  
 42031  	var key = {
 42032  		type: 'ed25519',
 42033  		parts: [
 42034  			{ name: 'A', data: utils.zeroPadToLength(A, 32) }
 42035  		]
 42036  	};
 42037  
 42038  	return (new Key(key));
 42039  }
 42040  
 42041  function readPkcs8X25519Public(der) {
 42042  	var A = utils.readBitString(der);
 42043  
 42044  	var key = {
 42045  		type: 'curve25519',
 42046  		parts: [
 42047  			{ name: 'A', data: utils.zeroPadToLength(A, 32) }
 42048  		]
 42049  	};
 42050  
 42051  	return (new Key(key));
 42052  }
 42053  
 42054  function readPkcs8EdDSAPrivate(der) {
 42055  	if (der.peek() === 0x00)
 42056  		der.readByte();
 42057  
 42058  	der.readSequence(asn1.Ber.OctetString);
 42059  	var k = der.readString(asn1.Ber.OctetString, true);
 42060  	k = utils.zeroPadToLength(k, 32);
 42061  
 42062  	var A;
 42063  	if (der.peek() === asn1.Ber.BitString) {
 42064  		A = utils.readBitString(der);
 42065  		A = utils.zeroPadToLength(A, 32);
 42066  	} else {
 42067  		A = utils.calculateED25519Public(k);
 42068  	}
 42069  
 42070  	var key = {
 42071  		type: 'ed25519',
 42072  		parts: [
 42073  			{ name: 'A', data: utils.zeroPadToLength(A, 32) },
 42074  			{ name: 'k', data: utils.zeroPadToLength(k, 32) }
 42075  		]
 42076  	};
 42077  
 42078  	return (new PrivateKey(key));
 42079  }
 42080  
 42081  function readPkcs8X25519Private(der) {
 42082  	if (der.peek() === 0x00)
 42083  		der.readByte();
 42084  
 42085  	der.readSequence(asn1.Ber.OctetString);
 42086  	var k = der.readString(asn1.Ber.OctetString, true);
 42087  	k = utils.zeroPadToLength(k, 32);
 42088  
 42089  	var A = utils.calculateX25519Public(k);
 42090  
 42091  	var key = {
 42092  		type: 'curve25519',
 42093  		parts: [
 42094  			{ name: 'A', data: utils.zeroPadToLength(A, 32) },
 42095  			{ name: 'k', data: utils.zeroPadToLength(k, 32) }
 42096  		]
 42097  	};
 42098  
 42099  	return (new PrivateKey(key));
 42100  }
 42101  
 42102  function writePkcs8(der, key) {
 42103  	der.startSequence();
 42104  
 42105  	if (PrivateKey.isPrivateKey(key)) {
 42106  		var sillyInt = Buffer.from([0]);
 42107  		der.writeBuffer(sillyInt, asn1.Ber.Integer);
 42108  	}
 42109  
 42110  	der.startSequence();
 42111  	switch (key.type) {
 42112  	case 'rsa':
 42113  		der.writeOID('1.2.840.113549.1.1.1');
 42114  		if (PrivateKey.isPrivateKey(key))
 42115  			writePkcs8RSAPrivate(key, der);
 42116  		else
 42117  			writePkcs8RSAPublic(key, der);
 42118  		break;
 42119  	case 'dsa':
 42120  		der.writeOID('1.2.840.10040.4.1');
 42121  		if (PrivateKey.isPrivateKey(key))
 42122  			writePkcs8DSAPrivate(key, der);
 42123  		else
 42124  			writePkcs8DSAPublic(key, der);
 42125  		break;
 42126  	case 'ecdsa':
 42127  		der.writeOID('1.2.840.10045.2.1');
 42128  		if (PrivateKey.isPrivateKey(key))
 42129  			writePkcs8ECDSAPrivate(key, der);
 42130  		else
 42131  			writePkcs8ECDSAPublic(key, der);
 42132  		break;
 42133  	case 'ed25519':
 42134  		der.writeOID('1.3.101.112');
 42135  		if (PrivateKey.isPrivateKey(key))
 42136  			throw (new Error('Ed25519 private keys in pkcs8 ' +
 42137  			    'format are not supported'));
 42138  		writePkcs8EdDSAPublic(key, der);
 42139  		break;
 42140  	default:
 42141  		throw (new Error('Unsupported key type: ' + key.type));
 42142  	}
 42143  
 42144  	der.endSequence();
 42145  }
 42146  
 42147  function writePkcs8RSAPrivate(key, der) {
 42148  	der.writeNull();
 42149  	der.endSequence();
 42150  
 42151  	der.startSequence(asn1.Ber.OctetString);
 42152  	der.startSequence();
 42153  
 42154  	var version = Buffer.from([0]);
 42155  	der.writeBuffer(version, asn1.Ber.Integer);
 42156  
 42157  	der.writeBuffer(key.part.n.data, asn1.Ber.Integer);
 42158  	der.writeBuffer(key.part.e.data, asn1.Ber.Integer);
 42159  	der.writeBuffer(key.part.d.data, asn1.Ber.Integer);
 42160  	der.writeBuffer(key.part.p.data, asn1.Ber.Integer);
 42161  	der.writeBuffer(key.part.q.data, asn1.Ber.Integer);
 42162  	if (!key.part.dmodp || !key.part.dmodq)
 42163  		utils.addRSAMissing(key);
 42164  	der.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer);
 42165  	der.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer);
 42166  	der.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer);
 42167  
 42168  	der.endSequence();
 42169  	der.endSequence();
 42170  }
 42171  
 42172  function writePkcs8RSAPublic(key, der) {
 42173  	der.writeNull();
 42174  	der.endSequence();
 42175  
 42176  	der.startSequence(asn1.Ber.BitString);
 42177  	der.writeByte(0x00);
 42178  
 42179  	der.startSequence();
 42180  	der.writeBuffer(key.part.n.data, asn1.Ber.Integer);
 42181  	der.writeBuffer(key.part.e.data, asn1.Ber.Integer);
 42182  	der.endSequence();
 42183  
 42184  	der.endSequence();
 42185  }
 42186  
 42187  function writePkcs8DSAPrivate(key, der) {
 42188  	der.startSequence();
 42189  	der.writeBuffer(key.part.p.data, asn1.Ber.Integer);
 42190  	der.writeBuffer(key.part.q.data, asn1.Ber.Integer);
 42191  	der.writeBuffer(key.part.g.data, asn1.Ber.Integer);
 42192  	der.endSequence();
 42193  
 42194  	der.endSequence();
 42195  
 42196  	der.startSequence(asn1.Ber.OctetString);
 42197  	der.writeBuffer(key.part.x.data, asn1.Ber.Integer);
 42198  	der.endSequence();
 42199  }
 42200  
 42201  function writePkcs8DSAPublic(key, der) {
 42202  	der.startSequence();
 42203  	der.writeBuffer(key.part.p.data, asn1.Ber.Integer);
 42204  	der.writeBuffer(key.part.q.data, asn1.Ber.Integer);
 42205  	der.writeBuffer(key.part.g.data, asn1.Ber.Integer);
 42206  	der.endSequence();
 42207  	der.endSequence();
 42208  
 42209  	der.startSequence(asn1.Ber.BitString);
 42210  	der.writeByte(0x00);
 42211  	der.writeBuffer(key.part.y.data, asn1.Ber.Integer);
 42212  	der.endSequence();
 42213  }
 42214  
 42215  function writeECDSACurve(key, der) {
 42216  	var curve = algs.curves[key.curve];
 42217  	if (curve.pkcs8oid) {
 42218  		/* This one has a name in pkcs#8, so just write the oid */
 42219  		der.writeOID(curve.pkcs8oid);
 42220  
 42221  	} else {
 42222  		// ECParameters sequence
 42223  		der.startSequence();
 42224  
 42225  		var version = Buffer.from([1]);
 42226  		der.writeBuffer(version, asn1.Ber.Integer);
 42227  
 42228  		// FieldID sequence
 42229  		der.startSequence();
 42230  		der.writeOID('1.2.840.10045.1.1'); // prime-field
 42231  		der.writeBuffer(curve.p, asn1.Ber.Integer);
 42232  		der.endSequence();
 42233  
 42234  		// Curve sequence
 42235  		der.startSequence();
 42236  		var a = curve.p;
 42237  		if (a[0] === 0x0)
 42238  			a = a.slice(1);
 42239  		der.writeBuffer(a, asn1.Ber.OctetString);
 42240  		der.writeBuffer(curve.b, asn1.Ber.OctetString);
 42241  		der.writeBuffer(curve.s, asn1.Ber.BitString);
 42242  		der.endSequence();
 42243  
 42244  		der.writeBuffer(curve.G, asn1.Ber.OctetString);
 42245  		der.writeBuffer(curve.n, asn1.Ber.Integer);
 42246  		var h = curve.h;
 42247  		if (!h) {
 42248  			h = Buffer.from([1]);
 42249  		}
 42250  		der.writeBuffer(h, asn1.Ber.Integer);
 42251  
 42252  		// ECParameters
 42253  		der.endSequence();
 42254  	}
 42255  }
 42256  
 42257  function writePkcs8ECDSAPublic(key, der) {
 42258  	writeECDSACurve(key, der);
 42259  	der.endSequence();
 42260  
 42261  	var Q = utils.ecNormalize(key.part.Q.data, true);
 42262  	der.writeBuffer(Q, asn1.Ber.BitString);
 42263  }
 42264  
 42265  function writePkcs8ECDSAPrivate(key, der) {
 42266  	writeECDSACurve(key, der);
 42267  	der.endSequence();
 42268  
 42269  	der.startSequence(asn1.Ber.OctetString);
 42270  	der.startSequence();
 42271  
 42272  	var version = Buffer.from([1]);
 42273  	der.writeBuffer(version, asn1.Ber.Integer);
 42274  
 42275  	der.writeBuffer(key.part.d.data, asn1.Ber.OctetString);
 42276  
 42277  	der.startSequence(0xa1);
 42278  	var Q = utils.ecNormalize(key.part.Q.data, true);
 42279  	der.writeBuffer(Q, asn1.Ber.BitString);
 42280  	der.endSequence();
 42281  
 42282  	der.endSequence();
 42283  	der.endSequence();
 42284  }
 42285  
 42286  function writePkcs8EdDSAPublic(key, der) {
 42287  	der.endSequence();
 42288  
 42289  	utils.writeBitString(der, key.part.A.data);
 42290  }
 42291  
 42292  function writePkcs8EdDSAPrivate(key, der) {
 42293  	der.endSequence();
 42294  
 42295  	var k = utils.mpNormalize(key.part.k.data, true);
 42296  	der.startSequence(asn1.Ber.OctetString);
 42297  	der.writeBuffer(k, asn1.Ber.OctetString);
 42298  	der.endSequence();
 42299  }
 42300  
 42301  
 42302  /***/ }),
 42303  /* 158 */
 42304  /***/ (function(module, exports, __webpack_require__) {
 42305  
 42306  // Copyright 2017 Joyent, Inc.
 42307  
 42308  module.exports = Identity;
 42309  
 42310  var assert = __webpack_require__(16);
 42311  var algs = __webpack_require__(32);
 42312  var crypto = __webpack_require__(11);
 42313  var Fingerprint = __webpack_require__(156);
 42314  var Signature = __webpack_require__(75);
 42315  var errs = __webpack_require__(74);
 42316  var util = __webpack_require__(3);
 42317  var utils = __webpack_require__(26);
 42318  var asn1 = __webpack_require__(66);
 42319  var Buffer = __webpack_require__(15).Buffer;
 42320  
 42321  /*JSSTYLED*/
 42322  var DNS_NAME_RE = /^([*]|[a-z0-9][a-z0-9\-]{0,62})(?:\.([*]|[a-z0-9][a-z0-9\-]{0,62}))*$/i;
 42323  
 42324  var oids = {};
 42325  oids.cn = '2.5.4.3';
 42326  oids.o = '2.5.4.10';
 42327  oids.ou = '2.5.4.11';
 42328  oids.l = '2.5.4.7';
 42329  oids.s = '2.5.4.8';
 42330  oids.c = '2.5.4.6';
 42331  oids.sn = '2.5.4.4';
 42332  oids.dc = '0.9.2342.19200300.100.1.25';
 42333  oids.uid = '0.9.2342.19200300.100.1.1';
 42334  oids.mail = '0.9.2342.19200300.100.1.3';
 42335  
 42336  var unoids = {};
 42337  Object.keys(oids).forEach(function (k) {
 42338  	unoids[oids[k]] = k;
 42339  });
 42340  
 42341  function Identity(opts) {
 42342  	var self = this;
 42343  	assert.object(opts, 'options');
 42344  	assert.arrayOfObject(opts.components, 'options.components');
 42345  	this.components = opts.components;
 42346  	this.componentLookup = {};
 42347  	this.components.forEach(function (c) {
 42348  		if (c.name && !c.oid)
 42349  			c.oid = oids[c.name];
 42350  		if (c.oid && !c.name)
 42351  			c.name = unoids[c.oid];
 42352  		if (self.componentLookup[c.name] === undefined)
 42353  			self.componentLookup[c.name] = [];
 42354  		self.componentLookup[c.name].push(c);
 42355  	});
 42356  	if (this.componentLookup.cn && this.componentLookup.cn.length > 0) {
 42357  		this.cn = this.componentLookup.cn[0].value;
 42358  	}
 42359  	assert.optionalString(opts.type, 'options.type');
 42360  	if (opts.type === undefined) {
 42361  		if (this.components.length === 1 &&
 42362  		    this.componentLookup.cn &&
 42363  		    this.componentLookup.cn.length === 1 &&
 42364  		    this.componentLookup.cn[0].value.match(DNS_NAME_RE)) {
 42365  			this.type = 'host';
 42366  			this.hostname = this.componentLookup.cn[0].value;
 42367  
 42368  		} else if (this.componentLookup.dc &&
 42369  		    this.components.length === this.componentLookup.dc.length) {
 42370  			this.type = 'host';
 42371  			this.hostname = this.componentLookup.dc.map(
 42372  			    function (c) {
 42373  				return (c.value);
 42374  			}).join('.');
 42375  
 42376  		} else if (this.componentLookup.uid &&
 42377  		    this.components.length ===
 42378  		    this.componentLookup.uid.length) {
 42379  			this.type = 'user';
 42380  			this.uid = this.componentLookup.uid[0].value;
 42381  
 42382  		} else if (this.componentLookup.cn &&
 42383  		    this.componentLookup.cn.length === 1 &&
 42384  		    this.componentLookup.cn[0].value.match(DNS_NAME_RE)) {
 42385  			this.type = 'host';
 42386  			this.hostname = this.componentLookup.cn[0].value;
 42387  
 42388  		} else if (this.componentLookup.uid &&
 42389  		    this.componentLookup.uid.length === 1) {
 42390  			this.type = 'user';
 42391  			this.uid = this.componentLookup.uid[0].value;
 42392  
 42393  		} else if (this.componentLookup.mail &&
 42394  		    this.componentLookup.mail.length === 1) {
 42395  			this.type = 'email';
 42396  			this.email = this.componentLookup.mail[0].value;
 42397  
 42398  		} else if (this.componentLookup.cn &&
 42399  		    this.componentLookup.cn.length === 1) {
 42400  			this.type = 'user';
 42401  			this.uid = this.componentLookup.cn[0].value;
 42402  
 42403  		} else {
 42404  			this.type = 'unknown';
 42405  		}
 42406  	} else {
 42407  		this.type = opts.type;
 42408  		if (this.type === 'host')
 42409  			this.hostname = opts.hostname;
 42410  		else if (this.type === 'user')
 42411  			this.uid = opts.uid;
 42412  		else if (this.type === 'email')
 42413  			this.email = opts.email;
 42414  		else
 42415  			throw (new Error('Unknown type ' + this.type));
 42416  	}
 42417  }
 42418  
 42419  Identity.prototype.toString = function () {
 42420  	return (this.components.map(function (c) {
 42421  		return (c.name.toUpperCase() + '=' + c.value);
 42422  	}).join(', '));
 42423  };
 42424  
 42425  /*
 42426   * These are from X.680 -- PrintableString allowed chars are in section 37.4
 42427   * table 8. Spec for IA5Strings is "1,6 + SPACE + DEL" where 1 refers to
 42428   * ISO IR #001 (standard ASCII control characters) and 6 refers to ISO IR #006
 42429   * (the basic ASCII character set).
 42430   */
 42431  /* JSSTYLED */
 42432  var NOT_PRINTABLE = /[^a-zA-Z0-9 '(),+.\/:=?-]/;
 42433  /* JSSTYLED */
 42434  var NOT_IA5 = /[^\x00-\x7f]/;
 42435  
 42436  Identity.prototype.toAsn1 = function (der, tag) {
 42437  	der.startSequence(tag);
 42438  	this.components.forEach(function (c) {
 42439  		der.startSequence(asn1.Ber.Constructor | asn1.Ber.Set);
 42440  		der.startSequence();
 42441  		der.writeOID(c.oid);
 42442  		/*
 42443  		 * If we fit in a PrintableString, use that. Otherwise use an
 42444  		 * IA5String or UTF8String.
 42445  		 *
 42446  		 * If this identity was parsed from a DN, use the ASN.1 types
 42447  		 * from the original representation (otherwise this might not
 42448  		 * be a full match for the original in some validators).
 42449  		 */
 42450  		if (c.asn1type === asn1.Ber.Utf8String ||
 42451  		    c.value.match(NOT_IA5)) {
 42452  			var v = Buffer.from(c.value, 'utf8');
 42453  			der.writeBuffer(v, asn1.Ber.Utf8String);
 42454  
 42455  		} else if (c.asn1type === asn1.Ber.IA5String ||
 42456  		    c.value.match(NOT_PRINTABLE)) {
 42457  			der.writeString(c.value, asn1.Ber.IA5String);
 42458  
 42459  		} else {
 42460  			var type = asn1.Ber.PrintableString;
 42461  			if (c.asn1type !== undefined)
 42462  				type = c.asn1type;
 42463  			der.writeString(c.value, type);
 42464  		}
 42465  		der.endSequence();
 42466  		der.endSequence();
 42467  	});
 42468  	der.endSequence();
 42469  };
 42470  
 42471  function globMatch(a, b) {
 42472  	if (a === '**' || b === '**')
 42473  		return (true);
 42474  	var aParts = a.split('.');
 42475  	var bParts = b.split('.');
 42476  	if (aParts.length !== bParts.length)
 42477  		return (false);
 42478  	for (var i = 0; i < aParts.length; ++i) {
 42479  		if (aParts[i] === '*' || bParts[i] === '*')
 42480  			continue;
 42481  		if (aParts[i] !== bParts[i])
 42482  			return (false);
 42483  	}
 42484  	return (true);
 42485  }
 42486  
 42487  Identity.prototype.equals = function (other) {
 42488  	if (!Identity.isIdentity(other, [1, 0]))
 42489  		return (false);
 42490  	if (other.components.length !== this.components.length)
 42491  		return (false);
 42492  	for (var i = 0; i < this.components.length; ++i) {
 42493  		if (this.components[i].oid !== other.components[i].oid)
 42494  			return (false);
 42495  		if (!globMatch(this.components[i].value,
 42496  		    other.components[i].value)) {
 42497  			return (false);
 42498  		}
 42499  	}
 42500  	return (true);
 42501  };
 42502  
 42503  Identity.forHost = function (hostname) {
 42504  	assert.string(hostname, 'hostname');
 42505  	return (new Identity({
 42506  		type: 'host',
 42507  		hostname: hostname,
 42508  		components: [ { name: 'cn', value: hostname } ]
 42509  	}));
 42510  };
 42511  
 42512  Identity.forUser = function (uid) {
 42513  	assert.string(uid, 'uid');
 42514  	return (new Identity({
 42515  		type: 'user',
 42516  		uid: uid,
 42517  		components: [ { name: 'uid', value: uid } ]
 42518  	}));
 42519  };
 42520  
 42521  Identity.forEmail = function (email) {
 42522  	assert.string(email, 'email');
 42523  	return (new Identity({
 42524  		type: 'email',
 42525  		email: email,
 42526  		components: [ { name: 'mail', value: email } ]
 42527  	}));
 42528  };
 42529  
 42530  Identity.parseDN = function (dn) {
 42531  	assert.string(dn, 'dn');
 42532  	var parts = dn.split(',');
 42533  	var cmps = parts.map(function (c) {
 42534  		c = c.trim();
 42535  		var eqPos = c.indexOf('=');
 42536  		var name = c.slice(0, eqPos).toLowerCase();
 42537  		var value = c.slice(eqPos + 1);
 42538  		return ({ name: name, value: value });
 42539  	});
 42540  	return (new Identity({ components: cmps }));
 42541  };
 42542  
 42543  Identity.parseAsn1 = function (der, top) {
 42544  	var components = [];
 42545  	der.readSequence(top);
 42546  	var end = der.offset + der.length;
 42547  	while (der.offset < end) {
 42548  		der.readSequence(asn1.Ber.Constructor | asn1.Ber.Set);
 42549  		var after = der.offset + der.length;
 42550  		der.readSequence();
 42551  		var oid = der.readOID();
 42552  		var type = der.peek();
 42553  		var value;
 42554  		switch (type) {
 42555  		case asn1.Ber.PrintableString:
 42556  		case asn1.Ber.IA5String:
 42557  		case asn1.Ber.OctetString:
 42558  		case asn1.Ber.T61String:
 42559  			value = der.readString(type);
 42560  			break;
 42561  		case asn1.Ber.Utf8String:
 42562  			value = der.readString(type, true);
 42563  			value = value.toString('utf8');
 42564  			break;
 42565  		case asn1.Ber.CharacterString:
 42566  		case asn1.Ber.BMPString:
 42567  			value = der.readString(type, true);
 42568  			value = value.toString('utf16le');
 42569  			break;
 42570  		default:
 42571  			throw (new Error('Unknown asn1 type ' + type));
 42572  		}
 42573  		components.push({ oid: oid, asn1type: type, value: value });
 42574  		der._offset = after;
 42575  	}
 42576  	der._offset = end;
 42577  	return (new Identity({
 42578  		components: components
 42579  	}));
 42580  };
 42581  
 42582  Identity.isIdentity = function (obj, ver) {
 42583  	return (utils.isCompatible(obj, Identity, ver));
 42584  };
 42585  
 42586  /*
 42587   * API versions for Identity:
 42588   * [1,0] -- initial ver
 42589   */
 42590  Identity.prototype._sshpkApiVersion = [1, 0];
 42591  
 42592  Identity._oldVersionDetect = function (obj) {
 42593  	return ([1, 0]);
 42594  };
 42595  
 42596  
 42597  /***/ }),
 42598  /* 159 */
 42599  /***/ (function(module, exports, __webpack_require__) {
 42600  
 42601  // Copyright 2015 Joyent, Inc.
 42602  
 42603  module.exports = SSHBuffer;
 42604  
 42605  var assert = __webpack_require__(16);
 42606  var Buffer = __webpack_require__(15).Buffer;
 42607  
 42608  function SSHBuffer(opts) {
 42609  	assert.object(opts, 'options');
 42610  	if (opts.buffer !== undefined)
 42611  		assert.buffer(opts.buffer, 'options.buffer');
 42612  
 42613  	this._size = opts.buffer ? opts.buffer.length : 1024;
 42614  	this._buffer = opts.buffer || Buffer.alloc(this._size);
 42615  	this._offset = 0;
 42616  }
 42617  
 42618  SSHBuffer.prototype.toBuffer = function () {
 42619  	return (this._buffer.slice(0, this._offset));
 42620  };
 42621  
 42622  SSHBuffer.prototype.atEnd = function () {
 42623  	return (this._offset >= this._buffer.length);
 42624  };
 42625  
 42626  SSHBuffer.prototype.remainder = function () {
 42627  	return (this._buffer.slice(this._offset));
 42628  };
 42629  
 42630  SSHBuffer.prototype.skip = function (n) {
 42631  	this._offset += n;
 42632  };
 42633  
 42634  SSHBuffer.prototype.expand = function () {
 42635  	this._size *= 2;
 42636  	var buf = Buffer.alloc(this._size);
 42637  	this._buffer.copy(buf, 0);
 42638  	this._buffer = buf;
 42639  };
 42640  
 42641  SSHBuffer.prototype.readPart = function () {
 42642  	return ({data: this.readBuffer()});
 42643  };
 42644  
 42645  SSHBuffer.prototype.readBuffer = function () {
 42646  	var len = this._buffer.readUInt32BE(this._offset);
 42647  	this._offset += 4;
 42648  	assert.ok(this._offset + len <= this._buffer.length,
 42649  	    'length out of bounds at +0x' + this._offset.toString(16) +
 42650  	    ' (data truncated?)');
 42651  	var buf = this._buffer.slice(this._offset, this._offset + len);
 42652  	this._offset += len;
 42653  	return (buf);
 42654  };
 42655  
 42656  SSHBuffer.prototype.readString = function () {
 42657  	return (this.readBuffer().toString());
 42658  };
 42659  
 42660  SSHBuffer.prototype.readCString = function () {
 42661  	var offset = this._offset;
 42662  	while (offset < this._buffer.length &&
 42663  	    this._buffer[offset] !== 0x00)
 42664  		offset++;
 42665  	assert.ok(offset < this._buffer.length, 'c string does not terminate');
 42666  	var str = this._buffer.slice(this._offset, offset).toString();
 42667  	this._offset = offset + 1;
 42668  	return (str);
 42669  };
 42670  
 42671  SSHBuffer.prototype.readInt = function () {
 42672  	var v = this._buffer.readUInt32BE(this._offset);
 42673  	this._offset += 4;
 42674  	return (v);
 42675  };
 42676  
 42677  SSHBuffer.prototype.readInt64 = function () {
 42678  	assert.ok(this._offset + 8 < this._buffer.length,
 42679  	    'buffer not long enough to read Int64');
 42680  	var v = this._buffer.slice(this._offset, this._offset + 8);
 42681  	this._offset += 8;
 42682  	return (v);
 42683  };
 42684  
 42685  SSHBuffer.prototype.readChar = function () {
 42686  	var v = this._buffer[this._offset++];
 42687  	return (v);
 42688  };
 42689  
 42690  SSHBuffer.prototype.writeBuffer = function (buf) {
 42691  	while (this._offset + 4 + buf.length > this._size)
 42692  		this.expand();
 42693  	this._buffer.writeUInt32BE(buf.length, this._offset);
 42694  	this._offset += 4;
 42695  	buf.copy(this._buffer, this._offset);
 42696  	this._offset += buf.length;
 42697  };
 42698  
 42699  SSHBuffer.prototype.writeString = function (str) {
 42700  	this.writeBuffer(Buffer.from(str, 'utf8'));
 42701  };
 42702  
 42703  SSHBuffer.prototype.writeCString = function (str) {
 42704  	while (this._offset + 1 + str.length > this._size)
 42705  		this.expand();
 42706  	this._buffer.write(str, this._offset);
 42707  	this._offset += str.length;
 42708  	this._buffer[this._offset++] = 0;
 42709  };
 42710  
 42711  SSHBuffer.prototype.writeInt = function (v) {
 42712  	while (this._offset + 4 > this._size)
 42713  		this.expand();
 42714  	this._buffer.writeUInt32BE(v, this._offset);
 42715  	this._offset += 4;
 42716  };
 42717  
 42718  SSHBuffer.prototype.writeInt64 = function (v) {
 42719  	assert.buffer(v, 'value');
 42720  	if (v.length > 8) {
 42721  		var lead = v.slice(0, v.length - 8);
 42722  		for (var i = 0; i < lead.length; ++i) {
 42723  			assert.strictEqual(lead[i], 0,
 42724  			    'must fit in 64 bits of precision');
 42725  		}
 42726  		v = v.slice(v.length - 8, v.length);
 42727  	}
 42728  	while (this._offset + 8 > this._size)
 42729  		this.expand();
 42730  	v.copy(this._buffer, this._offset);
 42731  	this._offset += 8;
 42732  };
 42733  
 42734  SSHBuffer.prototype.writeChar = function (v) {
 42735  	while (this._offset + 1 > this._size)
 42736  		this.expand();
 42737  	this._buffer[this._offset++] = v;
 42738  };
 42739  
 42740  SSHBuffer.prototype.writePart = function (p) {
 42741  	this.writeBuffer(p.data);
 42742  };
 42743  
 42744  SSHBuffer.prototype.write = function (buf) {
 42745  	while (this._offset + buf.length > this._size)
 42746  		this.expand();
 42747  	buf.copy(this._buffer, this._offset);
 42748  	this._offset += buf.length;
 42749  };
 42750  
 42751  
 42752  /***/ }),
 42753  /* 160 */
 42754  /***/ (function(module, exports, __webpack_require__) {
 42755  
 42756  "use strict";
 42757  
 42758  module.exports = x => {
 42759  	if (typeof x !== 'string') {
 42760  		throw new TypeError('Expected a string, got ' + typeof x);
 42761  	}
 42762  
 42763  	// Catches EFBBBF (UTF-8 BOM) because the buffer-to-string
 42764  	// conversion translates it to FEFF (UTF-16 BOM)
 42765  	if (x.charCodeAt(0) === 0xFEFF) {
 42766  		return x.slice(1);
 42767  	}
 42768  
 42769  	return x;
 42770  };
 42771  
 42772  
 42773  /***/ }),
 42774  /* 161 */
 42775  /***/ (function(module, exports) {
 42776  
 42777  // Returns a wrapper function that returns a wrapped callback
 42778  // The wrapper function should do some stuff, and return a
 42779  // presumably different callback function.
 42780  // This makes sure that own properties are retained, so that
 42781  // decorations and such are not lost along the way.
 42782  module.exports = wrappy
 42783  function wrappy (fn, cb) {
 42784    if (fn && cb) return wrappy(fn)(cb)
 42785  
 42786    if (typeof fn !== 'function')
 42787      throw new TypeError('need wrapper function')
 42788  
 42789    Object.keys(fn).forEach(function (k) {
 42790      wrapper[k] = fn[k]
 42791    })
 42792  
 42793    return wrapper
 42794  
 42795    function wrapper() {
 42796      var args = new Array(arguments.length)
 42797      for (var i = 0; i < args.length; i++) {
 42798        args[i] = arguments[i]
 42799      }
 42800      var ret = fn.apply(this, args)
 42801      var cb = args[args.length-1]
 42802      if (typeof ret === 'function' && ret !== cb) {
 42803        Object.keys(cb).forEach(function (k) {
 42804          ret[k] = cb[k]
 42805        })
 42806      }
 42807      return ret
 42808    }
 42809  }
 42810  
 42811  
 42812  /***/ }),
 42813  /* 162 */
 42814  /***/ (function(module, exports, __webpack_require__) {
 42815  
 42816  "use strict";
 42817  
 42818  
 42819  Object.defineProperty(exports, "__esModule", {
 42820    value: true
 42821  });
 42822  
 42823  var _extends2;
 42824  
 42825  function _load_extends() {
 42826    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 42827  }
 42828  
 42829  var _asyncToGenerator2;
 42830  
 42831  function _load_asyncToGenerator() {
 42832    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 42833  }
 42834  
 42835  exports.extractWorkspaces = extractWorkspaces;
 42836  
 42837  var _executeLifecycleScript;
 42838  
 42839  function _load_executeLifecycleScript() {
 42840    return _executeLifecycleScript = __webpack_require__(111);
 42841  }
 42842  
 42843  var _path;
 42844  
 42845  function _load_path() {
 42846    return _path = __webpack_require__(371);
 42847  }
 42848  
 42849  var _conversion;
 42850  
 42851  function _load_conversion() {
 42852    return _conversion = __webpack_require__(336);
 42853  }
 42854  
 42855  var _index;
 42856  
 42857  function _load_index() {
 42858    return _index = _interopRequireDefault(__webpack_require__(218));
 42859  }
 42860  
 42861  var _errors;
 42862  
 42863  function _load_errors() {
 42864    return _errors = __webpack_require__(6);
 42865  }
 42866  
 42867  var _fs;
 42868  
 42869  function _load_fs() {
 42870    return _fs = _interopRequireWildcard(__webpack_require__(5));
 42871  }
 42872  
 42873  var _constants;
 42874  
 42875  function _load_constants() {
 42876    return _constants = _interopRequireWildcard(__webpack_require__(8));
 42877  }
 42878  
 42879  var _packageConstraintResolver;
 42880  
 42881  function _load_packageConstraintResolver() {
 42882    return _packageConstraintResolver = _interopRequireDefault(__webpack_require__(523));
 42883  }
 42884  
 42885  var _requestManager;
 42886  
 42887  function _load_requestManager() {
 42888    return _requestManager = _interopRequireDefault(__webpack_require__(372));
 42889  }
 42890  
 42891  var _index2;
 42892  
 42893  function _load_index2() {
 42894    return _index2 = __webpack_require__(58);
 42895  }
 42896  
 42897  var _index3;
 42898  
 42899  function _load_index3() {
 42900    return _index3 = __webpack_require__(201);
 42901  }
 42902  
 42903  var _map;
 42904  
 42905  function _load_map() {
 42906    return _map = _interopRequireDefault(__webpack_require__(29));
 42907  }
 42908  
 42909  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 42910  
 42911  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 42912  
 42913  const crypto = __webpack_require__(11);
 42914  const detectIndent = __webpack_require__(603);
 42915  const invariant = __webpack_require__(9);
 42916  const path = __webpack_require__(0);
 42917  const micromatch = __webpack_require__(115);
 42918  const isCi = __webpack_require__(397);
 42919  
 42920  function sortObject(object) {
 42921    const sortedObject = {};
 42922    Object.keys(object).sort().forEach(item => {
 42923      sortedObject[item] = object[item];
 42924    });
 42925    return sortedObject;
 42926  }
 42927  
 42928  class Config {
 42929    constructor(reporter) {
 42930      this.constraintResolver = new (_packageConstraintResolver || _load_packageConstraintResolver()).default(this, reporter);
 42931      this.requestManager = new (_requestManager || _load_requestManager()).default(reporter);
 42932      this.reporter = reporter;
 42933      this._init({});
 42934    }
 42935  
 42936    //
 42937  
 42938  
 42939    //
 42940  
 42941  
 42942    // cache packages in offline mirror folder as new .tgz files
 42943  
 42944  
 42945    //
 42946  
 42947  
 42948    //
 42949  
 42950  
 42951    //
 42952  
 42953  
 42954    //
 42955  
 42956  
 42957    //
 42958  
 42959  
 42960    //
 42961  
 42962  
 42963    //
 42964  
 42965  
 42966    //
 42967  
 42968  
 42969    //
 42970  
 42971  
 42972    //
 42973  
 42974  
 42975    //
 42976  
 42977  
 42978    // Whether we should ignore executing lifecycle scripts
 42979  
 42980  
 42981    //
 42982  
 42983  
 42984    //
 42985  
 42986  
 42987    //
 42988  
 42989  
 42990    //
 42991  
 42992  
 42993    /**
 42994     * Execute a promise produced by factory if it doesn't exist in our cache with
 42995     * the associated key.
 42996     */
 42997  
 42998    getCache(key, factory) {
 42999      const cached = this.cache[key];
 43000      if (cached) {
 43001        return cached;
 43002      }
 43003  
 43004      return this.cache[key] = factory().catch(err => {
 43005        this.cache[key] = null;
 43006        throw err;
 43007      });
 43008    }
 43009  
 43010    /**
 43011     * Get a config option from our yarn config.
 43012     */
 43013  
 43014    getOption(key, resolve = false) {
 43015      const value = this.registries.yarn.getOption(key);
 43016  
 43017      if (resolve && typeof value === 'string' && value.length) {
 43018        return (0, (_path || _load_path()).resolveWithHome)(value);
 43019      }
 43020  
 43021      return value;
 43022    }
 43023  
 43024    /**
 43025     * Reduce a list of versions to a single one based on an input range.
 43026     */
 43027  
 43028    resolveConstraints(versions, range) {
 43029      return this.constraintResolver.reduce(versions, range);
 43030    }
 43031  
 43032    /**
 43033     * Initialise config. Fetch registry options, find package roots.
 43034     */
 43035  
 43036    init(opts = {}) {
 43037      var _this = this;
 43038  
 43039      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 43040        _this._init(opts);
 43041  
 43042        _this.workspaceRootFolder = yield _this.findWorkspaceRoot(_this.cwd);
 43043        _this.lockfileFolder = _this.workspaceRootFolder || _this.cwd;
 43044  
 43045        // using focus in a workspace root is not allowed
 43046        if (_this.focus && (!_this.workspaceRootFolder || _this.cwd === _this.workspaceRootFolder)) {
 43047          throw new (_errors || _load_errors()).MessageError(_this.reporter.lang('workspacesFocusRootCheck'));
 43048        }
 43049  
 43050        if (_this.focus) {
 43051          const focusedWorkspaceManifest = yield _this.readRootManifest();
 43052          _this.focusedWorkspaceName = focusedWorkspaceManifest.name;
 43053        }
 43054  
 43055        _this.linkedModules = [];
 43056  
 43057        let linkedModules;
 43058        try {
 43059          linkedModules = yield (_fs || _load_fs()).readdir(_this.linkFolder);
 43060        } catch (err) {
 43061          if (err.code === 'ENOENT') {
 43062            linkedModules = [];
 43063          } else {
 43064            throw err;
 43065          }
 43066        }
 43067  
 43068        for (var _iterator = linkedModules, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 43069          var _ref;
 43070  
 43071          if (_isArray) {
 43072            if (_i >= _iterator.length) break;
 43073            _ref = _iterator[_i++];
 43074          } else {
 43075            _i = _iterator.next();
 43076            if (_i.done) break;
 43077            _ref = _i.value;
 43078          }
 43079  
 43080          const dir = _ref;
 43081  
 43082          const linkedPath = path.join(_this.linkFolder, dir);
 43083  
 43084          if (dir[0] === '@') {
 43085            // it's a scope, not a package
 43086            const scopedLinked = yield (_fs || _load_fs()).readdir(linkedPath);
 43087            _this.linkedModules.push(...scopedLinked.map(function (scopedDir) {
 43088              return path.join(dir, scopedDir);
 43089            }));
 43090          } else {
 43091            _this.linkedModules.push(dir);
 43092          }
 43093        }
 43094  
 43095        for (var _iterator2 = Object.keys((_index2 || _load_index2()).registries), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 43096          var _ref2;
 43097  
 43098          if (_isArray2) {
 43099            if (_i2 >= _iterator2.length) break;
 43100            _ref2 = _iterator2[_i2++];
 43101          } else {
 43102            _i2 = _iterator2.next();
 43103            if (_i2.done) break;
 43104            _ref2 = _i2.value;
 43105          }
 43106  
 43107          const key = _ref2;
 43108  
 43109          const Registry = (_index2 || _load_index2()).registries[key];
 43110  
 43111          const extraneousRcFiles = Registry === (_index2 || _load_index2()).registries.yarn ? _this.extraneousYarnrcFiles : [];
 43112  
 43113          // instantiate registry
 43114          const registry = new Registry(_this.cwd, _this.registries, _this.requestManager, _this.reporter, _this.enableDefaultRc, extraneousRcFiles);
 43115          yield registry.init({
 43116            registry: opts.registry
 43117          });
 43118  
 43119          _this.registries[key] = registry;
 43120          if (_this.registryFolders.indexOf(registry.folder) === -1) {
 43121            _this.registryFolders.push(registry.folder);
 43122          }
 43123        }
 43124  
 43125        if (_this.modulesFolder) {
 43126          _this.registryFolders = [_this.modulesFolder];
 43127        }
 43128  
 43129        _this.networkConcurrency = opts.networkConcurrency || Number(_this.getOption('network-concurrency')) || (_constants || _load_constants()).NETWORK_CONCURRENCY;
 43130  
 43131        _this.childConcurrency = opts.childConcurrency || Number(_this.getOption('child-concurrency')) || Number(process.env.CHILD_CONCURRENCY) || (_constants || _load_constants()).CHILD_CONCURRENCY;
 43132  
 43133        _this.networkTimeout = opts.networkTimeout || Number(_this.getOption('network-timeout')) || (_constants || _load_constants()).NETWORK_TIMEOUT;
 43134  
 43135        const httpProxy = opts.httpProxy || _this.getOption('proxy');
 43136        const httpsProxy = opts.httpsProxy || _this.getOption('https-proxy');
 43137        _this.requestManager.setOptions({
 43138          userAgent: String(_this.getOption('user-agent')),
 43139          httpProxy: httpProxy === false ? false : String(httpProxy || ''),
 43140          httpsProxy: httpsProxy === false ? false : String(httpsProxy || ''),
 43141          strictSSL: Boolean(_this.getOption('strict-ssl')),
 43142          ca: Array.prototype.concat(opts.ca || _this.getOption('ca') || []).map(String),
 43143          cafile: String(opts.cafile || _this.getOption('cafile', true) || ''),
 43144          cert: String(opts.cert || _this.getOption('cert') || ''),
 43145          key: String(opts.key || _this.getOption('key') || ''),
 43146          networkConcurrency: _this.networkConcurrency,
 43147          networkTimeout: _this.networkTimeout
 43148        });
 43149  
 43150        _this.globalFolder = opts.globalFolder || String(_this.getOption('global-folder', true));
 43151        if (_this.globalFolder === 'undefined') {
 43152          _this.globalFolder = (_constants || _load_constants()).GLOBAL_MODULE_DIRECTORY;
 43153        }
 43154  
 43155        let cacheRootFolder = opts.cacheFolder || _this.getOption('cache-folder', true);
 43156  
 43157        if (!cacheRootFolder) {
 43158          let preferredCacheFolders = (_constants || _load_constants()).PREFERRED_MODULE_CACHE_DIRECTORIES;
 43159          const preferredCacheFolder = opts.preferredCacheFolder || _this.getOption('preferred-cache-folder', true);
 43160  
 43161          if (preferredCacheFolder) {
 43162            preferredCacheFolders = [String(preferredCacheFolder)].concat(preferredCacheFolders);
 43163          }
 43164  
 43165          const cacheFolderQuery = yield (_fs || _load_fs()).getFirstSuitableFolder(preferredCacheFolders, (_fs || _load_fs()).constants.W_OK | (_fs || _load_fs()).constants.X_OK | (_fs || _load_fs()).constants.R_OK // eslint-disable-line no-bitwise
 43166          );
 43167          for (var _iterator3 = cacheFolderQuery.skipped, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 43168            var _ref3;
 43169  
 43170            if (_isArray3) {
 43171              if (_i3 >= _iterator3.length) break;
 43172              _ref3 = _iterator3[_i3++];
 43173            } else {
 43174              _i3 = _iterator3.next();
 43175              if (_i3.done) break;
 43176              _ref3 = _i3.value;
 43177            }
 43178  
 43179            const skippedEntry = _ref3;
 43180  
 43181            _this.reporter.warn(_this.reporter.lang('cacheFolderSkipped', skippedEntry.folder));
 43182          }
 43183  
 43184          cacheRootFolder = cacheFolderQuery.folder;
 43185          if (cacheRootFolder && cacheFolderQuery.skipped.length > 0) {
 43186            _this.reporter.warn(_this.reporter.lang('cacheFolderSelected', cacheRootFolder));
 43187          }
 43188        }
 43189  
 43190        if (!cacheRootFolder) {
 43191          throw new (_errors || _load_errors()).MessageError(_this.reporter.lang('cacheFolderMissing'));
 43192        } else {
 43193          _this._cacheRootFolder = String(cacheRootFolder);
 43194        }
 43195  
 43196        const manifest = yield _this.maybeReadManifest(_this.lockfileFolder);
 43197  
 43198        const plugnplayByEnv = _this.getOption('plugnplay-override');
 43199        if (plugnplayByEnv != null) {
 43200          _this.plugnplayEnabled = plugnplayByEnv !== 'false' && plugnplayByEnv !== '0';
 43201          _this.plugnplayPersist = false;
 43202        } else if (opts.enablePnp || opts.disablePnp) {
 43203          _this.plugnplayEnabled = !!opts.enablePnp;
 43204          _this.plugnplayPersist = true;
 43205        } else if (manifest && manifest.installConfig && manifest.installConfig.pnp) {
 43206          _this.plugnplayEnabled = !!manifest.installConfig.pnp;
 43207          _this.plugnplayPersist = false;
 43208        } else {
 43209          _this.plugnplayEnabled = false;
 43210          _this.plugnplayPersist = false;
 43211        }
 43212  
 43213        if (process.platform === 'win32') {
 43214          const cacheRootFolderDrive = path.parse(_this._cacheRootFolder).root.toLowerCase();
 43215          const lockfileFolderDrive = path.parse(_this.lockfileFolder).root.toLowerCase();
 43216  
 43217          if (cacheRootFolderDrive !== lockfileFolderDrive) {
 43218            if (_this.plugnplayEnabled) {
 43219              _this.reporter.warn(_this.reporter.lang('plugnplayWindowsSupport'));
 43220            }
 43221            _this.plugnplayEnabled = false;
 43222            _this.plugnplayPersist = false;
 43223          }
 43224        }
 43225  
 43226        _this.plugnplayShebang = String(_this.getOption('plugnplay-shebang') || '') || '/usr/bin/env node';
 43227        _this.plugnplayBlacklist = String(_this.getOption('plugnplay-blacklist') || '') || null;
 43228  
 43229        _this.ignoreScripts = opts.ignoreScripts || Boolean(_this.getOption('ignore-scripts', false));
 43230  
 43231        _this.workspacesEnabled = _this.getOption('workspaces-experimental') !== false;
 43232        _this.workspacesNohoistEnabled = _this.getOption('workspaces-nohoist-experimental') !== false;
 43233  
 43234        _this.offlineCacheFolder = String(_this.getOption('offline-cache-folder') || '') || null;
 43235  
 43236        _this.pruneOfflineMirror = Boolean(_this.getOption('yarn-offline-mirror-pruning'));
 43237        _this.enableMetaFolder = Boolean(_this.getOption('enable-meta-folder'));
 43238        _this.enableLockfileVersions = Boolean(_this.getOption('yarn-enable-lockfile-versions'));
 43239        _this.linkFileDependencies = Boolean(_this.getOption('yarn-link-file-dependencies'));
 43240        _this.packBuiltPackages = Boolean(_this.getOption('experimental-pack-script-packages-in-mirror'));
 43241  
 43242        _this.autoAddIntegrity = !(0, (_conversion || _load_conversion()).boolifyWithDefault)(String(_this.getOption('unsafe-disable-integrity-migration')), true);
 43243  
 43244        //init & create cacheFolder, tempFolder
 43245        _this.cacheFolder = path.join(_this._cacheRootFolder, 'v' + String((_constants || _load_constants()).CACHE_VERSION));
 43246        _this.tempFolder = opts.tempFolder || path.join(_this.cacheFolder, '.tmp');
 43247        yield (_fs || _load_fs()).mkdirp(_this.cacheFolder);
 43248        yield (_fs || _load_fs()).mkdirp(_this.tempFolder);
 43249  
 43250        if (opts.production !== undefined) {
 43251          _this.production = Boolean(opts.production);
 43252        } else {
 43253          _this.production = Boolean(_this.getOption('production')) || process.env.NODE_ENV === 'production' && process.env.NPM_CONFIG_PRODUCTION !== 'false' && process.env.YARN_PRODUCTION !== 'false';
 43254        }
 43255  
 43256        if (_this.workspaceRootFolder && !_this.workspacesEnabled) {
 43257          throw new (_errors || _load_errors()).MessageError(_this.reporter.lang('workspacesDisabled'));
 43258        }
 43259      })();
 43260    }
 43261  
 43262    _init(opts) {
 43263      this.registryFolders = [];
 43264      this.linkedModules = [];
 43265  
 43266      this.registries = (0, (_map || _load_map()).default)();
 43267      this.cache = (0, (_map || _load_map()).default)();
 43268  
 43269      // Ensure the cwd is always an absolute path.
 43270      this.cwd = path.resolve(opts.cwd || this.cwd || process.cwd());
 43271  
 43272      this.looseSemver = opts.looseSemver == undefined ? true : opts.looseSemver;
 43273  
 43274      this.commandName = opts.commandName || '';
 43275  
 43276      this.enableDefaultRc = opts.enableDefaultRc !== false;
 43277      this.extraneousYarnrcFiles = opts.extraneousYarnrcFiles || [];
 43278  
 43279      this.preferOffline = !!opts.preferOffline;
 43280      this.modulesFolder = opts.modulesFolder;
 43281      this.linkFolder = opts.linkFolder || (_constants || _load_constants()).LINK_REGISTRY_DIRECTORY;
 43282      this.offline = !!opts.offline;
 43283      this.binLinks = !!opts.binLinks;
 43284      this.updateChecksums = !!opts.updateChecksums;
 43285      this.plugnplayUnplugged = [];
 43286      this.plugnplayPurgeUnpluggedPackages = false;
 43287  
 43288      this.ignorePlatform = !!opts.ignorePlatform;
 43289      this.ignoreScripts = !!opts.ignoreScripts;
 43290  
 43291      this.disablePrepublish = !!opts.disablePrepublish;
 43292  
 43293      // $FlowFixMe$
 43294      this.nonInteractive = !!opts.nonInteractive || isCi || !process.stdout.isTTY;
 43295  
 43296      this.requestManager.setOptions({
 43297        offline: !!opts.offline && !opts.preferOffline,
 43298        captureHar: !!opts.captureHar
 43299      });
 43300  
 43301      this.focus = !!opts.focus;
 43302      this.focusedWorkspaceName = '';
 43303  
 43304      this.otp = opts.otp || '';
 43305    }
 43306  
 43307    /**
 43308     * Generate a name suitable as unique filesystem identifier for the specified package.
 43309     */
 43310  
 43311    generateUniquePackageSlug(pkg) {
 43312      let slug = pkg.name;
 43313  
 43314      slug = slug.replace(/[^@a-z0-9]+/g, '-');
 43315      slug = slug.replace(/^-+|-+$/g, '');
 43316  
 43317      if (pkg.registry) {
 43318        slug = `${pkg.registry}-${slug}`;
 43319      } else {
 43320        slug = `unknown-${slug}`;
 43321      }
 43322  
 43323      const hash = pkg.remote.hash;
 43324  
 43325  
 43326      if (pkg.version) {
 43327        slug += `-${pkg.version}`;
 43328      }
 43329  
 43330      if (pkg.uid && pkg.version !== pkg.uid) {
 43331        slug += `-${pkg.uid}`;
 43332      } else if (hash) {
 43333        slug += `-${hash}`;
 43334      }
 43335  
 43336      if (pkg.remote.integrity) {
 43337        slug += `-integrity`;
 43338      }
 43339  
 43340      return slug;
 43341    }
 43342  
 43343    /**
 43344     * Generate an absolute module path.
 43345     */
 43346  
 43347    generateModuleCachePath(pkg) {
 43348      invariant(this.cacheFolder, 'No package root');
 43349      invariant(pkg, 'Undefined package');
 43350  
 43351      const slug = this.generateUniquePackageSlug(pkg);
 43352      return path.join(this.cacheFolder, slug, 'node_modules', pkg.name);
 43353    }
 43354  
 43355    /**
 43356     */
 43357  
 43358    getUnpluggedPath() {
 43359      return path.join(this.lockfileFolder, '.pnp', 'unplugged');
 43360    }
 43361  
 43362    /**
 43363      */
 43364  
 43365    generatePackageUnpluggedPath(pkg) {
 43366      const slug = this.generateUniquePackageSlug(pkg);
 43367      return path.join(this.getUnpluggedPath(), slug, 'node_modules', pkg.name);
 43368    }
 43369  
 43370    /**
 43371     */
 43372  
 43373    listUnpluggedPackageFolders() {
 43374      var _this2 = this;
 43375  
 43376      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 43377        const unpluggedPackages = new Map();
 43378        const unpluggedPath = _this2.getUnpluggedPath();
 43379  
 43380        if (!(yield (_fs || _load_fs()).exists(unpluggedPath))) {
 43381          return unpluggedPackages;
 43382        }
 43383  
 43384        for (var _iterator4 = yield (_fs || _load_fs()).readdir(unpluggedPath), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 43385          var _ref4;
 43386  
 43387          if (_isArray4) {
 43388            if (_i4 >= _iterator4.length) break;
 43389            _ref4 = _iterator4[_i4++];
 43390          } else {
 43391            _i4 = _iterator4.next();
 43392            if (_i4.done) break;
 43393            _ref4 = _i4.value;
 43394          }
 43395  
 43396          const unpluggedName = _ref4;
 43397  
 43398          const nmListing = yield (_fs || _load_fs()).readdir(path.join(unpluggedPath, unpluggedName, 'node_modules'));
 43399          invariant(nmListing.length === 1, 'A single folder should be in the unplugged directory');
 43400  
 43401          const target = path.join(unpluggedPath, unpluggedName, `node_modules`, nmListing[0]);
 43402          unpluggedPackages.set(unpluggedName, target);
 43403        }
 43404  
 43405        return unpluggedPackages;
 43406      })();
 43407    }
 43408  
 43409    /**
 43410     * Execute lifecycle scripts in the specified directory. Ignoring when the --ignore-scripts flag has been
 43411     * passed.
 43412     */
 43413  
 43414    executeLifecycleScript(commandName, cwd) {
 43415      if (this.ignoreScripts) {
 43416        return Promise.resolve();
 43417      } else {
 43418        return (0, (_executeLifecycleScript || _load_executeLifecycleScript()).execFromManifest)(this, commandName, cwd || this.cwd);
 43419      }
 43420    }
 43421  
 43422    /**
 43423     * Generate an absolute temporary filename location based on the input filename.
 43424     */
 43425  
 43426    getTemp(filename) {
 43427      invariant(this.tempFolder, 'No temp folder');
 43428      return path.join(this.tempFolder, filename);
 43429    }
 43430  
 43431    /**
 43432     * Remote packages may be cached in a file system to be available for offline installation.
 43433     * Second time the same package needs to be installed it will be loaded from there.
 43434     * Given a package's filename, return a path in the offline mirror location.
 43435     */
 43436  
 43437    getOfflineMirrorPath(packageFilename) {
 43438      let mirrorPath;
 43439  
 43440      var _arr = ['npm', 'yarn'];
 43441      for (var _i5 = 0; _i5 < _arr.length; _i5++) {
 43442        const key = _arr[_i5];
 43443        const registry = this.registries[key];
 43444  
 43445        if (registry == null) {
 43446          continue;
 43447        }
 43448  
 43449        const registryMirrorPath = registry.config['yarn-offline-mirror'];
 43450  
 43451        if (registryMirrorPath === false) {
 43452          return null;
 43453        }
 43454  
 43455        if (registryMirrorPath == null) {
 43456          continue;
 43457        }
 43458  
 43459        mirrorPath = registryMirrorPath;
 43460      }
 43461  
 43462      if (mirrorPath == null) {
 43463        return null;
 43464      }
 43465  
 43466      if (packageFilename == null) {
 43467        return mirrorPath;
 43468      }
 43469  
 43470      return path.join(mirrorPath, path.basename(packageFilename));
 43471    }
 43472  
 43473    /**
 43474     * Checker whether the folder input is a valid module folder. We output a yarn metadata
 43475     * file when we've successfully setup a folder so use this as a marker.
 43476     */
 43477  
 43478    isValidModuleDest(dest) {
 43479      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 43480        if (!(yield (_fs || _load_fs()).exists(dest))) {
 43481          return false;
 43482        }
 43483  
 43484        if (!(yield (_fs || _load_fs()).exists(path.join(dest, (_constants || _load_constants()).METADATA_FILENAME)))) {
 43485          return false;
 43486        }
 43487  
 43488        return true;
 43489      })();
 43490    }
 43491  
 43492    /**
 43493     * Read package metadata and normalized package info.
 43494     */
 43495  
 43496    readPackageMetadata(dir) {
 43497      var _this3 = this;
 43498  
 43499      return this.getCache(`metadata-${dir}`, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 43500        const metadata = yield _this3.readJson(path.join(dir, (_constants || _load_constants()).METADATA_FILENAME));
 43501        const pkg = yield _this3.readManifest(dir, metadata.registry);
 43502  
 43503        return {
 43504          package: pkg,
 43505          artifacts: metadata.artifacts || [],
 43506          hash: metadata.hash,
 43507          remote: metadata.remote,
 43508          registry: metadata.registry
 43509        };
 43510      }));
 43511    }
 43512  
 43513    /**
 43514     * Read normalized package info according yarn-metadata.json
 43515     * throw an error if package.json was not found
 43516     */
 43517  
 43518    readManifest(dir, priorityRegistry, isRoot = false) {
 43519      var _this4 = this;
 43520  
 43521      return this.getCache(`manifest-${dir}`, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 43522        const manifest = yield _this4.maybeReadManifest(dir, priorityRegistry, isRoot);
 43523  
 43524        if (manifest) {
 43525          return manifest;
 43526        } else {
 43527          throw new (_errors || _load_errors()).MessageError(_this4.reporter.lang('couldntFindPackagejson', dir), 'ENOENT');
 43528        }
 43529      }));
 43530    }
 43531  
 43532    /**
 43533     * try get the manifest file by looking
 43534     * 1. manifest file in cache
 43535     * 2. manifest file in registry
 43536     */
 43537    maybeReadManifest(dir, priorityRegistry, isRoot = false) {
 43538      var _this5 = this;
 43539  
 43540      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 43541        const metadataLoc = path.join(dir, (_constants || _load_constants()).METADATA_FILENAME);
 43542  
 43543        if (yield (_fs || _load_fs()).exists(metadataLoc)) {
 43544          const metadata = yield _this5.readJson(metadataLoc);
 43545  
 43546          if (!priorityRegistry) {
 43547            priorityRegistry = metadata.priorityRegistry;
 43548          }
 43549  
 43550          if (typeof metadata.manifest !== 'undefined') {
 43551            return metadata.manifest;
 43552          }
 43553        }
 43554  
 43555        if (priorityRegistry) {
 43556          const file = yield _this5.tryManifest(dir, priorityRegistry, isRoot);
 43557          if (file) {
 43558            return file;
 43559          }
 43560        }
 43561  
 43562        for (var _iterator5 = Object.keys((_index2 || _load_index2()).registries), _isArray5 = Array.isArray(_iterator5), _i6 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
 43563          var _ref7;
 43564  
 43565          if (_isArray5) {
 43566            if (_i6 >= _iterator5.length) break;
 43567            _ref7 = _iterator5[_i6++];
 43568          } else {
 43569            _i6 = _iterator5.next();
 43570            if (_i6.done) break;
 43571            _ref7 = _i6.value;
 43572          }
 43573  
 43574          const registry = _ref7;
 43575  
 43576          if (priorityRegistry === registry) {
 43577            continue;
 43578          }
 43579  
 43580          const file = yield _this5.tryManifest(dir, registry, isRoot);
 43581          if (file) {
 43582            return file;
 43583          }
 43584        }
 43585  
 43586        return null;
 43587      })();
 43588    }
 43589  
 43590    /**
 43591     * Read the root manifest.
 43592     */
 43593  
 43594    readRootManifest() {
 43595      return this.readManifest(this.cwd, 'npm', true);
 43596    }
 43597  
 43598    /**
 43599     * Try and find package info with the input directory and registry.
 43600     */
 43601  
 43602    tryManifest(dir, registry, isRoot) {
 43603      var _this6 = this;
 43604  
 43605      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 43606        const filename = (_index2 || _load_index2()).registries[registry].filename;
 43607  
 43608        const loc = path.join(dir, filename);
 43609        if (yield (_fs || _load_fs()).exists(loc)) {
 43610          const data = yield _this6.readJson(loc);
 43611          data._registry = registry;
 43612          data._loc = loc;
 43613          return (0, (_index || _load_index()).default)(data, dir, _this6, isRoot);
 43614        } else {
 43615          return null;
 43616        }
 43617      })();
 43618    }
 43619  
 43620    findManifest(dir, isRoot) {
 43621      var _this7 = this;
 43622  
 43623      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 43624        for (var _iterator6 = (_index2 || _load_index2()).registryNames, _isArray6 = Array.isArray(_iterator6), _i7 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
 43625          var _ref8;
 43626  
 43627          if (_isArray6) {
 43628            if (_i7 >= _iterator6.length) break;
 43629            _ref8 = _iterator6[_i7++];
 43630          } else {
 43631            _i7 = _iterator6.next();
 43632            if (_i7.done) break;
 43633            _ref8 = _i7.value;
 43634          }
 43635  
 43636          const registry = _ref8;
 43637  
 43638          const manifest = yield _this7.tryManifest(dir, registry, isRoot);
 43639  
 43640          if (manifest) {
 43641            return manifest;
 43642          }
 43643        }
 43644  
 43645        return null;
 43646      })();
 43647    }
 43648  
 43649    findWorkspaceRoot(initial) {
 43650      var _this8 = this;
 43651  
 43652      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 43653        let previous = null;
 43654        let current = path.normalize(initial);
 43655        if (!(yield (_fs || _load_fs()).exists(current))) {
 43656          throw new (_errors || _load_errors()).MessageError(_this8.reporter.lang('folderMissing', current));
 43657        }
 43658  
 43659        do {
 43660          const manifest = yield _this8.findManifest(current, true);
 43661          const ws = extractWorkspaces(manifest);
 43662          if (ws && ws.packages) {
 43663            const relativePath = path.relative(current, initial);
 43664            if (relativePath === '' || micromatch([relativePath], ws.packages).length > 0) {
 43665              return current;
 43666            } else {
 43667              return null;
 43668            }
 43669          }
 43670  
 43671          previous = current;
 43672          current = path.dirname(current);
 43673        } while (current !== previous);
 43674  
 43675        return null;
 43676      })();
 43677    }
 43678  
 43679    resolveWorkspaces(root, rootManifest) {
 43680      var _this9 = this;
 43681  
 43682      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 43683        const workspaces = {};
 43684        if (!_this9.workspacesEnabled) {
 43685          return workspaces;
 43686        }
 43687  
 43688        const ws = _this9.getWorkspaces(rootManifest, true);
 43689        const patterns = ws && ws.packages ? ws.packages : [];
 43690  
 43691        if (!Array.isArray(patterns)) {
 43692          throw new (_errors || _load_errors()).MessageError(_this9.reporter.lang('workspacesSettingMustBeArray'));
 43693        }
 43694  
 43695        const registryFilenames = (_index2 || _load_index2()).registryNames.map(function (registryName) {
 43696          return _this9.registries[registryName].constructor.filename;
 43697        }).join('|');
 43698        const trailingPattern = `/+(${registryFilenames})`;
 43699        // anything under folder (node_modules) should be ignored, thus use the '**' instead of shallow match "*"
 43700        const ignorePatterns = _this9.registryFolders.map(function (folder) {
 43701          return `/${folder}/**/+(${registryFilenames})`;
 43702        });
 43703  
 43704        const files = yield Promise.all(patterns.map(function (pattern) {
 43705          return (_fs || _load_fs()).glob(pattern.replace(/\/?$/, trailingPattern), {
 43706            cwd: root,
 43707            ignore: ignorePatterns.map(function (ignorePattern) {
 43708              return pattern.replace(/\/?$/, ignorePattern);
 43709            })
 43710          });
 43711        }));
 43712  
 43713        for (var _iterator7 = new Set([].concat(...files)), _isArray7 = Array.isArray(_iterator7), _i8 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
 43714          var _ref9;
 43715  
 43716          if (_isArray7) {
 43717            if (_i8 >= _iterator7.length) break;
 43718            _ref9 = _iterator7[_i8++];
 43719          } else {
 43720            _i8 = _iterator7.next();
 43721            if (_i8.done) break;
 43722            _ref9 = _i8.value;
 43723          }
 43724  
 43725          const file = _ref9;
 43726  
 43727          const loc = path.join(root, path.dirname(file));
 43728          const manifest = yield _this9.findManifest(loc, false);
 43729  
 43730          if (!manifest) {
 43731            continue;
 43732          }
 43733  
 43734          if (!manifest.name) {
 43735            _this9.reporter.warn(_this9.reporter.lang('workspaceNameMandatory', loc));
 43736            continue;
 43737          }
 43738          if (!manifest.version) {
 43739            _this9.reporter.warn(_this9.reporter.lang('workspaceVersionMandatory', loc));
 43740            continue;
 43741          }
 43742  
 43743          if (Object.prototype.hasOwnProperty.call(workspaces, manifest.name)) {
 43744            throw new (_errors || _load_errors()).MessageError(_this9.reporter.lang('workspaceNameDuplicate', manifest.name));
 43745          }
 43746  
 43747          workspaces[manifest.name] = { loc, manifest };
 43748        }
 43749  
 43750        return workspaces;
 43751      })();
 43752    }
 43753  
 43754    // workspaces functions
 43755    getWorkspaces(manifest, shouldThrow = false) {
 43756      if (!manifest || !this.workspacesEnabled) {
 43757        return undefined;
 43758      }
 43759  
 43760      const ws = extractWorkspaces(manifest);
 43761  
 43762      if (!ws) {
 43763        return ws;
 43764      }
 43765  
 43766      // validate eligibility
 43767      let wsCopy = (0, (_extends2 || _load_extends()).default)({}, ws);
 43768      const warnings = [];
 43769      const errors = [];
 43770  
 43771      // packages
 43772      if (wsCopy.packages && wsCopy.packages.length > 0 && !manifest.private) {
 43773        errors.push(this.reporter.lang('workspacesRequirePrivateProjects'));
 43774        wsCopy = undefined;
 43775      }
 43776      // nohoist
 43777      if (wsCopy && wsCopy.nohoist && wsCopy.nohoist.length > 0) {
 43778        if (!this.workspacesNohoistEnabled) {
 43779          warnings.push(this.reporter.lang('workspacesNohoistDisabled', manifest.name));
 43780          wsCopy.nohoist = undefined;
 43781        } else if (!manifest.private) {
 43782          errors.push(this.reporter.lang('workspacesNohoistRequirePrivatePackages', manifest.name));
 43783          wsCopy.nohoist = undefined;
 43784        }
 43785      }
 43786  
 43787      if (errors.length > 0 && shouldThrow) {
 43788        throw new (_errors || _load_errors()).MessageError(errors.join('\n'));
 43789      }
 43790  
 43791      const msg = errors.concat(warnings).join('\n');
 43792      if (msg.length > 0) {
 43793        this.reporter.warn(msg);
 43794      }
 43795  
 43796      return wsCopy;
 43797    }
 43798  
 43799    /**
 43800     * Description
 43801     */
 43802  
 43803    getFolder(pkg) {
 43804      let registryName = pkg._registry;
 43805      if (!registryName) {
 43806        const ref = pkg._reference;
 43807        invariant(ref, 'expected reference');
 43808        registryName = ref.registry;
 43809      }
 43810      return this.registries[registryName].folder;
 43811    }
 43812  
 43813    /**
 43814     * Get root manifests.
 43815     */
 43816  
 43817    getRootManifests() {
 43818      var _this10 = this;
 43819  
 43820      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 43821        const manifests = {};
 43822        for (var _iterator8 = (_index2 || _load_index2()).registryNames, _isArray8 = Array.isArray(_iterator8), _i9 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {
 43823          var _ref10;
 43824  
 43825          if (_isArray8) {
 43826            if (_i9 >= _iterator8.length) break;
 43827            _ref10 = _iterator8[_i9++];
 43828          } else {
 43829            _i9 = _iterator8.next();
 43830            if (_i9.done) break;
 43831            _ref10 = _i9.value;
 43832          }
 43833  
 43834          const registryName = _ref10;
 43835  
 43836          const registry = (_index2 || _load_index2()).registries[registryName];
 43837          const jsonLoc = path.join(_this10.cwd, registry.filename);
 43838  
 43839          let object = {};
 43840          let exists = false;
 43841          let indent;
 43842          if (yield (_fs || _load_fs()).exists(jsonLoc)) {
 43843            exists = true;
 43844  
 43845            const info = yield _this10.readJson(jsonLoc, (_fs || _load_fs()).readJsonAndFile);
 43846            object = info.object;
 43847            indent = detectIndent(info.content).indent || undefined;
 43848          }
 43849          manifests[registryName] = { loc: jsonLoc, object, exists, indent };
 43850        }
 43851        return manifests;
 43852      })();
 43853    }
 43854  
 43855    /**
 43856     * Save root manifests.
 43857     */
 43858  
 43859    saveRootManifests(manifests) {
 43860      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 43861        for (var _iterator9 = (_index2 || _load_index2()).registryNames, _isArray9 = Array.isArray(_iterator9), _i10 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {
 43862          var _ref11;
 43863  
 43864          if (_isArray9) {
 43865            if (_i10 >= _iterator9.length) break;
 43866            _ref11 = _iterator9[_i10++];
 43867          } else {
 43868            _i10 = _iterator9.next();
 43869            if (_i10.done) break;
 43870            _ref11 = _i10.value;
 43871          }
 43872  
 43873          const registryName = _ref11;
 43874          var _manifests$registryNa = manifests[registryName];
 43875          const loc = _manifests$registryNa.loc,
 43876                object = _manifests$registryNa.object,
 43877                exists = _manifests$registryNa.exists,
 43878                indent = _manifests$registryNa.indent;
 43879  
 43880          if (!exists && !Object.keys(object).length) {
 43881            continue;
 43882          }
 43883  
 43884          for (var _iterator10 = (_constants || _load_constants()).DEPENDENCY_TYPES, _isArray10 = Array.isArray(_iterator10), _i11 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {
 43885            var _ref12;
 43886  
 43887            if (_isArray10) {
 43888              if (_i11 >= _iterator10.length) break;
 43889              _ref12 = _iterator10[_i11++];
 43890            } else {
 43891              _i11 = _iterator10.next();
 43892              if (_i11.done) break;
 43893              _ref12 = _i11.value;
 43894            }
 43895  
 43896            const field = _ref12;
 43897  
 43898            if (object[field]) {
 43899              object[field] = sortObject(object[field]);
 43900            }
 43901          }
 43902  
 43903          yield (_fs || _load_fs()).writeFilePreservingEol(loc, JSON.stringify(object, null, indent || (_constants || _load_constants()).DEFAULT_INDENT) + '\n');
 43904        }
 43905      })();
 43906    }
 43907  
 43908    /**
 43909     * Call the passed factory (defaults to fs.readJson) and rethrow a pretty error message if it was the result
 43910     * of a syntax error.
 43911     */
 43912  
 43913    readJson(loc, factory = (_fs || _load_fs()).readJson) {
 43914      try {
 43915        return factory(loc);
 43916      } catch (err) {
 43917        if (err instanceof SyntaxError) {
 43918          throw new (_errors || _load_errors()).MessageError(this.reporter.lang('jsonError', loc, err.message));
 43919        } else {
 43920          throw err;
 43921        }
 43922      }
 43923    }
 43924  
 43925    static create(opts = {}, reporter = new (_index3 || _load_index3()).NoopReporter()) {
 43926      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 43927        const config = new Config(reporter);
 43928        yield config.init(opts);
 43929        return config;
 43930      })();
 43931    }
 43932  }
 43933  
 43934  exports.default = Config;
 43935  function extractWorkspaces(manifest) {
 43936    if (!manifest || !manifest.workspaces) {
 43937      return undefined;
 43938    }
 43939  
 43940    if (Array.isArray(manifest.workspaces)) {
 43941      return { packages: manifest.workspaces };
 43942    }
 43943  
 43944    if (manifest.workspaces.packages && Array.isArray(manifest.workspaces.packages) || manifest.workspaces.nohoist && Array.isArray(manifest.workspaces.nohoist)) {
 43945      return manifest.workspaces;
 43946    }
 43947  
 43948    return undefined;
 43949  }
 43950  
 43951  /***/ }),
 43952  /* 163 */
 43953  /***/ (function(module, exports) {
 43954  
 43955  module.exports = function(module) {
 43956  	if(!module.webpackPolyfill) {
 43957  		module.deprecate = function() {};
 43958  		module.paths = [];
 43959  		// module.parent = undefined by default
 43960  		if(!module.children) module.children = [];
 43961  		Object.defineProperty(module, "loaded", {
 43962  			enumerable: true,
 43963  			get: function() {
 43964  				return module.l;
 43965  			}
 43966  		});
 43967  		Object.defineProperty(module, "id", {
 43968  			enumerable: true,
 43969  			get: function() {
 43970  				return module.i;
 43971  			}
 43972  		});
 43973  		module.webpackPolyfill = 1;
 43974  	}
 43975  	return module;
 43976  };
 43977  
 43978  
 43979  /***/ }),
 43980  /* 164 */
 43981  /***/ (function(module, exports) {
 43982  
 43983  module.exports = require("net");
 43984  
 43985  /***/ }),
 43986  /* 165 */
 43987  /***/ (function(module, exports, __webpack_require__) {
 43988  
 43989  "use strict";
 43990  
 43991  
 43992  Object.defineProperty(exports, "__esModule", {
 43993    value: true
 43994  });
 43995  exports.run = exports.Add = undefined;
 43996  
 43997  var _asyncToGenerator2;
 43998  
 43999  function _load_asyncToGenerator() {
 44000    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 44001  }
 44002  
 44003  var _extends2;
 44004  
 44005  function _load_extends() {
 44006    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 44007  }
 44008  
 44009  let run = exports.run = (() => {
 44010    var _ref7 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 44011      if (!args.length) {
 44012        throw new (_errors || _load_errors()).MessageError(reporter.lang('missingAddDependencies'));
 44013      }
 44014  
 44015      const lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.lockfileFolder, reporter);
 44016  
 44017      yield (0, (_install || _load_install()).wrapLifecycle)(config, flags, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 44018        const install = new Add(args, flags, config, reporter, lockfile);
 44019        yield install.init();
 44020      }));
 44021    });
 44022  
 44023    return function run(_x, _x2, _x3, _x4) {
 44024      return _ref7.apply(this, arguments);
 44025    };
 44026  })();
 44027  
 44028  exports.hasWrapper = hasWrapper;
 44029  exports.setFlags = setFlags;
 44030  
 44031  var _lockfile;
 44032  
 44033  function _load_lockfile() {
 44034    return _lockfile = _interopRequireDefault(__webpack_require__(19));
 44035  }
 44036  
 44037  var _normalizePattern2;
 44038  
 44039  function _load_normalizePattern() {
 44040    return _normalizePattern2 = __webpack_require__(37);
 44041  }
 44042  
 44043  var _workspaceLayout;
 44044  
 44045  function _load_workspaceLayout() {
 44046    return _workspaceLayout = _interopRequireDefault(__webpack_require__(90));
 44047  }
 44048  
 44049  var _index;
 44050  
 44051  function _load_index() {
 44052    return _index = __webpack_require__(78);
 44053  }
 44054  
 44055  var _list;
 44056  
 44057  function _load_list() {
 44058    return _list = __webpack_require__(352);
 44059  }
 44060  
 44061  var _install;
 44062  
 44063  function _load_install() {
 44064    return _install = __webpack_require__(34);
 44065  }
 44066  
 44067  var _errors;
 44068  
 44069  function _load_errors() {
 44070    return _errors = __webpack_require__(6);
 44071  }
 44072  
 44073  var _constants;
 44074  
 44075  function _load_constants() {
 44076    return _constants = _interopRequireWildcard(__webpack_require__(8));
 44077  }
 44078  
 44079  var _fs;
 44080  
 44081  function _load_fs() {
 44082    return _fs = _interopRequireWildcard(__webpack_require__(5));
 44083  }
 44084  
 44085  var _invariant;
 44086  
 44087  function _load_invariant() {
 44088    return _invariant = _interopRequireDefault(__webpack_require__(9));
 44089  }
 44090  
 44091  var _path;
 44092  
 44093  function _load_path() {
 44094    return _path = _interopRequireDefault(__webpack_require__(0));
 44095  }
 44096  
 44097  var _semver;
 44098  
 44099  function _load_semver() {
 44100    return _semver = _interopRequireDefault(__webpack_require__(22));
 44101  }
 44102  
 44103  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 44104  
 44105  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 44106  
 44107  const SILENCE_DEPENDENCY_TYPE_WARNINGS = ['upgrade', 'upgrade-interactive'];
 44108  
 44109  class Add extends (_install || _load_install()).Install {
 44110    constructor(args, flags, config, reporter, lockfile) {
 44111      const workspaceRootIsCwd = config.cwd === config.lockfileFolder;
 44112      const _flags = flags ? (0, (_extends2 || _load_extends()).default)({}, flags, { workspaceRootIsCwd }) : { workspaceRootIsCwd };
 44113      super(_flags, config, reporter, lockfile);
 44114      this.args = args;
 44115      // only one flag is supported, so we can figure out which one was passed to `yarn add`
 44116      this.flagToOrigin = [flags.dev && 'devDependencies', flags.optional && 'optionalDependencies', flags.peer && 'peerDependencies', 'dependencies'].filter(Boolean).shift();
 44117    }
 44118  
 44119    /**
 44120     * TODO
 44121     */
 44122  
 44123    prepareRequests(requests) {
 44124      const requestsWithArgs = requests.slice();
 44125  
 44126      for (var _iterator = this.args, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 44127        var _ref;
 44128  
 44129        if (_isArray) {
 44130          if (_i >= _iterator.length) break;
 44131          _ref = _iterator[_i++];
 44132        } else {
 44133          _i = _iterator.next();
 44134          if (_i.done) break;
 44135          _ref = _i.value;
 44136        }
 44137  
 44138        const pattern = _ref;
 44139  
 44140        requestsWithArgs.push({
 44141          pattern,
 44142          registry: 'npm',
 44143          optional: false
 44144        });
 44145      }
 44146      return requestsWithArgs;
 44147    }
 44148  
 44149    /**
 44150     * returns version for a pattern based on Manifest
 44151     */
 44152    getPatternVersion(pattern, pkg) {
 44153      const tilde = this.flags.tilde;
 44154      const configPrefix = String(this.config.getOption('save-prefix'));
 44155      const exact = this.flags.exact || Boolean(this.config.getOption('save-exact')) || configPrefix === '';
 44156  
 44157      var _normalizePattern = (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(pattern);
 44158  
 44159      const hasVersion = _normalizePattern.hasVersion,
 44160            range = _normalizePattern.range;
 44161  
 44162      let version;
 44163  
 44164      if ((0, (_index || _load_index()).getExoticResolver)(pattern)) {
 44165        // wasn't a name/range tuple so this is just a raw exotic pattern
 44166        version = pattern;
 44167      } else if (hasVersion && range && ((_semver || _load_semver()).default.satisfies(pkg.version, range) || (0, (_index || _load_index()).getExoticResolver)(range))) {
 44168        // if the user specified a range then use it verbatim
 44169        version = range;
 44170      }
 44171  
 44172      if (!version || (_semver || _load_semver()).default.valid(version)) {
 44173        let prefix = configPrefix || '^';
 44174  
 44175        if (tilde) {
 44176          prefix = '~';
 44177        } else if (version || exact) {
 44178          prefix = '';
 44179        }
 44180        version = `${prefix}${pkg.version}`;
 44181      }
 44182  
 44183      return version;
 44184    }
 44185  
 44186    preparePatterns(patterns) {
 44187      const preparedPatterns = patterns.slice();
 44188      for (var _iterator2 = this.resolver.dedupePatterns(this.args), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 44189        var _ref2;
 44190  
 44191        if (_isArray2) {
 44192          if (_i2 >= _iterator2.length) break;
 44193          _ref2 = _iterator2[_i2++];
 44194        } else {
 44195          _i2 = _iterator2.next();
 44196          if (_i2.done) break;
 44197          _ref2 = _i2.value;
 44198        }
 44199  
 44200        const pattern = _ref2;
 44201  
 44202        const pkg = this.resolver.getResolvedPattern(pattern);
 44203        (0, (_invariant || _load_invariant()).default)(pkg, `missing package ${pattern}`);
 44204        const version = this.getPatternVersion(pattern, pkg);
 44205        const newPattern = `${pkg.name}@${version}`;
 44206        preparedPatterns.push(newPattern);
 44207        this.addedPatterns.push(newPattern);
 44208        if (newPattern === pattern) {
 44209          continue;
 44210        }
 44211        this.resolver.replacePattern(pattern, newPattern);
 44212      }
 44213      return preparedPatterns;
 44214    }
 44215  
 44216    preparePatternsForLinking(patterns, cwdManifest, cwdIsRoot) {
 44217      // remove the newly added patterns if cwd != root and update the in-memory package dependency instead
 44218      if (cwdIsRoot) {
 44219        return patterns;
 44220      }
 44221  
 44222      let manifest;
 44223      const cwdPackage = `${cwdManifest.name}@${cwdManifest.version}`;
 44224      try {
 44225        manifest = this.resolver.getStrictResolvedPattern(cwdPackage);
 44226      } catch (e) {
 44227        this.reporter.warn(this.reporter.lang('unknownPackage', cwdPackage));
 44228        return patterns;
 44229      }
 44230  
 44231      let newPatterns = patterns;
 44232      this._iterateAddedPackages((pattern, registry, dependencyType, pkgName, version) => {
 44233        // remove added package from patterns list
 44234        const filtered = newPatterns.filter(p => p !== pattern);
 44235        (0, (_invariant || _load_invariant()).default)(newPatterns.length - filtered.length > 0, `expect added pattern '${pattern}' in the list: ${patterns.toString()}`);
 44236        newPatterns = filtered;
 44237  
 44238        // add new package into in-memory manifest so they can be linked properly
 44239        manifest[dependencyType] = manifest[dependencyType] || {};
 44240        if (manifest[dependencyType][pkgName] === version) {
 44241          // package already existed
 44242          return;
 44243        }
 44244  
 44245        // update dependencies in the manifest
 44246        (0, (_invariant || _load_invariant()).default)(manifest._reference, 'manifest._reference should not be null');
 44247        const ref = manifest._reference;
 44248  
 44249        ref['dependencies'] = ref['dependencies'] || [];
 44250        ref['dependencies'].push(pattern);
 44251      });
 44252  
 44253      return newPatterns;
 44254    }
 44255  
 44256    bailout(patterns, workspaceLayout) {
 44257      var _this = this;
 44258  
 44259      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 44260        const lockfileCache = _this.lockfile.cache;
 44261        if (!lockfileCache) {
 44262          return false;
 44263        }
 44264        const match = yield _this.integrityChecker.check(patterns, lockfileCache, _this.flags, workspaceLayout);
 44265        const haveLockfile = yield (_fs || _load_fs()).exists((_path || _load_path()).default.join(_this.config.lockfileFolder, (_constants || _load_constants()).LOCKFILE_FILENAME));
 44266        if (match.integrityFileMissing && haveLockfile) {
 44267          // Integrity file missing, force script installations
 44268          _this.scripts.setForce(true);
 44269        }
 44270        return false;
 44271      })();
 44272    }
 44273  
 44274    /**
 44275     * Description
 44276     */
 44277  
 44278    init() {
 44279      var _this2 = this;
 44280  
 44281      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 44282        const isWorkspaceRoot = _this2.config.workspaceRootFolder && _this2.config.cwd === _this2.config.workspaceRootFolder;
 44283  
 44284        // running "yarn add something" in a workspace root is often a mistake
 44285        if (isWorkspaceRoot && !_this2.flags.ignoreWorkspaceRootCheck) {
 44286          throw new (_errors || _load_errors()).MessageError(_this2.reporter.lang('workspacesAddRootCheck'));
 44287        }
 44288  
 44289        _this2.addedPatterns = [];
 44290        const patterns = yield (_install || _load_install()).Install.prototype.init.call(_this2);
 44291        yield _this2.maybeOutputSaveTree(patterns);
 44292        return patterns;
 44293      })();
 44294    }
 44295  
 44296    applyChanges(manifests) {
 44297      var _this3 = this;
 44298  
 44299      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 44300        yield (_install || _load_install()).Install.prototype.applyChanges.call(_this3, manifests);
 44301  
 44302        // fill rootPatternsToOrigin without `excludePatterns`
 44303        yield (_install || _load_install()).Install.prototype.fetchRequestFromCwd.call(_this3);
 44304  
 44305        _this3._iterateAddedPackages(function (pattern, registry, dependencyType, pkgName, version) {
 44306          // add it to manifest
 44307          const object = manifests[registry].object;
 44308  
 44309  
 44310          object[dependencyType] = object[dependencyType] || {};
 44311          object[dependencyType][pkgName] = version;
 44312          if (SILENCE_DEPENDENCY_TYPE_WARNINGS.indexOf(_this3.config.commandName) === -1 && dependencyType !== _this3.flagToOrigin) {
 44313            _this3.reporter.warn(_this3.reporter.lang('moduleAlreadyInManifest', pkgName, dependencyType, _this3.flagToOrigin));
 44314          }
 44315        });
 44316  
 44317        return true;
 44318      })();
 44319    }
 44320  
 44321    /**
 44322     * Description
 44323     */
 44324  
 44325    fetchRequestFromCwd() {
 44326      return (_install || _load_install()).Install.prototype.fetchRequestFromCwd.call(this, this.args);
 44327    }
 44328  
 44329    /**
 44330     * Output a tree of any newly added dependencies.
 44331     */
 44332  
 44333    maybeOutputSaveTree(patterns) {
 44334      var _this4 = this;
 44335  
 44336      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 44337        // don't limit the shown tree depth
 44338        const opts = {
 44339          reqDepth: 0
 44340        };
 44341  
 44342        // restore the original patterns
 44343        const merged = [...patterns, ..._this4.addedPatterns];
 44344  
 44345        var _ref3 = yield (0, (_list || _load_list()).buildTree)(_this4.resolver, _this4.linker, merged, opts, true, true);
 44346  
 44347        const trees = _ref3.trees,
 44348              count = _ref3.count;
 44349  
 44350  
 44351        if (count === 1) {
 44352          _this4.reporter.success(_this4.reporter.lang('savedNewDependency'));
 44353        } else {
 44354          _this4.reporter.success(_this4.reporter.lang('savedNewDependencies', count));
 44355        }
 44356  
 44357        if (!count) {
 44358          return;
 44359        }
 44360  
 44361        const resolverPatterns = new Set();
 44362        for (var _iterator3 = patterns, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 44363          var _ref4;
 44364  
 44365          if (_isArray3) {
 44366            if (_i3 >= _iterator3.length) break;
 44367            _ref4 = _iterator3[_i3++];
 44368          } else {
 44369            _i3 = _iterator3.next();
 44370            if (_i3.done) break;
 44371            _ref4 = _i3.value;
 44372          }
 44373  
 44374          const pattern = _ref4;
 44375  
 44376          var _ref5 = _this4.resolver.getResolvedPattern(pattern) || {};
 44377  
 44378          const version = _ref5.version,
 44379                name = _ref5.name;
 44380  
 44381          resolverPatterns.add(`${name}@${version}`);
 44382        }
 44383        const directRequireDependencies = trees.filter(function ({ name }) {
 44384          return resolverPatterns.has(name);
 44385        });
 44386  
 44387        _this4.reporter.info(_this4.reporter.lang('directDependencies'));
 44388        _this4.reporter.tree('newDirectDependencies', directRequireDependencies);
 44389        _this4.reporter.info(_this4.reporter.lang('allDependencies'));
 44390        _this4.reporter.tree('newAllDependencies', trees);
 44391      })();
 44392    }
 44393  
 44394    /**
 44395     * Save added packages to manifest if any of the --save flags were used.
 44396     */
 44397  
 44398    savePackages() {
 44399      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {})();
 44400    }
 44401  
 44402    _iterateAddedPackages(f) {
 44403      const patternOrigins = Object.keys(this.rootPatternsToOrigin);
 44404  
 44405      // add new patterns to their appropriate registry manifest
 44406      for (var _iterator4 = this.addedPatterns, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 44407        var _ref6;
 44408  
 44409        if (_isArray4) {
 44410          if (_i4 >= _iterator4.length) break;
 44411          _ref6 = _iterator4[_i4++];
 44412        } else {
 44413          _i4 = _iterator4.next();
 44414          if (_i4.done) break;
 44415          _ref6 = _i4.value;
 44416        }
 44417  
 44418        const pattern = _ref6;
 44419  
 44420        const pkg = this.resolver.getResolvedPattern(pattern);
 44421        (0, (_invariant || _load_invariant()).default)(pkg, `missing package ${pattern}`);
 44422        const version = this.getPatternVersion(pattern, pkg);
 44423        const ref = pkg._reference;
 44424        (0, (_invariant || _load_invariant()).default)(ref, 'expected package reference');
 44425        // lookup the package to determine dependency type; used during `yarn upgrade`
 44426        const depType = patternOrigins.reduce((acc, prev) => {
 44427          if (prev.indexOf(`${pkg.name}@`) === 0) {
 44428            return this.rootPatternsToOrigin[prev];
 44429          }
 44430          return acc;
 44431        }, null);
 44432  
 44433        // depType is calculated when `yarn upgrade` command is used
 44434        const target = depType || this.flagToOrigin;
 44435  
 44436        f(pattern, ref.registry, target, pkg.name, version);
 44437      }
 44438    }
 44439  }
 44440  
 44441  exports.Add = Add;
 44442  function hasWrapper(commander) {
 44443    return true;
 44444  }
 44445  
 44446  function setFlags(commander) {
 44447    commander.description('Installs a package and any packages that it depends on.');
 44448    commander.usage('add [packages ...] [flags]');
 44449    commander.option('-W, --ignore-workspace-root-check', 'required to run yarn add inside a workspace root');
 44450    commander.option('-D, --dev', 'save package to your `devDependencies`');
 44451    commander.option('-P, --peer', 'save package to your `peerDependencies`');
 44452    commander.option('-O, --optional', 'save package to your `optionalDependencies`');
 44453    commander.option('-E, --exact', 'install exact version');
 44454    commander.option('-T, --tilde', 'install most recent release with the same minor version');
 44455    commander.option('-A, --audit', 'Run vulnerability audit on installed packages');
 44456  }
 44457  
 44458  /***/ }),
 44459  /* 166 */
 44460  /***/ (function(module, exports, __webpack_require__) {
 44461  
 44462  "use strict";
 44463  
 44464  
 44465  Object.defineProperty(exports, "__esModule", {
 44466    value: true
 44467  });
 44468  exports.run = exports.pack = exports.packTarball = undefined;
 44469  
 44470  var _asyncToGenerator2;
 44471  
 44472  function _load_asyncToGenerator() {
 44473    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 44474  }
 44475  
 44476  let packTarball = exports.packTarball = (() => {
 44477    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, { mapHeader } = {}) {
 44478      const pkg = yield config.readRootManifest();
 44479      const bundleDependencies = pkg.bundleDependencies,
 44480            main = pkg.main,
 44481            onlyFiles = pkg.files;
 44482  
 44483      // include required files
 44484  
 44485      let filters = NEVER_IGNORE.slice();
 44486      // include default filters unless `files` is used
 44487      if (!onlyFiles) {
 44488        filters = filters.concat(DEFAULT_IGNORE);
 44489      }
 44490      if (main) {
 44491        filters = filters.concat((0, (_filter || _load_filter()).ignoreLinesToRegex)(['!/' + main]));
 44492      }
 44493  
 44494      // include bundleDependencies
 44495      let bundleDependenciesFiles = [];
 44496      if (bundleDependencies) {
 44497        for (var _iterator = bundleDependencies, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 44498          var _ref2;
 44499  
 44500          if (_isArray) {
 44501            if (_i >= _iterator.length) break;
 44502            _ref2 = _iterator[_i++];
 44503          } else {
 44504            _i = _iterator.next();
 44505            if (_i.done) break;
 44506            _ref2 = _i.value;
 44507          }
 44508  
 44509          const dependency = _ref2;
 44510  
 44511          const dependencyList = depsFor(dependency, config.cwd);
 44512  
 44513          for (var _iterator2 = dependencyList, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 44514            var _ref3;
 44515  
 44516            if (_isArray2) {
 44517              if (_i2 >= _iterator2.length) break;
 44518              _ref3 = _iterator2[_i2++];
 44519            } else {
 44520              _i2 = _iterator2.next();
 44521              if (_i2.done) break;
 44522              _ref3 = _i2.value;
 44523            }
 44524  
 44525            const dep = _ref3;
 44526  
 44527            const filesForBundledDep = yield (_fs || _load_fs()).walk(dep.baseDir, null, new Set(FOLDERS_IGNORE));
 44528            bundleDependenciesFiles = bundleDependenciesFiles.concat(filesForBundledDep);
 44529          }
 44530        }
 44531      }
 44532  
 44533      // `files` field
 44534      if (onlyFiles) {
 44535        let lines = ['*'];
 44536        lines = lines.concat(onlyFiles.map(function (filename) {
 44537          return `!${filename}`;
 44538        }), onlyFiles.map(function (filename) {
 44539          return `!${path.join(filename, '**')}`;
 44540        }));
 44541        const regexes = (0, (_filter || _load_filter()).ignoreLinesToRegex)(lines, './');
 44542        filters = filters.concat(regexes);
 44543      }
 44544  
 44545      const files = yield (_fs || _load_fs()).walk(config.cwd, null, new Set(FOLDERS_IGNORE));
 44546      const dotIgnoreFiles = (0, (_filter || _load_filter()).filterOverridenGitignores)(files);
 44547  
 44548      // create ignores
 44549      for (var _iterator3 = dotIgnoreFiles, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 44550        var _ref4;
 44551  
 44552        if (_isArray3) {
 44553          if (_i3 >= _iterator3.length) break;
 44554          _ref4 = _iterator3[_i3++];
 44555        } else {
 44556          _i3 = _iterator3.next();
 44557          if (_i3.done) break;
 44558          _ref4 = _i3.value;
 44559        }
 44560  
 44561        const file = _ref4;
 44562  
 44563        const raw = yield (_fs || _load_fs()).readFile(file.absolute);
 44564        const lines = raw.split('\n');
 44565  
 44566        const regexes = (0, (_filter || _load_filter()).ignoreLinesToRegex)(lines, path.dirname(file.relative));
 44567        filters = filters.concat(regexes);
 44568      }
 44569  
 44570      // files to definitely keep, takes precedence over ignore filter
 44571      const keepFiles = new Set();
 44572  
 44573      // files to definitely ignore
 44574      const ignoredFiles = new Set();
 44575  
 44576      // list of files that didn't match any of our patterns, if a directory in the chain above was matched
 44577      // then we should inherit it
 44578      const possibleKeepFiles = new Set();
 44579  
 44580      // apply filters
 44581      (0, (_filter || _load_filter()).sortFilter)(files, filters, keepFiles, possibleKeepFiles, ignoredFiles);
 44582  
 44583      // add the files for the bundled dependencies to the set of files to keep
 44584      for (var _iterator4 = bundleDependenciesFiles, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 44585        var _ref5;
 44586  
 44587        if (_isArray4) {
 44588          if (_i4 >= _iterator4.length) break;
 44589          _ref5 = _iterator4[_i4++];
 44590        } else {
 44591          _i4 = _iterator4.next();
 44592          if (_i4.done) break;
 44593          _ref5 = _i4.value;
 44594        }
 44595  
 44596        const file = _ref5;
 44597  
 44598        const realPath = yield (_fs || _load_fs()).realpath(config.cwd);
 44599        keepFiles.add(path.relative(realPath, file.absolute));
 44600      }
 44601  
 44602      return packWithIgnoreAndHeaders(config.cwd, function (name) {
 44603        const relative = path.relative(config.cwd, name);
 44604        // Don't ignore directories, since we need to recurse inside them to check for unignored files.
 44605        if (fs2.lstatSync(name).isDirectory()) {
 44606          const isParentOfKeptFile = Array.from(keepFiles).some(function (name) {
 44607            return !path.relative(relative, name).startsWith('..');
 44608          });
 44609          return !isParentOfKeptFile;
 44610        }
 44611        // Otherwise, ignore a file if we're not supposed to keep it.
 44612        return !keepFiles.has(relative);
 44613      }, { mapHeader });
 44614    });
 44615  
 44616    return function packTarball(_x) {
 44617      return _ref.apply(this, arguments);
 44618    };
 44619  })();
 44620  
 44621  let pack = exports.pack = (() => {
 44622    var _ref6 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config) {
 44623      const packer = yield packTarball(config);
 44624      const compressor = packer.pipe(new zlib.Gzip());
 44625  
 44626      return compressor;
 44627    });
 44628  
 44629    return function pack(_x2) {
 44630      return _ref6.apply(this, arguments);
 44631    };
 44632  })();
 44633  
 44634  let run = exports.run = (() => {
 44635    var _ref7 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 44636      const pkg = yield config.readRootManifest();
 44637      if (!pkg.name) {
 44638        throw new (_errors || _load_errors()).MessageError(reporter.lang('noName'));
 44639      }
 44640      if (!pkg.version) {
 44641        throw new (_errors || _load_errors()).MessageError(reporter.lang('noVersion'));
 44642      }
 44643  
 44644      const normaliseScope = function normaliseScope(name) {
 44645        return name[0] === '@' ? name.substr(1).replace('/', '-') : name;
 44646      };
 44647      const filename = flags.filename || path.join(config.cwd, `${normaliseScope(pkg.name)}-v${pkg.version}.tgz`);
 44648  
 44649      yield config.executeLifecycleScript('prepack');
 44650  
 44651      const stream = yield pack(config);
 44652  
 44653      yield new Promise(function (resolve, reject) {
 44654        stream.pipe(fs2.createWriteStream(filename));
 44655        stream.on('error', reject);
 44656        stream.on('close', resolve);
 44657      });
 44658  
 44659      yield config.executeLifecycleScript('postpack');
 44660  
 44661      reporter.success(reporter.lang('packWroteTarball', filename));
 44662    });
 44663  
 44664    return function run(_x3, _x4, _x5, _x6) {
 44665      return _ref7.apply(this, arguments);
 44666    };
 44667  })();
 44668  
 44669  exports.packWithIgnoreAndHeaders = packWithIgnoreAndHeaders;
 44670  exports.setFlags = setFlags;
 44671  exports.hasWrapper = hasWrapper;
 44672  
 44673  var _fs;
 44674  
 44675  function _load_fs() {
 44676    return _fs = _interopRequireWildcard(__webpack_require__(5));
 44677  }
 44678  
 44679  var _filter;
 44680  
 44681  function _load_filter() {
 44682    return _filter = __webpack_require__(366);
 44683  }
 44684  
 44685  var _errors;
 44686  
 44687  function _load_errors() {
 44688    return _errors = __webpack_require__(6);
 44689  }
 44690  
 44691  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 44692  
 44693  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 44694  
 44695  const zlib = __webpack_require__(199);
 44696  const path = __webpack_require__(0);
 44697  const tar = __webpack_require__(194);
 44698  const fs2 = __webpack_require__(4);
 44699  const depsFor = __webpack_require__(678);
 44700  
 44701  const FOLDERS_IGNORE = [
 44702  // never allow version control folders
 44703  '.git', 'CVS', '.svn', '.hg', 'node_modules'];
 44704  
 44705  const DEFAULT_IGNORE = (0, (_filter || _load_filter()).ignoreLinesToRegex)([...FOLDERS_IGNORE,
 44706  
 44707  // ignore cruft
 44708  'yarn.lock', '.lock-wscript', '.wafpickle-{0..9}', '*.swp', '._*', 'npm-debug.log', 'yarn-error.log', '.npmrc', '.yarnrc', '.yarnrc.yml', '.npmignore', '.gitignore', '.DS_Store']);
 44709  
 44710  const NEVER_IGNORE = (0, (_filter || _load_filter()).ignoreLinesToRegex)([
 44711  // never ignore these files
 44712  '!/package.json', '!/readme*', '!/+(license|licence)*', '!/+(changes|changelog|history)*']);
 44713  
 44714  function packWithIgnoreAndHeaders(cwd, ignoreFunction, { mapHeader } = {}) {
 44715    return tar.pack(cwd, {
 44716      ignore: ignoreFunction,
 44717      sort: true,
 44718      map: header => {
 44719        const suffix = header.name === '.' ? '' : `/${header.name}`;
 44720        header.name = `package${suffix}`;
 44721        delete header.uid;
 44722        delete header.gid;
 44723        return mapHeader ? mapHeader(header) : header;
 44724      }
 44725    });
 44726  }
 44727  
 44728  function setFlags(commander) {
 44729    commander.description('Creates a compressed gzip archive of package dependencies.');
 44730    commander.option('-f, --filename <filename>', 'filename');
 44731  }
 44732  
 44733  function hasWrapper(commander, args) {
 44734    return true;
 44735  }
 44736  
 44737  /***/ }),
 44738  /* 167 */
 44739  /***/ (function(module, exports, __webpack_require__) {
 44740  
 44741  "use strict";
 44742  
 44743  
 44744  Object.defineProperty(exports, "__esModule", {
 44745    value: true
 44746  });
 44747  
 44748  var _asyncToGenerator2;
 44749  
 44750  function _load_asyncToGenerator() {
 44751    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 44752  }
 44753  
 44754  var _index;
 44755  
 44756  function _load_index() {
 44757    return _index = _interopRequireDefault(__webpack_require__(218));
 44758  }
 44759  
 44760  var _constants;
 44761  
 44762  function _load_constants() {
 44763    return _constants = _interopRequireWildcard(__webpack_require__(8));
 44764  }
 44765  
 44766  var _fs;
 44767  
 44768  function _load_fs() {
 44769    return _fs = _interopRequireWildcard(__webpack_require__(5));
 44770  }
 44771  
 44772  var _mutex;
 44773  
 44774  function _load_mutex() {
 44775    return _mutex = _interopRequireDefault(__webpack_require__(369));
 44776  }
 44777  
 44778  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 44779  
 44780  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 44781  
 44782  /* eslint no-unused-vars: 0 */
 44783  
 44784  const cmdShim = __webpack_require__(202);
 44785  const path = __webpack_require__(0);
 44786  
 44787  class BaseFetcher {
 44788    constructor(dest, remote, config) {
 44789      this.reporter = config.reporter;
 44790      this.packageName = remote.packageName;
 44791      this.reference = remote.reference;
 44792      this.registry = remote.registry;
 44793      this.hash = remote.hash;
 44794      this.remote = remote;
 44795      this.config = config;
 44796      this.dest = dest;
 44797    }
 44798  
 44799    setupMirrorFromCache() {
 44800      // fetcher subclasses may use this to perform actions such as copying over a cached tarball to the offline
 44801      // mirror etc
 44802      return Promise.resolve();
 44803    }
 44804  
 44805    _fetch() {
 44806      return Promise.reject(new Error('Not implemented'));
 44807    }
 44808  
 44809    fetch(defaultManifest) {
 44810      var _this = this;
 44811  
 44812      return (_fs || _load_fs()).lockQueue.push(this.dest, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 44813        yield (_fs || _load_fs()).mkdirp(_this.dest);
 44814  
 44815        // fetch package and get the hash
 44816  
 44817        var _ref2 = yield _this._fetch();
 44818  
 44819        const hash = _ref2.hash;
 44820  
 44821  
 44822        const pkg = yield (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 44823          // load the new normalized manifest
 44824          try {
 44825            return yield _this.config.readManifest(_this.dest, _this.registry);
 44826          } catch (e) {
 44827            if (e.code === 'ENOENT' && defaultManifest) {
 44828              return (0, (_index || _load_index()).default)(defaultManifest, _this.dest, _this.config, false);
 44829            } else {
 44830              throw e;
 44831            }
 44832          }
 44833        })();
 44834  
 44835        if (pkg.bin) {
 44836          for (var _iterator = Object.keys(pkg.bin), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 44837            var _ref4;
 44838  
 44839            if (_isArray) {
 44840              if (_i >= _iterator.length) break;
 44841              _ref4 = _iterator[_i++];
 44842            } else {
 44843              _i = _iterator.next();
 44844              if (_i.done) break;
 44845              _ref4 = _i.value;
 44846            }
 44847  
 44848            const binName = _ref4;
 44849  
 44850            const binDest = `${_this.dest}/.bin`;
 44851  
 44852            // Using any sort of absolute path here would prevent makePortableProxyScript from preserving symlinks when
 44853            // calling the binary
 44854            const src = path.resolve(_this.dest, pkg.bin[binName]);
 44855  
 44856            if (yield (_fs || _load_fs()).exists(src)) {
 44857              // We ensure that the target is executable
 44858              yield (_fs || _load_fs()).chmod(src, 0o755);
 44859            }
 44860  
 44861            yield (_fs || _load_fs()).mkdirp(binDest);
 44862            if (process.platform === 'win32') {
 44863              const unlockMutex = yield (0, (_mutex || _load_mutex()).default)(src);
 44864              try {
 44865                yield cmdShim.ifExists(src, `${binDest}/${binName}`, { createPwshFile: false });
 44866              } finally {
 44867                unlockMutex();
 44868              }
 44869            } else {
 44870              yield (_fs || _load_fs()).symlink(src, `${binDest}/${binName}`);
 44871            }
 44872          }
 44873        }
 44874  
 44875        yield (_fs || _load_fs()).writeFile(path.join(_this.dest, (_constants || _load_constants()).METADATA_FILENAME), JSON.stringify({
 44876          manifest: pkg,
 44877          artifacts: [],
 44878          remote: _this.remote,
 44879          registry: _this.registry,
 44880          hash
 44881        }, null, '  '));
 44882  
 44883        return {
 44884          hash,
 44885          dest: _this.dest,
 44886          package: pkg,
 44887          cached: false
 44888        };
 44889      }));
 44890    }
 44891  }
 44892  exports.default = BaseFetcher;
 44893  
 44894  /***/ }),
 44895  /* 168 */
 44896  /***/ (function(module, exports, __webpack_require__) {
 44897  
 44898  "use strict";
 44899  
 44900  
 44901  Object.defineProperty(exports, "__esModule", {
 44902    value: true
 44903  });
 44904  exports.hash = hash;
 44905  const crypto = __webpack_require__(11);
 44906  const stream = __webpack_require__(23);
 44907  
 44908  function hash(content, type = 'md5') {
 44909    return crypto.createHash(type).update(content).digest('hex');
 44910  }
 44911  
 44912  class HashStream extends stream.Transform {
 44913    constructor(options) {
 44914      super(options);
 44915      this._hash = crypto.createHash('sha1');
 44916      this._updated = false;
 44917    }
 44918  
 44919    _transform(chunk, encoding, callback) {
 44920      this._updated = true;
 44921      this._hash.update(chunk);
 44922      callback(null, chunk);
 44923    }
 44924  
 44925    getHash() {
 44926      return this._hash.digest('hex');
 44927    }
 44928  
 44929    test(sum) {
 44930      return this._updated && sum === this.getHash();
 44931    }
 44932  }
 44933  exports.HashStream = HashStream;
 44934  
 44935  /***/ }),
 44936  /* 169 */
 44937  /***/ (function(module, exports, __webpack_require__) {
 44938  
 44939  "use strict";
 44940  
 44941  
 44942  Object.defineProperty(exports, "__esModule", {
 44943    value: true
 44944  });
 44945  exports.default = guessName;
 44946  
 44947  var _url;
 44948  
 44949  function _load_url() {
 44950    return _url = _interopRequireDefault(__webpack_require__(24));
 44951  }
 44952  
 44953  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 44954  
 44955  function cleanup(name) {
 44956    name = name.replace(/-\d+\.\d+\.\d+/, '');
 44957    return name.replace(/\.git$|\.zip$|\.tar\.gz$|\.tar\.bz2$/, '');
 44958  }
 44959  
 44960  function guessNameFallback(source) {
 44961    // If cannot parse as url, just return cleaned up last part
 44962    const parts = source.split('/');
 44963    return cleanup(parts[parts.length - 1]);
 44964  }
 44965  
 44966  function guessName(source) {
 44967    try {
 44968      const parsed = (_url || _load_url()).default.parse(source);
 44969  
 44970      if (!parsed.pathname) {
 44971        return guessNameFallback(source);
 44972      }
 44973  
 44974      const parts = parsed.pathname.split('/');
 44975  
 44976      // Priority goes to part that ends with .git
 44977      for (var _iterator = parts, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 44978        var _ref;
 44979  
 44980        if (_isArray) {
 44981          if (_i >= _iterator.length) break;
 44982          _ref = _iterator[_i++];
 44983        } else {
 44984          _i = _iterator.next();
 44985          if (_i.done) break;
 44986          _ref = _i.value;
 44987        }
 44988  
 44989        const part = _ref;
 44990  
 44991        if (part.match(/\.git$/)) {
 44992          return cleanup(part);
 44993        }
 44994      }
 44995  
 44996      // Most likely a directory
 44997      if (parsed.host == null) {
 44998        return cleanup(parts[parts.length - 1]);
 44999      }
 45000  
 45001      // A site like github or gitlab
 45002      if (parts.length > 2) {
 45003        return cleanup(parts[2]);
 45004      }
 45005  
 45006      // Privately hosted package?
 45007      if (parts.length > 1) {
 45008        return cleanup(parts[1]);
 45009      }
 45010  
 45011      return guessNameFallback(source);
 45012    } catch (e) {
 45013      return guessNameFallback(source);
 45014    }
 45015  }
 45016  
 45017  /***/ }),
 45018  /* 170 */
 45019  /***/ (function(module, exports, __webpack_require__) {
 45020  
 45021  "use strict";
 45022  
 45023  
 45024  Object.defineProperty(exports, "__esModule", {
 45025    value: true
 45026  });
 45027  exports.satisfiesWithPrereleases = satisfiesWithPrereleases;
 45028  exports.diffWithUnstable = diffWithUnstable;
 45029  
 45030  var _semver;
 45031  
 45032  function _load_semver() {
 45033    return _semver = _interopRequireDefault(__webpack_require__(22));
 45034  }
 45035  
 45036  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 45037  
 45038  /**
 45039   * Returns whether the given semver version satisfies the given range. Notably this supports
 45040   * prerelease versions so that "2.0.0-rc.0" satisfies the range ">=1.0.0", for example.
 45041   */
 45042  
 45043  function satisfiesWithPrereleases(version, range, loose = false) {
 45044    let semverRange;
 45045    try {
 45046      // $FlowFixMe: Add a definition for the Range class
 45047      semverRange = new (_semver || _load_semver()).default.Range(range, loose);
 45048    } catch (err) {
 45049      return false;
 45050    }
 45051  
 45052    if (!version) {
 45053      return false;
 45054    }
 45055    let semverVersion;
 45056    try {
 45057      semverVersion = new (_semver || _load_semver()).default.SemVer(version, semverRange.loose);
 45058    } catch (err) {
 45059      return false;
 45060    }
 45061  
 45062    // A range has multiple sets of comparators. A version must satisfy all comparators in a set
 45063    // and at least one set to satisfy the range.
 45064    return semverRange.set.some(comparatorSet => {
 45065      // node-semver converts ~ and ^ ranges into pairs of >= and < ranges but the upper bounds don't
 45066      // properly exclude prerelease versions. For example, "^1.0.0" is converted to ">=1.0.0 <2.0.0",
 45067      // which includes "2.0.0-pre" since prerelease versions are lower than their non-prerelease
 45068      // counterparts. As a practical workaround we make upper-bound ranges exclude prereleases and
 45069      // convert "<2.0.0" to "<2.0.0-0", for example.
 45070      comparatorSet = comparatorSet.map(comparator => {
 45071        if (comparator.operator !== '<' || !comparator.value || comparator.semver.prerelease.length) {
 45072          return comparator;
 45073        }
 45074  
 45075        // "0" is the lowest prerelease version
 45076        comparator.semver.inc('pre', 0);
 45077  
 45078        const comparatorString = comparator.operator + comparator.semver.version;
 45079        // $FlowFixMe: Add a definition for the Comparator class
 45080        return new (_semver || _load_semver()).default.Comparator(comparatorString, comparator.loose);
 45081      });
 45082  
 45083      return !comparatorSet.some(comparator => !comparator.test(semverVersion));
 45084    });
 45085  }
 45086  
 45087  const PRE_RELEASES = {
 45088    major: 'premajor',
 45089    minor: 'preminor',
 45090    patch: 'prepatch'
 45091  };
 45092  
 45093  /**
 45094   * Returns the difference between two versions as a semantic string representation.
 45095   * Similar to the `diff` method in node-semver, but it also accounts for unstable versions,
 45096   * like 0.x.x or 0.0.x.
 45097   */
 45098  
 45099  function diffWithUnstable(version1, version2) {
 45100    if ((_semver || _load_semver()).default.eq(version1, version2) === false) {
 45101      const v1 = (_semver || _load_semver()).default.parse(version1);
 45102      const v2 = (_semver || _load_semver()).default.parse(version2);
 45103  
 45104      if (v1 != null && v2 != null) {
 45105        const isPreRelease = v1.prerelease.length > 0 || v2.prerelease.length > 0;
 45106        const preMajor = v1.major === 0 || v2.major === 0;
 45107        const preMinor = preMajor && (v1.minor === 0 || v2.minor === 0);
 45108  
 45109        let diff = null;
 45110  
 45111        if (v1.major !== v2.major) {
 45112          diff = 'major';
 45113        } else if (v1.minor !== v2.minor) {
 45114          if (preMajor) {
 45115            // If the major version number is zero (0.x.x), treat a change
 45116            // of the minor version number as a major change.
 45117            diff = 'major';
 45118          } else {
 45119            diff = 'minor';
 45120          }
 45121        } else if (v1.patch !== v2.patch) {
 45122          if (preMinor) {
 45123            // If the major & minor version numbers are zero (0.0.x), treat a change
 45124            // of the patch version number as a major change.
 45125            diff = 'major';
 45126          } else if (preMajor) {
 45127            // If the major version number is zero (0.x.x), treat a change
 45128            // of the patch version number as a minor change.
 45129            diff = 'minor';
 45130          } else {
 45131            diff = 'patch';
 45132          }
 45133        }
 45134  
 45135        if (isPreRelease) {
 45136          if (diff != null) {
 45137            diff = PRE_RELEASES[diff];
 45138          } else {
 45139            diff = 'prerelease';
 45140          }
 45141        }
 45142  
 45143        return diff;
 45144      }
 45145    }
 45146  
 45147    return null;
 45148  }
 45149  
 45150  /***/ }),
 45151  /* 171 */
 45152  /***/ (function(module, exports, __webpack_require__) {
 45153  
 45154  // fallback for non-array-like ES3 and non-enumerable old V8 strings
 45155  var cof = __webpack_require__(69);
 45156  // eslint-disable-next-line no-prototype-builtins
 45157  module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
 45158    return cof(it) == 'String' ? it.split('') : Object(it);
 45159  };
 45160  
 45161  
 45162  /***/ }),
 45163  /* 172 */
 45164  /***/ (function(module, exports, __webpack_require__) {
 45165  
 45166  // 19.1.2.14 / 15.2.3.14 Object.keys(O)
 45167  var $keys = __webpack_require__(246);
 45168  var enumBugKeys = __webpack_require__(127);
 45169  
 45170  module.exports = Object.keys || function keys(O) {
 45171    return $keys(O, enumBugKeys);
 45172  };
 45173  
 45174  
 45175  /***/ }),
 45176  /* 173 */
 45177  /***/ (function(module, exports, __webpack_require__) {
 45178  
 45179  // 7.1.13 ToObject(argument)
 45180  var defined = __webpack_require__(91);
 45181  module.exports = function (it) {
 45182    return Object(defined(it));
 45183  };
 45184  
 45185  
 45186  /***/ }),
 45187  /* 174 */
 45188  /***/ (function(module, exports, __webpack_require__) {
 45189  
 45190  var once = __webpack_require__(83);
 45191  
 45192  var noop = function() {};
 45193  
 45194  var isRequest = function(stream) {
 45195  	return stream.setHeader && typeof stream.abort === 'function';
 45196  };
 45197  
 45198  var isChildProcess = function(stream) {
 45199  	return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3
 45200  };
 45201  
 45202  var eos = function(stream, opts, callback) {
 45203  	if (typeof opts === 'function') return eos(stream, null, opts);
 45204  	if (!opts) opts = {};
 45205  
 45206  	callback = once(callback || noop);
 45207  
 45208  	var ws = stream._writableState;
 45209  	var rs = stream._readableState;
 45210  	var readable = opts.readable || (opts.readable !== false && stream.readable);
 45211  	var writable = opts.writable || (opts.writable !== false && stream.writable);
 45212  
 45213  	var onlegacyfinish = function() {
 45214  		if (!stream.writable) onfinish();
 45215  	};
 45216  
 45217  	var onfinish = function() {
 45218  		writable = false;
 45219  		if (!readable) callback.call(stream);
 45220  	};
 45221  
 45222  	var onend = function() {
 45223  		readable = false;
 45224  		if (!writable) callback.call(stream);
 45225  	};
 45226  
 45227  	var onexit = function(exitCode) {
 45228  		callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null);
 45229  	};
 45230  
 45231  	var onerror = function(err) {
 45232  		callback.call(stream, err);
 45233  	};
 45234  
 45235  	var onclose = function() {
 45236  		if (readable && !(rs && rs.ended)) return callback.call(stream, new Error('premature close'));
 45237  		if (writable && !(ws && ws.ended)) return callback.call(stream, new Error('premature close'));
 45238  	};
 45239  
 45240  	var onrequest = function() {
 45241  		stream.req.on('finish', onfinish);
 45242  	};
 45243  
 45244  	if (isRequest(stream)) {
 45245  		stream.on('complete', onfinish);
 45246  		stream.on('abort', onclose);
 45247  		if (stream.req) onrequest();
 45248  		else stream.on('request', onrequest);
 45249  	} else if (writable && !ws) { // legacy streams
 45250  		stream.on('end', onlegacyfinish);
 45251  		stream.on('close', onlegacyfinish);
 45252  	}
 45253  
 45254  	if (isChildProcess(stream)) stream.on('exit', onexit);
 45255  
 45256  	stream.on('end', onend);
 45257  	stream.on('finish', onfinish);
 45258  	if (opts.error !== false) stream.on('error', onerror);
 45259  	stream.on('close', onclose);
 45260  
 45261  	return function() {
 45262  		stream.removeListener('complete', onfinish);
 45263  		stream.removeListener('abort', onclose);
 45264  		stream.removeListener('request', onrequest);
 45265  		if (stream.req) stream.req.removeListener('finish', onfinish);
 45266  		stream.removeListener('end', onlegacyfinish);
 45267  		stream.removeListener('close', onlegacyfinish);
 45268  		stream.removeListener('finish', onfinish);
 45269  		stream.removeListener('exit', onexit);
 45270  		stream.removeListener('end', onend);
 45271  		stream.removeListener('error', onerror);
 45272  		stream.removeListener('close', onclose);
 45273  	};
 45274  };
 45275  
 45276  module.exports = eos;
 45277  
 45278  
 45279  /***/ }),
 45280  /* 175 */
 45281  /***/ (function(module, exports, __webpack_require__) {
 45282  
 45283  // Copyright 2012 Joyent, Inc.  All rights reserved.
 45284  
 45285  var assert = __webpack_require__(16);
 45286  var sshpk = __webpack_require__(328);
 45287  var util = __webpack_require__(3);
 45288  
 45289  var HASH_ALGOS = {
 45290    'sha1': true,
 45291    'sha256': true,
 45292    'sha512': true
 45293  };
 45294  
 45295  var PK_ALGOS = {
 45296    'rsa': true,
 45297    'dsa': true,
 45298    'ecdsa': true
 45299  };
 45300  
 45301  function HttpSignatureError(message, caller) {
 45302    if (Error.captureStackTrace)
 45303      Error.captureStackTrace(this, caller || HttpSignatureError);
 45304  
 45305    this.message = message;
 45306    this.name = caller.name;
 45307  }
 45308  util.inherits(HttpSignatureError, Error);
 45309  
 45310  function InvalidAlgorithmError(message) {
 45311    HttpSignatureError.call(this, message, InvalidAlgorithmError);
 45312  }
 45313  util.inherits(InvalidAlgorithmError, HttpSignatureError);
 45314  
 45315  function validateAlgorithm(algorithm) {
 45316    var alg = algorithm.toLowerCase().split('-');
 45317  
 45318    if (alg.length !== 2) {
 45319      throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' is not a ' +
 45320        'valid algorithm'));
 45321    }
 45322  
 45323    if (alg[0] !== 'hmac' && !PK_ALGOS[alg[0]]) {
 45324      throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' type keys ' +
 45325        'are not supported'));
 45326    }
 45327  
 45328    if (!HASH_ALGOS[alg[1]]) {
 45329      throw (new InvalidAlgorithmError(alg[1].toUpperCase() + ' is not a ' +
 45330        'supported hash algorithm'));
 45331    }
 45332  
 45333    return (alg);
 45334  }
 45335  
 45336  ///--- API
 45337  
 45338  module.exports = {
 45339  
 45340    HASH_ALGOS: HASH_ALGOS,
 45341    PK_ALGOS: PK_ALGOS,
 45342  
 45343    HttpSignatureError: HttpSignatureError,
 45344    InvalidAlgorithmError: InvalidAlgorithmError,
 45345  
 45346    validateAlgorithm: validateAlgorithm,
 45347  
 45348    /**
 45349     * Converts an OpenSSH public key (rsa only) to a PKCS#8 PEM file.
 45350     *
 45351     * The intent of this module is to interoperate with OpenSSL only,
 45352     * specifically the node crypto module's `verify` method.
 45353     *
 45354     * @param {String} key an OpenSSH public key.
 45355     * @return {String} PEM encoded form of the RSA public key.
 45356     * @throws {TypeError} on bad input.
 45357     * @throws {Error} on invalid ssh key formatted data.
 45358     */
 45359    sshKeyToPEM: function sshKeyToPEM(key) {
 45360      assert.string(key, 'ssh_key');
 45361  
 45362      var k = sshpk.parseKey(key, 'ssh');
 45363      return (k.toString('pem'));
 45364    },
 45365  
 45366  
 45367    /**
 45368     * Generates an OpenSSH fingerprint from an ssh public key.
 45369     *
 45370     * @param {String} key an OpenSSH public key.
 45371     * @return {String} key fingerprint.
 45372     * @throws {TypeError} on bad input.
 45373     * @throws {Error} if what you passed doesn't look like an ssh public key.
 45374     */
 45375    fingerprint: function fingerprint(key) {
 45376      assert.string(key, 'ssh_key');
 45377  
 45378      var k = sshpk.parseKey(key, 'ssh');
 45379      return (k.fingerprint('md5').toString('hex'));
 45380    },
 45381  
 45382    /**
 45383     * Converts a PKGCS#8 PEM file to an OpenSSH public key (rsa)
 45384     *
 45385     * The reverse of the above function.
 45386     */
 45387    pemToRsaSSHKey: function pemToRsaSSHKey(pem, comment) {
 45388      assert.equal('string', typeof (pem), 'typeof pem');
 45389  
 45390      var k = sshpk.parseKey(pem, 'pem');
 45391      k.comment = comment;
 45392      return (k.toString('ssh'));
 45393    }
 45394  };
 45395  
 45396  
 45397  /***/ }),
 45398  /* 176 */
 45399  /***/ (function(module, exports, __webpack_require__) {
 45400  
 45401  "use strict";
 45402  
 45403  var chalk = __webpack_require__(30);
 45404  var figures = __webpack_require__(267);
 45405  
 45406  /**
 45407   * Separator object
 45408   * Used to space/separate choices group
 45409   * @constructor
 45410   * @param {String} line   Separation line content (facultative)
 45411   */
 45412  
 45413  class Separator {
 45414    constructor(line) {
 45415      this.type = 'separator';
 45416      this.line = chalk.dim(line || new Array(15).join(figures.line));
 45417    }
 45418  
 45419    /**
 45420     * Stringify separator
 45421     * @return {String} the separator display string
 45422     */
 45423    toString() {
 45424      return this.line;
 45425    }
 45426  }
 45427  
 45428  /**
 45429   * Helper function returning false if object is a separator
 45430   * @param  {Object} obj object to test against
 45431   * @return {Boolean}    `false` if object is a separator
 45432   */
 45433  
 45434  Separator.exclude = function(obj) {
 45435    return obj.type !== 'separator';
 45436  };
 45437  
 45438  module.exports = Separator;
 45439  
 45440  
 45441  /***/ }),
 45442  /* 177 */
 45443  /***/ (function(module, exports, __webpack_require__) {
 45444  
 45445  "use strict";
 45446  
 45447  
 45448  var _ = __webpack_require__(38);
 45449  var chalk = __webpack_require__(30);
 45450  
 45451  /**
 45452   * The paginator keeps track of a pointer index in a list and returns
 45453   * a subset of the choices if the list is too long.
 45454   */
 45455  
 45456  class Paginator {
 45457    constructor(screen) {
 45458      this.pointer = 0;
 45459      this.lastIndex = 0;
 45460      this.screen = screen;
 45461    }
 45462  
 45463    paginate(output, active, pageSize) {
 45464      pageSize = pageSize || 7;
 45465      var middleOfList = Math.floor(pageSize / 2);
 45466      var lines = output.split('\n');
 45467  
 45468      if (this.screen) {
 45469        lines = this.screen.breakLines(lines);
 45470        active = _.sum(lines.map(lineParts => lineParts.length).splice(0, active));
 45471        lines = _.flatten(lines);
 45472      }
 45473  
 45474      // Make sure there's enough lines to paginate
 45475      if (lines.length <= pageSize) {
 45476        return output;
 45477      }
 45478  
 45479      // Move the pointer only when the user go down and limit it to the middle of the list
 45480      if (
 45481        this.pointer < middleOfList &&
 45482        this.lastIndex < active &&
 45483        active - this.lastIndex < pageSize
 45484      ) {
 45485        this.pointer = Math.min(middleOfList, this.pointer + active - this.lastIndex);
 45486      }
 45487      this.lastIndex = active;
 45488  
 45489      // Duplicate the lines so it give an infinite list look
 45490      var infinite = _.flatten([lines, lines, lines]);
 45491      var topIndex = Math.max(0, active + lines.length - this.pointer);
 45492  
 45493      var section = infinite.splice(topIndex, pageSize).join('\n');
 45494      return section + '\n' + chalk.dim('(Move up and down to reveal more choices)');
 45495    }
 45496  }
 45497  
 45498  module.exports = Paginator;
 45499  
 45500  
 45501  /***/ }),
 45502  /* 178 */
 45503  /***/ (function(module, exports) {
 45504  
 45505  /*!
 45506   * is-extglob <https://github.com/jonschlinkert/is-extglob>
 45507   *
 45508   * Copyright (c) 2014-2015, Jon Schlinkert.
 45509   * Licensed under the MIT License.
 45510   */
 45511  
 45512  module.exports = function isExtglob(str) {
 45513    return typeof str === 'string'
 45514      && /[@?!+*]\(/.test(str);
 45515  };
 45516  
 45517  
 45518  /***/ }),
 45519  /* 179 */
 45520  /***/ (function(module, exports, __webpack_require__) {
 45521  
 45522  /*!
 45523   * is-glob <https://github.com/jonschlinkert/is-glob>
 45524   *
 45525   * Copyright (c) 2014-2015, Jon Schlinkert.
 45526   * Licensed under the MIT License.
 45527   */
 45528  
 45529  var isExtglob = __webpack_require__(178);
 45530  
 45531  module.exports = function isGlob(str) {
 45532    return typeof str === 'string'
 45533      && (/[*!?{}(|)[\]]/.test(str)
 45534       || isExtglob(str));
 45535  };
 45536  
 45537  /***/ }),
 45538  /* 180 */
 45539  /***/ (function(module, exports, __webpack_require__) {
 45540  
 45541  var isBuffer = __webpack_require__(729);
 45542  var toString = Object.prototype.toString;
 45543  
 45544  /**
 45545   * Get the native `typeof` a value.
 45546   *
 45547   * @param  {*} `val`
 45548   * @return {*} Native javascript type
 45549   */
 45550  
 45551  module.exports = function kindOf(val) {
 45552    // primitivies
 45553    if (typeof val === 'undefined') {
 45554      return 'undefined';
 45555    }
 45556    if (val === null) {
 45557      return 'null';
 45558    }
 45559    if (val === true || val === false || val instanceof Boolean) {
 45560      return 'boolean';
 45561    }
 45562    if (typeof val === 'string' || val instanceof String) {
 45563      return 'string';
 45564    }
 45565    if (typeof val === 'number' || val instanceof Number) {
 45566      return 'number';
 45567    }
 45568  
 45569    // functions
 45570    if (typeof val === 'function' || val instanceof Function) {
 45571      return 'function';
 45572    }
 45573  
 45574    // array
 45575    if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {
 45576      return 'array';
 45577    }
 45578  
 45579    // check for instances of RegExp and Date before calling `toString`
 45580    if (val instanceof RegExp) {
 45581      return 'regexp';
 45582    }
 45583    if (val instanceof Date) {
 45584      return 'date';
 45585    }
 45586  
 45587    // other objects
 45588    var type = toString.call(val);
 45589  
 45590    if (type === '[object RegExp]') {
 45591      return 'regexp';
 45592    }
 45593    if (type === '[object Date]') {
 45594      return 'date';
 45595    }
 45596    if (type === '[object Arguments]') {
 45597      return 'arguments';
 45598    }
 45599    if (type === '[object Error]') {
 45600      return 'error';
 45601    }
 45602  
 45603    // buffer
 45604    if (isBuffer(val)) {
 45605      return 'buffer';
 45606    }
 45607  
 45608    // es6: Map, WeakMap, Set, WeakSet
 45609    if (type === '[object Set]') {
 45610      return 'set';
 45611    }
 45612    if (type === '[object WeakSet]') {
 45613      return 'weakset';
 45614    }
 45615    if (type === '[object Map]') {
 45616      return 'map';
 45617    }
 45618    if (type === '[object WeakMap]') {
 45619      return 'weakmap';
 45620    }
 45621    if (type === '[object Symbol]') {
 45622      return 'symbol';
 45623    }
 45624  
 45625    // typed arrays
 45626    if (type === '[object Int8Array]') {
 45627      return 'int8array';
 45628    }
 45629    if (type === '[object Uint8Array]') {
 45630      return 'uint8array';
 45631    }
 45632    if (type === '[object Uint8ClampedArray]') {
 45633      return 'uint8clampedarray';
 45634    }
 45635    if (type === '[object Int16Array]') {
 45636      return 'int16array';
 45637    }
 45638    if (type === '[object Uint16Array]') {
 45639      return 'uint16array';
 45640    }
 45641    if (type === '[object Int32Array]') {
 45642      return 'int32array';
 45643    }
 45644    if (type === '[object Uint32Array]') {
 45645      return 'uint32array';
 45646    }
 45647    if (type === '[object Float32Array]') {
 45648      return 'float32array';
 45649    }
 45650    if (type === '[object Float64Array]') {
 45651      return 'float64array';
 45652    }
 45653  
 45654    // must be a plain object
 45655    return 'object';
 45656  };
 45657  
 45658  
 45659  /***/ }),
 45660  /* 181 */
 45661  /***/ (function(module, exports, __webpack_require__) {
 45662  
 45663  "use strict";
 45664  
 45665  
 45666  if (!process.version ||
 45667      process.version.indexOf('v0.') === 0 ||
 45668      process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
 45669    module.exports = { nextTick: nextTick };
 45670  } else {
 45671    module.exports = process
 45672  }
 45673  
 45674  function nextTick(fn, arg1, arg2, arg3) {
 45675    if (typeof fn !== 'function') {
 45676      throw new TypeError('"callback" argument must be a function');
 45677    }
 45678    var len = arguments.length;
 45679    var args, i;
 45680    switch (len) {
 45681    case 0:
 45682    case 1:
 45683      return process.nextTick(fn);
 45684    case 2:
 45685      return process.nextTick(function afterTickOne() {
 45686        fn.call(null, arg1);
 45687      });
 45688    case 3:
 45689      return process.nextTick(function afterTickTwo() {
 45690        fn.call(null, arg1, arg2);
 45691      });
 45692    case 4:
 45693      return process.nextTick(function afterTickThree() {
 45694        fn.call(null, arg1, arg2, arg3);
 45695      });
 45696    default:
 45697      args = new Array(len - 1);
 45698      i = 0;
 45699      while (i < args.length) {
 45700        args[i++] = arguments[i];
 45701      }
 45702      return process.nextTick(function afterTick() {
 45703        fn.apply(null, args);
 45704      });
 45705    }
 45706  }
 45707  
 45708  
 45709  
 45710  /***/ }),
 45711  /* 182 */
 45712  /***/ (function(module, exports, __webpack_require__) {
 45713  
 45714  "use strict";
 45715  
 45716  
 45717  var isPromise = __webpack_require__(741);
 45718  
 45719  /**
 45720   * Return a function that will run a function asynchronously or synchronously
 45721   *
 45722   * example:
 45723   * runAsync(wrappedFunction, callback)(...args);
 45724   *
 45725   * @param   {Function} func  Function to run
 45726   * @param   {Function} cb    Callback function passed the `func` returned value
 45727   * @return  {Function(arguments)} Arguments to pass to `func`. This function will in turn
 45728   *                                return a Promise (Node >= 0.12) or call the callbacks.
 45729   */
 45730  
 45731  var runAsync = module.exports = function (func, cb) {
 45732    cb = cb || function () {};
 45733  
 45734    return function () {
 45735      var async = false;
 45736      var args = arguments;
 45737  
 45738      var promise = new Promise(function (resolve, reject) {
 45739        var answer = func.apply({
 45740          async: function () {
 45741            async = true;
 45742            return function (err, value) {
 45743              if (err) {
 45744                reject(err);
 45745              } else {
 45746                resolve(value);
 45747              }
 45748            };
 45749          }
 45750        }, Array.prototype.slice.call(args));
 45751  
 45752        if (!async) {
 45753          if (isPromise(answer)) {
 45754            answer.then(resolve, reject);
 45755          } else {
 45756            resolve(answer);
 45757          }
 45758        }
 45759      });
 45760  
 45761      promise.then(cb.bind(null, null), cb);
 45762  
 45763      return promise;
 45764    }
 45765  };
 45766  
 45767  runAsync.cb = function (func, cb) {
 45768    return runAsync(function () {
 45769      var args = Array.prototype.slice.call(arguments);
 45770      if (args.length === func.length - 1) {
 45771        args.push(this.async());
 45772      }
 45773      return func.apply(this, args);
 45774    }, cb);
 45775  };
 45776  
 45777  
 45778  /***/ }),
 45779  /* 183 */
 45780  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 45781  
 45782  "use strict";
 45783  Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
 45784  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__internal_Observable__ = __webpack_require__(12);
 45785  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Observable", function() { return __WEBPACK_IMPORTED_MODULE_0__internal_Observable__["a"]; });
 45786  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__internal_observable_ConnectableObservable__ = __webpack_require__(423);
 45787  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ConnectableObservable", function() { return __WEBPACK_IMPORTED_MODULE_1__internal_observable_ConnectableObservable__["a"]; });
 45788  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__internal_operators_groupBy__ = __webpack_require__(433);
 45789  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "GroupedObservable", function() { return __WEBPACK_IMPORTED_MODULE_2__internal_operators_groupBy__["a"]; });
 45790  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__internal_symbol_observable__ = __webpack_require__(118);
 45791  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "observable", function() { return __WEBPACK_IMPORTED_MODULE_3__internal_symbol_observable__["a"]; });
 45792  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__internal_Subject__ = __webpack_require__(36);
 45793  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return __WEBPACK_IMPORTED_MODULE_4__internal_Subject__["a"]; });
 45794  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__internal_BehaviorSubject__ = __webpack_require__(419);
 45795  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "BehaviorSubject", function() { return __WEBPACK_IMPORTED_MODULE_5__internal_BehaviorSubject__["a"]; });
 45796  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__internal_ReplaySubject__ = __webpack_require__(308);
 45797  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ReplaySubject", function() { return __WEBPACK_IMPORTED_MODULE_6__internal_ReplaySubject__["a"]; });
 45798  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__internal_AsyncSubject__ = __webpack_require__(184);
 45799  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncSubject", function() { return __WEBPACK_IMPORTED_MODULE_7__internal_AsyncSubject__["a"]; });
 45800  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__internal_scheduler_asap__ = __webpack_require__(438);
 45801  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "asapScheduler", function() { return __WEBPACK_IMPORTED_MODULE_8__internal_scheduler_asap__["a"]; });
 45802  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__internal_scheduler_async__ = __webpack_require__(40);
 45803  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "asyncScheduler", function() { return __WEBPACK_IMPORTED_MODULE_9__internal_scheduler_async__["a"]; });
 45804  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__internal_scheduler_queue__ = __webpack_require__(439);
 45805  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "queueScheduler", function() { return __WEBPACK_IMPORTED_MODULE_10__internal_scheduler_queue__["a"]; });
 45806  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__internal_scheduler_animationFrame__ = __webpack_require__(926);
 45807  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "animationFrameScheduler", function() { return __WEBPACK_IMPORTED_MODULE_11__internal_scheduler_animationFrame__["a"]; });
 45808  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__internal_scheduler_VirtualTimeScheduler__ = __webpack_require__(925);
 45809  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualTimeScheduler", function() { return __WEBPACK_IMPORTED_MODULE_12__internal_scheduler_VirtualTimeScheduler__["a"]; });
 45810  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualAction", function() { return __WEBPACK_IMPORTED_MODULE_12__internal_scheduler_VirtualTimeScheduler__["b"]; });
 45811  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__internal_Scheduler__ = __webpack_require__(421);
 45812  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Scheduler", function() { return __WEBPACK_IMPORTED_MODULE_13__internal_Scheduler__["a"]; });
 45813  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__internal_Subscription__ = __webpack_require__(25);
 45814  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Subscription", function() { return __WEBPACK_IMPORTED_MODULE_14__internal_Subscription__["a"]; });
 45815  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__internal_Subscriber__ = __webpack_require__(7);
 45816  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Subscriber", function() { return __WEBPACK_IMPORTED_MODULE_15__internal_Subscriber__["a"]; });
 45817  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__internal_Notification__ = __webpack_require__(185);
 45818  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return __WEBPACK_IMPORTED_MODULE_16__internal_Notification__["a"]; });
 45819  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__internal_util_pipe__ = __webpack_require__(324);
 45820  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return __WEBPACK_IMPORTED_MODULE_17__internal_util_pipe__["a"]; });
 45821  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__internal_util_noop__ = __webpack_require__(192);
 45822  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return __WEBPACK_IMPORTED_MODULE_18__internal_util_noop__["a"]; });
 45823  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__internal_util_identity__ = __webpack_require__(119);
 45824  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return __WEBPACK_IMPORTED_MODULE_19__internal_util_identity__["a"]; });
 45825  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__internal_util_isObservable__ = __webpack_require__(930);
 45826  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isObservable", function() { return __WEBPACK_IMPORTED_MODULE_20__internal_util_isObservable__["a"]; });
 45827  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__internal_util_ArgumentOutOfRangeError__ = __webpack_require__(152);
 45828  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ArgumentOutOfRangeError", function() { return __WEBPACK_IMPORTED_MODULE_21__internal_util_ArgumentOutOfRangeError__["a"]; });
 45829  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__internal_util_EmptyError__ = __webpack_require__(153);
 45830  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "EmptyError", function() { return __WEBPACK_IMPORTED_MODULE_22__internal_util_EmptyError__["a"]; });
 45831  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__internal_util_ObjectUnsubscribedError__ = __webpack_require__(190);
 45832  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ObjectUnsubscribedError", function() { return __WEBPACK_IMPORTED_MODULE_23__internal_util_ObjectUnsubscribedError__["a"]; });
 45833  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__internal_util_UnsubscriptionError__ = __webpack_require__(441);
 45834  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UnsubscriptionError", function() { return __WEBPACK_IMPORTED_MODULE_24__internal_util_UnsubscriptionError__["a"]; });
 45835  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__internal_util_TimeoutError__ = __webpack_require__(440);
 45836  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return __WEBPACK_IMPORTED_MODULE_25__internal_util_TimeoutError__["a"]; });
 45837  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__internal_observable_bindCallback__ = __webpack_require__(823);
 45838  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bindCallback", function() { return __WEBPACK_IMPORTED_MODULE_26__internal_observable_bindCallback__["a"]; });
 45839  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__internal_observable_bindNodeCallback__ = __webpack_require__(824);
 45840  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bindNodeCallback", function() { return __WEBPACK_IMPORTED_MODULE_27__internal_observable_bindNodeCallback__["a"]; });
 45841  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__internal_observable_combineLatest__ = __webpack_require__(309);
 45842  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return __WEBPACK_IMPORTED_MODULE_28__internal_observable_combineLatest__["a"]; });
 45843  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__internal_observable_concat__ = __webpack_require__(187);
 45844  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return __WEBPACK_IMPORTED_MODULE_29__internal_observable_concat__["a"]; });
 45845  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__internal_observable_defer__ = __webpack_require__(310);
 45846  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return __WEBPACK_IMPORTED_MODULE_30__internal_observable_defer__["a"]; });
 45847  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__internal_observable_empty__ = __webpack_require__(39);
 45848  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return __WEBPACK_IMPORTED_MODULE_31__internal_observable_empty__["a"]; });
 45849  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__internal_observable_forkJoin__ = __webpack_require__(825);
 45850  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "forkJoin", function() { return __WEBPACK_IMPORTED_MODULE_32__internal_observable_forkJoin__["a"]; });
 45851  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__internal_observable_from__ = __webpack_require__(62);
 45852  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "from", function() { return __WEBPACK_IMPORTED_MODULE_33__internal_observable_from__["a"]; });
 45853  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__internal_observable_fromEvent__ = __webpack_require__(826);
 45854  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "fromEvent", function() { return __WEBPACK_IMPORTED_MODULE_34__internal_observable_fromEvent__["a"]; });
 45855  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__internal_observable_fromEventPattern__ = __webpack_require__(827);
 45856  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "fromEventPattern", function() { return __WEBPACK_IMPORTED_MODULE_35__internal_observable_fromEventPattern__["a"]; });
 45857  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__internal_observable_generate__ = __webpack_require__(831);
 45858  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "generate", function() { return __WEBPACK_IMPORTED_MODULE_36__internal_observable_generate__["a"]; });
 45859  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__internal_observable_iif__ = __webpack_require__(832);
 45860  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "iif", function() { return __WEBPACK_IMPORTED_MODULE_37__internal_observable_iif__["a"]; });
 45861  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__internal_observable_interval__ = __webpack_require__(833);
 45862  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return __WEBPACK_IMPORTED_MODULE_38__internal_observable_interval__["a"]; });
 45863  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__internal_observable_merge__ = __webpack_require__(424);
 45864  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return __WEBPACK_IMPORTED_MODULE_39__internal_observable_merge__["a"]; });
 45865  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__internal_observable_never__ = __webpack_require__(425);
 45866  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "never", function() { return __WEBPACK_IMPORTED_MODULE_40__internal_observable_never__["a"]; });
 45867  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__internal_observable_of__ = __webpack_require__(311);
 45868  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "of", function() { return __WEBPACK_IMPORTED_MODULE_41__internal_observable_of__["a"]; });
 45869  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__internal_observable_onErrorResumeNext__ = __webpack_require__(834);
 45870  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return __WEBPACK_IMPORTED_MODULE_42__internal_observable_onErrorResumeNext__["a"]; });
 45871  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__internal_observable_pairs__ = __webpack_require__(835);
 45872  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return __WEBPACK_IMPORTED_MODULE_43__internal_observable_pairs__["a"]; });
 45873  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__internal_observable_race__ = __webpack_require__(426);
 45874  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "race", function() { return __WEBPACK_IMPORTED_MODULE_44__internal_observable_race__["a"]; });
 45875  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__internal_observable_range__ = __webpack_require__(836);
 45876  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "range", function() { return __WEBPACK_IMPORTED_MODULE_45__internal_observable_range__["a"]; });
 45877  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__internal_observable_throwError__ = __webpack_require__(313);
 45878  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "throwError", function() { return __WEBPACK_IMPORTED_MODULE_46__internal_observable_throwError__["a"]; });
 45879  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__internal_observable_timer__ = __webpack_require__(427);
 45880  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return __WEBPACK_IMPORTED_MODULE_47__internal_observable_timer__["a"]; });
 45881  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__internal_observable_using__ = __webpack_require__(837);
 45882  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "using", function() { return __WEBPACK_IMPORTED_MODULE_48__internal_observable_using__["a"]; });
 45883  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__internal_observable_zip__ = __webpack_require__(314);
 45884  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return __WEBPACK_IMPORTED_MODULE_49__internal_observable_zip__["a"]; });
 45885  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "EMPTY", function() { return __WEBPACK_IMPORTED_MODULE_31__internal_observable_empty__["b"]; });
 45886  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "NEVER", function() { return __WEBPACK_IMPORTED_MODULE_40__internal_observable_never__["b"]; });
 45887  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__internal_config__ = __webpack_require__(186);
 45888  /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "config", function() { return __WEBPACK_IMPORTED_MODULE_50__internal_config__["a"]; });
 45889  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 45890  
 45891  
 45892  
 45893  
 45894  
 45895  
 45896  
 45897  
 45898  
 45899  
 45900  
 45901  
 45902  
 45903  
 45904  
 45905  
 45906  
 45907  
 45908  
 45909  
 45910  
 45911  
 45912  
 45913  
 45914  
 45915  
 45916  
 45917  
 45918  
 45919  
 45920  
 45921  
 45922  
 45923  
 45924  
 45925  
 45926  
 45927  
 45928  
 45929  
 45930  
 45931  
 45932  
 45933  
 45934  
 45935  
 45936  
 45937  
 45938  
 45939  
 45940  
 45941  
 45942  
 45943  //# sourceMappingURL=index.js.map
 45944  
 45945  
 45946  /***/ }),
 45947  /* 184 */
 45948  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 45949  
 45950  "use strict";
 45951  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsyncSubject; });
 45952  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 45953  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subject__ = __webpack_require__(36);
 45954  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Subscription__ = __webpack_require__(25);
 45955  /** PURE_IMPORTS_START tslib,_Subject,_Subscription PURE_IMPORTS_END */
 45956  
 45957  
 45958  
 45959  var AsyncSubject = /*@__PURE__*/ (function (_super) {
 45960      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](AsyncSubject, _super);
 45961      function AsyncSubject() {
 45962          var _this = _super !== null && _super.apply(this, arguments) || this;
 45963          _this.value = null;
 45964          _this.hasNext = false;
 45965          _this.hasCompleted = false;
 45966          return _this;
 45967      }
 45968      AsyncSubject.prototype._subscribe = function (subscriber) {
 45969          if (this.hasError) {
 45970              subscriber.error(this.thrownError);
 45971              return __WEBPACK_IMPORTED_MODULE_2__Subscription__["a" /* Subscription */].EMPTY;
 45972          }
 45973          else if (this.hasCompleted && this.hasNext) {
 45974              subscriber.next(this.value);
 45975              subscriber.complete();
 45976              return __WEBPACK_IMPORTED_MODULE_2__Subscription__["a" /* Subscription */].EMPTY;
 45977          }
 45978          return _super.prototype._subscribe.call(this, subscriber);
 45979      };
 45980      AsyncSubject.prototype.next = function (value) {
 45981          if (!this.hasCompleted) {
 45982              this.value = value;
 45983              this.hasNext = true;
 45984          }
 45985      };
 45986      AsyncSubject.prototype.error = function (error) {
 45987          if (!this.hasCompleted) {
 45988              _super.prototype.error.call(this, error);
 45989          }
 45990      };
 45991      AsyncSubject.prototype.complete = function () {
 45992          this.hasCompleted = true;
 45993          if (this.hasNext) {
 45994              _super.prototype.next.call(this, this.value);
 45995          }
 45996          _super.prototype.complete.call(this);
 45997      };
 45998      return AsyncSubject;
 45999  }(__WEBPACK_IMPORTED_MODULE_1__Subject__["a" /* Subject */]));
 46000  
 46001  //# sourceMappingURL=AsyncSubject.js.map
 46002  
 46003  
 46004  /***/ }),
 46005  /* 185 */
 46006  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 46007  
 46008  "use strict";
 46009  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Notification; });
 46010  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable_empty__ = __webpack_require__(39);
 46011  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__observable_of__ = __webpack_require__(311);
 46012  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__observable_throwError__ = __webpack_require__(313);
 46013  /** PURE_IMPORTS_START _observable_empty,_observable_of,_observable_throwError PURE_IMPORTS_END */
 46014  
 46015  
 46016  
 46017  var Notification = /*@__PURE__*/ (function () {
 46018      function Notification(kind, value, error) {
 46019          this.kind = kind;
 46020          this.value = value;
 46021          this.error = error;
 46022          this.hasValue = kind === 'N';
 46023      }
 46024      Notification.prototype.observe = function (observer) {
 46025          switch (this.kind) {
 46026              case 'N':
 46027                  return observer.next && observer.next(this.value);
 46028              case 'E':
 46029                  return observer.error && observer.error(this.error);
 46030              case 'C':
 46031                  return observer.complete && observer.complete();
 46032          }
 46033      };
 46034      Notification.prototype.do = function (next, error, complete) {
 46035          var kind = this.kind;
 46036          switch (kind) {
 46037              case 'N':
 46038                  return next && next(this.value);
 46039              case 'E':
 46040                  return error && error(this.error);
 46041              case 'C':
 46042                  return complete && complete();
 46043          }
 46044      };
 46045      Notification.prototype.accept = function (nextOrObserver, error, complete) {
 46046          if (nextOrObserver && typeof nextOrObserver.next === 'function') {
 46047              return this.observe(nextOrObserver);
 46048          }
 46049          else {
 46050              return this.do(nextOrObserver, error, complete);
 46051          }
 46052      };
 46053      Notification.prototype.toObservable = function () {
 46054          var kind = this.kind;
 46055          switch (kind) {
 46056              case 'N':
 46057                  return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__observable_of__["a" /* of */])(this.value);
 46058              case 'E':
 46059                  return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__observable_throwError__["a" /* throwError */])(this.error);
 46060              case 'C':
 46061                  return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__observable_empty__["a" /* empty */])();
 46062          }
 46063          throw new Error('unexpected notification kind value');
 46064      };
 46065      Notification.createNext = function (value) {
 46066          if (typeof value !== 'undefined') {
 46067              return new Notification('N', value);
 46068          }
 46069          return Notification.undefinedValueNotification;
 46070      };
 46071      Notification.createError = function (err) {
 46072          return new Notification('E', undefined, err);
 46073      };
 46074      Notification.createComplete = function () {
 46075          return Notification.completeNotification;
 46076      };
 46077      Notification.completeNotification = new Notification('C');
 46078      Notification.undefinedValueNotification = new Notification('N', undefined);
 46079      return Notification;
 46080  }());
 46081  
 46082  //# sourceMappingURL=Notification.js.map
 46083  
 46084  
 46085  /***/ }),
 46086  /* 186 */
 46087  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 46088  
 46089  "use strict";
 46090  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return config; });
 46091  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 46092  var _enable_super_gross_mode_that_will_cause_bad_things = false;
 46093  var config = {
 46094      Promise: undefined,
 46095      set useDeprecatedSynchronousErrorHandling(value) {
 46096          if (value) {
 46097              var error = /*@__PURE__*/ new Error();
 46098              /*@__PURE__*/ console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n' + error.stack);
 46099          }
 46100          else if (_enable_super_gross_mode_that_will_cause_bad_things) {
 46101              /*@__PURE__*/ console.log('RxJS: Back to a better error behavior. Thank you. <3');
 46102          }
 46103          _enable_super_gross_mode_that_will_cause_bad_things = value;
 46104      },
 46105      get useDeprecatedSynchronousErrorHandling() {
 46106          return _enable_super_gross_mode_that_will_cause_bad_things;
 46107      },
 46108  };
 46109  //# sourceMappingURL=config.js.map
 46110  
 46111  
 46112  /***/ }),
 46113  /* 187 */
 46114  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 46115  
 46116  "use strict";
 46117  /* harmony export (immutable) */ __webpack_exports__["a"] = concat;
 46118  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_isScheduler__ = __webpack_require__(49);
 46119  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__of__ = __webpack_require__(311);
 46120  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__from__ = __webpack_require__(62);
 46121  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__operators_concatAll__ = __webpack_require__(429);
 46122  /** PURE_IMPORTS_START _util_isScheduler,_of,_from,_operators_concatAll PURE_IMPORTS_END */
 46123  
 46124  
 46125  
 46126  
 46127  function concat() {
 46128      var observables = [];
 46129      for (var _i = 0; _i < arguments.length; _i++) {
 46130          observables[_i] = arguments[_i];
 46131      }
 46132      if (observables.length === 1 || (observables.length === 2 && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util_isScheduler__["a" /* isScheduler */])(observables[1]))) {
 46133          return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__from__["a" /* from */])(observables[0]);
 46134      }
 46135      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__operators_concatAll__["a" /* concatAll */])()(__WEBPACK_IMPORTED_MODULE_1__of__["a" /* of */].apply(void 0, observables));
 46136  }
 46137  //# sourceMappingURL=concat.js.map
 46138  
 46139  
 46140  /***/ }),
 46141  /* 188 */
 46142  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 46143  
 46144  "use strict";
 46145  /* harmony export (immutable) */ __webpack_exports__["a"] = reduce;
 46146  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__scan__ = __webpack_require__(317);
 46147  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__takeLast__ = __webpack_require__(320);
 46148  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__defaultIfEmpty__ = __webpack_require__(146);
 46149  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_pipe__ = __webpack_require__(324);
 46150  /** PURE_IMPORTS_START _scan,_takeLast,_defaultIfEmpty,_util_pipe PURE_IMPORTS_END */
 46151  
 46152  
 46153  
 46154  
 46155  function reduce(accumulator, seed) {
 46156      if (arguments.length >= 2) {
 46157          return function reduceOperatorFunctionWithSeed(source) {
 46158              return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_pipe__["a" /* pipe */])(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__scan__["a" /* scan */])(accumulator, seed), __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__takeLast__["a" /* takeLast */])(1), __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__defaultIfEmpty__["a" /* defaultIfEmpty */])(seed))(source);
 46159          };
 46160      }
 46161      return function reduceOperatorFunction(source) {
 46162          return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_pipe__["a" /* pipe */])(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__scan__["a" /* scan */])(function (acc, value, index) { return accumulator(acc, value, index + 1); }), __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__takeLast__["a" /* takeLast */])(1))(source);
 46163      };
 46164  }
 46165  //# sourceMappingURL=reduce.js.map
 46166  
 46167  
 46168  /***/ }),
 46169  /* 189 */
 46170  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 46171  
 46172  "use strict";
 46173  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return throwIfEmpty; });
 46174  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tap__ = __webpack_require__(435);
 46175  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_EmptyError__ = __webpack_require__(153);
 46176  /** PURE_IMPORTS_START _tap,_util_EmptyError PURE_IMPORTS_END */
 46177  
 46178  
 46179  var throwIfEmpty = function (errorFactory) {
 46180      if (errorFactory === void 0) {
 46181          errorFactory = defaultErrorFactory;
 46182      }
 46183      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__tap__["a" /* tap */])({
 46184          hasValue: false,
 46185          next: function () { this.hasValue = true; },
 46186          complete: function () {
 46187              if (!this.hasValue) {
 46188                  throw errorFactory();
 46189              }
 46190          }
 46191      });
 46192  };
 46193  function defaultErrorFactory() {
 46194      return new __WEBPACK_IMPORTED_MODULE_1__util_EmptyError__["a" /* EmptyError */]();
 46195  }
 46196  //# sourceMappingURL=throwIfEmpty.js.map
 46197  
 46198  
 46199  /***/ }),
 46200  /* 190 */
 46201  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 46202  
 46203  "use strict";
 46204  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ObjectUnsubscribedError; });
 46205  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 46206  function ObjectUnsubscribedErrorImpl() {
 46207      Error.call(this);
 46208      this.message = 'object unsubscribed';
 46209      this.name = 'ObjectUnsubscribedError';
 46210      return this;
 46211  }
 46212  ObjectUnsubscribedErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);
 46213  var ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;
 46214  //# sourceMappingURL=ObjectUnsubscribedError.js.map
 46215  
 46216  
 46217  /***/ }),
 46218  /* 191 */
 46219  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 46220  
 46221  "use strict";
 46222  /* harmony export (immutable) */ __webpack_exports__["a"] = isNumeric;
 46223  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArray__ = __webpack_require__(41);
 46224  /** PURE_IMPORTS_START _isArray PURE_IMPORTS_END */
 46225  
 46226  function isNumeric(val) {
 46227      return !__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__isArray__["a" /* isArray */])(val) && (val - parseFloat(val) + 1) >= 0;
 46228  }
 46229  //# sourceMappingURL=isNumeric.js.map
 46230  
 46231  
 46232  /***/ }),
 46233  /* 192 */
 46234  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 46235  
 46236  "use strict";
 46237  /* harmony export (immutable) */ __webpack_exports__["a"] = noop;
 46238  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 46239  function noop() { }
 46240  //# sourceMappingURL=noop.js.map
 46241  
 46242  
 46243  /***/ }),
 46244  /* 193 */
 46245  /***/ (function(module, exports, __webpack_require__) {
 46246  
 46247  // Copyright 2015 Joyent, Inc.
 46248  
 46249  module.exports = {
 46250  	read: read,
 46251  	readSSHPrivate: readSSHPrivate,
 46252  	write: write
 46253  };
 46254  
 46255  var assert = __webpack_require__(16);
 46256  var asn1 = __webpack_require__(66);
 46257  var Buffer = __webpack_require__(15).Buffer;
 46258  var algs = __webpack_require__(32);
 46259  var utils = __webpack_require__(26);
 46260  var crypto = __webpack_require__(11);
 46261  
 46262  var Key = __webpack_require__(27);
 46263  var PrivateKey = __webpack_require__(33);
 46264  var pem = __webpack_require__(86);
 46265  var rfc4253 = __webpack_require__(103);
 46266  var SSHBuffer = __webpack_require__(159);
 46267  var errors = __webpack_require__(74);
 46268  
 46269  var bcrypt;
 46270  
 46271  function read(buf, options) {
 46272  	return (pem.read(buf, options));
 46273  }
 46274  
 46275  var MAGIC = 'openssh-key-v1';
 46276  
 46277  function readSSHPrivate(type, buf, options) {
 46278  	buf = new SSHBuffer({buffer: buf});
 46279  
 46280  	var magic = buf.readCString();
 46281  	assert.strictEqual(magic, MAGIC, 'bad magic string');
 46282  
 46283  	var cipher = buf.readString();
 46284  	var kdf = buf.readString();
 46285  	var kdfOpts = buf.readBuffer();
 46286  
 46287  	var nkeys = buf.readInt();
 46288  	if (nkeys !== 1) {
 46289  		throw (new Error('OpenSSH-format key file contains ' +
 46290  		    'multiple keys: this is unsupported.'));
 46291  	}
 46292  
 46293  	var pubKey = buf.readBuffer();
 46294  
 46295  	if (type === 'public') {
 46296  		assert.ok(buf.atEnd(), 'excess bytes left after key');
 46297  		return (rfc4253.read(pubKey));
 46298  	}
 46299  
 46300  	var privKeyBlob = buf.readBuffer();
 46301  	assert.ok(buf.atEnd(), 'excess bytes left after key');
 46302  
 46303  	var kdfOptsBuf = new SSHBuffer({ buffer: kdfOpts });
 46304  	switch (kdf) {
 46305  	case 'none':
 46306  		if (cipher !== 'none') {
 46307  			throw (new Error('OpenSSH-format key uses KDF "none" ' +
 46308  			     'but specifies a cipher other than "none"'));
 46309  		}
 46310  		break;
 46311  	case 'bcrypt':
 46312  		var salt = kdfOptsBuf.readBuffer();
 46313  		var rounds = kdfOptsBuf.readInt();
 46314  		var cinf = utils.opensshCipherInfo(cipher);
 46315  		if (bcrypt === undefined) {
 46316  			bcrypt = __webpack_require__(373);
 46317  		}
 46318  
 46319  		if (typeof (options.passphrase) === 'string') {
 46320  			options.passphrase = Buffer.from(options.passphrase,
 46321  			    'utf-8');
 46322  		}
 46323  		if (!Buffer.isBuffer(options.passphrase)) {
 46324  			throw (new errors.KeyEncryptedError(
 46325  			    options.filename, 'OpenSSH'));
 46326  		}
 46327  
 46328  		var pass = new Uint8Array(options.passphrase);
 46329  		var salti = new Uint8Array(salt);
 46330  		/* Use the pbkdf to derive both the key and the IV. */
 46331  		var out = new Uint8Array(cinf.keySize + cinf.blockSize);
 46332  		var res = bcrypt.pbkdf(pass, pass.length, salti, salti.length,
 46333  		    out, out.length, rounds);
 46334  		if (res !== 0) {
 46335  			throw (new Error('bcrypt_pbkdf function returned ' +
 46336  			    'failure, parameters invalid'));
 46337  		}
 46338  		out = Buffer.from(out);
 46339  		var ckey = out.slice(0, cinf.keySize);
 46340  		var iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize);
 46341  		var cipherStream = crypto.createDecipheriv(cinf.opensslName,
 46342  		    ckey, iv);
 46343  		cipherStream.setAutoPadding(false);
 46344  		var chunk, chunks = [];
 46345  		cipherStream.once('error', function (e) {
 46346  			if (e.toString().indexOf('bad decrypt') !== -1) {
 46347  				throw (new Error('Incorrect passphrase ' +
 46348  				    'supplied, could not decrypt key'));
 46349  			}
 46350  			throw (e);
 46351  		});
 46352  		cipherStream.write(privKeyBlob);
 46353  		cipherStream.end();
 46354  		while ((chunk = cipherStream.read()) !== null)
 46355  			chunks.push(chunk);
 46356  		privKeyBlob = Buffer.concat(chunks);
 46357  		break;
 46358  	default:
 46359  		throw (new Error(
 46360  		    'OpenSSH-format key uses unknown KDF "' + kdf + '"'));
 46361  	}
 46362  
 46363  	buf = new SSHBuffer({buffer: privKeyBlob});
 46364  
 46365  	var checkInt1 = buf.readInt();
 46366  	var checkInt2 = buf.readInt();
 46367  	if (checkInt1 !== checkInt2) {
 46368  		throw (new Error('Incorrect passphrase supplied, could not ' +
 46369  		    'decrypt key'));
 46370  	}
 46371  
 46372  	var ret = {};
 46373  	var key = rfc4253.readInternal(ret, 'private', buf.remainder());
 46374  
 46375  	buf.skip(ret.consumed);
 46376  
 46377  	var comment = buf.readString();
 46378  	key.comment = comment;
 46379  
 46380  	return (key);
 46381  }
 46382  
 46383  function write(key, options) {
 46384  	var pubKey;
 46385  	if (PrivateKey.isPrivateKey(key))
 46386  		pubKey = key.toPublic();
 46387  	else
 46388  		pubKey = key;
 46389  
 46390  	var cipher = 'none';
 46391  	var kdf = 'none';
 46392  	var kdfopts = Buffer.alloc(0);
 46393  	var cinf = { blockSize: 8 };
 46394  	var passphrase;
 46395  	if (options !== undefined) {
 46396  		passphrase = options.passphrase;
 46397  		if (typeof (passphrase) === 'string')
 46398  			passphrase = Buffer.from(passphrase, 'utf-8');
 46399  		if (passphrase !== undefined) {
 46400  			assert.buffer(passphrase, 'options.passphrase');
 46401  			assert.optionalString(options.cipher, 'options.cipher');
 46402  			cipher = options.cipher;
 46403  			if (cipher === undefined)
 46404  				cipher = 'aes128-ctr';
 46405  			cinf = utils.opensshCipherInfo(cipher);
 46406  			kdf = 'bcrypt';
 46407  		}
 46408  	}
 46409  
 46410  	var privBuf;
 46411  	if (PrivateKey.isPrivateKey(key)) {
 46412  		privBuf = new SSHBuffer({});
 46413  		var checkInt = crypto.randomBytes(4).readUInt32BE(0);
 46414  		privBuf.writeInt(checkInt);
 46415  		privBuf.writeInt(checkInt);
 46416  		privBuf.write(key.toBuffer('rfc4253'));
 46417  		privBuf.writeString(key.comment || '');
 46418  
 46419  		var n = 1;
 46420  		while (privBuf._offset % cinf.blockSize !== 0)
 46421  			privBuf.writeChar(n++);
 46422  		privBuf = privBuf.toBuffer();
 46423  	}
 46424  
 46425  	switch (kdf) {
 46426  	case 'none':
 46427  		break;
 46428  	case 'bcrypt':
 46429  		var salt = crypto.randomBytes(16);
 46430  		var rounds = 16;
 46431  		var kdfssh = new SSHBuffer({});
 46432  		kdfssh.writeBuffer(salt);
 46433  		kdfssh.writeInt(rounds);
 46434  		kdfopts = kdfssh.toBuffer();
 46435  
 46436  		if (bcrypt === undefined) {
 46437  			bcrypt = __webpack_require__(373);
 46438  		}
 46439  		var pass = new Uint8Array(passphrase);
 46440  		var salti = new Uint8Array(salt);
 46441  		/* Use the pbkdf to derive both the key and the IV. */
 46442  		var out = new Uint8Array(cinf.keySize + cinf.blockSize);
 46443  		var res = bcrypt.pbkdf(pass, pass.length, salti, salti.length,
 46444  		    out, out.length, rounds);
 46445  		if (res !== 0) {
 46446  			throw (new Error('bcrypt_pbkdf function returned ' +
 46447  			    'failure, parameters invalid'));
 46448  		}
 46449  		out = Buffer.from(out);
 46450  		var ckey = out.slice(0, cinf.keySize);
 46451  		var iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize);
 46452  
 46453  		var cipherStream = crypto.createCipheriv(cinf.opensslName,
 46454  		    ckey, iv);
 46455  		cipherStream.setAutoPadding(false);
 46456  		var chunk, chunks = [];
 46457  		cipherStream.once('error', function (e) {
 46458  			throw (e);
 46459  		});
 46460  		cipherStream.write(privBuf);
 46461  		cipherStream.end();
 46462  		while ((chunk = cipherStream.read()) !== null)
 46463  			chunks.push(chunk);
 46464  		privBuf = Buffer.concat(chunks);
 46465  		break;
 46466  	default:
 46467  		throw (new Error('Unsupported kdf ' + kdf));
 46468  	}
 46469  
 46470  	var buf = new SSHBuffer({});
 46471  
 46472  	buf.writeCString(MAGIC);
 46473  	buf.writeString(cipher);	/* cipher */
 46474  	buf.writeString(kdf);		/* kdf */
 46475  	buf.writeBuffer(kdfopts);	/* kdfoptions */
 46476  
 46477  	buf.writeInt(1);		/* nkeys */
 46478  	buf.writeBuffer(pubKey.toBuffer('rfc4253'));
 46479  
 46480  	if (privBuf)
 46481  		buf.writeBuffer(privBuf);
 46482  
 46483  	buf = buf.toBuffer();
 46484  
 46485  	var header;
 46486  	if (PrivateKey.isPrivateKey(key))
 46487  		header = 'OPENSSH PRIVATE KEY';
 46488  	else
 46489  		header = 'OPENSSH PUBLIC KEY';
 46490  
 46491  	var tmp = buf.toString('base64');
 46492  	var len = tmp.length + (tmp.length / 70) +
 46493  	    18 + 16 + header.length*2 + 10;
 46494  	buf = Buffer.alloc(len);
 46495  	var o = 0;
 46496  	o += buf.write('-----BEGIN ' + header + '-----\n', o);
 46497  	for (var i = 0; i < tmp.length; ) {
 46498  		var limit = i + 70;
 46499  		if (limit > tmp.length)
 46500  			limit = tmp.length;
 46501  		o += buf.write(tmp.slice(i, limit), o);
 46502  		buf[o++] = 10;
 46503  		i = limit;
 46504  	}
 46505  	o += buf.write('-----END ' + header + '-----\n', o);
 46506  
 46507  	return (buf.slice(0, o));
 46508  }
 46509  
 46510  
 46511  /***/ }),
 46512  /* 194 */
 46513  /***/ (function(module, exports, __webpack_require__) {
 46514  
 46515  var chownr = __webpack_require__(568)
 46516  var tar = __webpack_require__(460)
 46517  var pump = __webpack_require__(781)
 46518  var mkdirp = __webpack_require__(145)
 46519  var fs = __webpack_require__(4)
 46520  var path = __webpack_require__(0)
 46521  var os = __webpack_require__(46)
 46522  
 46523  var win32 = os.platform() === 'win32'
 46524  
 46525  var noop = function () {}
 46526  
 46527  var echo = function (name) {
 46528    return name
 46529  }
 46530  
 46531  var normalize = !win32 ? echo : function (name) {
 46532    return name.replace(/\\/g, '/').replace(/[:?<>|]/g, '_')
 46533  }
 46534  
 46535  var statAll = function (fs, stat, cwd, ignore, entries, sort) {
 46536    var queue = entries || ['.']
 46537  
 46538    return function loop (callback) {
 46539      if (!queue.length) return callback()
 46540      var next = queue.shift()
 46541      var nextAbs = path.join(cwd, next)
 46542  
 46543      stat(nextAbs, function (err, stat) {
 46544        if (err) return callback(err)
 46545  
 46546        if (!stat.isDirectory()) return callback(null, next, stat)
 46547  
 46548        fs.readdir(nextAbs, function (err, files) {
 46549          if (err) return callback(err)
 46550  
 46551          if (sort) files.sort()
 46552          for (var i = 0; i < files.length; i++) {
 46553            if (!ignore(path.join(cwd, next, files[i]))) queue.push(path.join(next, files[i]))
 46554          }
 46555  
 46556          callback(null, next, stat)
 46557        })
 46558      })
 46559    }
 46560  }
 46561  
 46562  var strip = function (map, level) {
 46563    return function (header) {
 46564      header.name = header.name.split('/').slice(level).join('/')
 46565  
 46566      var linkname = header.linkname
 46567      if (linkname && (header.type === 'link' || path.isAbsolute(linkname))) {
 46568        header.linkname = linkname.split('/').slice(level).join('/')
 46569      }
 46570  
 46571      return map(header)
 46572    }
 46573  }
 46574  
 46575  exports.pack = function (cwd, opts) {
 46576    if (!cwd) cwd = '.'
 46577    if (!opts) opts = {}
 46578  
 46579    var xfs = opts.fs || fs
 46580    var ignore = opts.ignore || opts.filter || noop
 46581    var map = opts.map || noop
 46582    var mapStream = opts.mapStream || echo
 46583    var statNext = statAll(xfs, opts.dereference ? xfs.stat : xfs.lstat, cwd, ignore, opts.entries, opts.sort)
 46584    var strict = opts.strict !== false
 46585    var umask = typeof opts.umask === 'number' ? ~opts.umask : ~processUmask()
 46586    var dmode = typeof opts.dmode === 'number' ? opts.dmode : 0
 46587    var fmode = typeof opts.fmode === 'number' ? opts.fmode : 0
 46588    var pack = opts.pack || tar.pack()
 46589    var finish = opts.finish || noop
 46590  
 46591    if (opts.strip) map = strip(map, opts.strip)
 46592  
 46593    if (opts.readable) {
 46594      dmode |= parseInt(555, 8)
 46595      fmode |= parseInt(444, 8)
 46596    }
 46597    if (opts.writable) {
 46598      dmode |= parseInt(333, 8)
 46599      fmode |= parseInt(222, 8)
 46600    }
 46601  
 46602    var onsymlink = function (filename, header) {
 46603      xfs.readlink(path.join(cwd, filename), function (err, linkname) {
 46604        if (err) return pack.destroy(err)
 46605        header.linkname = normalize(linkname)
 46606        pack.entry(header, onnextentry)
 46607      })
 46608    }
 46609  
 46610    var onstat = function (err, filename, stat) {
 46611      if (err) return pack.destroy(err)
 46612      if (!filename) {
 46613        if (opts.finalize !== false) pack.finalize()
 46614        return finish(pack)
 46615      }
 46616  
 46617      if (stat.isSocket()) return onnextentry() // tar does not support sockets...
 46618  
 46619      var header = {
 46620        name: normalize(filename),
 46621        mode: (stat.mode | (stat.isDirectory() ? dmode : fmode)) & umask,
 46622        mtime: stat.mtime,
 46623        size: stat.size,
 46624        type: 'file',
 46625        uid: stat.uid,
 46626        gid: stat.gid
 46627      }
 46628  
 46629      if (stat.isDirectory()) {
 46630        header.size = 0
 46631        header.type = 'directory'
 46632        header = map(header) || header
 46633        return pack.entry(header, onnextentry)
 46634      }
 46635  
 46636      if (stat.isSymbolicLink()) {
 46637        header.size = 0
 46638        header.type = 'symlink'
 46639        header = map(header) || header
 46640        return onsymlink(filename, header)
 46641      }
 46642  
 46643      // TODO: add fifo etc...
 46644  
 46645      header = map(header) || header
 46646  
 46647      if (!stat.isFile()) {
 46648        if (strict) return pack.destroy(new Error('unsupported type for ' + filename))
 46649        return onnextentry()
 46650      }
 46651  
 46652      var entry = pack.entry(header, onnextentry)
 46653      if (!entry) return
 46654  
 46655      var rs = mapStream(xfs.createReadStream(path.join(cwd, filename)), header)
 46656  
 46657      rs.on('error', function (err) { // always forward errors on destroy
 46658        entry.destroy(err)
 46659      })
 46660  
 46661      pump(rs, entry)
 46662    }
 46663  
 46664    var onnextentry = function (err) {
 46665      if (err) return pack.destroy(err)
 46666      statNext(onstat)
 46667    }
 46668  
 46669    onnextentry()
 46670  
 46671    return pack
 46672  }
 46673  
 46674  var head = function (list) {
 46675    return list.length ? list[list.length - 1] : null
 46676  }
 46677  
 46678  var processGetuid = function () {
 46679    return process.getuid ? process.getuid() : -1
 46680  }
 46681  
 46682  var processUmask = function () {
 46683    return process.umask ? process.umask() : 0
 46684  }
 46685  
 46686  exports.extract = function (cwd, opts) {
 46687    if (!cwd) cwd = '.'
 46688    if (!opts) opts = {}
 46689  
 46690    var xfs = opts.fs || fs
 46691    var ignore = opts.ignore || opts.filter || noop
 46692    var map = opts.map || noop
 46693    var mapStream = opts.mapStream || echo
 46694    var own = opts.chown !== false && !win32 && processGetuid() === 0
 46695    var extract = opts.extract || tar.extract()
 46696    var stack = []
 46697    var now = new Date()
 46698    var umask = typeof opts.umask === 'number' ? ~opts.umask : ~processUmask()
 46699    var dmode = typeof opts.dmode === 'number' ? opts.dmode : 0
 46700    var fmode = typeof opts.fmode === 'number' ? opts.fmode : 0
 46701    var strict = opts.strict !== false
 46702  
 46703    if (opts.strip) map = strip(map, opts.strip)
 46704  
 46705    if (opts.readable) {
 46706      dmode |= parseInt(555, 8)
 46707      fmode |= parseInt(444, 8)
 46708    }
 46709    if (opts.writable) {
 46710      dmode |= parseInt(333, 8)
 46711      fmode |= parseInt(222, 8)
 46712    }
 46713  
 46714    var utimesParent = function (name, cb) { // we just set the mtime on the parent dir again everytime we write an entry
 46715      var top
 46716      while ((top = head(stack)) && name.slice(0, top[0].length) !== top[0]) stack.pop()
 46717      if (!top) return cb()
 46718      xfs.utimes(top[0], now, top[1], cb)
 46719    }
 46720  
 46721    var utimes = function (name, header, cb) {
 46722      if (opts.utimes === false) return cb()
 46723  
 46724      if (header.type === 'directory') return xfs.utimes(name, now, header.mtime, cb)
 46725      if (header.type === 'symlink') return utimesParent(name, cb) // TODO: how to set mtime on link?
 46726  
 46727      xfs.utimes(name, now, header.mtime, function (err) {
 46728        if (err) return cb(err)
 46729        utimesParent(name, cb)
 46730      })
 46731    }
 46732  
 46733    var chperm = function (name, header, cb) {
 46734      var link = header.type === 'symlink'
 46735      var chmod = link ? xfs.lchmod : xfs.chmod
 46736      var chown = link ? xfs.lchown : xfs.chown
 46737  
 46738      if (!chmod) return cb()
 46739  
 46740      var mode = (header.mode | (header.type === 'directory' ? dmode : fmode)) & umask
 46741      chmod(name, mode, function (err) {
 46742        if (err) return cb(err)
 46743        if (!own) return cb()
 46744        if (!chown) return cb()
 46745        chown(name, header.uid, header.gid, cb)
 46746      })
 46747    }
 46748  
 46749    extract.on('entry', function (header, stream, next) {
 46750      header = map(header) || header
 46751      header.name = normalize(header.name)
 46752      var name = path.join(cwd, path.join('/', header.name))
 46753  
 46754      if (ignore(name, header)) {
 46755        stream.resume()
 46756        return next()
 46757      }
 46758  
 46759      var stat = function (err) {
 46760        if (err) return next(err)
 46761        utimes(name, header, function (err) {
 46762          if (err) return next(err)
 46763          if (win32) return next()
 46764          chperm(name, header, next)
 46765        })
 46766      }
 46767  
 46768      var onsymlink = function () {
 46769        if (win32) return next() // skip symlinks on win for now before it can be tested
 46770        xfs.unlink(name, function () {
 46771          xfs.symlink(header.linkname, name, stat)
 46772        })
 46773      }
 46774  
 46775      var onlink = function () {
 46776        if (win32) return next() // skip links on win for now before it can be tested
 46777        xfs.unlink(name, function () {
 46778          var srcpath = path.join(cwd, path.join('/', header.linkname))
 46779  
 46780          xfs.link(srcpath, name, function (err) {
 46781            if (err && err.code === 'EPERM' && opts.hardlinkAsFilesFallback) {
 46782              stream = xfs.createReadStream(srcpath)
 46783              return onfile()
 46784            }
 46785  
 46786            stat(err)
 46787          })
 46788        })
 46789      }
 46790  
 46791      var onfile = function () {
 46792        var ws = xfs.createWriteStream(name)
 46793        var rs = mapStream(stream, header)
 46794  
 46795        ws.on('error', function (err) { // always forward errors on destroy
 46796          rs.destroy(err)
 46797        })
 46798  
 46799        pump(rs, ws, function (err) {
 46800          if (err) return next(err)
 46801          ws.on('close', stat)
 46802        })
 46803      }
 46804  
 46805      if (header.type === 'directory') {
 46806        stack.push([name, header.mtime])
 46807        return mkdirfix(name, {
 46808          fs: xfs, own: own, uid: header.uid, gid: header.gid
 46809        }, stat)
 46810      }
 46811  
 46812      var dir = path.dirname(name)
 46813  
 46814      validate(xfs, dir, path.join(cwd, '.'), function (err, valid) {
 46815        if (err) return next(err)
 46816        if (!valid) return next(new Error(dir + ' is not a valid path'))
 46817  
 46818        mkdirfix(dir, {
 46819          fs: xfs, own: own, uid: header.uid, gid: header.gid
 46820        }, function (err) {
 46821          if (err) return next(err)
 46822  
 46823          switch (header.type) {
 46824            case 'file': return onfile()
 46825            case 'link': return onlink()
 46826            case 'symlink': return onsymlink()
 46827          }
 46828  
 46829          if (strict) return next(new Error('unsupported type for ' + name + ' (' + header.type + ')'))
 46830  
 46831          stream.resume()
 46832          next()
 46833        })
 46834      })
 46835    })
 46836  
 46837    if (opts.finish) extract.on('finish', opts.finish)
 46838  
 46839    return extract
 46840  }
 46841  
 46842  function validate (fs, name, root, cb) {
 46843    if (name === root) return cb(null, true)
 46844    fs.lstat(name, function (err, st) {
 46845      if (err && err.code !== 'ENOENT') return cb(err)
 46846      if (err || st.isDirectory()) return validate(fs, path.join(name, '..'), root, cb)
 46847      cb(null, false)
 46848    })
 46849  }
 46850  
 46851  function mkdirfix (name, opts, cb) {
 46852    mkdirp(name, {fs: opts.fs}, function (err, made) {
 46853      if (!err && made && opts.own) {
 46854        chownr(made, opts.uid, opts.gid, cb)
 46855      } else {
 46856        cb(err)
 46857      }
 46858    })
 46859  }
 46860  
 46861  
 46862  /***/ }),
 46863  /* 195 */
 46864  /***/ (function(module, exports) {
 46865  
 46866  module.exports = {"name":"yarn","installationMethod":"unknown","version":"1.22.19","packageManager":"yarn@1.22.17","license":"BSD-2-Clause","preferGlobal":true,"description":"📦🐈 Fast, reliable, and secure dependency management.","dependencies":{"@zkochan/cmd-shim":"^3.1.0","babel-runtime":"^6.26.0","bytes":"^3.0.0","camelcase":"^4.0.0","chalk":"^2.1.0","cli-table3":"^0.4.0","commander":"^2.9.0","death":"^1.0.0","debug":"^3.0.0","deep-equal":"^1.0.1","detect-indent":"^5.0.0","dnscache":"^1.0.1","glob":"^7.1.1","gunzip-maybe":"^1.4.0","hash-for-dep":"^1.2.3","imports-loader":"^0.8.0","ini":"^1.3.4","inquirer":"^6.2.0","invariant":"^2.2.0","is-builtin-module":"^2.0.0","is-ci":"^1.0.10","is-webpack-bundle":"^1.0.0","js-yaml":"^3.13.1","leven":"^2.0.0","loud-rejection":"^1.2.0","micromatch":"^2.3.11","mkdirp":"^0.5.1","node-emoji":"^1.6.1","normalize-url":"^2.0.0","npm-logical-tree":"^1.2.1","object-path":"^0.11.2","proper-lockfile":"^2.0.0","puka":"^1.0.0","read":"^1.0.7","request":"^2.87.0","request-capture-har":"^1.2.2","rimraf":"^2.5.0","semver":"^5.1.0","ssri":"^5.3.0","strip-ansi":"^4.0.0","strip-bom":"^3.0.0","tar-fs":"^1.16.0","tar-stream":"^1.6.1","uuid":"^3.0.1","v8-compile-cache":"^2.0.0","validate-npm-package-license":"^3.0.4","yn":"^2.0.0"},"devDependencies":{"babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-loader":"^6.2.5","babel-plugin-array-includes":"^2.0.3","babel-plugin-inline-import":"^3.0.0","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-inline-imports-commonjs":"^1.0.0","babel-plugin-transform-runtime":"^6.4.3","babel-preset-env":"^1.6.0","babel-preset-flow":"^6.23.0","babel-preset-stage-0":"^6.0.0","babylon":"^6.5.0","commitizen":"^2.9.6","cz-conventional-changelog":"^2.0.0","eslint":"^4.3.0","eslint-config-fb-strict":"^22.0.0","eslint-plugin-babel":"^5.0.0","eslint-plugin-flowtype":"^2.35.0","eslint-plugin-jasmine":"^2.6.2","eslint-plugin-jest":"^21.0.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-prefer-object-spread":"^1.2.1","eslint-plugin-prettier":"^2.1.2","eslint-plugin-react":"^7.1.0","eslint-plugin-relay":"^0.0.28","eslint-plugin-yarn-internal":"file:scripts/eslint-rules","execa":"^0.11.0","fancy-log":"^1.3.2","flow-bin":"^0.66.0","git-release-notes":"^3.0.0","gulp":"^4.0.0","gulp-babel":"^7.0.0","gulp-if":"^2.0.1","gulp-newer":"^1.0.0","gulp-plumber":"^1.0.1","gulp-sourcemaps":"^2.2.0","jest":"^22.4.4","jsinspect":"^0.12.6","minimatch":"^3.0.4","mock-stdin":"^0.3.0","prettier":"^1.5.2","string-replace-loader":"^2.1.1","temp":"^0.8.3","webpack":"^2.1.0-beta.25","yargs":"^6.3.0"},"resolutions":{"sshpk":"^1.14.2"},"engines":{"node":">=4.0.0"},"repository":"yarnpkg/yarn","bin":{"yarn":"./bin/yarn.js","yarnpkg":"./bin/yarn.js"},"scripts":{"build":"gulp build","build-bundle":"node ./scripts/build-webpack.js","build-chocolatey":"powershell ./scripts/build-chocolatey.ps1","build-deb":"./scripts/build-deb.sh","build-dist":"bash ./scripts/build-dist.sh","build-win-installer":"scripts\\build-windows-installer.bat","changelog":"git-release-notes $(git describe --tags --abbrev=0 $(git describe --tags --abbrev=0)^)..$(git describe --tags --abbrev=0) scripts/changelog.md","dupe-check":"yarn jsinspect ./src","lint":"eslint . && flow check","pkg-tests":"yarn --cwd packages/pkg-tests jest yarn.test.js","prettier":"eslint src __tests__ --fix","release-branch":"./scripts/release-branch.sh","test":"yarn lint && yarn test-only","test-only":"node --max_old_space_size=4096 node_modules/jest/bin/jest.js --verbose","test-only-debug":"node --inspect-brk --max_old_space_size=4096 node_modules/jest/bin/jest.js --runInBand --verbose","test-coverage":"node --max_old_space_size=4096 node_modules/jest/bin/jest.js --coverage --verbose","watch":"gulp watch","commit":"git-cz"},"jest":{"collectCoverageFrom":["src/**/*.js"],"testEnvironment":"node","modulePathIgnorePatterns":["__tests__/fixtures/","packages/pkg-tests/pkg-tests-fixtures","dist/"],"testPathIgnorePatterns":["__tests__/(fixtures|__mocks__)/","updates/","_(temp|mock|install|init|helpers).js$","packages/pkg-tests"]},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}}}
 46867  
 46868  /***/ }),
 46869  /* 196 */
 46870  /***/ (function(module, exports) {
 46871  
 46872  module.exports = require("https");
 46873  
 46874  /***/ }),
 46875  /* 197 */
 46876  /***/ (function(module, exports) {
 46877  
 46878  module.exports = require("querystring");
 46879  
 46880  /***/ }),
 46881  /* 198 */
 46882  /***/ (function(module, exports) {
 46883  
 46884  module.exports = require("readline");
 46885  
 46886  /***/ }),
 46887  /* 199 */
 46888  /***/ (function(module, exports) {
 46889  
 46890  module.exports = require("zlib");
 46891  
 46892  /***/ }),
 46893  /* 200 */
 46894  /***/ (function(module, exports, __webpack_require__) {
 46895  
 46896  "use strict";
 46897  
 46898  
 46899  Object.defineProperty(exports, "__esModule", {
 46900    value: true
 46901  });
 46902  exports.default = stringify;
 46903  
 46904  var _misc;
 46905  
 46906  function _load_misc() {
 46907    return _misc = __webpack_require__(18);
 46908  }
 46909  
 46910  var _constants;
 46911  
 46912  function _load_constants() {
 46913    return _constants = __webpack_require__(8);
 46914  }
 46915  
 46916  var _package;
 46917  
 46918  function _load_package() {
 46919    return _package = __webpack_require__(195);
 46920  }
 46921  
 46922  const NODE_VERSION = process.version;
 46923  
 46924  function shouldWrapKey(str) {
 46925    return str.indexOf('true') === 0 || str.indexOf('false') === 0 || /[:\s\n\\",\[\]]/g.test(str) || /^[0-9]/g.test(str) || !/^[a-zA-Z]/g.test(str);
 46926  }
 46927  
 46928  function maybeWrap(str) {
 46929    if (typeof str === 'boolean' || typeof str === 'number' || shouldWrapKey(str)) {
 46930      return JSON.stringify(str);
 46931    } else {
 46932      return str;
 46933    }
 46934  }
 46935  
 46936  const priorities = {
 46937    name: 1,
 46938    version: 2,
 46939    uid: 3,
 46940    resolved: 4,
 46941    integrity: 5,
 46942    registry: 6,
 46943    dependencies: 7
 46944  };
 46945  
 46946  function priorityThenAlphaSort(a, b) {
 46947    if (priorities[a] || priorities[b]) {
 46948      return (priorities[a] || 100) > (priorities[b] || 100) ? 1 : -1;
 46949    } else {
 46950      return (0, (_misc || _load_misc()).sortAlpha)(a, b);
 46951    }
 46952  }
 46953  
 46954  function _stringify(obj, options) {
 46955    if (typeof obj !== 'object') {
 46956      throw new TypeError();
 46957    }
 46958  
 46959    const indent = options.indent;
 46960    const lines = [];
 46961  
 46962    // Sorting order needs to be consistent between runs, we run native sort by name because there are no
 46963    // problems with it being unstable because there are no to keys the same
 46964    // However priorities can be duplicated and native sort can shuffle things from run to run
 46965    const keys = Object.keys(obj).sort(priorityThenAlphaSort);
 46966  
 46967    let addedKeys = [];
 46968  
 46969    for (let i = 0; i < keys.length; i++) {
 46970      const key = keys[i];
 46971      const val = obj[key];
 46972      if (val == null || addedKeys.indexOf(key) >= 0) {
 46973        continue;
 46974      }
 46975  
 46976      const valKeys = [key];
 46977  
 46978      // get all keys that have the same value equality, we only want this for objects
 46979      if (typeof val === 'object') {
 46980        for (let j = i + 1; j < keys.length; j++) {
 46981          const key = keys[j];
 46982          if (val === obj[key]) {
 46983            valKeys.push(key);
 46984          }
 46985        }
 46986      }
 46987  
 46988      const keyLine = valKeys.sort((_misc || _load_misc()).sortAlpha).map(maybeWrap).join(', ');
 46989  
 46990      if (typeof val === 'string' || typeof val === 'boolean' || typeof val === 'number') {
 46991        lines.push(`${keyLine} ${maybeWrap(val)}`);
 46992      } else if (typeof val === 'object') {
 46993        lines.push(`${keyLine}:\n${_stringify(val, { indent: indent + '  ' })}` + (options.topLevel ? '\n' : ''));
 46994      } else {
 46995        throw new TypeError();
 46996      }
 46997  
 46998      addedKeys = addedKeys.concat(valKeys);
 46999    }
 47000  
 47001    return indent + lines.join(`\n${indent}`);
 47002  }
 47003  
 47004  function stringify(obj, noHeader, enableVersions) {
 47005    const val = _stringify(obj, {
 47006      indent: '',
 47007      topLevel: true
 47008    });
 47009    if (noHeader) {
 47010      return val;
 47011    }
 47012  
 47013    const lines = [];
 47014    lines.push('# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.');
 47015    lines.push(`# yarn lockfile v${(_constants || _load_constants()).LOCKFILE_VERSION}`);
 47016    if (enableVersions) {
 47017      lines.push(`# yarn v${(_package || _load_package()).version}`);
 47018      lines.push(`# node ${NODE_VERSION}`);
 47019    }
 47020    lines.push('\n');
 47021    lines.push(val);
 47022  
 47023    return lines.join('\n');
 47024  }
 47025  
 47026  /***/ }),
 47027  /* 201 */
 47028  /***/ (function(module, exports, __webpack_require__) {
 47029  
 47030  "use strict";
 47031  
 47032  
 47033  Object.defineProperty(exports, "__esModule", {
 47034    value: true
 47035  });
 47036  
 47037  var _consoleReporter;
 47038  
 47039  function _load_consoleReporter() {
 47040    return _consoleReporter = __webpack_require__(529);
 47041  }
 47042  
 47043  Object.defineProperty(exports, 'ConsoleReporter', {
 47044    enumerable: true,
 47045    get: function get() {
 47046      return _interopRequireDefault(_consoleReporter || _load_consoleReporter()).default;
 47047    }
 47048  });
 47049  
 47050  var _bufferReporter;
 47051  
 47052  function _load_bufferReporter() {
 47053    return _bufferReporter = __webpack_require__(528);
 47054  }
 47055  
 47056  Object.defineProperty(exports, 'BufferReporter', {
 47057    enumerable: true,
 47058    get: function get() {
 47059      return _interopRequireDefault(_bufferReporter || _load_bufferReporter()).default;
 47060    }
 47061  });
 47062  
 47063  var _eventReporter;
 47064  
 47065  function _load_eventReporter() {
 47066    return _eventReporter = __webpack_require__(533);
 47067  }
 47068  
 47069  Object.defineProperty(exports, 'EventReporter', {
 47070    enumerable: true,
 47071    get: function get() {
 47072      return _interopRequireDefault(_eventReporter || _load_eventReporter()).default;
 47073    }
 47074  });
 47075  
 47076  var _jsonReporter;
 47077  
 47078  function _load_jsonReporter() {
 47079    return _jsonReporter = __webpack_require__(211);
 47080  }
 47081  
 47082  Object.defineProperty(exports, 'JSONReporter', {
 47083    enumerable: true,
 47084    get: function get() {
 47085      return _interopRequireDefault(_jsonReporter || _load_jsonReporter()).default;
 47086    }
 47087  });
 47088  
 47089  var _noopReporter;
 47090  
 47091  function _load_noopReporter() {
 47092    return _noopReporter = __webpack_require__(537);
 47093  }
 47094  
 47095  Object.defineProperty(exports, 'NoopReporter', {
 47096    enumerable: true,
 47097    get: function get() {
 47098      return _interopRequireDefault(_noopReporter || _load_noopReporter()).default;
 47099    }
 47100  });
 47101  
 47102  var _baseReporter;
 47103  
 47104  function _load_baseReporter() {
 47105    return _baseReporter = __webpack_require__(108);
 47106  }
 47107  
 47108  Object.defineProperty(exports, 'Reporter', {
 47109    enumerable: true,
 47110    get: function get() {
 47111      return _interopRequireDefault(_baseReporter || _load_baseReporter()).default;
 47112    }
 47113  });
 47114  
 47115  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 47116  
 47117  /***/ }),
 47118  /* 202 */
 47119  /***/ (function(module, exports, __webpack_require__) {
 47120  
 47121  "use strict";
 47122  
 47123  // On windows, create a .cmd file.
 47124  // Read the #! in the file to see what it uses.  The vast majority
 47125  // of the time, this will be either:
 47126  // "#!/usr/bin/env <prog> <args...>"
 47127  // or:
 47128  // "#!<prog> <args...>"
 47129  //
 47130  // Write a binroot/pkg.bin + ".cmd" file that has this line in it:
 47131  // @<prog> <args...> %~dp0<target> %*
 47132  
 47133  module.exports = cmdShim
 47134  cmdShim.ifExists = cmdShimIfExists
 47135  
 47136  const fs = __webpack_require__(762)
 47137  
 47138  const mkdir = __webpack_require__(761)
 47139  const path = __webpack_require__(0)
 47140  const isWindows = __webpack_require__(743)
 47141  const shebangExpr = /^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/
 47142  const DEFAULT_OPTIONS = {
 47143    // Create PowerShell file by default if the option hasn't been specified
 47144    createPwshFile: true,
 47145    createCmdFile: isWindows()
 47146  }
 47147  
 47148  function cmdShimIfExists (src, to, opts) {
 47149    opts = Object.assign({}, DEFAULT_OPTIONS, opts)
 47150    return fs.stat(src)
 47151      .then(() => cmdShim(src, to, opts))
 47152      .catch(() => {})
 47153  }
 47154  
 47155  // Try to unlink, but ignore errors.
 47156  // Any problems will surface later.
 47157  function rm (path) {
 47158    return fs.unlink(path).catch(() => {})
 47159  }
 47160  
 47161  function cmdShim (src, to, opts) {
 47162    opts = Object.assign({}, DEFAULT_OPTIONS, opts)
 47163    return fs.stat(src)
 47164      .then(() => cmdShim_(src, to, opts))
 47165  }
 47166  
 47167  function cmdShim_ (src, to, opts) {
 47168    return Promise.all([
 47169      rm(to),
 47170      rm(`${to}.ps1`),
 47171      opts.createCmdFile && rm(`${to}.cmd`)
 47172    ])
 47173      .then(() => writeShim(src, to, opts))
 47174  }
 47175  
 47176  function writeShim (src, to, opts) {
 47177    opts = Object.assign({}, DEFAULT_OPTIONS, opts)
 47178    const defaultArgs = opts.preserveSymlinks ? '--preserve-symlinks' : ''
 47179    // make a cmd file and a sh script
 47180    // First, check if the bin is a #! of some sort.
 47181    // If not, then assume it's something that'll be compiled, or some other
 47182    // sort of script, and just call it directly.
 47183    return mkdir(path.dirname(to))
 47184      .then(() => {
 47185        return fs.readFile(src, 'utf8')
 47186          .then(data => {
 47187            const firstLine = data.trim().split(/\r*\n/)[0]
 47188            const shebang = firstLine.match(shebangExpr)
 47189            if (!shebang) return writeShim_(src, to, Object.assign({}, opts, {args: defaultArgs}))
 47190            const prog = shebang[1]
 47191            const args = (shebang[2] && ((defaultArgs && (shebang[2] + ' ' + defaultArgs)) || shebang[2])) || defaultArgs
 47192            return writeShim_(src, to, Object.assign({}, opts, {prog, args}))
 47193          })
 47194          .catch(() => writeShim_(src, to, Object.assign({}, opts, {args: defaultArgs})))
 47195      })
 47196  }
 47197  
 47198  function writeShim_ (src, to, opts) {
 47199    opts = Object.assign({}, DEFAULT_OPTIONS, opts)
 47200    let shTarget = path.relative(path.dirname(to), src)
 47201    let target = shTarget.split('/').join('\\')
 47202    let longProg
 47203    let prog = opts.prog
 47204    let shProg = prog && prog.split('\\').join('/')
 47205    let shLongProg
 47206    let pwshProg = shProg && `"${shProg}$exe"`
 47207    let pwshLongProg
 47208    shTarget = shTarget.split('\\').join('/')
 47209    let args = opts.args || ''
 47210    let {
 47211      win32: nodePath,
 47212      posix: shNodePath
 47213    } = normalizePathEnvVar(opts.nodePath)
 47214    if (!prog) {
 47215      prog = `"%~dp0\\${target}"`
 47216      shProg = `"$basedir/${shTarget}"`
 47217      pwshProg = shProg
 47218      args = ''
 47219      target = ''
 47220      shTarget = ''
 47221    } else {
 47222      longProg = `"%~dp0\\${prog}.exe"`
 47223      shLongProg = '"$basedir/' + prog + '"'
 47224      pwshLongProg = `"$basedir/${prog}$exe"`
 47225      target = `"%~dp0\\${target}"`
 47226      shTarget = `"$basedir/${shTarget}"`
 47227    }
 47228  
 47229    let cmd
 47230    if (opts.createCmdFile) {
 47231      // @IF EXIST "%~dp0\node.exe" (
 47232      //   "%~dp0\node.exe" "%~dp0\.\node_modules\npm\bin\npm-cli.js" %*
 47233      // ) ELSE (
 47234      //   SETLOCAL
 47235      //   SET PATHEXT=%PATHEXT:;.JS;=;%
 47236      //   node "%~dp0\.\node_modules\npm\bin\npm-cli.js" %*
 47237      // )
 47238      cmd = nodePath ? `@SET NODE_PATH=${nodePath}\r\n` : ''
 47239      if (longProg) {
 47240        cmd += '@IF EXIST ' + longProg + ' (\r\n' +
 47241          '  ' + longProg + ' ' + args + ' ' + target + ' %*\r\n' +
 47242          ') ELSE (\r\n' +
 47243          '  @SETLOCAL\r\n' +
 47244          '  @SET PATHEXT=%PATHEXT:;.JS;=;%\r\n' +
 47245          '  ' + prog + ' ' + args + ' ' + target + ' %*\r\n' +
 47246          ')'
 47247      } else {
 47248        cmd += `@${prog} ${args} ${target} %*\r\n`
 47249      }
 47250    }
 47251  
 47252    // #!/bin/sh
 47253    // basedir=`dirname "$0"`
 47254    //
 47255    // case `uname` in
 47256    //     *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
 47257    // esac
 47258    //
 47259    // if [ -x "$basedir/node.exe" ]; then
 47260    //   "$basedir/node.exe" "$basedir/node_modules/npm/bin/npm-cli.js" "$@"
 47261    //   ret=$?
 47262    // else
 47263    //   node "$basedir/node_modules/npm/bin/npm-cli.js" "$@"
 47264    //   ret=$?
 47265    // fi
 47266    // exit $ret
 47267  
 47268    let sh = '#!/bin/sh\n'
 47269    sh = sh +
 47270      "basedir=$(dirname \"$(echo \"$0\" | sed -e 's,\\\\,/,g')\")\n" +
 47271      '\n' +
 47272      'case `uname` in\n' +
 47273      '    *CYGWIN*) basedir=`cygpath -w "$basedir"`;;\n' +
 47274      'esac\n' +
 47275      '\n'
 47276    const env = opts.nodePath ? `NODE_PATH="${shNodePath}" ` : ''
 47277  
 47278    if (shLongProg) {
 47279      sh = sh +
 47280        'if [ -x ' + shLongProg + ' ]; then\n' +
 47281        '  ' + env + shLongProg + ' ' + args + ' ' + shTarget + ' "$@"\n' +
 47282        '  ret=$?\n' +
 47283        'else \n' +
 47284        '  ' + env + shProg + ' ' + args + ' ' + shTarget + ' "$@"\n' +
 47285        '  ret=$?\n' +
 47286        'fi\n' +
 47287        'exit $ret\n'
 47288    } else {
 47289      sh = sh + env + shProg + ' ' + args + ' ' + shTarget + ' "$@"\n' +
 47290        'exit $?\n'
 47291    }
 47292  
 47293    // #!/usr/bin/env pwsh
 47294    // $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
 47295    //
 47296    // $ret=0
 47297    // $exe = ""
 47298    // if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
 47299    //   # Fix case when both the Windows and Linux builds of Node
 47300    //   # are installed in the same directory
 47301    //   $exe = ".exe"
 47302    // }
 47303    // if (Test-Path "$basedir/node") {
 47304    //   & "$basedir/node$exe" "$basedir/node_modules/npm/bin/npm-cli.js" $args
 47305    //   $ret=$LASTEXITCODE
 47306    // } else {
 47307    //   & "node$exe" "$basedir/node_modules/npm/bin/npm-cli.js" $args
 47308    //   $ret=$LASTEXITCODE
 47309    // }
 47310    // exit $ret
 47311    let pwsh = '#!/usr/bin/env pwsh\n' +
 47312      '$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\n' +
 47313      '\n' +
 47314      '$exe=""\n' +
 47315      (opts.nodePath ? '$env_node_path=$env:NODE_PATH\n' +
 47316        `$env:NODE_PATH="${nodePath}"\n` : '') +
 47317      'if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {\n' +
 47318      '  # Fix case when both the Windows and Linux builds of Node\n' +
 47319      '  # are installed in the same directory\n' +
 47320      '  $exe=".exe"\n' +
 47321      '}'
 47322    if (opts.nodePath) {
 47323      pwsh = pwsh +
 47324        ' else {\n' +
 47325        `  $env:NODE_PATH="${shNodePath}"\n` +
 47326        '}'
 47327    }
 47328    pwsh += '\n'
 47329    if (shLongProg) {
 47330      pwsh = pwsh +
 47331        '$ret=0\n' +
 47332        `if (Test-Path ${pwshLongProg}) {\n` +
 47333        `  & ${pwshLongProg} ${args} ${shTarget} $args\n` +
 47334        '  $ret=$LASTEXITCODE\n' +
 47335        '} else {\n' +
 47336        `  & ${pwshProg} ${args} ${shTarget} $args\n` +
 47337        '  $ret=$LASTEXITCODE\n' +
 47338        '}\n' +
 47339        (opts.nodePath ? '$env:NODE_PATH=$env_node_path\n' : '') +
 47340        'exit $ret\n'
 47341    } else {
 47342      pwsh = pwsh +
 47343        `& ${pwshProg} ${args} ${shTarget} $args\n` +
 47344        (opts.nodePath ? '$env:NODE_PATH=$env_node_path\n' : '') +
 47345        'exit $LASTEXITCODE\n'
 47346    }
 47347  
 47348    return Promise.all([
 47349      opts.createCmdFile && fs.writeFile(to + '.cmd', cmd, 'utf8'),
 47350      opts.createPwshFile && fs.writeFile(`${to}.ps1`, pwsh, 'utf8'),
 47351      fs.writeFile(to, sh, 'utf8')
 47352    ])
 47353      .then(() => chmodShim(to, opts))
 47354  }
 47355  
 47356  function chmodShim (to, {createCmdFile, createPwshFile}) {
 47357    return Promise.all([
 47358      fs.chmod(to, 0o755),
 47359      createPwshFile && fs.chmod(`${to}.ps1`, 0o755),
 47360      createCmdFile && fs.chmod(`${to}.cmd`, 0o755)
 47361    ])
 47362  }
 47363  
 47364  /**
 47365   * @param {string|string[]} nodePath
 47366   * @returns {{win32:string,posix:string}}
 47367   */
 47368  function normalizePathEnvVar (nodePath) {
 47369    if (!nodePath) {
 47370      return {
 47371        win32: nodePath,
 47372        posix: nodePath
 47373      }
 47374    }
 47375    let split = (typeof nodePath === 'string' ? nodePath.split(path.delimiter) : Array.from(nodePath))
 47376    let result = {}
 47377    for (let i = 0; i < split.length; i++) {
 47378      const win32 = split[i].split('/').join('\\')
 47379      const posix = isWindows() ? split[i].split('\\').join('/').replace(/^([^:\\/]*):/, (_, $1) => `/mnt/${$1.toLowerCase()}`) : split[i]
 47380  
 47381      result.win32 = result.win32 ? `${result.win32};${win32}` : win32
 47382      result.posix = result.posix ? `${result.posix}:${posix}` : posix
 47383  
 47384      result[i] = {win32, posix}
 47385    }
 47386    return result
 47387  }
 47388  
 47389  
 47390  /***/ }),
 47391  /* 203 */
 47392  /***/ (function(module, exports) {
 47393  
 47394  // Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
 47395  
 47396  
 47397  module.exports = {
 47398  
 47399    newInvalidAsn1Error: function (msg) {
 47400      var e = new Error();
 47401      e.name = 'InvalidAsn1Error';
 47402      e.message = msg || '';
 47403      return e;
 47404    }
 47405  
 47406  };
 47407  
 47408  
 47409  /***/ }),
 47410  /* 204 */
 47411  /***/ (function(module, exports) {
 47412  
 47413  // Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
 47414  
 47415  
 47416  module.exports = {
 47417    EOC: 0,
 47418    Boolean: 1,
 47419    Integer: 2,
 47420    BitString: 3,
 47421    OctetString: 4,
 47422    Null: 5,
 47423    OID: 6,
 47424    ObjectDescriptor: 7,
 47425    External: 8,
 47426    Real: 9, // float
 47427    Enumeration: 10,
 47428    PDV: 11,
 47429    Utf8String: 12,
 47430    RelativeOID: 13,
 47431    Sequence: 16,
 47432    Set: 17,
 47433    NumericString: 18,
 47434    PrintableString: 19,
 47435    T61String: 20,
 47436    VideotexString: 21,
 47437    IA5String: 22,
 47438    UTCTime: 23,
 47439    GeneralizedTime: 24,
 47440    GraphicString: 25,
 47441    VisibleString: 26,
 47442    GeneralString: 28,
 47443    UniversalString: 29,
 47444    CharacterString: 30,
 47445    BMPString: 31,
 47446    Constructor: 32,
 47447    Context: 128
 47448  };
 47449  
 47450  
 47451  /***/ }),
 47452  /* 205 */
 47453  /***/ (function(module, exports, __webpack_require__) {
 47454  
 47455  "use strict";
 47456  
 47457  
 47458  Object.defineProperty(exports, "__esModule", {
 47459    value: true
 47460  });
 47461  exports.getOutdated = exports.run = exports.requireLockfile = undefined;
 47462  
 47463  var _asyncToGenerator2;
 47464  
 47465  function _load_asyncToGenerator() {
 47466    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 47467  }
 47468  
 47469  let run = exports.run = (() => {
 47470    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 47471      let addArgs = [];
 47472      const upgradeAll = args.length === 0 && typeof flags.scope === 'undefined' && typeof flags.pattern === 'undefined';
 47473      const addFlags = Object.assign({}, flags, {
 47474        force: true,
 47475        ignoreWorkspaceRootCheck: true,
 47476        workspaceRootIsCwd: config.cwd === config.lockfileFolder
 47477      });
 47478      const lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.lockfileFolder, reporter);
 47479      const deps = yield getOutdated(config, reporter, flags, lockfile, args);
 47480      const install = new (_install || _load_install()).Install(flags, config, reporter, lockfile);
 47481  
 47482      var _ref2 = yield install.fetchRequestFromCwd();
 47483  
 47484      const packagePatterns = _ref2.requests;
 47485  
 47486  
 47487      setUserRequestedPackageVersions(deps, args, flags.latest, packagePatterns, reporter);
 47488      cleanLockfile(lockfile, deps, packagePatterns, reporter);
 47489      addArgs = deps.map(function (dep) {
 47490        return dep.upgradeTo;
 47491      });
 47492  
 47493      if (flags.scope && validScopeRegex.test(flags.scope)) {
 47494        addArgs = addArgs.filter(function (depName) {
 47495          return depName.startsWith(flags.scope);
 47496        });
 47497      }
 47498  
 47499      const add = new (_add || _load_add()).Add(addArgs, addFlags, config, reporter, upgradeAll ? new (_lockfile || _load_lockfile()).default() : lockfile);
 47500      yield add.init();
 47501    });
 47502  
 47503    return function run(_x, _x2, _x3, _x4) {
 47504      return _ref.apply(this, arguments);
 47505    };
 47506  })();
 47507  
 47508  let getOutdated = exports.getOutdated = (() => {
 47509    var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, lockfile, patterns) {
 47510      const install = new (_install || _load_install()).Install(flags, config, reporter, lockfile);
 47511      const outdatedFieldName = flags.latest ? 'latest' : 'wanted';
 47512  
 47513      // ensure scope is of the form `@scope/`
 47514      const normalizeScope = function normalizeScope() {
 47515        if (flags.scope) {
 47516          if (!flags.scope.startsWith('@')) {
 47517            flags.scope = '@' + flags.scope;
 47518          }
 47519  
 47520          if (!flags.scope.endsWith('/')) {
 47521            flags.scope += '/';
 47522          }
 47523        }
 47524      };
 47525  
 47526      const versionFilter = function versionFilter(dep) {
 47527        return dep.current !== dep[outdatedFieldName];
 47528      };
 47529  
 47530      if (!flags.latest) {
 47531        // these flags only have an affect when --latest is used
 47532        flags.tilde = false;
 47533        flags.exact = false;
 47534        flags.caret = false;
 47535      }
 47536  
 47537      normalizeScope();
 47538  
 47539      const deps = (yield (_packageRequest || _load_packageRequest()).default.getOutdatedPackages(lockfile, install, config, reporter, patterns, flags)).filter(versionFilter).filter(scopeFilter.bind(this, flags));
 47540      deps.forEach(function (dep) {
 47541        dep.upgradeTo = buildPatternToUpgradeTo(dep, flags);
 47542        reporter.verbose(reporter.lang('verboseUpgradeBecauseOutdated', dep.name, dep.upgradeTo));
 47543      });
 47544  
 47545      return deps;
 47546    });
 47547  
 47548    return function getOutdated(_x5, _x6, _x7, _x8, _x9) {
 47549      return _ref3.apply(this, arguments);
 47550    };
 47551  })();
 47552  
 47553  exports.cleanLockfile = cleanLockfile;
 47554  exports.setFlags = setFlags;
 47555  exports.hasWrapper = hasWrapper;
 47556  
 47557  var _add;
 47558  
 47559  function _load_add() {
 47560    return _add = __webpack_require__(165);
 47561  }
 47562  
 47563  var _lockfile;
 47564  
 47565  function _load_lockfile() {
 47566    return _lockfile = _interopRequireDefault(__webpack_require__(19));
 47567  }
 47568  
 47569  var _packageRequest;
 47570  
 47571  function _load_packageRequest() {
 47572    return _packageRequest = _interopRequireDefault(__webpack_require__(122));
 47573  }
 47574  
 47575  var _normalizePattern;
 47576  
 47577  function _load_normalizePattern() {
 47578    return _normalizePattern = __webpack_require__(37);
 47579  }
 47580  
 47581  var _install;
 47582  
 47583  function _load_install() {
 47584    return _install = __webpack_require__(34);
 47585  }
 47586  
 47587  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 47588  
 47589  // used to detect whether a semver range is simple enough to preserve when doing a --latest upgrade.
 47590  // when not matched, the upgraded version range will default to `^` the same as the `add` command would.
 47591  const basicSemverOperatorRegex = new RegExp('^(\\^|~|>=|<=)?[^ |&,]+$');
 47592  
 47593  // used to detect if a passed parameter is a scope or a package name.
 47594  
 47595  
 47596  const validScopeRegex = /^@[a-zA-Z0-9-][a-zA-Z0-9_.-]*\/$/;
 47597  
 47598  // If specific versions were requested for packages, override what getOutdated reported as the latest to install
 47599  // Also add ones that are missing, since the requested packages may not have been outdated at all.
 47600  function setUserRequestedPackageVersions(deps, args, latest, packagePatterns, reporter) {
 47601    args.forEach(requestedPattern => {
 47602      let found = false;
 47603      let normalized = (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(requestedPattern);
 47604  
 47605      // if the user specified a package name without a version range, then that implies "latest"
 47606      // but if the latest flag is not passed then we need to use the version range from package.json
 47607      if (!normalized.hasVersion && !latest) {
 47608        packagePatterns.forEach(packagePattern => {
 47609          const packageNormalized = (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(packagePattern.pattern);
 47610          if (packageNormalized.name === normalized.name) {
 47611            normalized = packageNormalized;
 47612          }
 47613        });
 47614      }
 47615  
 47616      const newPattern = `${normalized.name}@${normalized.range}`;
 47617  
 47618      // if this dependency is already in the outdated list,
 47619      // just update the upgradeTo to whatever version the user requested.
 47620      deps.forEach(dep => {
 47621        if (normalized.hasVersion && dep.name === normalized.name) {
 47622          found = true;
 47623          dep.upgradeTo = newPattern;
 47624          reporter.verbose(reporter.lang('verboseUpgradeBecauseRequested', requestedPattern, newPattern));
 47625        }
 47626      });
 47627  
 47628      // if this dependency was not in the outdated list,
 47629      // then add a new entry
 47630      if (normalized.hasVersion && !found) {
 47631        deps.push({
 47632          name: normalized.name,
 47633          wanted: '',
 47634          latest: '',
 47635          url: '',
 47636          hint: '',
 47637          range: '',
 47638          current: '',
 47639          upgradeTo: newPattern,
 47640          workspaceName: '',
 47641          workspaceLoc: ''
 47642        });
 47643        reporter.verbose(reporter.lang('verboseUpgradeBecauseRequested', requestedPattern, newPattern));
 47644      }
 47645    });
 47646  }
 47647  
 47648  // this function attempts to determine the range operator on the semver range.
 47649  // this will only handle the simple cases of a semver starting with '^', '~', '>=', '<=', or an exact version.
 47650  // "exotic" semver ranges will not be handled.
 47651  function getRangeOperator(version) {
 47652    const result = basicSemverOperatorRegex.exec(version);
 47653    return result ? result[1] || '' : '^';
 47654  }
 47655  
 47656  // Attempt to preserve the range operator from the package.json specified semver range.
 47657  // If an explicit operator was specified using --exact, --tilde, --caret, then that will take precedence.
 47658  function buildPatternToUpgradeTo(dep, flags) {
 47659    if (dep.latest === 'exotic') {
 47660      return `${dep.name}@${dep.url}`;
 47661    }
 47662  
 47663    const toLatest = flags.latest;
 47664    const toVersion = toLatest ? dep.latest : dep.range;
 47665    let rangeOperator = '';
 47666  
 47667    if (toLatest) {
 47668      if (flags.caret) {
 47669        rangeOperator = '^';
 47670      } else if (flags.tilde) {
 47671        rangeOperator = '~';
 47672      } else if (flags.exact) {
 47673        rangeOperator = '';
 47674      } else {
 47675        rangeOperator = getRangeOperator(dep.range);
 47676      }
 47677    }
 47678  
 47679    return `${dep.name}@${rangeOperator}${toVersion}`;
 47680  }
 47681  
 47682  function scopeFilter(flags, dep) {
 47683    if (validScopeRegex.test(flags.scope)) {
 47684      return dep.name.startsWith(flags.scope);
 47685    }
 47686    return true;
 47687  }
 47688  
 47689  // Remove deps being upgraded from the lockfile, or else Add will use the already-installed version
 47690  // instead of the latest for the range.
 47691  // We do this recursively so that when Yarn installs the potentially updated transitive deps,
 47692  // it may upgrade them too instead of just using the "locked" version from the lockfile.
 47693  // Transitive dependencies that are also a direct dependency are skipped.
 47694  function cleanLockfile(lockfile, deps, packagePatterns, reporter) {
 47695    function cleanDepFromLockfile(pattern, depth) {
 47696      const lockManifest = lockfile.getLocked(pattern);
 47697      if (!lockManifest || depth > 1 && packagePatterns.some(packagePattern => packagePattern.pattern === pattern)) {
 47698        reporter.verbose(reporter.lang('verboseUpgradeNotUnlocking', pattern));
 47699        return;
 47700      }
 47701  
 47702      const dependencies = Object.assign({}, lockManifest.dependencies || {}, lockManifest.optionalDependencies || {});
 47703      const depPatterns = Object.keys(dependencies).map(key => `${key}@${dependencies[key]}`);
 47704      reporter.verbose(reporter.lang('verboseUpgradeUnlocking', pattern));
 47705      lockfile.removePattern(pattern);
 47706      depPatterns.forEach(pattern => cleanDepFromLockfile(pattern, depth + 1));
 47707    }
 47708  
 47709    const patterns = deps.map(dep => dep.upgradeTo);
 47710    patterns.forEach(pattern => cleanDepFromLockfile(pattern, 1));
 47711  }
 47712  
 47713  function setFlags(commander) {
 47714    commander.description('Upgrades packages to their latest version based on the specified range.');
 47715    commander.usage('upgrade [flags]');
 47716    commander.option('-S, --scope <scope>', 'upgrade packages under the specified scope');
 47717    commander.option('-L, --latest', 'list the latest version of packages, ignoring version ranges in package.json');
 47718    commander.option('-E, --exact', 'install exact version. Only used when --latest is specified.');
 47719    commander.option('-P, --pattern [pattern]', 'upgrade packages that match pattern');
 47720    commander.option('-T, --tilde', 'install most recent release with the same minor version. Only used when --latest is specified.');
 47721    commander.option('-C, --caret', 'install most recent release with the same major version. Only used when --latest is specified.');
 47722    commander.option('-A, --audit', 'Run vulnerability audit on installed packages');
 47723  }
 47724  
 47725  function hasWrapper(commander, args) {
 47726    return true;
 47727  }
 47728  
 47729  const requireLockfile = exports.requireLockfile = true;
 47730  
 47731  /***/ }),
 47732  /* 206 */
 47733  /***/ (function(module, exports, __webpack_require__) {
 47734  
 47735  "use strict";
 47736  
 47737  
 47738  Object.defineProperty(exports, "__esModule", {
 47739    value: true
 47740  });
 47741  exports.integrityErrors = undefined;
 47742  
 47743  var _extends2;
 47744  
 47745  function _load_extends() {
 47746    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 47747  }
 47748  
 47749  var _asyncToGenerator2;
 47750  
 47751  function _load_asyncToGenerator() {
 47752    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 47753  }
 47754  
 47755  var _constants;
 47756  
 47757  function _load_constants() {
 47758    return _constants = _interopRequireWildcard(__webpack_require__(8));
 47759  }
 47760  
 47761  var _fs;
 47762  
 47763  function _load_fs() {
 47764    return _fs = _interopRequireWildcard(__webpack_require__(5));
 47765  }
 47766  
 47767  var _misc;
 47768  
 47769  function _load_misc() {
 47770    return _misc = __webpack_require__(18);
 47771  }
 47772  
 47773  var _packageNameUtils;
 47774  
 47775  function _load_packageNameUtils() {
 47776    return _packageNameUtils = __webpack_require__(220);
 47777  }
 47778  
 47779  var _workspaceLayout;
 47780  
 47781  function _load_workspaceLayout() {
 47782    return _workspaceLayout = _interopRequireDefault(__webpack_require__(90));
 47783  }
 47784  
 47785  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 47786  
 47787  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 47788  
 47789  const invariant = __webpack_require__(9);
 47790  
 47791  const path = __webpack_require__(0);
 47792  
 47793  const integrityErrors = exports.integrityErrors = {
 47794    EXPECTED_IS_NOT_A_JSON: 'integrityFailedExpectedIsNotAJSON',
 47795    FILES_MISSING: 'integrityFailedFilesMissing',
 47796    LOCKFILE_DONT_MATCH: 'integrityLockfilesDontMatch',
 47797    FLAGS_DONT_MATCH: 'integrityFlagsDontMatch',
 47798    LINKED_MODULES_DONT_MATCH: 'integrityCheckLinkedModulesDontMatch',
 47799    PATTERNS_DONT_MATCH: 'integrityPatternsDontMatch',
 47800    MODULES_FOLDERS_MISSING: 'integrityModulesFoldersMissing',
 47801    SYSTEM_PARAMS_DONT_MATCH: 'integritySystemParamsDontMatch'
 47802  };
 47803  
 47804  const INTEGRITY_FILE_DEFAULTS = () => ({
 47805    systemParams: (0, (_packageNameUtils || _load_packageNameUtils()).getSystemParams)(),
 47806    modulesFolders: [],
 47807    flags: [],
 47808    linkedModules: [],
 47809    topLevelPatterns: [],
 47810    lockfileEntries: {},
 47811    files: []
 47812  });
 47813  
 47814  /**
 47815   *
 47816   */
 47817  class InstallationIntegrityChecker {
 47818    constructor(config) {
 47819      this.config = config;
 47820    }
 47821  
 47822    /**
 47823     * Get the common ancestor of every node_modules - it may be a node_modules directory itself, but isn't required to.
 47824     */
 47825  
 47826    _getModulesRootFolder() {
 47827      if (this.config.modulesFolder) {
 47828        return this.config.modulesFolder;
 47829      } else if (this.config.workspaceRootFolder) {
 47830        return this.config.workspaceRootFolder;
 47831      } else {
 47832        return path.join(this.config.lockfileFolder, (_constants || _load_constants()).NODE_MODULES_FOLDER);
 47833      }
 47834    }
 47835  
 47836    /**
 47837     * Get the directory in which the yarn-integrity file should be written.
 47838     */
 47839  
 47840    _getIntegrityFileFolder() {
 47841      if (this.config.modulesFolder) {
 47842        return this.config.modulesFolder;
 47843      } else if (this.config.enableMetaFolder) {
 47844        return path.join(this.config.lockfileFolder, (_constants || _load_constants()).META_FOLDER);
 47845      } else {
 47846        return path.join(this.config.lockfileFolder, (_constants || _load_constants()).NODE_MODULES_FOLDER);
 47847      }
 47848    }
 47849  
 47850    /**
 47851     * Get the full path of the yarn-integrity file.
 47852     */
 47853  
 47854    _getIntegrityFileLocation() {
 47855      var _this = this;
 47856  
 47857      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 47858        const locationFolder = _this._getIntegrityFileFolder();
 47859        const locationPath = path.join(locationFolder, (_constants || _load_constants()).INTEGRITY_FILENAME);
 47860  
 47861        const exists = yield (_fs || _load_fs()).exists(locationPath);
 47862  
 47863        return {
 47864          locationFolder,
 47865          locationPath,
 47866          exists
 47867        };
 47868      })();
 47869    }
 47870  
 47871    /**
 47872     * Get the list of the directories that contain our modules (there might be multiple such folders b/c of workspaces).
 47873     */
 47874  
 47875    _getModulesFolders({ workspaceLayout } = {}) {
 47876      const locations = [];
 47877  
 47878      if (this.config.modulesFolder) {
 47879        locations.push(this.config.modulesFolder);
 47880      } else {
 47881        locations.push(path.join(this.config.lockfileFolder, (_constants || _load_constants()).NODE_MODULES_FOLDER));
 47882      }
 47883  
 47884      if (workspaceLayout) {
 47885        for (var _iterator = Object.keys(workspaceLayout.workspaces), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 47886          var _ref;
 47887  
 47888          if (_isArray) {
 47889            if (_i >= _iterator.length) break;
 47890            _ref = _iterator[_i++];
 47891          } else {
 47892            _i = _iterator.next();
 47893            if (_i.done) break;
 47894            _ref = _i.value;
 47895          }
 47896  
 47897          const workspaceName = _ref;
 47898  
 47899          const loc = workspaceLayout.workspaces[workspaceName].loc;
 47900  
 47901          if (loc) {
 47902            locations.push(path.join(loc, (_constants || _load_constants()).NODE_MODULES_FOLDER));
 47903          }
 47904        }
 47905      }
 47906  
 47907      return locations.sort((_misc || _load_misc()).sortAlpha);
 47908    }
 47909  
 47910    /**
 47911     * Get a list of the files that are located inside our module folders.
 47912     */
 47913    _getIntegrityListing({ workspaceLayout } = {}) {
 47914      var _this2 = this;
 47915  
 47916      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 47917        const files = [];
 47918  
 47919        const recurse = (() => {
 47920          var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir) {
 47921            for (var _iterator2 = yield (_fs || _load_fs()).readdir(dir), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 47922              var _ref3;
 47923  
 47924              if (_isArray2) {
 47925                if (_i2 >= _iterator2.length) break;
 47926                _ref3 = _iterator2[_i2++];
 47927              } else {
 47928                _i2 = _iterator2.next();
 47929                if (_i2.done) break;
 47930                _ref3 = _i2.value;
 47931              }
 47932  
 47933              const file = _ref3;
 47934  
 47935              const entry = path.join(dir, file);
 47936              const stat = yield (_fs || _load_fs()).lstat(entry);
 47937  
 47938              if (stat.isDirectory()) {
 47939                yield recurse(entry);
 47940              } else {
 47941                files.push(entry);
 47942              }
 47943            }
 47944          });
 47945  
 47946          return function recurse(_x) {
 47947            return _ref2.apply(this, arguments);
 47948          };
 47949        })();
 47950  
 47951        for (var _iterator3 = _this2._getModulesFolders({ workspaceLayout }), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 47952          var _ref4;
 47953  
 47954          if (_isArray3) {
 47955            if (_i3 >= _iterator3.length) break;
 47956            _ref4 = _iterator3[_i3++];
 47957          } else {
 47958            _i3 = _iterator3.next();
 47959            if (_i3.done) break;
 47960            _ref4 = _i3.value;
 47961          }
 47962  
 47963          const modulesFolder = _ref4;
 47964  
 47965          if (yield (_fs || _load_fs()).exists(modulesFolder)) {
 47966            yield recurse(modulesFolder);
 47967          }
 47968        }
 47969  
 47970        return files;
 47971      })();
 47972    }
 47973  
 47974    /**
 47975     * Generate integrity hash of input lockfile.
 47976     */
 47977  
 47978    _generateIntegrityFile(lockfile, patterns, flags, workspaceLayout, artifacts) {
 47979      var _this3 = this;
 47980  
 47981      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 47982        const result = (0, (_extends2 || _load_extends()).default)({}, INTEGRITY_FILE_DEFAULTS(), {
 47983          artifacts
 47984        });
 47985  
 47986        result.topLevelPatterns = patterns;
 47987  
 47988        // If using workspaces, we also need to add the workspaces patterns to the top-level, so that we'll know if a
 47989        // dependency is added or removed into one of them. We must take care not to read the aggregator (if !loc).
 47990        //
 47991        // Also note that we can't use of workspaceLayout.workspaces[].manifest._reference.patterns, because when
 47992        // doing a "yarn check", the _reference property hasn't yet been properly initialized.
 47993  
 47994        if (workspaceLayout) {
 47995          result.topLevelPatterns = result.topLevelPatterns.filter(function (p) {
 47996            // $FlowFixMe
 47997            return !workspaceLayout.getManifestByPattern(p);
 47998          });
 47999  
 48000          for (var _iterator4 = Object.keys(workspaceLayout.workspaces), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 48001            var _ref5;
 48002  
 48003            if (_isArray4) {
 48004              if (_i4 >= _iterator4.length) break;
 48005              _ref5 = _iterator4[_i4++];
 48006            } else {
 48007              _i4 = _iterator4.next();
 48008              if (_i4.done) break;
 48009              _ref5 = _i4.value;
 48010            }
 48011  
 48012            const name = _ref5;
 48013  
 48014            if (!workspaceLayout.workspaces[name].loc) {
 48015              continue;
 48016            }
 48017  
 48018            const manifest = workspaceLayout.workspaces[name].manifest;
 48019  
 48020            if (manifest) {
 48021              for (var _iterator5 = (_constants || _load_constants()).DEPENDENCY_TYPES, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
 48022                var _ref6;
 48023  
 48024                if (_isArray5) {
 48025                  if (_i5 >= _iterator5.length) break;
 48026                  _ref6 = _iterator5[_i5++];
 48027                } else {
 48028                  _i5 = _iterator5.next();
 48029                  if (_i5.done) break;
 48030                  _ref6 = _i5.value;
 48031                }
 48032  
 48033                const dependencyType = _ref6;
 48034  
 48035                const dependencies = manifest[dependencyType];
 48036  
 48037                if (!dependencies) {
 48038                  continue;
 48039                }
 48040  
 48041                for (var _iterator6 = Object.keys(dependencies), _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
 48042                  var _ref7;
 48043  
 48044                  if (_isArray6) {
 48045                    if (_i6 >= _iterator6.length) break;
 48046                    _ref7 = _iterator6[_i6++];
 48047                  } else {
 48048                    _i6 = _iterator6.next();
 48049                    if (_i6.done) break;
 48050                    _ref7 = _i6.value;
 48051                  }
 48052  
 48053                  const dep = _ref7;
 48054  
 48055                  result.topLevelPatterns.push(`${dep}@${dependencies[dep]}`);
 48056                }
 48057              }
 48058            }
 48059          }
 48060        }
 48061  
 48062        result.topLevelPatterns.sort((_misc || _load_misc()).sortAlpha);
 48063  
 48064        if (flags.checkFiles) {
 48065          result.flags.push('checkFiles');
 48066        }
 48067  
 48068        if (flags.flat) {
 48069          result.flags.push('flat');
 48070        }
 48071  
 48072        if (_this3.config.ignoreScripts) {
 48073          result.flags.push('ignoreScripts');
 48074        }
 48075        if (_this3.config.focus) {
 48076          result.flags.push('focus: ' + _this3.config.focusedWorkspaceName);
 48077        }
 48078  
 48079        if (_this3.config.production) {
 48080          result.flags.push('production');
 48081        }
 48082  
 48083        if (_this3.config.plugnplayEnabled) {
 48084          result.flags.push('plugnplay');
 48085        }
 48086  
 48087        const linkedModules = _this3.config.linkedModules;
 48088  
 48089        if (linkedModules.length) {
 48090          result.linkedModules = linkedModules.sort((_misc || _load_misc()).sortAlpha);
 48091        }
 48092  
 48093        for (var _iterator7 = Object.keys(lockfile), _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
 48094          var _ref8;
 48095  
 48096          if (_isArray7) {
 48097            if (_i7 >= _iterator7.length) break;
 48098            _ref8 = _iterator7[_i7++];
 48099          } else {
 48100            _i7 = _iterator7.next();
 48101            if (_i7.done) break;
 48102            _ref8 = _i7.value;
 48103          }
 48104  
 48105          const key = _ref8;
 48106  
 48107          result.lockfileEntries[key] = lockfile[key].resolved || '';
 48108        }
 48109  
 48110        for (var _iterator8 = _this3._getModulesFolders({ workspaceLayout }), _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {
 48111          var _ref9;
 48112  
 48113          if (_isArray8) {
 48114            if (_i8 >= _iterator8.length) break;
 48115            _ref9 = _iterator8[_i8++];
 48116          } else {
 48117            _i8 = _iterator8.next();
 48118            if (_i8.done) break;
 48119            _ref9 = _i8.value;
 48120          }
 48121  
 48122          const modulesFolder = _ref9;
 48123  
 48124          if (yield (_fs || _load_fs()).exists(modulesFolder)) {
 48125            result.modulesFolders.push(path.relative(_this3.config.lockfileFolder, modulesFolder));
 48126          }
 48127        }
 48128  
 48129        if (flags.checkFiles) {
 48130          const modulesRoot = _this3._getModulesRootFolder();
 48131  
 48132          result.files = (yield _this3._getIntegrityListing({ workspaceLayout })).map(function (entry) {
 48133            return path.relative(modulesRoot, entry);
 48134          }).sort((_misc || _load_misc()).sortAlpha);
 48135        }
 48136  
 48137        return result;
 48138      })();
 48139    }
 48140  
 48141    _getIntegrityFile(locationPath) {
 48142      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 48143        const expectedRaw = yield (_fs || _load_fs()).readFile(locationPath);
 48144        try {
 48145          return (0, (_extends2 || _load_extends()).default)({}, INTEGRITY_FILE_DEFAULTS(), JSON.parse(expectedRaw));
 48146        } catch (e) {
 48147          // ignore JSON parsing for legacy text integrity files compatibility
 48148        }
 48149        return null;
 48150      })();
 48151    }
 48152  
 48153    _compareIntegrityFiles(actual, expected, checkFiles, workspaceLayout) {
 48154      if (!expected) {
 48155        return 'EXPECTED_IS_NOT_A_JSON';
 48156      }
 48157  
 48158      if (!(0, (_misc || _load_misc()).compareSortedArrays)(actual.linkedModules, expected.linkedModules)) {
 48159        return 'LINKED_MODULES_DONT_MATCH';
 48160      }
 48161  
 48162      if (actual.systemParams !== expected.systemParams) {
 48163        return 'SYSTEM_PARAMS_DONT_MATCH';
 48164      }
 48165  
 48166      let relevantExpectedFlags = expected.flags.slice();
 48167  
 48168      // If we run "yarn" after "yarn --check-files", we shouldn't fail the less strict validation
 48169      if (actual.flags.indexOf('checkFiles') === -1) {
 48170        relevantExpectedFlags = relevantExpectedFlags.filter(flag => flag !== 'checkFiles');
 48171      }
 48172  
 48173      if (!(0, (_misc || _load_misc()).compareSortedArrays)(actual.flags, relevantExpectedFlags)) {
 48174        return 'FLAGS_DONT_MATCH';
 48175      }
 48176  
 48177      if (!(0, (_misc || _load_misc()).compareSortedArrays)(actual.topLevelPatterns, expected.topLevelPatterns || [])) {
 48178        return 'PATTERNS_DONT_MATCH';
 48179      }
 48180  
 48181      for (var _iterator9 = Object.keys(actual.lockfileEntries), _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {
 48182        var _ref10;
 48183  
 48184        if (_isArray9) {
 48185          if (_i9 >= _iterator9.length) break;
 48186          _ref10 = _iterator9[_i9++];
 48187        } else {
 48188          _i9 = _iterator9.next();
 48189          if (_i9.done) break;
 48190          _ref10 = _i9.value;
 48191        }
 48192  
 48193        const key = _ref10;
 48194  
 48195        if (actual.lockfileEntries[key] !== expected.lockfileEntries[key]) {
 48196          return 'LOCKFILE_DONT_MATCH';
 48197        }
 48198      }
 48199  
 48200      for (var _iterator10 = Object.keys(expected.lockfileEntries), _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {
 48201        var _ref11;
 48202  
 48203        if (_isArray10) {
 48204          if (_i10 >= _iterator10.length) break;
 48205          _ref11 = _iterator10[_i10++];
 48206        } else {
 48207          _i10 = _iterator10.next();
 48208          if (_i10.done) break;
 48209          _ref11 = _i10.value;
 48210        }
 48211  
 48212        const key = _ref11;
 48213  
 48214        if (actual.lockfileEntries[key] !== expected.lockfileEntries[key]) {
 48215          return 'LOCKFILE_DONT_MATCH';
 48216        }
 48217      }
 48218  
 48219      if (checkFiles) {
 48220        // Early bailout if we expect more files than what we have
 48221        if (expected.files.length > actual.files.length) {
 48222          return 'FILES_MISSING';
 48223        }
 48224  
 48225        // Since we know the "files" array is sorted (alphabetically), we can optimize the thing
 48226        // Instead of storing the files in a Set, we can just iterate both arrays at once. O(n)!
 48227        for (let u = 0, v = 0; u < expected.files.length; ++u) {
 48228          // Index that, if reached, means that we won't have enough food to match the remaining expected entries anyway
 48229          const max = v + (actual.files.length - v) - (expected.files.length - u) + 1;
 48230  
 48231          // Skip over files that have been added (ie not present in 'expected')
 48232          while (v < max && actual.files[v] !== expected.files[u]) {
 48233            v += 1;
 48234          }
 48235  
 48236          // If we've reached the index defined above, the file is either missing or we can early exit
 48237          if (v === max) {
 48238            return 'FILES_MISSING';
 48239          }
 48240        }
 48241      }
 48242      return 'OK';
 48243    }
 48244  
 48245    check(patterns, lockfile, flags, workspaceLayout) {
 48246      var _this4 = this;
 48247  
 48248      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 48249        // check if patterns exist in lockfile
 48250        const missingPatterns = patterns.filter(function (p) {
 48251          return !lockfile[p] && (!workspaceLayout || !workspaceLayout.getManifestByPattern(p));
 48252        });
 48253  
 48254        const loc = yield _this4._getIntegrityFileLocation();
 48255        if (missingPatterns.length || !loc.exists) {
 48256          return {
 48257            integrityFileMissing: !loc.exists,
 48258            missingPatterns
 48259          };
 48260        }
 48261  
 48262        const actual = yield _this4._generateIntegrityFile(lockfile, patterns, flags, workspaceLayout);
 48263  
 48264        const expected = yield _this4._getIntegrityFile(loc.locationPath);
 48265        let integrityMatches = _this4._compareIntegrityFiles(actual, expected, flags.checkFiles, workspaceLayout);
 48266  
 48267        if (integrityMatches === 'OK') {
 48268          invariant(expected, "The integrity shouldn't pass without integrity file");
 48269          for (var _iterator11 = expected.modulesFolders, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) {
 48270            var _ref12;
 48271  
 48272            if (_isArray11) {
 48273              if (_i11 >= _iterator11.length) break;
 48274              _ref12 = _iterator11[_i11++];
 48275            } else {
 48276              _i11 = _iterator11.next();
 48277              if (_i11.done) break;
 48278              _ref12 = _i11.value;
 48279            }
 48280  
 48281            const modulesFolder = _ref12;
 48282  
 48283            if (!(yield (_fs || _load_fs()).exists(path.join(_this4.config.lockfileFolder, modulesFolder)))) {
 48284              integrityMatches = 'MODULES_FOLDERS_MISSING';
 48285            }
 48286          }
 48287        }
 48288  
 48289        return {
 48290          integrityFileMissing: false,
 48291          integrityMatches: integrityMatches === 'OK',
 48292          integrityError: integrityMatches === 'OK' ? undefined : integrityMatches,
 48293          missingPatterns,
 48294          hardRefreshRequired: integrityMatches === 'SYSTEM_PARAMS_DONT_MATCH'
 48295        };
 48296      })();
 48297    }
 48298  
 48299    /**
 48300     * Get artifacts from integrity file if it exists.
 48301     */
 48302    getArtifacts() {
 48303      var _this5 = this;
 48304  
 48305      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 48306        const loc = yield _this5._getIntegrityFileLocation();
 48307        if (!loc.exists) {
 48308          return null;
 48309        }
 48310  
 48311        const expectedRaw = yield (_fs || _load_fs()).readFile(loc.locationPath);
 48312        let expected;
 48313        try {
 48314          expected = JSON.parse(expectedRaw);
 48315        } catch (e) {
 48316          // ignore JSON parsing for legacy text integrity files compatibility
 48317        }
 48318  
 48319        return expected ? expected.artifacts : null;
 48320      })();
 48321    }
 48322  
 48323    /**
 48324     * Write the integrity hash of the current install to disk.
 48325     */
 48326    save(patterns, lockfile, flags, workspaceLayout, artifacts) {
 48327      var _this6 = this;
 48328  
 48329      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 48330        const integrityFile = yield _this6._generateIntegrityFile(lockfile, patterns, flags, workspaceLayout, artifacts);
 48331  
 48332        const loc = yield _this6._getIntegrityFileLocation();
 48333        invariant(loc.locationPath, 'expected integrity hash location');
 48334  
 48335        yield (_fs || _load_fs()).mkdirp(path.dirname(loc.locationPath));
 48336        yield (_fs || _load_fs()).writeFile(loc.locationPath, JSON.stringify(integrityFile, null, 2));
 48337      })();
 48338    }
 48339  
 48340    removeIntegrityFile() {
 48341      var _this7 = this;
 48342  
 48343      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 48344        const loc = yield _this7._getIntegrityFileLocation();
 48345        if (loc.exists) {
 48346          yield (_fs || _load_fs()).unlink(loc.locationPath);
 48347        }
 48348      })();
 48349    }
 48350  }
 48351  exports.default = InstallationIntegrityChecker;
 48352  
 48353  /***/ }),
 48354  /* 207 */
 48355  /***/ (function(module, exports, __webpack_require__) {
 48356  
 48357  "use strict";
 48358  
 48359  
 48360  Object.defineProperty(exports, "__esModule", {
 48361    value: true
 48362  });
 48363  exports.testEngine = testEngine;
 48364  exports.checkOne = checkOne;
 48365  exports.check = check;
 48366  exports.shouldCheck = shouldCheck;
 48367  
 48368  var _errors;
 48369  
 48370  function _load_errors() {
 48371    return _errors = __webpack_require__(6);
 48372  }
 48373  
 48374  var _map;
 48375  
 48376  function _load_map() {
 48377    return _map = _interopRequireDefault(__webpack_require__(29));
 48378  }
 48379  
 48380  var _misc;
 48381  
 48382  function _load_misc() {
 48383    return _misc = __webpack_require__(18);
 48384  }
 48385  
 48386  var _yarnVersion;
 48387  
 48388  function _load_yarnVersion() {
 48389    return _yarnVersion = __webpack_require__(105);
 48390  }
 48391  
 48392  var _semver;
 48393  
 48394  function _load_semver() {
 48395    return _semver = __webpack_require__(170);
 48396  }
 48397  
 48398  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 48399  
 48400  const semver = __webpack_require__(22);
 48401  
 48402  const VERSIONS = Object.assign({}, process.versions, {
 48403    yarn: (_yarnVersion || _load_yarnVersion()).version
 48404  });
 48405  
 48406  function isValid(items, actual) {
 48407    let isNotWhitelist = true;
 48408    let isBlacklist = false;
 48409  
 48410    for (var _iterator = items, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 48411      var _ref;
 48412  
 48413      if (_isArray) {
 48414        if (_i >= _iterator.length) break;
 48415        _ref = _iterator[_i++];
 48416      } else {
 48417        _i = _iterator.next();
 48418        if (_i.done) break;
 48419        _ref = _i.value;
 48420      }
 48421  
 48422      const item = _ref;
 48423  
 48424      // blacklist
 48425      if (item[0] === '!') {
 48426        isBlacklist = true;
 48427  
 48428        if (actual === item.slice(1)) {
 48429          return false;
 48430        }
 48431        // whitelist
 48432      } else {
 48433        isNotWhitelist = false;
 48434  
 48435        if (item === actual) {
 48436          return true;
 48437        }
 48438      }
 48439    }
 48440  
 48441    // npm allows blacklists and whitelists to be mixed. Blacklists with
 48442    // whitelisted items should be treated as whitelists.
 48443    return isBlacklist && isNotWhitelist;
 48444  }
 48445  
 48446  const aliases = (0, (_map || _load_map()).default)({
 48447    iojs: 'node' // we should probably prompt these libraries to fix this
 48448  });
 48449  
 48450  const ignore = ['npm', // we'll never satisfy this for obvious reasons
 48451  'teleport', // a module bundler used by some modules
 48452  'rhino', // once a target for older modules
 48453  'cordovaDependencies', // http://bit.ly/2tkUePg
 48454  'parcel'];
 48455  
 48456  function testEngine(name, range, versions, looseSemver) {
 48457    const actual = versions[name];
 48458    if (!actual) {
 48459      return false;
 48460    }
 48461  
 48462    if (!semver.valid(actual, looseSemver)) {
 48463      return false;
 48464    }
 48465  
 48466    if (semver.satisfies(actual, range, looseSemver)) {
 48467      return true;
 48468    }
 48469  
 48470    if (name === 'yarn' && (0, (_semver || _load_semver()).satisfiesWithPrereleases)(actual, range, looseSemver)) {
 48471      return true;
 48472    }
 48473  
 48474    if (name === 'node' && semver.gt(actual, '1.0.0', looseSemver)) {
 48475      // WARNING: this is a massive hack and is super gross but necessary for compatibility
 48476      // some modules have the `engines.node` field set to a caret version below semver major v1
 48477      // eg. ^0.12.0. this is problematic as we enforce engines checks and node is now on version >=1
 48478      // to allow this pattern we transform the node version to fake ones in the minor range 10-13
 48479      const major = semver.major(actual, looseSemver);
 48480      const fakes = [`0.10.${major}`, `0.11.${major}`, `0.12.${major}`, `0.13.${major}`];
 48481      for (var _iterator2 = fakes, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 48482        var _ref2;
 48483  
 48484        if (_isArray2) {
 48485          if (_i2 >= _iterator2.length) break;
 48486          _ref2 = _iterator2[_i2++];
 48487        } else {
 48488          _i2 = _iterator2.next();
 48489          if (_i2.done) break;
 48490          _ref2 = _i2.value;
 48491        }
 48492  
 48493        const actualFake = _ref2;
 48494  
 48495        if (semver.satisfies(actualFake, range, looseSemver)) {
 48496          return true;
 48497        }
 48498      }
 48499    }
 48500  
 48501    // incompatible version
 48502    return false;
 48503  }
 48504  
 48505  function isValidArch(archs) {
 48506    return isValid(archs, process.arch);
 48507  }
 48508  
 48509  function isValidPlatform(platforms) {
 48510    return isValid(platforms, process.platform);
 48511  }
 48512  
 48513  function checkOne(info, config, ignoreEngines) {
 48514    let didIgnore = false;
 48515    let didError = false;
 48516    const reporter = config.reporter;
 48517    const human = `${info.name}@${info.version}`;
 48518  
 48519    const pushError = msg => {
 48520      const ref = info._reference;
 48521  
 48522      if (ref && ref.optional) {
 48523        ref.ignore = true;
 48524        ref.incompatible = true;
 48525  
 48526        if (!didIgnore) {
 48527          didIgnore = true;
 48528        }
 48529      } else {
 48530        reporter.error(`${human}: ${msg}`);
 48531        didError = true;
 48532      }
 48533    };
 48534  
 48535    const os = info.os,
 48536          cpu = info.cpu,
 48537          engines = info.engines;
 48538  
 48539  
 48540    if (shouldCheckPlatform(os, config.ignorePlatform) && !isValidPlatform(os)) {
 48541      pushError(reporter.lang('incompatibleOS', process.platform));
 48542    }
 48543  
 48544    if (shouldCheckCpu(cpu, config.ignorePlatform) && !isValidArch(cpu)) {
 48545      pushError(reporter.lang('incompatibleCPU', process.arch));
 48546    }
 48547  
 48548    if (shouldCheckEngines(engines, ignoreEngines)) {
 48549      for (var _iterator3 = (0, (_misc || _load_misc()).entries)(info.engines), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 48550        var _ref3;
 48551  
 48552        if (_isArray3) {
 48553          if (_i3 >= _iterator3.length) break;
 48554          _ref3 = _iterator3[_i3++];
 48555        } else {
 48556          _i3 = _iterator3.next();
 48557          if (_i3.done) break;
 48558          _ref3 = _i3.value;
 48559        }
 48560  
 48561        const entry = _ref3;
 48562  
 48563        let name = entry[0];
 48564        const range = entry[1];
 48565  
 48566        if (aliases[name]) {
 48567          name = aliases[name];
 48568        }
 48569  
 48570        if (VERSIONS[name]) {
 48571          if (!testEngine(name, range, VERSIONS, config.looseSemver)) {
 48572            pushError(reporter.lang('incompatibleEngine', name, range, VERSIONS[name]));
 48573          }
 48574        } else if (ignore.indexOf(name) < 0) {
 48575          reporter.warn(`${human}: ${reporter.lang('invalidEngine', name)}`);
 48576        }
 48577      }
 48578    }
 48579  
 48580    if (didError) {
 48581      throw new (_errors || _load_errors()).MessageError(reporter.lang('foundIncompatible'));
 48582    }
 48583  }
 48584  
 48585  function check(infos, config, ignoreEngines) {
 48586    for (var _iterator4 = infos, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 48587      var _ref4;
 48588  
 48589      if (_isArray4) {
 48590        if (_i4 >= _iterator4.length) break;
 48591        _ref4 = _iterator4[_i4++];
 48592      } else {
 48593        _i4 = _iterator4.next();
 48594        if (_i4.done) break;
 48595        _ref4 = _i4.value;
 48596      }
 48597  
 48598      const info = _ref4;
 48599  
 48600      checkOne(info, config, ignoreEngines);
 48601    }
 48602  }
 48603  
 48604  function shouldCheckCpu(cpu, ignorePlatform) {
 48605    return !ignorePlatform && Array.isArray(cpu) && cpu.length > 0;
 48606  }
 48607  
 48608  function shouldCheckPlatform(os, ignorePlatform) {
 48609    return !ignorePlatform && Array.isArray(os) && os.length > 0;
 48610  }
 48611  
 48612  function shouldCheckEngines(engines, ignoreEngines) {
 48613    return !ignoreEngines && typeof engines === 'object';
 48614  }
 48615  
 48616  function shouldCheck(manifest, options) {
 48617    return shouldCheckCpu(manifest.cpu, options.ignorePlatform) || shouldCheckPlatform(manifest.os, options.ignorePlatform) || shouldCheckEngines(manifest.engines, options.ignoreEngines);
 48618  }
 48619  
 48620  /***/ }),
 48621  /* 208 */
 48622  /***/ (function(module, exports, __webpack_require__) {
 48623  
 48624  "use strict";
 48625  
 48626  
 48627  Object.defineProperty(exports, "__esModule", {
 48628    value: true
 48629  });
 48630  exports.fetchOneRemote = undefined;
 48631  
 48632  var _asyncToGenerator2;
 48633  
 48634  function _load_asyncToGenerator() {
 48635    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 48636  }
 48637  
 48638  let fetchCache = (() => {
 48639    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dest, fetcher, config, remote) {
 48640      // $FlowFixMe: This error doesn't make sense
 48641      var _ref2 = yield config.readPackageMetadata(dest);
 48642  
 48643      const hash = _ref2.hash,
 48644            pkg = _ref2.package,
 48645            cacheRemote = _ref2.remote;
 48646  
 48647  
 48648      const cacheIntegrity = cacheRemote.cacheIntegrity || cacheRemote.integrity;
 48649      const cacheHash = cacheRemote.hash;
 48650  
 48651      if (remote.integrity) {
 48652        if (!cacheIntegrity || !ssri.parse(cacheIntegrity).match(remote.integrity)) {
 48653          throw new (_errors || _load_errors()).SecurityError(config.reporter.lang('fetchBadIntegrityCache', pkg.name, cacheIntegrity, remote.integrity));
 48654        }
 48655      }
 48656  
 48657      if (remote.hash) {
 48658        if (!cacheHash || cacheHash !== remote.hash) {
 48659          throw new (_errors || _load_errors()).SecurityError(config.reporter.lang('fetchBadHashCache', pkg.name, cacheHash, remote.hash));
 48660        }
 48661      }
 48662  
 48663      yield fetcher.setupMirrorFromCache();
 48664      return {
 48665        package: pkg,
 48666        hash,
 48667        dest,
 48668        cached: true
 48669      };
 48670    });
 48671  
 48672    return function fetchCache(_x, _x2, _x3, _x4) {
 48673      return _ref.apply(this, arguments);
 48674    };
 48675  })();
 48676  
 48677  let fetchOneRemote = exports.fetchOneRemote = (() => {
 48678    var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (remote, name, version, dest, config) {
 48679      // Mock metadata for symlinked dependencies
 48680      if (remote.type === 'link') {
 48681        const mockPkg = { _uid: '', name: '', version: '0.0.0' };
 48682        return Promise.resolve({ resolved: null, hash: '', dest, package: mockPkg, cached: false });
 48683      }
 48684  
 48685      const Fetcher = (_index || _load_index())[remote.type];
 48686      if (!Fetcher) {
 48687        throw new (_errors || _load_errors()).MessageError(config.reporter.lang('unknownFetcherFor', remote.type));
 48688      }
 48689  
 48690      const fetcher = new Fetcher(dest, remote, config);
 48691      if (yield config.isValidModuleDest(dest)) {
 48692        return fetchCache(dest, fetcher, config, remote);
 48693      }
 48694  
 48695      // remove as the module may be invalid
 48696      yield (_fs || _load_fs()).unlink(dest);
 48697  
 48698      try {
 48699        return yield fetcher.fetch({
 48700          name,
 48701          version
 48702        });
 48703      } catch (err) {
 48704        try {
 48705          yield (_fs || _load_fs()).unlink(dest);
 48706        } catch (err2) {
 48707          // what do?
 48708        }
 48709        throw err;
 48710      }
 48711    });
 48712  
 48713    return function fetchOneRemote(_x5, _x6, _x7, _x8, _x9) {
 48714      return _ref3.apply(this, arguments);
 48715    };
 48716  })();
 48717  
 48718  let maybeFetchOne = (() => {
 48719    var _ref4 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (ref, config) {
 48720      try {
 48721        return yield fetchOne(ref, config);
 48722      } catch (err) {
 48723        if (ref.optional) {
 48724          config.reporter.error(err.message);
 48725          return null;
 48726        } else {
 48727          throw err;
 48728        }
 48729      }
 48730    });
 48731  
 48732    return function maybeFetchOne(_x10, _x11) {
 48733      return _ref4.apply(this, arguments);
 48734    };
 48735  })();
 48736  
 48737  exports.fetch = fetch;
 48738  
 48739  var _errors;
 48740  
 48741  function _load_errors() {
 48742    return _errors = __webpack_require__(6);
 48743  }
 48744  
 48745  var _index;
 48746  
 48747  function _load_index() {
 48748    return _index = _interopRequireWildcard(__webpack_require__(520));
 48749  }
 48750  
 48751  var _fs;
 48752  
 48753  function _load_fs() {
 48754    return _fs = _interopRequireWildcard(__webpack_require__(5));
 48755  }
 48756  
 48757  var _promise;
 48758  
 48759  function _load_promise() {
 48760    return _promise = _interopRequireWildcard(__webpack_require__(51));
 48761  }
 48762  
 48763  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 48764  
 48765  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 48766  
 48767  const ssri = __webpack_require__(65);
 48768  
 48769  function fetchOne(ref, config) {
 48770    const dest = config.generateModuleCachePath(ref);
 48771  
 48772    return fetchOneRemote(ref.remote, ref.name, ref.version, dest, config);
 48773  }
 48774  
 48775  function fetch(pkgs, config) {
 48776    const pkgsPerDest = new Map();
 48777    pkgs = pkgs.filter(pkg => {
 48778      const ref = pkg._reference;
 48779      if (!ref) {
 48780        return false;
 48781      }
 48782      const dest = config.generateModuleCachePath(ref);
 48783      const otherPkg = pkgsPerDest.get(dest);
 48784      if (otherPkg) {
 48785        config.reporter.warn(config.reporter.lang('multiplePackagesCantUnpackInSameDestination', ref.patterns, dest, otherPkg.patterns));
 48786        return false;
 48787      }
 48788      pkgsPerDest.set(dest, ref);
 48789      return true;
 48790    });
 48791    const tick = config.reporter.progress(pkgs.length);
 48792  
 48793    return (_promise || _load_promise()).queue(pkgs, (() => {
 48794      var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (pkg) {
 48795        const ref = pkg._reference;
 48796        if (!ref) {
 48797          return pkg;
 48798        }
 48799  
 48800        const res = yield maybeFetchOne(ref, config);
 48801        let newPkg;
 48802  
 48803        if (res) {
 48804          newPkg = res.package;
 48805  
 48806          // update with new remote
 48807          // but only if there was a hash previously as the tarball fetcher does not provide a hash.
 48808          if (ref.remote.hash) {
 48809            // if the checksum was updated, also update resolved and cache
 48810            if (ref.remote.hash !== res.hash && config.updateChecksums) {
 48811              const oldHash = ref.remote.hash;
 48812              if (ref.remote.resolved) {
 48813                ref.remote.resolved = ref.remote.resolved.replace(oldHash, res.hash);
 48814              }
 48815              ref.config.cache = Object.keys(ref.config.cache).reduce(function (cache, entry) {
 48816                const entryWithNewHash = entry.replace(oldHash, res.hash);
 48817                cache[entryWithNewHash] = ref.config.cache[entry];
 48818                return cache;
 48819              }, {});
 48820            }
 48821            ref.remote.hash = res.hash || ref.remote.hash;
 48822          }
 48823        }
 48824  
 48825        if (tick) {
 48826          tick();
 48827        }
 48828  
 48829        if (newPkg) {
 48830          newPkg._reference = ref;
 48831          newPkg._remote = ref.remote;
 48832          newPkg.name = pkg.name;
 48833          newPkg.fresh = pkg.fresh;
 48834          return newPkg;
 48835        }
 48836  
 48837        return pkg;
 48838      });
 48839  
 48840      return function (_x12) {
 48841        return _ref5.apply(this, arguments);
 48842      };
 48843    })(), config.networkConcurrency);
 48844  }
 48845  
 48846  /***/ }),
 48847  /* 209 */
 48848  /***/ (function(module, exports, __webpack_require__) {
 48849  
 48850  "use strict";
 48851  
 48852  
 48853  Object.defineProperty(exports, "__esModule", {
 48854    value: true
 48855  });
 48856  exports.linkBin = undefined;
 48857  
 48858  var _asyncToGenerator2;
 48859  
 48860  function _load_asyncToGenerator() {
 48861    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 48862  }
 48863  
 48864  let linkBin = exports.linkBin = (() => {
 48865    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (src, dest) {
 48866      if (process.platform === 'win32') {
 48867        const unlockMutex = yield (0, (_mutex || _load_mutex()).default)(src);
 48868        try {
 48869          yield cmdShim(src, dest, { createPwshFile: false });
 48870        } finally {
 48871          unlockMutex();
 48872        }
 48873      } else {
 48874        yield (_fs || _load_fs()).mkdirp(path.dirname(dest));
 48875        yield (_fs || _load_fs()).symlink(src, dest);
 48876        yield (_fs || _load_fs()).chmod(dest, '755');
 48877      }
 48878    });
 48879  
 48880    return function linkBin(_x, _x2) {
 48881      return _ref.apply(this, arguments);
 48882    };
 48883  })();
 48884  
 48885  var _packageHoister;
 48886  
 48887  function _load_packageHoister() {
 48888    return _packageHoister = _interopRequireDefault(__webpack_require__(524));
 48889  }
 48890  
 48891  var _constants;
 48892  
 48893  function _load_constants() {
 48894    return _constants = _interopRequireWildcard(__webpack_require__(8));
 48895  }
 48896  
 48897  var _promise;
 48898  
 48899  function _load_promise() {
 48900    return _promise = _interopRequireWildcard(__webpack_require__(51));
 48901  }
 48902  
 48903  var _normalizePattern2;
 48904  
 48905  function _load_normalizePattern() {
 48906    return _normalizePattern2 = __webpack_require__(37);
 48907  }
 48908  
 48909  var _misc;
 48910  
 48911  function _load_misc() {
 48912    return _misc = __webpack_require__(18);
 48913  }
 48914  
 48915  var _fs;
 48916  
 48917  function _load_fs() {
 48918    return _fs = _interopRequireWildcard(__webpack_require__(5));
 48919  }
 48920  
 48921  var _mutex;
 48922  
 48923  function _load_mutex() {
 48924    return _mutex = _interopRequireDefault(__webpack_require__(369));
 48925  }
 48926  
 48927  var _semver;
 48928  
 48929  function _load_semver() {
 48930    return _semver = __webpack_require__(170);
 48931  }
 48932  
 48933  var _workspaceLayout;
 48934  
 48935  function _load_workspaceLayout() {
 48936    return _workspaceLayout = _interopRequireDefault(__webpack_require__(90));
 48937  }
 48938  
 48939  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 48940  
 48941  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 48942  
 48943  const invariant = __webpack_require__(9);
 48944  
 48945  const cmdShim = __webpack_require__(202);
 48946  const path = __webpack_require__(0);
 48947  const semver = __webpack_require__(22);
 48948  // Concurrency for creating bin links disabled because of the issue #1961
 48949  const linkBinConcurrency = 1;
 48950  
 48951  class PackageLinker {
 48952    constructor(config, resolver) {
 48953      this.resolver = resolver;
 48954      this.reporter = config.reporter;
 48955      this.config = config;
 48956      this.artifacts = {};
 48957      this.topLevelBinLinking = true;
 48958      this.unplugged = [];
 48959    }
 48960  
 48961    setArtifacts(artifacts) {
 48962      this.artifacts = artifacts;
 48963    }
 48964  
 48965    setTopLevelBinLinking(topLevelBinLinking) {
 48966      this.topLevelBinLinking = topLevelBinLinking;
 48967    }
 48968  
 48969    linkSelfDependencies(pkg, pkgLoc, targetBinLoc, override = false) {
 48970      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 48971        targetBinLoc = path.join(targetBinLoc, '.bin');
 48972        yield (_fs || _load_fs()).mkdirp(targetBinLoc);
 48973        targetBinLoc = yield (_fs || _load_fs()).realpath(targetBinLoc);
 48974        pkgLoc = yield (_fs || _load_fs()).realpath(pkgLoc);
 48975        for (var _iterator = (0, (_misc || _load_misc()).entries)(pkg.bin), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 48976          var _ref3;
 48977  
 48978          if (_isArray) {
 48979            if (_i >= _iterator.length) break;
 48980            _ref3 = _iterator[_i++];
 48981          } else {
 48982            _i = _iterator.next();
 48983            if (_i.done) break;
 48984            _ref3 = _i.value;
 48985          }
 48986  
 48987          const _ref2 = _ref3;
 48988          const scriptName = _ref2[0];
 48989          const scriptCmd = _ref2[1];
 48990  
 48991          const dest = path.join(targetBinLoc, scriptName);
 48992          const src = path.join(pkgLoc, scriptCmd);
 48993          if (!(yield (_fs || _load_fs()).exists(src))) {
 48994            if (!override) {
 48995              // TODO maybe throw an error
 48996              continue;
 48997            }
 48998          }
 48999          yield linkBin(src, dest);
 49000        }
 49001      })();
 49002    }
 49003  
 49004    linkBinDependencies(pkg, dir) {
 49005      var _this = this;
 49006  
 49007      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 49008        const deps = [];
 49009  
 49010        const ref = pkg._reference;
 49011        invariant(ref, 'Package reference is missing');
 49012  
 49013        const remote = pkg._remote;
 49014        invariant(remote, 'Package remote is missing');
 49015  
 49016        // link up `bin scripts` in `dependencies`
 49017        for (var _iterator2 = ref.dependencies, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 49018          var _ref4;
 49019  
 49020          if (_isArray2) {
 49021            if (_i2 >= _iterator2.length) break;
 49022            _ref4 = _iterator2[_i2++];
 49023          } else {
 49024            _i2 = _iterator2.next();
 49025            if (_i2.done) break;
 49026            _ref4 = _i2.value;
 49027          }
 49028  
 49029          const pattern = _ref4;
 49030  
 49031          const dep = _this.resolver.getStrictResolvedPattern(pattern);
 49032          if (
 49033          // Missing locations means not installed inside node_modules
 49034          dep._reference && dep._reference.locations.length && dep.bin && Object.keys(dep.bin).length) {
 49035            const loc = yield _this.findNearestInstalledVersionOfPackage(dep, dir);
 49036            deps.push({ dep, loc });
 49037          }
 49038        }
 49039  
 49040        // link up the `bin` scripts in bundled dependencies
 49041        if (pkg.bundleDependencies) {
 49042          for (var _iterator3 = pkg.bundleDependencies, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 49043            var _ref5;
 49044  
 49045            if (_isArray3) {
 49046              if (_i3 >= _iterator3.length) break;
 49047              _ref5 = _iterator3[_i3++];
 49048            } else {
 49049              _i3 = _iterator3.next();
 49050              if (_i3.done) break;
 49051              _ref5 = _i3.value;
 49052            }
 49053  
 49054            const depName = _ref5;
 49055  
 49056            const locs = ref.locations.map(function (loc) {
 49057              return path.join(loc, _this.config.getFolder(pkg), depName);
 49058            });
 49059            try {
 49060              const dep = yield _this.config.readManifest(locs[0], remote.registry); //all of them should be the same
 49061  
 49062              if (dep.bin && Object.keys(dep.bin).length) {
 49063                deps.push(...locs.map(function (loc) {
 49064                  return { dep, loc };
 49065                }));
 49066              }
 49067            } catch (ex) {
 49068              if (ex.code !== 'ENOENT') {
 49069                throw ex;
 49070              }
 49071              // intentionally ignoring ENOENT error.
 49072              // bundledDependency either does not exist or does not contain a package.json
 49073            }
 49074          }
 49075        }
 49076  
 49077        // no deps to link
 49078        if (!deps.length) {
 49079          return;
 49080        }
 49081  
 49082        // write the executables
 49083        for (var _iterator4 = deps, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 49084          var _ref7;
 49085  
 49086          if (_isArray4) {
 49087            if (_i4 >= _iterator4.length) break;
 49088            _ref7 = _iterator4[_i4++];
 49089          } else {
 49090            _i4 = _iterator4.next();
 49091            if (_i4.done) break;
 49092            _ref7 = _i4.value;
 49093          }
 49094  
 49095          const _ref6 = _ref7;
 49096          const dep = _ref6.dep,
 49097                loc = _ref6.loc;
 49098  
 49099          if (dep._reference && dep._reference.locations.length) {
 49100            invariant(!dep._reference.isPlugnplay, "Plug'n'play packages should not be referenced here");
 49101            yield _this.linkSelfDependencies(dep, loc, dir);
 49102          }
 49103        }
 49104      })();
 49105    }
 49106  
 49107    //find the installation location of ref that would be used in binLoc based on node module resolution
 49108    findNearestInstalledVersionOfPackage(pkg, binLoc) {
 49109      var _this2 = this;
 49110  
 49111      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 49112        const ref = pkg._reference;
 49113        invariant(ref, 'expected pkg reference for ' + pkg.name);
 49114        const moduleFolder = _this2.config.getFolder(pkg);
 49115        yield (_fs || _load_fs()).mkdirp(binLoc);
 49116        const realBinLoc = yield (_fs || _load_fs()).realpath(binLoc);
 49117  
 49118        const allLocations = [...ref.locations];
 49119        const realLocations = yield Promise.all(ref.locations.map(function (loc) {
 49120          return (_fs || _load_fs()).realpath(loc);
 49121        }));
 49122        realLocations.forEach(function (loc) {
 49123          return allLocations.indexOf(loc) !== -1 || allLocations.push(loc);
 49124        });
 49125  
 49126        const locationBinLocPairs = allLocations.map(function (loc) {
 49127          return [loc, binLoc];
 49128        });
 49129        if (binLoc !== realBinLoc) {
 49130          locationBinLocPairs.push(...allLocations.map(function (loc) {
 49131            return [loc, realBinLoc];
 49132          }));
 49133        }
 49134  
 49135        const distancePairs = locationBinLocPairs.map(function ([loc, curBinLoc]) {
 49136          let distance = 0;
 49137          let curLoc = curBinLoc;
 49138          let notFound = false;
 49139  
 49140          while (path.join(curLoc, ref.name) !== loc && path.join(curLoc, moduleFolder, ref.name) !== loc) {
 49141            const next = path.dirname(curLoc);
 49142            if (curLoc === next) {
 49143              notFound = true;
 49144              break;
 49145            }
 49146  
 49147            distance++;
 49148            curLoc = next;
 49149          }
 49150          return notFound ? null : [loc, distance];
 49151        });
 49152  
 49153        //remove items where path was not found
 49154        const filteredDistancePairs = distancePairs.filter(function (d) {
 49155          return d;
 49156        });
 49157        filteredDistancePairs;
 49158  
 49159        invariant(filteredDistancePairs.length > 0, `could not find a copy of ${pkg.name} to link in ${binLoc}`);
 49160  
 49161        //get smallest distance from package location
 49162        const minItem = filteredDistancePairs.reduce(function (min, cur) {
 49163          return cur[1] < min[1] ? cur : min;
 49164        });
 49165  
 49166        invariant(minItem[1] >= 0, 'could not find a target for bin dir of ' + minItem.toString());
 49167        return minItem[0];
 49168      })();
 49169    }
 49170  
 49171    getFlatHoistedTree(patterns, workspaceLayout, { ignoreOptional } = {}) {
 49172      const hoister = new (_packageHoister || _load_packageHoister()).default(this.config, this.resolver, { ignoreOptional, workspaceLayout });
 49173      hoister.seed(patterns);
 49174      if (this.config.focus) {
 49175        hoister.markShallowWorkspaceEntries();
 49176      }
 49177      return hoister.init();
 49178    }
 49179  
 49180    copyModules(patterns, workspaceLayout, { linkDuplicates, ignoreOptional } = {}) {
 49181      var _this3 = this;
 49182  
 49183      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 49184        let flatTree = _this3.getFlatHoistedTree(patterns, workspaceLayout, { ignoreOptional });
 49185        // sorted tree makes file creation and copying not to interfere with each other
 49186        flatTree = flatTree.sort(function (dep1, dep2) {
 49187          return dep1[0].localeCompare(dep2[0]);
 49188        });
 49189  
 49190        // list of artifacts in modules to remove from extraneous removal
 49191        const artifactFiles = [];
 49192  
 49193        const copyQueue = new Map();
 49194        const hardlinkQueue = new Map();
 49195        const hardlinksEnabled = linkDuplicates && (yield (_fs || _load_fs()).hardlinksWork(_this3.config.cwd));
 49196  
 49197        const copiedSrcs = new Map();
 49198        const symlinkPaths = new Map();
 49199        for (var _iterator5 = flatTree, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
 49200          var _ref9;
 49201  
 49202          if (_isArray5) {
 49203            if (_i5 >= _iterator5.length) break;
 49204            _ref9 = _iterator5[_i5++];
 49205          } else {
 49206            _i5 = _iterator5.next();
 49207            if (_i5.done) break;
 49208            _ref9 = _i5.value;
 49209          }
 49210  
 49211          const _ref8 = _ref9;
 49212          const folder = _ref8[0];
 49213          var _ref8$ = _ref8[1];
 49214          const pkg = _ref8$.pkg;
 49215          const loc = _ref8$.loc;
 49216          const isShallow = _ref8$.isShallow;
 49217  
 49218          const remote = pkg._remote || { type: '' };
 49219          const ref = pkg._reference;
 49220          let dest = folder;
 49221          invariant(ref, 'expected package reference');
 49222  
 49223          let src = loc;
 49224          let type = '';
 49225          if (remote.type === 'link') {
 49226            // replace package source from incorrect cache location (workspaces and link: are not cached)
 49227            // with a symlink source
 49228            src = remote.reference;
 49229            type = 'symlink';
 49230          } else if (workspaceLayout && remote.type === 'workspace' && !isShallow) {
 49231            src = remote.reference;
 49232            type = 'symlink';
 49233            // to get real path for non hoisted dependencies
 49234            symlinkPaths.set(dest, src);
 49235          } else {
 49236            // backwards compatibility: get build artifacts from metadata
 49237            // does not apply to symlinked dependencies
 49238            const metadata = yield _this3.config.readPackageMetadata(src);
 49239            for (var _iterator15 = metadata.artifacts, _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) {
 49240              var _ref23;
 49241  
 49242              if (_isArray15) {
 49243                if (_i15 >= _iterator15.length) break;
 49244                _ref23 = _iterator15[_i15++];
 49245              } else {
 49246                _i15 = _iterator15.next();
 49247                if (_i15.done) break;
 49248                _ref23 = _i15.value;
 49249              }
 49250  
 49251              const file = _ref23;
 49252  
 49253              artifactFiles.push(path.join(dest, file));
 49254            }
 49255          }
 49256  
 49257          for (var _iterator16 = symlinkPaths.entries(), _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : _iterator16[Symbol.iterator]();;) {
 49258            var _ref25;
 49259  
 49260            if (_isArray16) {
 49261              if (_i16 >= _iterator16.length) break;
 49262              _ref25 = _iterator16[_i16++];
 49263            } else {
 49264              _i16 = _iterator16.next();
 49265              if (_i16.done) break;
 49266              _ref25 = _i16.value;
 49267            }
 49268  
 49269            const _ref24 = _ref25;
 49270            const symlink = _ref24[0];
 49271            const realpath = _ref24[1];
 49272  
 49273            if (dest.indexOf(symlink + path.sep) === 0) {
 49274              // after hoisting we end up with this structure
 49275              // root/node_modules/workspace-package(symlink)/node_modules/package-a
 49276              // fs.copy operations can't copy files through a symlink, so all the paths under workspace-package
 49277              // need to be replaced with a real path, except for the symlink root/node_modules/workspace-package
 49278              dest = dest.replace(symlink, realpath);
 49279            }
 49280          }
 49281  
 49282          if (_this3.config.plugnplayEnabled) {
 49283            ref.isPlugnplay = true;
 49284            if (yield _this3._isUnplugged(pkg, ref)) {
 49285              dest = _this3.config.generatePackageUnpluggedPath(ref);
 49286  
 49287              // We don't skip the copy if the unplugged package isn't materialized yet
 49288              if (yield (_fs || _load_fs()).exists(dest)) {
 49289                ref.addLocation(dest);
 49290                continue;
 49291              }
 49292            } else {
 49293              ref.addLocation(src);
 49294              continue;
 49295            }
 49296          }
 49297  
 49298          ref.addLocation(dest);
 49299  
 49300          const integrityArtifacts = _this3.artifacts[`${pkg.name}@${pkg.version}`];
 49301          if (integrityArtifacts) {
 49302            for (var _iterator17 = integrityArtifacts, _isArray17 = Array.isArray(_iterator17), _i17 = 0, _iterator17 = _isArray17 ? _iterator17 : _iterator17[Symbol.iterator]();;) {
 49303              var _ref26;
 49304  
 49305              if (_isArray17) {
 49306                if (_i17 >= _iterator17.length) break;
 49307                _ref26 = _iterator17[_i17++];
 49308              } else {
 49309                _i17 = _iterator17.next();
 49310                if (_i17.done) break;
 49311                _ref26 = _i17.value;
 49312              }
 49313  
 49314              const file = _ref26;
 49315  
 49316              artifactFiles.push(path.join(dest, file));
 49317            }
 49318          }
 49319  
 49320          const copiedDest = copiedSrcs.get(src);
 49321          if (!copiedDest) {
 49322            // no point to hardlink to a symlink
 49323            if (hardlinksEnabled && type !== 'symlink') {
 49324              copiedSrcs.set(src, dest);
 49325            }
 49326            copyQueue.set(dest, {
 49327              src,
 49328              dest,
 49329              type,
 49330              onFresh() {
 49331                if (ref) {
 49332                  ref.setFresh(true);
 49333                }
 49334              }
 49335            });
 49336          } else {
 49337            hardlinkQueue.set(dest, {
 49338              src: copiedDest,
 49339              dest,
 49340              onFresh() {
 49341                if (ref) {
 49342                  ref.setFresh(true);
 49343                }
 49344              }
 49345            });
 49346          }
 49347        }
 49348  
 49349        const possibleExtraneous = new Set();
 49350        const scopedPaths = new Set();
 49351  
 49352        const findExtraneousFiles = (() => {
 49353          var _ref10 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (basePath) {
 49354            for (var _iterator6 = _this3.config.registryFolders, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
 49355              var _ref11;
 49356  
 49357              if (_isArray6) {
 49358                if (_i6 >= _iterator6.length) break;
 49359                _ref11 = _iterator6[_i6++];
 49360              } else {
 49361                _i6 = _iterator6.next();
 49362                if (_i6.done) break;
 49363                _ref11 = _i6.value;
 49364              }
 49365  
 49366              const folder = _ref11;
 49367  
 49368              const loc = path.resolve(basePath, folder);
 49369  
 49370              if (yield (_fs || _load_fs()).exists(loc)) {
 49371                const files = yield (_fs || _load_fs()).readdir(loc);
 49372  
 49373                for (var _iterator7 = files, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
 49374                  var _ref12;
 49375  
 49376                  if (_isArray7) {
 49377                    if (_i7 >= _iterator7.length) break;
 49378                    _ref12 = _iterator7[_i7++];
 49379                  } else {
 49380                    _i7 = _iterator7.next();
 49381                    if (_i7.done) break;
 49382                    _ref12 = _i7.value;
 49383                  }
 49384  
 49385                  const file = _ref12;
 49386  
 49387                  const filepath = path.join(loc, file);
 49388  
 49389                  // it's a scope, not a package
 49390                  if (file[0] === '@') {
 49391                    scopedPaths.add(filepath);
 49392  
 49393                    for (var _iterator8 = yield (_fs || _load_fs()).readdir(filepath), _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {
 49394                      var _ref13;
 49395  
 49396                      if (_isArray8) {
 49397                        if (_i8 >= _iterator8.length) break;
 49398                        _ref13 = _iterator8[_i8++];
 49399                      } else {
 49400                        _i8 = _iterator8.next();
 49401                        if (_i8.done) break;
 49402                        _ref13 = _i8.value;
 49403                      }
 49404  
 49405                      const subfile = _ref13;
 49406  
 49407                      possibleExtraneous.add(path.join(filepath, subfile));
 49408                    }
 49409                  } else if (file[0] === '.' && file !== '.bin') {
 49410                    if (!(yield (_fs || _load_fs()).lstat(filepath)).isDirectory()) {
 49411                      possibleExtraneous.add(filepath);
 49412                    }
 49413                  } else {
 49414                    possibleExtraneous.add(filepath);
 49415                  }
 49416                }
 49417              }
 49418            }
 49419          });
 49420  
 49421          return function findExtraneousFiles(_x3) {
 49422            return _ref10.apply(this, arguments);
 49423          };
 49424        })();
 49425  
 49426        yield findExtraneousFiles(_this3.config.lockfileFolder);
 49427        if (workspaceLayout) {
 49428          for (var _iterator9 = Object.keys(workspaceLayout.workspaces), _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {
 49429            var _ref14;
 49430  
 49431            if (_isArray9) {
 49432              if (_i9 >= _iterator9.length) break;
 49433              _ref14 = _iterator9[_i9++];
 49434            } else {
 49435              _i9 = _iterator9.next();
 49436              if (_i9.done) break;
 49437              _ref14 = _i9.value;
 49438            }
 49439  
 49440            const workspaceName = _ref14;
 49441  
 49442            yield findExtraneousFiles(workspaceLayout.workspaces[workspaceName].loc);
 49443          }
 49444        }
 49445  
 49446        // If an Extraneous is an entry created via "yarn link", we prevent it from being overwritten.
 49447        // Unfortunately, the only way we can know if they have been created this way is to check if they
 49448        // are symlinks - problem is that it then conflicts with the newly introduced "link:" protocol,
 49449        // which also creates symlinks :( a somewhat weak fix is to check if the symlink target is registered
 49450        // inside the linkFolder, in which case we assume it has been created via "yarn link". Otherwise, we
 49451        // assume it's a link:-managed dependency, and overwrite it as usual.
 49452        const linkTargets = new Map();
 49453  
 49454        let linkedModules;
 49455        try {
 49456          linkedModules = yield (_fs || _load_fs()).readdir(_this3.config.linkFolder);
 49457        } catch (err) {
 49458          if (err.code === 'ENOENT') {
 49459            linkedModules = [];
 49460          } else {
 49461            throw err;
 49462          }
 49463        }
 49464  
 49465        // TODO: Consolidate this logic with `this.config.linkedModules` logic
 49466        for (var _iterator10 = linkedModules, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {
 49467          var _ref15;
 49468  
 49469          if (_isArray10) {
 49470            if (_i10 >= _iterator10.length) break;
 49471            _ref15 = _iterator10[_i10++];
 49472          } else {
 49473            _i10 = _iterator10.next();
 49474            if (_i10.done) break;
 49475            _ref15 = _i10.value;
 49476          }
 49477  
 49478          const entry = _ref15;
 49479  
 49480          const entryPath = path.join(_this3.config.linkFolder, entry);
 49481          const stat = yield (_fs || _load_fs()).lstat(entryPath);
 49482  
 49483          if (stat.isSymbolicLink()) {
 49484            try {
 49485              const entryTarget = yield (_fs || _load_fs()).realpath(entryPath);
 49486              linkTargets.set(entry, entryTarget);
 49487            } catch (err) {
 49488              _this3.reporter.warn(_this3.reporter.lang('linkTargetMissing', entry));
 49489              yield (_fs || _load_fs()).unlink(entryPath);
 49490            }
 49491          } else if (stat.isDirectory() && entry[0] === '@') {
 49492            // if the entry is directory beginning with '@', then we're dealing with a package scope, which
 49493            // means we must iterate inside to retrieve the package names it contains
 49494            const scopeName = entry;
 49495  
 49496            for (var _iterator18 = yield (_fs || _load_fs()).readdir(entryPath), _isArray18 = Array.isArray(_iterator18), _i18 = 0, _iterator18 = _isArray18 ? _iterator18 : _iterator18[Symbol.iterator]();;) {
 49497              var _ref27;
 49498  
 49499              if (_isArray18) {
 49500                if (_i18 >= _iterator18.length) break;
 49501                _ref27 = _iterator18[_i18++];
 49502              } else {
 49503                _i18 = _iterator18.next();
 49504                if (_i18.done) break;
 49505                _ref27 = _i18.value;
 49506              }
 49507  
 49508              const entry2 = _ref27;
 49509  
 49510              const entryPath2 = path.join(entryPath, entry2);
 49511              const stat2 = yield (_fs || _load_fs()).lstat(entryPath2);
 49512  
 49513              if (stat2.isSymbolicLink()) {
 49514                const packageName = `${scopeName}/${entry2}`;
 49515                try {
 49516                  const entryTarget = yield (_fs || _load_fs()).realpath(entryPath2);
 49517                  linkTargets.set(packageName, entryTarget);
 49518                } catch (err) {
 49519                  _this3.reporter.warn(_this3.reporter.lang('linkTargetMissing', packageName));
 49520                  yield (_fs || _load_fs()).unlink(entryPath2);
 49521                }
 49522              }
 49523            }
 49524          }
 49525        }
 49526  
 49527        for (var _iterator11 = possibleExtraneous, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) {
 49528          var _ref16;
 49529  
 49530          if (_isArray11) {
 49531            if (_i11 >= _iterator11.length) break;
 49532            _ref16 = _iterator11[_i11++];
 49533          } else {
 49534            _i11 = _iterator11.next();
 49535            if (_i11.done) break;
 49536            _ref16 = _i11.value;
 49537          }
 49538  
 49539          const loc = _ref16;
 49540  
 49541          let packageName = path.basename(loc);
 49542          const scopeName = path.basename(path.dirname(loc));
 49543  
 49544          if (scopeName[0] === `@`) {
 49545            packageName = `${scopeName}/${packageName}`;
 49546          }
 49547  
 49548          if ((yield (_fs || _load_fs()).lstat(loc)).isSymbolicLink() && linkTargets.has(packageName) && linkTargets.get(packageName) === (yield (_fs || _load_fs()).realpath(loc))) {
 49549            possibleExtraneous.delete(loc);
 49550            copyQueue.delete(loc);
 49551          }
 49552        }
 49553  
 49554        //
 49555        let tick;
 49556        yield (_fs || _load_fs()).copyBulk(Array.from(copyQueue.values()), _this3.reporter, {
 49557          possibleExtraneous,
 49558          artifactFiles,
 49559  
 49560          ignoreBasenames: [(_constants || _load_constants()).METADATA_FILENAME, (_constants || _load_constants()).TARBALL_FILENAME, '.bin'],
 49561  
 49562          onStart: function onStart(num) {
 49563            tick = _this3.reporter.progress(num);
 49564          },
 49565  
 49566          onProgress(src) {
 49567            if (tick) {
 49568              tick();
 49569            }
 49570          }
 49571        });
 49572  
 49573        yield (_fs || _load_fs()).hardlinkBulk(Array.from(hardlinkQueue.values()), _this3.reporter, {
 49574          possibleExtraneous,
 49575          artifactFiles,
 49576  
 49577          onStart: function onStart(num) {
 49578            tick = _this3.reporter.progress(num);
 49579          },
 49580  
 49581          onProgress(src) {
 49582            if (tick) {
 49583              tick();
 49584            }
 49585          }
 49586        });
 49587  
 49588        // remove all extraneous files that weren't in the tree
 49589        for (var _iterator12 = possibleExtraneous, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) {
 49590          var _ref17;
 49591  
 49592          if (_isArray12) {
 49593            if (_i12 >= _iterator12.length) break;
 49594            _ref17 = _iterator12[_i12++];
 49595          } else {
 49596            _i12 = _iterator12.next();
 49597            if (_i12.done) break;
 49598            _ref17 = _i12.value;
 49599          }
 49600  
 49601          const loc = _ref17;
 49602  
 49603          _this3.reporter.verbose(_this3.reporter.lang('verboseFileRemoveExtraneous', loc));
 49604          yield (_fs || _load_fs()).unlink(loc);
 49605        }
 49606  
 49607        // remove any empty scoped directories
 49608        for (var _iterator13 = scopedPaths, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) {
 49609          var _ref18;
 49610  
 49611          if (_isArray13) {
 49612            if (_i13 >= _iterator13.length) break;
 49613            _ref18 = _iterator13[_i13++];
 49614          } else {
 49615            _i13 = _iterator13.next();
 49616            if (_i13.done) break;
 49617            _ref18 = _i13.value;
 49618          }
 49619  
 49620          const scopedPath = _ref18;
 49621  
 49622          const files = yield (_fs || _load_fs()).readdir(scopedPath);
 49623          if (files.length === 0) {
 49624            yield (_fs || _load_fs()).unlink(scopedPath);
 49625          }
 49626        }
 49627  
 49628        // create binary links
 49629        if (_this3.config.getOption('bin-links') && _this3.config.binLinks !== false) {
 49630          const topLevelDependencies = _this3.determineTopLevelBinLinkOrder(flatTree);
 49631          const tickBin = _this3.reporter.progress(flatTree.length + topLevelDependencies.length);
 49632  
 49633          // create links in transient dependencies
 49634          yield (_promise || _load_promise()).queue(flatTree, (() => {
 49635            var _ref19 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* ([dest, { pkg, isNohoist, parts }]) {
 49636              if (pkg._reference && pkg._reference.locations.length && !pkg._reference.isPlugnplay) {
 49637                const binLoc = path.join(dest, _this3.config.getFolder(pkg));
 49638                yield _this3.linkBinDependencies(pkg, binLoc);
 49639                if (isNohoist) {
 49640                  // if nohoist, we need to override the binLink to point to the local destination
 49641                  const parentBinLoc = _this3.getParentBinLoc(parts, flatTree);
 49642                  yield _this3.linkSelfDependencies(pkg, dest, parentBinLoc, true);
 49643                }
 49644                tickBin();
 49645              }
 49646              tickBin();
 49647            });
 49648  
 49649            return function (_x4) {
 49650              return _ref19.apply(this, arguments);
 49651            };
 49652          })(), linkBinConcurrency);
 49653  
 49654          // create links at top level for all dependencies.
 49655          yield (_promise || _load_promise()).queue(topLevelDependencies, (() => {
 49656            var _ref20 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* ([dest, { pkg }]) {
 49657              if (pkg._reference && pkg._reference.locations.length && !pkg._reference.isPlugnplay && pkg.bin && Object.keys(pkg.bin).length) {
 49658                let binLoc;
 49659                if (_this3.config.modulesFolder) {
 49660                  binLoc = path.join(_this3.config.modulesFolder);
 49661                } else {
 49662                  binLoc = path.join(_this3.config.lockfileFolder, _this3.config.getFolder(pkg));
 49663                }
 49664                yield _this3.linkSelfDependencies(pkg, dest, binLoc);
 49665              }
 49666              tickBin();
 49667            });
 49668  
 49669            return function (_x5) {
 49670              return _ref20.apply(this, arguments);
 49671            };
 49672          })(), linkBinConcurrency);
 49673        }
 49674  
 49675        for (var _iterator14 = flatTree, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) {
 49676          var _ref22;
 49677  
 49678          if (_isArray14) {
 49679            if (_i14 >= _iterator14.length) break;
 49680            _ref22 = _iterator14[_i14++];
 49681          } else {
 49682            _i14 = _iterator14.next();
 49683            if (_i14.done) break;
 49684            _ref22 = _i14.value;
 49685          }
 49686  
 49687          const _ref21 = _ref22;
 49688          const pkg = _ref21[1].pkg;
 49689  
 49690          yield _this3._warnForMissingBundledDependencies(pkg);
 49691        }
 49692      })();
 49693    }
 49694  
 49695    _buildTreeHash(flatTree) {
 49696      const hash = new Map();
 49697      for (var _iterator19 = flatTree, _isArray19 = Array.isArray(_iterator19), _i19 = 0, _iterator19 = _isArray19 ? _iterator19 : _iterator19[Symbol.iterator]();;) {
 49698        var _ref29;
 49699  
 49700        if (_isArray19) {
 49701          if (_i19 >= _iterator19.length) break;
 49702          _ref29 = _iterator19[_i19++];
 49703        } else {
 49704          _i19 = _iterator19.next();
 49705          if (_i19.done) break;
 49706          _ref29 = _i19.value;
 49707        }
 49708  
 49709        const _ref28 = _ref29;
 49710        const dest = _ref28[0];
 49711        const hoistManifest = _ref28[1];
 49712  
 49713        const key = hoistManifest.parts.join('#');
 49714        hash.set(key, [dest, hoistManifest]);
 49715      }
 49716      this._treeHash = hash;
 49717      return hash;
 49718    }
 49719  
 49720    getParentBinLoc(parts, flatTree) {
 49721      const hash = this._treeHash || this._buildTreeHash(flatTree);
 49722      const parent = parts.slice(0, -1).join('#');
 49723      const tuple = hash.get(parent);
 49724      if (!tuple) {
 49725        throw new Error(`failed to get parent '${parent}' binLoc`);
 49726      }
 49727      const dest = tuple[0],
 49728            hoistManifest = tuple[1];
 49729  
 49730      const parentBinLoc = path.join(dest, this.config.getFolder(hoistManifest.pkg));
 49731  
 49732      return parentBinLoc;
 49733    }
 49734  
 49735    determineTopLevelBinLinkOrder(flatTree) {
 49736      const linksToCreate = new Map();
 49737      for (var _iterator20 = flatTree, _isArray20 = Array.isArray(_iterator20), _i20 = 0, _iterator20 = _isArray20 ? _iterator20 : _iterator20[Symbol.iterator]();;) {
 49738        var _ref31;
 49739  
 49740        if (_isArray20) {
 49741          if (_i20 >= _iterator20.length) break;
 49742          _ref31 = _iterator20[_i20++];
 49743        } else {
 49744          _i20 = _iterator20.next();
 49745          if (_i20.done) break;
 49746          _ref31 = _i20.value;
 49747        }
 49748  
 49749        const _ref30 = _ref31;
 49750        const dest = _ref30[0];
 49751        const hoistManifest = _ref30[1];
 49752        const pkg = hoistManifest.pkg,
 49753              isDirectRequire = hoistManifest.isDirectRequire,
 49754              isNohoist = hoistManifest.isNohoist,
 49755              isShallow = hoistManifest.isShallow;
 49756        const name = pkg.name;
 49757  
 49758        // nohoist and shallow packages should not be linked at topLevel bin
 49759  
 49760        if (!isNohoist && !isShallow && (isDirectRequire || this.topLevelBinLinking && !linksToCreate.has(name))) {
 49761          linksToCreate.set(name, [dest, hoistManifest]);
 49762        }
 49763      }
 49764  
 49765      // Sort the array so that direct dependencies will be linked last.
 49766      // Bin links are overwritten if they already exist, so this will cause direct deps to take precedence.
 49767      // If someone finds this to be incorrect later, you could also consider sorting descending by
 49768      //   `linkToCreate.level` which is the dependency tree depth. Direct deps will have level 0 and transitive
 49769      //   deps will have level > 0.
 49770      const transientBins = [];
 49771      const topLevelBins = [];
 49772      for (var _iterator21 = Array.from(linksToCreate.values()), _isArray21 = Array.isArray(_iterator21), _i21 = 0, _iterator21 = _isArray21 ? _iterator21 : _iterator21[Symbol.iterator]();;) {
 49773        var _ref32;
 49774  
 49775        if (_isArray21) {
 49776          if (_i21 >= _iterator21.length) break;
 49777          _ref32 = _iterator21[_i21++];
 49778        } else {
 49779          _i21 = _iterator21.next();
 49780          if (_i21.done) break;
 49781          _ref32 = _i21.value;
 49782        }
 49783  
 49784        const linkToCreate = _ref32;
 49785  
 49786        if (linkToCreate[1].isDirectRequire) {
 49787          topLevelBins.push(linkToCreate);
 49788        } else {
 49789          transientBins.push(linkToCreate);
 49790        }
 49791      }
 49792      return [...transientBins, ...topLevelBins];
 49793    }
 49794  
 49795    resolvePeerModules() {
 49796      for (var _iterator22 = this.resolver.getManifests(), _isArray22 = Array.isArray(_iterator22), _i22 = 0, _iterator22 = _isArray22 ? _iterator22 : _iterator22[Symbol.iterator]();;) {
 49797        var _ref33;
 49798  
 49799        if (_isArray22) {
 49800          if (_i22 >= _iterator22.length) break;
 49801          _ref33 = _iterator22[_i22++];
 49802        } else {
 49803          _i22 = _iterator22.next();
 49804          if (_i22.done) break;
 49805          _ref33 = _i22.value;
 49806        }
 49807  
 49808        const pkg = _ref33;
 49809  
 49810        const peerDeps = pkg.peerDependencies;
 49811        const peerDepsMeta = pkg.peerDependenciesMeta;
 49812  
 49813        if (!peerDeps) {
 49814          continue;
 49815        }
 49816  
 49817        const ref = pkg._reference;
 49818        invariant(ref, 'Package reference is missing');
 49819  
 49820        // TODO: We are taking the "shortest" ref tree but there may be multiple ref trees with the same length
 49821        const refTree = ref.requests.map(req => req.parentNames).sort((arr1, arr2) => arr1.length - arr2.length)[0];
 49822  
 49823        const getLevelDistance = pkgRef => {
 49824          let minDistance = Infinity;
 49825          for (var _iterator23 = pkgRef.requests, _isArray23 = Array.isArray(_iterator23), _i23 = 0, _iterator23 = _isArray23 ? _iterator23 : _iterator23[Symbol.iterator]();;) {
 49826            var _ref34;
 49827  
 49828            if (_isArray23) {
 49829              if (_i23 >= _iterator23.length) break;
 49830              _ref34 = _iterator23[_i23++];
 49831            } else {
 49832              _i23 = _iterator23.next();
 49833              if (_i23.done) break;
 49834              _ref34 = _i23.value;
 49835            }
 49836  
 49837            const req = _ref34;
 49838  
 49839            const distance = refTree.length - req.parentNames.length;
 49840  
 49841            if (distance >= 0 && distance < minDistance && req.parentNames.every((name, idx) => name === refTree[idx])) {
 49842              minDistance = distance;
 49843            }
 49844          }
 49845  
 49846          return minDistance;
 49847        };
 49848  
 49849        for (const peerDepName in peerDeps) {
 49850          const range = peerDeps[peerDepName];
 49851          const meta = peerDepsMeta && peerDepsMeta[peerDepName];
 49852  
 49853          const isOptional = !!(meta && meta.optional);
 49854  
 49855          const peerPkgs = this.resolver.getAllInfoForPackageName(peerDepName);
 49856  
 49857          let peerError = 'unmetPeer';
 49858          let resolvedLevelDistance = Infinity;
 49859          let resolvedPeerPkg;
 49860          for (var _iterator24 = peerPkgs, _isArray24 = Array.isArray(_iterator24), _i24 = 0, _iterator24 = _isArray24 ? _iterator24 : _iterator24[Symbol.iterator]();;) {
 49861            var _ref35;
 49862  
 49863            if (_isArray24) {
 49864              if (_i24 >= _iterator24.length) break;
 49865              _ref35 = _iterator24[_i24++];
 49866            } else {
 49867              _i24 = _iterator24.next();
 49868              if (_i24.done) break;
 49869              _ref35 = _i24.value;
 49870            }
 49871  
 49872            const peerPkg = _ref35;
 49873  
 49874            const peerPkgRef = peerPkg._reference;
 49875            if (!(peerPkgRef && peerPkgRef.patterns)) {
 49876              continue;
 49877            }
 49878            const levelDistance = getLevelDistance(peerPkgRef);
 49879            if (isFinite(levelDistance) && levelDistance < resolvedLevelDistance) {
 49880              if (this._satisfiesPeerDependency(range, peerPkgRef.version)) {
 49881                resolvedLevelDistance = levelDistance;
 49882                resolvedPeerPkg = peerPkgRef;
 49883              } else {
 49884                peerError = 'incorrectPeer';
 49885              }
 49886            }
 49887          }
 49888  
 49889          if (resolvedPeerPkg) {
 49890            ref.addDependencies(resolvedPeerPkg.patterns);
 49891            this.reporter.verbose(this.reporter.lang('selectedPeer', `${pkg.name}@${pkg.version}`, `${peerDepName}@${resolvedPeerPkg.version}`, resolvedPeerPkg.level));
 49892          } else if (!isOptional) {
 49893            this.reporter.warn(this.reporter.lang(peerError, `${refTree.join(' > ')} > ${pkg.name}@${pkg.version}`, `${peerDepName}@${range}`));
 49894          }
 49895        }
 49896      }
 49897    }
 49898  
 49899    _satisfiesPeerDependency(range, version) {
 49900      return range === '*' || (0, (_semver || _load_semver()).satisfiesWithPrereleases)(version, range, this.config.looseSemver);
 49901    }
 49902  
 49903    _warnForMissingBundledDependencies(pkg) {
 49904      var _this4 = this;
 49905  
 49906      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 49907        const ref = pkg._reference;
 49908        invariant(ref, 'missing package ref ' + pkg.name);
 49909  
 49910        if (pkg.bundleDependencies) {
 49911          for (var _iterator25 = pkg.bundleDependencies, _isArray25 = Array.isArray(_iterator25), _i25 = 0, _iterator25 = _isArray25 ? _iterator25 : _iterator25[Symbol.iterator]();;) {
 49912            var _ref36;
 49913  
 49914            if (_isArray25) {
 49915              if (_i25 >= _iterator25.length) break;
 49916              _ref36 = _iterator25[_i25++];
 49917            } else {
 49918              _i25 = _iterator25.next();
 49919              if (_i25.done) break;
 49920              _ref36 = _i25.value;
 49921            }
 49922  
 49923            const depName = _ref36;
 49924  
 49925            const locs = ref.locations.map(function (loc) {
 49926              return path.join(loc, _this4.config.getFolder(pkg), depName);
 49927            });
 49928            const locsExist = yield Promise.all(locs.map(function (loc) {
 49929              return (_fs || _load_fs()).exists(loc);
 49930            }));
 49931            if (locsExist.some(function (e) {
 49932              return !e;
 49933            })) {
 49934              //if any of the locs do not exist
 49935              const pkgHuman = `${pkg.name}@${pkg.version}`;
 49936              _this4.reporter.warn(_this4.reporter.lang('missingBundledDependency', pkgHuman, depName));
 49937            }
 49938          }
 49939        }
 49940      })();
 49941    }
 49942  
 49943    _isUnplugged(pkg, ref) {
 49944      var _this5 = this;
 49945  
 49946      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 49947        // If an unplugged folder exists for the specified package, we simply use it
 49948        if (yield (_fs || _load_fs()).exists(_this5.config.generatePackageUnpluggedPath(ref))) {
 49949          return true;
 49950        }
 49951  
 49952        // If the package has a postinstall script, we also unplug it (otherwise they would run into the cache)
 49953        if (!_this5.config.ignoreScripts && pkg.scripts && (pkg.scripts.preinstall || pkg.scripts.install || pkg.scripts.postinstall)) {
 49954          return true;
 49955        }
 49956  
 49957        // Check whether the user explicitly requested for the package to be unplugged
 49958        return _this5.unplugged.some(function (patternToUnplug) {
 49959          var _normalizePattern = (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(patternToUnplug);
 49960  
 49961          const name = _normalizePattern.name,
 49962                range = _normalizePattern.range,
 49963                hasVersion = _normalizePattern.hasVersion;
 49964  
 49965          const satisfiesSemver = hasVersion ? semver.satisfies(ref.version, range) : true;
 49966          return name === ref.name && satisfiesSemver;
 49967        });
 49968      })();
 49969    }
 49970  
 49971    init(patterns, workspaceLayout, { linkDuplicates, ignoreOptional } = {}) {
 49972      var _this6 = this;
 49973  
 49974      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 49975        _this6.resolvePeerModules();
 49976        yield _this6.copyModules(patterns, workspaceLayout, { linkDuplicates, ignoreOptional });
 49977  
 49978        if (!_this6.config.plugnplayEnabled) {
 49979          yield (_fs || _load_fs()).unlink(`${_this6.config.lockfileFolder}/${(_constants || _load_constants()).PNP_FILENAME}`);
 49980        }
 49981      })();
 49982    }
 49983  }
 49984  exports.default = PackageLinker;
 49985  
 49986  /***/ }),
 49987  /* 210 */
 49988  /***/ (function(module, exports, __webpack_require__) {
 49989  
 49990  "use strict";
 49991  
 49992  
 49993  Object.defineProperty(exports, "__esModule", {
 49994    value: true
 49995  });
 49996  exports.clearLine = clearLine;
 49997  exports.toStartOfLine = toStartOfLine;
 49998  exports.writeOnNthLine = writeOnNthLine;
 49999  exports.clearNthLine = clearNthLine;
 50000  
 50001  var _tty;
 50002  
 50003  function _load_tty() {
 50004    return _tty = _interopRequireDefault(__webpack_require__(104));
 50005  }
 50006  
 50007  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 50008  
 50009  const readline = __webpack_require__(198);
 50010  
 50011  var _require = __webpack_require__(30);
 50012  
 50013  const supportsColor = _require.supportsColor;
 50014  
 50015  
 50016  const CLEAR_WHOLE_LINE = 0;
 50017  const CLEAR_RIGHT_OF_CURSOR = 1;
 50018  
 50019  function clearLine(stdout) {
 50020    if (!supportsColor) {
 50021      if (stdout instanceof (_tty || _load_tty()).default.WriteStream) {
 50022        if (stdout.columns > 0) {
 50023          stdout.write(`\r${' '.repeat(stdout.columns - 1)}`);
 50024        }
 50025        stdout.write(`\r`);
 50026      }
 50027      return;
 50028    }
 50029  
 50030    readline.clearLine(stdout, CLEAR_WHOLE_LINE);
 50031    readline.cursorTo(stdout, 0);
 50032  }
 50033  
 50034  function toStartOfLine(stdout) {
 50035    if (!supportsColor) {
 50036      stdout.write('\r');
 50037      return;
 50038    }
 50039  
 50040    readline.cursorTo(stdout, 0);
 50041  }
 50042  
 50043  function writeOnNthLine(stdout, n, msg) {
 50044    if (!supportsColor) {
 50045      return;
 50046    }
 50047  
 50048    if (n == 0) {
 50049      readline.cursorTo(stdout, 0);
 50050      stdout.write(msg);
 50051      readline.clearLine(stdout, CLEAR_RIGHT_OF_CURSOR);
 50052      return;
 50053    }
 50054    readline.cursorTo(stdout, 0);
 50055    readline.moveCursor(stdout, 0, -n);
 50056    stdout.write(msg);
 50057    readline.clearLine(stdout, CLEAR_RIGHT_OF_CURSOR);
 50058    readline.cursorTo(stdout, 0);
 50059    readline.moveCursor(stdout, 0, n);
 50060  }
 50061  
 50062  function clearNthLine(stdout, n) {
 50063    if (!supportsColor) {
 50064      return;
 50065    }
 50066  
 50067    if (n == 0) {
 50068      clearLine(stdout);
 50069      return;
 50070    }
 50071    readline.cursorTo(stdout, 0);
 50072    readline.moveCursor(stdout, 0, -n);
 50073    readline.clearLine(stdout, CLEAR_WHOLE_LINE);
 50074    readline.moveCursor(stdout, 0, n);
 50075  }
 50076  
 50077  /***/ }),
 50078  /* 211 */
 50079  /***/ (function(module, exports, __webpack_require__) {
 50080  
 50081  "use strict";
 50082  
 50083  
 50084  Object.defineProperty(exports, "__esModule", {
 50085    value: true
 50086  });
 50087  
 50088  var _extends2;
 50089  
 50090  function _load_extends() {
 50091    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 50092  }
 50093  
 50094  var _baseReporter;
 50095  
 50096  function _load_baseReporter() {
 50097    return _baseReporter = _interopRequireDefault(__webpack_require__(108));
 50098  }
 50099  
 50100  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 50101  
 50102  class JSONReporter extends (_baseReporter || _load_baseReporter()).default {
 50103    constructor(opts) {
 50104      super(opts);
 50105  
 50106      this._activityId = 0;
 50107      this._progressId = 0;
 50108    }
 50109  
 50110    _dump(type, data, error) {
 50111      let stdout = this.stdout;
 50112      if (error) {
 50113        stdout = this.stderr;
 50114      }
 50115      stdout.write(`${JSON.stringify({ type, data })}\n`);
 50116    }
 50117  
 50118    _verbose(msg) {
 50119      this._dump('verbose', msg);
 50120    }
 50121  
 50122    list(type, items, hints) {
 50123      this._dump('list', { type, items, hints });
 50124    }
 50125  
 50126    tree(type, trees) {
 50127      this._dump('tree', { type, trees });
 50128    }
 50129  
 50130    step(current, total, message) {
 50131      this._dump('step', { message, current, total });
 50132    }
 50133  
 50134    inspect(value) {
 50135      this._dump('inspect', value);
 50136    }
 50137  
 50138    footer(showPeakMemory) {
 50139      this._dump('finished', this.getTotalTime());
 50140    }
 50141  
 50142    log(msg) {
 50143      this._dump('log', msg);
 50144    }
 50145  
 50146    command(msg) {
 50147      this._dump('command', msg);
 50148    }
 50149  
 50150    table(head, body) {
 50151      this._dump('table', { head, body });
 50152    }
 50153  
 50154    success(msg) {
 50155      this._dump('success', msg);
 50156    }
 50157  
 50158    error(msg) {
 50159      this._dump('error', msg, true);
 50160    }
 50161  
 50162    warn(msg) {
 50163      this._dump('warning', msg, true);
 50164    }
 50165  
 50166    info(msg) {
 50167      this._dump('info', msg);
 50168    }
 50169  
 50170    activitySet(total, workers) {
 50171      if (!this.isTTY || this.noProgress) {
 50172        return super.activitySet(total, workers);
 50173      }
 50174  
 50175      const id = this._activityId++;
 50176      this._dump('activitySetStart', { id, total, workers });
 50177  
 50178      const spinners = [];
 50179      for (let i = 0; i < workers; i++) {
 50180        let current = 0;
 50181        let header = '';
 50182  
 50183        spinners.push({
 50184          clear() {},
 50185          setPrefix(_current, _header) {
 50186            current = _current;
 50187            header = _header;
 50188          },
 50189          tick: msg => {
 50190            this._dump('activitySetTick', {
 50191              id,
 50192              header,
 50193              current,
 50194              worker: i,
 50195              message: msg
 50196            });
 50197          },
 50198          end() {}
 50199        });
 50200      }
 50201  
 50202      return {
 50203        spinners,
 50204        end: () => {
 50205          this._dump('activitySetEnd', { id });
 50206        }
 50207      };
 50208    }
 50209  
 50210    activity() {
 50211      return this._activity({});
 50212    }
 50213  
 50214    _activity(data) {
 50215      if (!this.isTTY || this.noProgress) {
 50216        return {
 50217          tick() {},
 50218          end() {}
 50219        };
 50220      }
 50221  
 50222      const id = this._activityId++;
 50223      this._dump('activityStart', (0, (_extends2 || _load_extends()).default)({ id }, data));
 50224  
 50225      return {
 50226        tick: name => {
 50227          this._dump('activityTick', { id, name });
 50228        },
 50229  
 50230        end: () => {
 50231          this._dump('activityEnd', { id });
 50232        }
 50233      };
 50234    }
 50235  
 50236    progress(total) {
 50237      if (this.noProgress) {
 50238        return function () {
 50239          // noop
 50240        };
 50241      }
 50242  
 50243      const id = this._progressId++;
 50244      let current = 0;
 50245      this._dump('progressStart', { id, total });
 50246  
 50247      return () => {
 50248        current++;
 50249        this._dump('progressTick', { id, current });
 50250  
 50251        if (current === total) {
 50252          this._dump('progressFinish', { id });
 50253        }
 50254      };
 50255    }
 50256  
 50257    auditAction(recommendation) {
 50258      this._dump('auditAction', recommendation);
 50259    }
 50260  
 50261    auditAdvisory(resolution, auditAdvisory) {
 50262      this._dump('auditAdvisory', { resolution, advisory: auditAdvisory });
 50263    }
 50264  
 50265    auditSummary(auditMetadata) {
 50266      this._dump('auditSummary', auditMetadata);
 50267    }
 50268  }
 50269  exports.default = JSONReporter;
 50270  
 50271  /***/ }),
 50272  /* 212 */
 50273  /***/ (function(module, exports, __webpack_require__) {
 50274  
 50275  "use strict";
 50276  
 50277  
 50278  Object.defineProperty(exports, "__esModule", {
 50279    value: true
 50280  });
 50281  exports.shouldUpdateLockfile = undefined;
 50282  
 50283  var _semver;
 50284  
 50285  function _load_semver() {
 50286    return _semver = _interopRequireDefault(__webpack_require__(22));
 50287  }
 50288  
 50289  var _minimatch;
 50290  
 50291  function _load_minimatch() {
 50292    return _minimatch = _interopRequireDefault(__webpack_require__(82));
 50293  }
 50294  
 50295  var _map;
 50296  
 50297  function _load_map() {
 50298    return _map = _interopRequireDefault(__webpack_require__(29));
 50299  }
 50300  
 50301  var _normalizePattern2;
 50302  
 50303  function _load_normalizePattern() {
 50304    return _normalizePattern2 = __webpack_require__(37);
 50305  }
 50306  
 50307  var _parsePackagePath;
 50308  
 50309  function _load_parsePackagePath() {
 50310    return _parsePackagePath = _interopRequireDefault(__webpack_require__(370));
 50311  }
 50312  
 50313  var _parsePackagePath2;
 50314  
 50315  function _load_parsePackagePath2() {
 50316    return _parsePackagePath2 = __webpack_require__(370);
 50317  }
 50318  
 50319  var _resolvers;
 50320  
 50321  function _load_resolvers() {
 50322    return _resolvers = __webpack_require__(78);
 50323  }
 50324  
 50325  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 50326  
 50327  const DIRECTORY_SEPARATOR = '/';
 50328  const GLOBAL_NESTED_DEP_PATTERN = '**/';
 50329  
 50330  class ResolutionMap {
 50331    constructor(config) {
 50332      this.resolutionsByPackage = (0, (_map || _load_map()).default)();
 50333      this.config = config;
 50334      this.reporter = config.reporter;
 50335      this.delayQueue = new Set();
 50336    }
 50337  
 50338    init(resolutions = {}) {
 50339      for (const globPattern in resolutions) {
 50340        const info = this.parsePatternInfo(globPattern, resolutions[globPattern]);
 50341  
 50342        if (info) {
 50343          const resolution = this.resolutionsByPackage[info.name] || [];
 50344          this.resolutionsByPackage[info.name] = [...resolution, info];
 50345        }
 50346      }
 50347    }
 50348  
 50349    addToDelayQueue(req) {
 50350      this.delayQueue.add(req);
 50351    }
 50352  
 50353    parsePatternInfo(globPattern, range) {
 50354      if (!(0, (_parsePackagePath2 || _load_parsePackagePath2()).isValidPackagePath)(globPattern)) {
 50355        this.reporter.warn(this.reporter.lang('invalidResolutionName', globPattern));
 50356        return null;
 50357      }
 50358  
 50359      const directories = (0, (_parsePackagePath || _load_parsePackagePath()).default)(globPattern);
 50360      const name = directories.pop();
 50361  
 50362      if (!(_semver || _load_semver()).default.validRange(range) && !(0, (_resolvers || _load_resolvers()).getExoticResolver)(range)) {
 50363        this.reporter.warn(this.reporter.lang('invalidResolutionVersion', range));
 50364        return null;
 50365      }
 50366  
 50367      // For legacy support of resolutions, replace `name` with `**/name`
 50368      if (name === globPattern) {
 50369        globPattern = `${GLOBAL_NESTED_DEP_PATTERN}${name}`;
 50370      }
 50371  
 50372      return {
 50373        name,
 50374        range,
 50375        globPattern,
 50376        pattern: `${name}@${range}`
 50377      };
 50378    }
 50379  
 50380    find(reqPattern, parentNames) {
 50381      var _normalizePattern = (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(reqPattern);
 50382  
 50383      const name = _normalizePattern.name,
 50384            reqRange = _normalizePattern.range;
 50385  
 50386      const resolutions = this.resolutionsByPackage[name];
 50387  
 50388      if (!resolutions) {
 50389        return '';
 50390      }
 50391  
 50392      const modulePath = [...parentNames, name].join(DIRECTORY_SEPARATOR);
 50393  
 50394      var _ref = resolutions.find(({ globPattern }) => (0, (_minimatch || _load_minimatch()).default)(modulePath, globPattern)) || {};
 50395  
 50396      const pattern = _ref.pattern,
 50397            range = _ref.range;
 50398  
 50399  
 50400      if (pattern) {
 50401        if ((_semver || _load_semver()).default.validRange(reqRange) && (_semver || _load_semver()).default.valid(range) && !(_semver || _load_semver()).default.satisfies(range, reqRange)) {
 50402          this.reporter.warn(this.reporter.lang('incompatibleResolutionVersion', pattern, reqPattern));
 50403        }
 50404      }
 50405  
 50406      return pattern;
 50407    }
 50408  }
 50409  
 50410  exports.default = ResolutionMap;
 50411  const shouldUpdateLockfile = exports.shouldUpdateLockfile = (lockfileEntry, resolutionEntry) => {
 50412    if (!lockfileEntry || !resolutionEntry) {
 50413      return false;
 50414    }
 50415  
 50416    return lockfileEntry.resolved !== resolutionEntry.remote.resolved;
 50417  };
 50418  
 50419  /***/ }),
 50420  /* 213 */
 50421  /***/ (function(module, exports, __webpack_require__) {
 50422  
 50423  "use strict";
 50424  
 50425  
 50426  Object.defineProperty(exports, "__esModule", {
 50427    value: true
 50428  });
 50429  exports.FILE_PROTOCOL_PREFIX = undefined;
 50430  
 50431  var _asyncToGenerator2;
 50432  
 50433  function _load_asyncToGenerator() {
 50434    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 50435  }
 50436  
 50437  var _path;
 50438  
 50439  function _load_path() {
 50440    return _path = _interopRequireDefault(__webpack_require__(0));
 50441  }
 50442  
 50443  var _invariant;
 50444  
 50445  function _load_invariant() {
 50446    return _invariant = _interopRequireDefault(__webpack_require__(9));
 50447  }
 50448  
 50449  var _uuid;
 50450  
 50451  function _load_uuid() {
 50452    return _uuid = _interopRequireDefault(__webpack_require__(120));
 50453  }
 50454  
 50455  var _errors;
 50456  
 50457  function _load_errors() {
 50458    return _errors = __webpack_require__(6);
 50459  }
 50460  
 50461  var _exoticResolver;
 50462  
 50463  function _load_exoticResolver() {
 50464    return _exoticResolver = _interopRequireDefault(__webpack_require__(89));
 50465  }
 50466  
 50467  var _misc;
 50468  
 50469  function _load_misc() {
 50470    return _misc = _interopRequireWildcard(__webpack_require__(18));
 50471  }
 50472  
 50473  var _fs;
 50474  
 50475  function _load_fs() {
 50476    return _fs = _interopRequireWildcard(__webpack_require__(5));
 50477  }
 50478  
 50479  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 50480  
 50481  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 50482  
 50483  const FILE_PROTOCOL_PREFIX = exports.FILE_PROTOCOL_PREFIX = 'file:';
 50484  
 50485  class FileResolver extends (_exoticResolver || _load_exoticResolver()).default {
 50486    constructor(request, fragment) {
 50487      super(request, fragment);
 50488      this.loc = (_misc || _load_misc()).removePrefix(fragment, FILE_PROTOCOL_PREFIX);
 50489    }
 50490  
 50491    static isVersion(pattern) {
 50492      return super.isVersion.call(this, pattern) || this.prefixMatcher.test(pattern) || (_path || _load_path()).default.isAbsolute(pattern);
 50493    }
 50494  
 50495    resolve() {
 50496      var _this = this;
 50497  
 50498      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 50499        let loc = _this.loc;
 50500        if (!(_path || _load_path()).default.isAbsolute(loc)) {
 50501          loc = (_path || _load_path()).default.resolve(_this.config.lockfileFolder, loc);
 50502        }
 50503  
 50504        if (_this.config.linkFileDependencies) {
 50505          const registry = 'npm';
 50506          const manifest = { _uid: '', name: '', version: '0.0.0', _registry: registry };
 50507          manifest._remote = {
 50508            type: 'link',
 50509            registry,
 50510            hash: null,
 50511            reference: loc
 50512          };
 50513          manifest._uid = manifest.version;
 50514          return manifest;
 50515        }
 50516        if (!(yield (_fs || _load_fs()).exists(loc))) {
 50517          throw new (_errors || _load_errors()).MessageError(_this.reporter.lang('doesntExist', loc, _this.pattern.split('@')[0]));
 50518        }
 50519  
 50520        const manifest = yield (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 50521          try {
 50522            return yield _this.config.readManifest(loc, _this.registry);
 50523          } catch (e) {
 50524            if (e.code === 'ENOENT') {
 50525              return {
 50526                // This is just the default, it can be overridden with key of dependencies
 50527                name: (_path || _load_path()).default.dirname(loc),
 50528                version: '0.0.0',
 50529                _uid: '0.0.0',
 50530                _registry: 'npm'
 50531              };
 50532            }
 50533  
 50534            throw e;
 50535          }
 50536        })();
 50537        const registry = manifest._registry;
 50538        (0, (_invariant || _load_invariant()).default)(registry, 'expected registry');
 50539  
 50540        manifest._remote = {
 50541          type: 'copy',
 50542          registry,
 50543          hash: `${(_uuid || _load_uuid()).default.v4()}-${new Date().getTime()}`,
 50544          reference: loc
 50545        };
 50546  
 50547        manifest._uid = manifest.version;
 50548  
 50549        return manifest;
 50550      })();
 50551    }
 50552  }
 50553  exports.default = FileResolver;
 50554  FileResolver.protocol = 'file';
 50555  FileResolver.prefixMatcher = /^\.{1,2}\//;
 50556  
 50557  /***/ }),
 50558  /* 214 */
 50559  /***/ (function(module, exports, __webpack_require__) {
 50560  
 50561  "use strict";
 50562  
 50563  
 50564  Object.defineProperty(exports, "__esModule", {
 50565    value: true
 50566  });
 50567  exports.explodeGistFragment = explodeGistFragment;
 50568  
 50569  var _errors;
 50570  
 50571  function _load_errors() {
 50572    return _errors = __webpack_require__(6);
 50573  }
 50574  
 50575  var _gitResolver;
 50576  
 50577  function _load_gitResolver() {
 50578    return _gitResolver = _interopRequireDefault(__webpack_require__(124));
 50579  }
 50580  
 50581  var _exoticResolver;
 50582  
 50583  function _load_exoticResolver() {
 50584    return _exoticResolver = _interopRequireDefault(__webpack_require__(89));
 50585  }
 50586  
 50587  var _misc;
 50588  
 50589  function _load_misc() {
 50590    return _misc = _interopRequireWildcard(__webpack_require__(18));
 50591  }
 50592  
 50593  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 50594  
 50595  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 50596  
 50597  function explodeGistFragment(fragment, reporter) {
 50598    fragment = (_misc || _load_misc()).removePrefix(fragment, 'gist:');
 50599  
 50600    const parts = fragment.split('#');
 50601  
 50602    if (parts.length <= 2) {
 50603      return {
 50604        id: parts[0],
 50605        hash: parts[1] || ''
 50606      };
 50607    } else {
 50608      throw new (_errors || _load_errors()).MessageError(reporter.lang('invalidGistFragment', fragment));
 50609    }
 50610  }
 50611  
 50612  class GistResolver extends (_exoticResolver || _load_exoticResolver()).default {
 50613  
 50614    constructor(request, fragment) {
 50615      super(request, fragment);
 50616  
 50617      var _explodeGistFragment = explodeGistFragment(fragment, this.reporter);
 50618  
 50619      const id = _explodeGistFragment.id,
 50620            hash = _explodeGistFragment.hash;
 50621  
 50622      this.id = id;
 50623      this.hash = hash;
 50624    }
 50625  
 50626    resolve() {
 50627      return this.fork((_gitResolver || _load_gitResolver()).default, false, `https://gist.github.com/${this.id}.git#${this.hash}`);
 50628    }
 50629  }
 50630  exports.default = GistResolver;
 50631  GistResolver.protocol = 'gist';
 50632  
 50633  /***/ }),
 50634  /* 215 */
 50635  /***/ (function(module, exports, __webpack_require__) {
 50636  
 50637  "use strict";
 50638  
 50639  
 50640  Object.defineProperty(exports, "__esModule", {
 50641    value: true
 50642  });
 50643  
 50644  var _asyncToGenerator2;
 50645  
 50646  function _load_asyncToGenerator() {
 50647    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 50648  }
 50649  
 50650  var _cache;
 50651  
 50652  function _load_cache() {
 50653    return _cache = __webpack_require__(349);
 50654  }
 50655  
 50656  var _errors;
 50657  
 50658  function _load_errors() {
 50659    return _errors = __webpack_require__(6);
 50660  }
 50661  
 50662  var _registryResolver;
 50663  
 50664  function _load_registryResolver() {
 50665    return _registryResolver = _interopRequireDefault(__webpack_require__(543));
 50666  }
 50667  
 50668  var _npmRegistry;
 50669  
 50670  function _load_npmRegistry() {
 50671    return _npmRegistry = _interopRequireDefault(__webpack_require__(88));
 50672  }
 50673  
 50674  var _map;
 50675  
 50676  function _load_map() {
 50677    return _map = _interopRequireDefault(__webpack_require__(29));
 50678  }
 50679  
 50680  var _fs;
 50681  
 50682  function _load_fs() {
 50683    return _fs = _interopRequireWildcard(__webpack_require__(5));
 50684  }
 50685  
 50686  var _constants;
 50687  
 50688  function _load_constants() {
 50689    return _constants = __webpack_require__(8);
 50690  }
 50691  
 50692  var _packageNameUtils;
 50693  
 50694  function _load_packageNameUtils() {
 50695    return _packageNameUtils = __webpack_require__(220);
 50696  }
 50697  
 50698  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 50699  
 50700  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 50701  
 50702  const inquirer = __webpack_require__(276);
 50703  const tty = __webpack_require__(104);
 50704  const path = __webpack_require__(0);
 50705  const semver = __webpack_require__(22);
 50706  const ssri = __webpack_require__(65);
 50707  
 50708  const NPM_REGISTRY_ID = 'npm';
 50709  
 50710  class NpmResolver extends (_registryResolver || _load_registryResolver()).default {
 50711  
 50712    static findVersionInRegistryResponse(config, name, range, body, request) {
 50713      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 50714        if (body.versions && Object.keys(body.versions).length === 0) {
 50715          throw new (_errors || _load_errors()).MessageError(config.reporter.lang('registryNoVersions', body.name));
 50716        }
 50717  
 50718        if (!body['dist-tags'] || !body.versions) {
 50719          throw new (_errors || _load_errors()).MessageError(config.reporter.lang('malformedRegistryResponse', name));
 50720        }
 50721  
 50722        if (range in body['dist-tags']) {
 50723          range = body['dist-tags'][range];
 50724        }
 50725  
 50726        // If the latest tag in the registry satisfies the requested range, then use that.
 50727        // Otherwise we will fall back to semver maxSatisfying.
 50728        // This mimics logic in NPM. See issue #3560
 50729        const latestVersion = body['dist-tags'] ? body['dist-tags'].latest : undefined;
 50730        if (latestVersion && semver.satisfies(latestVersion, range)) {
 50731          return body.versions[latestVersion];
 50732        }
 50733  
 50734        const satisfied = yield config.resolveConstraints(Object.keys(body.versions), range);
 50735        if (satisfied) {
 50736          return body.versions[satisfied];
 50737        } else if (request && !config.nonInteractive) {
 50738          if (request.resolver && request.resolver.activity) {
 50739            request.resolver.activity.end();
 50740          }
 50741          config.reporter.log(config.reporter.lang('couldntFindVersionThatMatchesRange', body.name, range));
 50742          let pageSize;
 50743          if (process.stdout instanceof tty.WriteStream) {
 50744            pageSize = process.stdout.rows - 2;
 50745          }
 50746          const response = yield inquirer.prompt([{
 50747            name: 'package',
 50748            type: 'list',
 50749            message: config.reporter.lang('chooseVersionFromList', body.name),
 50750            choices: semver.rsort(Object.keys(body.versions)),
 50751            pageSize
 50752          }]);
 50753          if (response && response.package) {
 50754            return body.versions[response.package];
 50755          }
 50756        }
 50757        throw new (_errors || _load_errors()).MessageError(config.reporter.lang('couldntFindVersionThatMatchesRange', body.name, range));
 50758      })();
 50759    }
 50760  
 50761    resolveRequest(desiredVersion) {
 50762      var _this = this;
 50763  
 50764      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 50765        if (_this.config.offline) {
 50766          const res = yield _this.resolveRequestOffline();
 50767          if (res != null) {
 50768            return res;
 50769          }
 50770        }
 50771  
 50772        const escapedName = (_npmRegistry || _load_npmRegistry()).default.escapeName(_this.name);
 50773        const desiredRange = desiredVersion || _this.range;
 50774        const body = yield _this.config.registries.npm.request(escapedName);
 50775  
 50776        if (body) {
 50777          return NpmResolver.findVersionInRegistryResponse(_this.config, escapedName, desiredRange, body, _this.request);
 50778        } else {
 50779          return null;
 50780        }
 50781      })();
 50782    }
 50783  
 50784    resolveRequestOffline() {
 50785      var _this2 = this;
 50786  
 50787      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 50788        const packageDirs = yield _this2.config.getCache('cachedPackages', function () {
 50789          return (0, (_cache || _load_cache()).getCachedPackagesDirs)(_this2.config, _this2.config.cacheFolder);
 50790        });
 50791  
 50792        const versions = (0, (_map || _load_map()).default)();
 50793  
 50794        for (var _iterator = packageDirs, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 50795          var _ref;
 50796  
 50797          if (_isArray) {
 50798            if (_i >= _iterator.length) break;
 50799            _ref = _iterator[_i++];
 50800          } else {
 50801            _i = _iterator.next();
 50802            if (_i.done) break;
 50803            _ref = _i.value;
 50804          }
 50805  
 50806          const dir = _ref;
 50807  
 50808          // check if folder contains the registry prefix
 50809          if (dir.indexOf(`${NPM_REGISTRY_ID}-`) === -1) {
 50810            continue;
 50811          }
 50812  
 50813          // read manifest and validate correct name
 50814          const pkg = yield _this2.config.readManifest(dir, NPM_REGISTRY_ID);
 50815          if (pkg.name !== _this2.name) {
 50816            continue;
 50817          }
 50818  
 50819          // read package metadata
 50820          const metadata = yield _this2.config.readPackageMetadata(dir);
 50821          if (!metadata.remote) {
 50822            continue; // old yarn metadata
 50823          }
 50824  
 50825          versions[pkg.version] = Object.assign({}, pkg, {
 50826            _remote: metadata.remote
 50827          });
 50828        }
 50829  
 50830        const satisfied = yield _this2.config.resolveConstraints(Object.keys(versions), _this2.range);
 50831        if (satisfied) {
 50832          return versions[satisfied];
 50833        } else if (!_this2.config.preferOffline) {
 50834          throw new (_errors || _load_errors()).MessageError(_this2.reporter.lang('couldntFindPackageInCache', _this2.name, _this2.range, Object.keys(versions).join(', ')));
 50835        } else {
 50836          return null;
 50837        }
 50838      })();
 50839    }
 50840  
 50841    cleanRegistry(url) {
 50842      if (this.config.getOption('registry') === (_constants || _load_constants()).YARN_REGISTRY) {
 50843        return url.replace((_constants || _load_constants()).NPM_REGISTRY_RE, (_constants || _load_constants()).YARN_REGISTRY);
 50844      } else {
 50845        return url;
 50846      }
 50847    }
 50848  
 50849    resolve() {
 50850      var _this3 = this;
 50851  
 50852      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 50853        // lockfile
 50854        const shrunk = _this3.request.getLocked('tarball');
 50855        if (shrunk) {
 50856          if (_this3.config.packBuiltPackages && shrunk.prebuiltVariants && shrunk._remote) {
 50857            const prebuiltVariants = shrunk.prebuiltVariants;
 50858            const prebuiltName = (0, (_packageNameUtils || _load_packageNameUtils()).getPlatformSpecificPackageFilename)(shrunk);
 50859            const offlineMirrorPath = _this3.config.getOfflineMirrorPath();
 50860            if (prebuiltVariants[prebuiltName] && offlineMirrorPath) {
 50861              const filename = path.join(offlineMirrorPath, 'prebuilt', prebuiltName + '.tgz');
 50862              const _remote = shrunk._remote;
 50863  
 50864              if (_remote && (yield (_fs || _load_fs()).exists(filename))) {
 50865                _remote.reference = `file:${filename}`;
 50866                _remote.hash = prebuiltVariants[prebuiltName];
 50867                _remote.integrity = ssri.fromHex(_remote.hash, 'sha1').toString();
 50868              }
 50869            }
 50870          }
 50871        }
 50872        if (shrunk && shrunk._remote && (shrunk._remote.integrity || _this3.config.offline || !_this3.config.autoAddIntegrity)) {
 50873          // if the integrity field does not exist, we're not network-restricted, and the
 50874          // migration hasn't been disabled, it needs to be created
 50875          return shrunk;
 50876        }
 50877  
 50878        const desiredVersion = shrunk && shrunk.version ? shrunk.version : null;
 50879        const info = yield _this3.resolveRequest(desiredVersion);
 50880        if (info == null) {
 50881          throw new (_errors || _load_errors()).MessageError(_this3.reporter.lang('packageNotFoundRegistry', _this3.name, NPM_REGISTRY_ID));
 50882        }
 50883  
 50884        const deprecated = info.deprecated,
 50885              dist = info.dist;
 50886  
 50887        if (shrunk && shrunk._remote) {
 50888          shrunk._remote.integrity = dist && dist.integrity ? ssri.parse(dist.integrity) : ssri.fromHex(dist && dist.shasum ? dist.shasum : '', 'sha1');
 50889          return shrunk;
 50890        }
 50891  
 50892        if (typeof deprecated === 'string') {
 50893          let human = `${info.name}@${info.version}`;
 50894          const parentNames = _this3.request.parentNames;
 50895          if (parentNames.length) {
 50896            human = parentNames.concat(human).join(' > ');
 50897          }
 50898          _this3.reporter.warn(`${human}: ${deprecated}`);
 50899        }
 50900  
 50901        if (dist != null && dist.tarball) {
 50902          info._remote = {
 50903            resolved: `${_this3.cleanRegistry(dist.tarball)}#${dist.shasum}`,
 50904            type: 'tarball',
 50905            reference: _this3.cleanRegistry(dist.tarball),
 50906            hash: dist.shasum,
 50907            integrity: dist.integrity ? ssri.parse(dist.integrity) : ssri.fromHex(dist.shasum, 'sha1'),
 50908            registry: NPM_REGISTRY_ID,
 50909            packageName: info.name
 50910          };
 50911        }
 50912  
 50913        info._uid = info.version;
 50914  
 50915        return info;
 50916      })();
 50917    }
 50918  }
 50919  exports.default = NpmResolver;
 50920  NpmResolver.registry = NPM_REGISTRY_ID;
 50921  
 50922  /***/ }),
 50923  /* 216 */
 50924  /***/ (function(module, exports, __webpack_require__) {
 50925  
 50926  "use strict";
 50927  
 50928  
 50929  Object.defineProperty(exports, "__esModule", {
 50930    value: true
 50931  });
 50932  exports.fileDatesEqual = exports.copyFile = exports.unlink = undefined;
 50933  
 50934  var _asyncToGenerator2;
 50935  
 50936  function _load_asyncToGenerator() {
 50937    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 50938  }
 50939  
 50940  // We want to preserve file timestamps when copying a file, since yarn uses them to decide if a file has
 50941  // changed compared to the cache.
 50942  // There are some OS specific cases here:
 50943  // * On linux, fs.copyFile does not preserve timestamps, but does on OSX and Win.
 50944  // * On windows, you must open a file with write permissions to call `fs.futimes`.
 50945  // * On OSX you can open with read permissions and still call `fs.futimes`.
 50946  let fixTimes = (() => {
 50947    var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (fd, dest, data) {
 50948      const doOpen = fd === undefined;
 50949      let openfd = fd ? fd : -1;
 50950  
 50951      if (disableTimestampCorrection === undefined) {
 50952        // if timestamps match already, no correction is needed.
 50953        // the need to correct timestamps varies based on OS and node versions.
 50954        const destStat = yield lstat(dest);
 50955        disableTimestampCorrection = fileDatesEqual(destStat.mtime, data.mtime);
 50956      }
 50957  
 50958      if (disableTimestampCorrection) {
 50959        return;
 50960      }
 50961  
 50962      if (doOpen) {
 50963        try {
 50964          openfd = yield open(dest, 'a', data.mode);
 50965        } catch (er) {
 50966          // file is likely read-only
 50967          try {
 50968            openfd = yield open(dest, 'r', data.mode);
 50969          } catch (err) {
 50970            // We can't even open this file for reading.
 50971            return;
 50972          }
 50973        }
 50974      }
 50975  
 50976      try {
 50977        if (openfd) {
 50978          yield futimes(openfd, data.atime, data.mtime);
 50979        }
 50980      } catch (er) {
 50981        // If `futimes` throws an exception, we probably have a case of a read-only file on Windows.
 50982        // In this case we can just return. The incorrect timestamp will just cause that file to be recopied
 50983        // on subsequent installs, which will effect yarn performance but not break anything.
 50984      } finally {
 50985        if (doOpen && openfd) {
 50986          yield close(openfd);
 50987        }
 50988      }
 50989    });
 50990  
 50991    return function fixTimes(_x7, _x8, _x9) {
 50992      return _ref3.apply(this, arguments);
 50993    };
 50994  })();
 50995  
 50996  // Compare file timestamps.
 50997  // Some versions of Node on windows zero the milliseconds when utime is used.
 50998  
 50999  
 51000  var _fs;
 51001  
 51002  function _load_fs() {
 51003    return _fs = _interopRequireDefault(__webpack_require__(4));
 51004  }
 51005  
 51006  var _promise;
 51007  
 51008  function _load_promise() {
 51009    return _promise = __webpack_require__(51);
 51010  }
 51011  
 51012  var _fs2;
 51013  
 51014  function _load_fs2() {
 51015    return _fs2 = __webpack_require__(5);
 51016  }
 51017  
 51018  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 51019  
 51020  let disableTimestampCorrection = undefined; // OS dependent. will be detected on first file copy.
 51021  
 51022  // This module serves as a wrapper for file operations that are inconsistant across node and OS versions.
 51023  
 51024  const readFileBuffer = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.readFile);
 51025  const close = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.close);
 51026  const lstat = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.lstat);
 51027  const open = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.open);
 51028  const futimes = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.futimes);
 51029  
 51030  const write = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.write);
 51031  
 51032  const unlink = exports.unlink = (0, (_promise || _load_promise()).promisify)(__webpack_require__(307));
 51033  
 51034  /**
 51035   * Unlinks the destination to force a recreation. This is needed on case-insensitive file systems
 51036   * to force the correct naming when the filename has changed only in character-casing. (Jest -> jest).
 51037   */
 51038  const copyFile = exports.copyFile = (() => {
 51039    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data, cleanup) {
 51040      // $FlowFixMe: Flow doesn't currently support COPYFILE_FICLONE
 51041      const ficloneFlag = (_fs2 || _load_fs2()).constants.COPYFILE_FICLONE || 0;
 51042      try {
 51043        yield unlink(data.dest);
 51044        yield copyFilePoly(data.src, data.dest, ficloneFlag, data);
 51045      } finally {
 51046        if (cleanup) {
 51047          cleanup();
 51048        }
 51049      }
 51050    });
 51051  
 51052    return function copyFile(_x, _x2) {
 51053      return _ref.apply(this, arguments);
 51054    };
 51055  })();
 51056  
 51057  // Node 8.5.0 introduced `fs.copyFile` which is much faster, so use that when available.
 51058  // Otherwise we fall back to reading and writing files as buffers.
 51059  const copyFilePoly = (src, dest, flags, data) => {
 51060    if ((_fs || _load_fs()).default.copyFile) {
 51061      return new Promise((resolve, reject) => (_fs || _load_fs()).default.copyFile(src, dest, flags, err => {
 51062        if (err) {
 51063          reject(err);
 51064        } else {
 51065          fixTimes(undefined, dest, data).then(() => resolve()).catch(ex => reject(ex));
 51066        }
 51067      }));
 51068    } else {
 51069      return copyWithBuffer(src, dest, flags, data);
 51070    }
 51071  };
 51072  
 51073  const copyWithBuffer = (() => {
 51074    var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (src, dest, flags, data) {
 51075      // Use open -> write -> futimes -> close sequence to avoid opening the file twice:
 51076      // one with writeFile and one with utimes
 51077      const fd = yield open(dest, 'w', data.mode);
 51078      try {
 51079        const buffer = yield readFileBuffer(src);
 51080        yield write(fd, buffer, 0, buffer.length);
 51081        yield fixTimes(fd, dest, data);
 51082      } finally {
 51083        yield close(fd);
 51084      }
 51085    });
 51086  
 51087    return function copyWithBuffer(_x3, _x4, _x5, _x6) {
 51088      return _ref2.apply(this, arguments);
 51089    };
 51090  })();const fileDatesEqual = exports.fileDatesEqual = (a, b) => {
 51091    const aTime = a.getTime();
 51092    const bTime = b.getTime();
 51093  
 51094    if (process.platform !== 'win32') {
 51095      return aTime === bTime;
 51096    }
 51097  
 51098    // See https://github.com/nodejs/node/pull/12607
 51099    // Submillisecond times from stat and utimes are truncated on Windows,
 51100    // causing a file with mtime 8.0079998 and 8.0081144 to become 8.007 and 8.008
 51101    // and making it impossible to update these files to their correct timestamps.
 51102    if (Math.abs(aTime - bTime) <= 1) {
 51103      return true;
 51104    }
 51105  
 51106    const aTimeSec = Math.floor(aTime / 1000);
 51107    const bTimeSec = Math.floor(bTime / 1000);
 51108  
 51109    // See https://github.com/nodejs/node/issues/2069
 51110    // Some versions of Node on windows zero the milliseconds when utime is used
 51111    // So if any of the time has a milliseconds part of zero we suspect that the
 51112    // bug is present and compare only seconds.
 51113    if (aTime - aTimeSec * 1000 === 0 || bTime - bTimeSec * 1000 === 0) {
 51114      return aTimeSec === bTimeSec;
 51115    }
 51116  
 51117    return aTime === bTime;
 51118  };
 51119  
 51120  /***/ }),
 51121  /* 217 */
 51122  /***/ (function(module, exports, __webpack_require__) {
 51123  
 51124  "use strict";
 51125  
 51126  
 51127  Object.defineProperty(exports, "__esModule", {
 51128    value: true
 51129  });
 51130  
 51131  var _asyncToGenerator2;
 51132  
 51133  function _load_asyncToGenerator() {
 51134    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 51135  }
 51136  
 51137  var _extends2;
 51138  
 51139  function _load_extends() {
 51140    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 51141  }
 51142  
 51143  var _invariant;
 51144  
 51145  function _load_invariant() {
 51146    return _invariant = _interopRequireDefault(__webpack_require__(9));
 51147  }
 51148  
 51149  var _string_decoder;
 51150  
 51151  function _load_string_decoder() {
 51152    return _string_decoder = __webpack_require__(333);
 51153  }
 51154  
 51155  var _tarFs;
 51156  
 51157  function _load_tarFs() {
 51158    return _tarFs = _interopRequireDefault(__webpack_require__(194));
 51159  }
 51160  
 51161  var _tarStream;
 51162  
 51163  function _load_tarStream() {
 51164    return _tarStream = _interopRequireDefault(__webpack_require__(460));
 51165  }
 51166  
 51167  var _url;
 51168  
 51169  function _load_url() {
 51170    return _url = _interopRequireDefault(__webpack_require__(24));
 51171  }
 51172  
 51173  var _fs;
 51174  
 51175  function _load_fs() {
 51176    return _fs = __webpack_require__(4);
 51177  }
 51178  
 51179  var _errors;
 51180  
 51181  function _load_errors() {
 51182    return _errors = __webpack_require__(6);
 51183  }
 51184  
 51185  var _gitSpawn;
 51186  
 51187  function _load_gitSpawn() {
 51188    return _gitSpawn = __webpack_require__(367);
 51189  }
 51190  
 51191  var _gitRefResolver;
 51192  
 51193  function _load_gitRefResolver() {
 51194    return _gitRefResolver = __webpack_require__(549);
 51195  }
 51196  
 51197  var _crypto;
 51198  
 51199  function _load_crypto() {
 51200    return _crypto = _interopRequireWildcard(__webpack_require__(168));
 51201  }
 51202  
 51203  var _fs2;
 51204  
 51205  function _load_fs2() {
 51206    return _fs2 = _interopRequireWildcard(__webpack_require__(5));
 51207  }
 51208  
 51209  var _map;
 51210  
 51211  function _load_map() {
 51212    return _map = _interopRequireDefault(__webpack_require__(29));
 51213  }
 51214  
 51215  var _misc;
 51216  
 51217  function _load_misc() {
 51218    return _misc = __webpack_require__(18);
 51219  }
 51220  
 51221  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 51222  
 51223  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 51224  
 51225  const GIT_PROTOCOL_PREFIX = 'git+';
 51226  
 51227  const SSH_PROTOCOL = 'ssh:';
 51228  const SCP_PATH_PREFIX = '/:';
 51229  const FILE_PROTOCOL = 'file:';
 51230  const GIT_VALID_REF_LINE_REGEXP = /^([a-fA-F0-9]+|ref)/;
 51231  
 51232  const validRef = line => {
 51233    return GIT_VALID_REF_LINE_REGEXP.exec(line);
 51234  };
 51235  
 51236  const supportsArchiveCache = (0, (_map || _load_map()).default)({
 51237    'github.com': false // not support, doubt they will ever support it
 51238  });
 51239  
 51240  const handleSpawnError = err => {
 51241    if (err instanceof (_errors || _load_errors()).ProcessSpawnError) {
 51242      throw err;
 51243    }
 51244  };
 51245  
 51246  const SHORTHAND_SERVICES = (0, (_map || _load_map()).default)({
 51247    'github:': parsedUrl => (0, (_extends2 || _load_extends()).default)({}, parsedUrl, {
 51248      slashes: true,
 51249      auth: 'git',
 51250      protocol: SSH_PROTOCOL,
 51251      host: 'github.com',
 51252      hostname: 'github.com',
 51253      pathname: `/${parsedUrl.hostname}${parsedUrl.pathname}`
 51254    }),
 51255    'bitbucket:': parsedUrl => (0, (_extends2 || _load_extends()).default)({}, parsedUrl, {
 51256      slashes: true,
 51257      auth: 'git',
 51258      protocol: SSH_PROTOCOL,
 51259      host: 'bitbucket.com',
 51260      hostname: 'bitbucket.com',
 51261      pathname: `/${parsedUrl.hostname}${parsedUrl.pathname}`
 51262    })
 51263  });
 51264  
 51265  class Git {
 51266    constructor(config, gitUrl, hash) {
 51267      this.supportsArchive = false;
 51268      this.fetched = false;
 51269      this.config = config;
 51270      this.reporter = config.reporter;
 51271      this.hash = hash;
 51272      this.ref = hash;
 51273      this.gitUrl = gitUrl;
 51274      this.cwd = this.config.getTemp((_crypto || _load_crypto()).hash(this.gitUrl.repository));
 51275    }
 51276  
 51277    /**
 51278     * npm URLs contain a 'git+' scheme prefix, which is not understood by git.
 51279     * git "URLs" also allow an alternative scp-like syntax, so they're not standard URLs.
 51280     */
 51281    static npmUrlToGitUrl(npmUrl) {
 51282      npmUrl = (0, (_misc || _load_misc()).removePrefix)(npmUrl, GIT_PROTOCOL_PREFIX);
 51283  
 51284      let parsed = (_url || _load_url()).default.parse(npmUrl);
 51285      const expander = parsed.protocol && SHORTHAND_SERVICES[parsed.protocol];
 51286  
 51287      if (expander) {
 51288        parsed = expander(parsed);
 51289      }
 51290  
 51291      // Special case in npm, where ssh:// prefix is stripped to pass scp-like syntax
 51292      // which in git works as remote path only if there are no slashes before ':'.
 51293      // See #3146.
 51294      if (parsed.protocol === SSH_PROTOCOL && parsed.hostname && parsed.path && parsed.path.startsWith(SCP_PATH_PREFIX) && parsed.port === null) {
 51295        const auth = parsed.auth ? parsed.auth + '@' : '';
 51296        const pathname = parsed.path.slice(SCP_PATH_PREFIX.length);
 51297        return {
 51298          hostname: parsed.hostname,
 51299          protocol: parsed.protocol,
 51300          repository: `${auth}${parsed.hostname}:${pathname}`
 51301        };
 51302      }
 51303  
 51304      // git local repos are specified as `git+file:` and a filesystem path, not a url.
 51305      let repository;
 51306      if (parsed.protocol === FILE_PROTOCOL) {
 51307        repository = parsed.path;
 51308      } else {
 51309        repository = (_url || _load_url()).default.format((0, (_extends2 || _load_extends()).default)({}, parsed, { hash: '' }));
 51310      }
 51311  
 51312      return {
 51313        hostname: parsed.hostname || null,
 51314        protocol: parsed.protocol || FILE_PROTOCOL,
 51315        repository: repository || ''
 51316      };
 51317    }
 51318  
 51319    /**
 51320     * Check if the host specified in the input `gitUrl` has archive capability.
 51321     */
 51322  
 51323    static hasArchiveCapability(ref) {
 51324      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 51325        const hostname = ref.hostname;
 51326        if (ref.protocol !== 'ssh:' || hostname == null) {
 51327          return false;
 51328        }
 51329  
 51330        if (hostname in supportsArchiveCache) {
 51331          return supportsArchiveCache[hostname];
 51332        }
 51333  
 51334        try {
 51335          yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['archive', `--remote=${ref.repository}`, 'HEAD', Date.now() + '']);
 51336          throw new Error();
 51337        } catch (err) {
 51338          handleSpawnError(err);
 51339          const supports = err.message.indexOf('did not match any files') >= 0;
 51340          return supportsArchiveCache[hostname] = supports;
 51341        }
 51342      })();
 51343    }
 51344  
 51345    /**
 51346     * Check if the input `target` is a 5-40 character hex commit hash.
 51347     */
 51348  
 51349    static repoExists(ref) {
 51350      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 51351        const isLocal = ref.protocol === FILE_PROTOCOL;
 51352  
 51353        try {
 51354          if (isLocal) {
 51355            yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['show-ref', '-t'], { cwd: ref.repository });
 51356          } else {
 51357            yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['ls-remote', '-t', ref.repository]);
 51358          }
 51359          return true;
 51360        } catch (err) {
 51361          handleSpawnError(err);
 51362          return false;
 51363        }
 51364      })();
 51365    }
 51366  
 51367    static replaceProtocol(ref, protocol) {
 51368      return {
 51369        hostname: ref.hostname,
 51370        protocol,
 51371        repository: ref.repository.replace(/^(?:git|http):/, protocol)
 51372      };
 51373    }
 51374  
 51375    /**
 51376     * Attempt to upgrade insecure protocols to secure protocol
 51377     */
 51378    static secureGitUrl(ref, hash, reporter) {
 51379      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 51380        if ((0, (_gitRefResolver || _load_gitRefResolver()).isCommitSha)(hash)) {
 51381          // this is cryptographically secure
 51382          return ref;
 51383        }
 51384  
 51385        if (ref.protocol === 'git:') {
 51386          const secureUrl = Git.replaceProtocol(ref, 'https:');
 51387          if (yield Git.repoExists(secureUrl)) {
 51388            return secureUrl;
 51389          } else {
 51390            reporter.warn(reporter.lang('downloadGitWithoutCommit', ref.repository));
 51391            return ref;
 51392          }
 51393        }
 51394  
 51395        if (ref.protocol === 'http:') {
 51396          const secureRef = Git.replaceProtocol(ref, 'https:');
 51397          if (yield Git.repoExists(secureRef)) {
 51398            return secureRef;
 51399          } else {
 51400            reporter.warn(reporter.lang('downloadHTTPWithoutCommit', ref.repository));
 51401            return ref;
 51402          }
 51403        }
 51404  
 51405        return ref;
 51406      })();
 51407    }
 51408  
 51409    /**
 51410     * Archive a repo to destination
 51411     */
 51412  
 51413    archive(dest) {
 51414      if (this.supportsArchive) {
 51415        return this._archiveViaRemoteArchive(dest);
 51416      } else {
 51417        return this._archiveViaLocalFetched(dest);
 51418      }
 51419    }
 51420  
 51421    _archiveViaRemoteArchive(dest) {
 51422      var _this = this;
 51423  
 51424      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 51425        const hashStream = new (_crypto || _load_crypto()).HashStream();
 51426        yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['archive', `--remote=${_this.gitUrl.repository}`, _this.ref], {
 51427          process(proc, resolve, reject, done) {
 51428            const writeStream = (0, (_fs || _load_fs()).createWriteStream)(dest);
 51429            proc.on('error', reject);
 51430            writeStream.on('error', reject);
 51431            writeStream.on('end', done);
 51432            writeStream.on('open', function () {
 51433              proc.stdout.pipe(hashStream).pipe(writeStream);
 51434            });
 51435            writeStream.once('finish', done);
 51436          }
 51437        });
 51438        return hashStream.getHash();
 51439      })();
 51440    }
 51441  
 51442    _archiveViaLocalFetched(dest) {
 51443      var _this2 = this;
 51444  
 51445      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 51446        const hashStream = new (_crypto || _load_crypto()).HashStream();
 51447        yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['archive', _this2.hash], {
 51448          cwd: _this2.cwd,
 51449          process(proc, resolve, reject, done) {
 51450            const writeStream = (0, (_fs || _load_fs()).createWriteStream)(dest);
 51451            proc.on('error', reject);
 51452            writeStream.on('error', reject);
 51453            writeStream.on('open', function () {
 51454              proc.stdout.pipe(hashStream).pipe(writeStream);
 51455            });
 51456            writeStream.once('finish', done);
 51457          }
 51458        });
 51459        return hashStream.getHash();
 51460      })();
 51461    }
 51462  
 51463    /**
 51464     * Clone a repo to the input `dest`. Use `git archive` if it's available, otherwise fall
 51465     * back to `git clone`.
 51466     */
 51467  
 51468    clone(dest) {
 51469      if (this.supportsArchive) {
 51470        return this._cloneViaRemoteArchive(dest);
 51471      } else {
 51472        return this._cloneViaLocalFetched(dest);
 51473      }
 51474    }
 51475  
 51476    _cloneViaRemoteArchive(dest) {
 51477      var _this3 = this;
 51478  
 51479      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 51480        yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['archive', `--remote=${_this3.gitUrl.repository}`, _this3.ref], {
 51481          process(proc, update, reject, done) {
 51482            const extractor = (_tarFs || _load_tarFs()).default.extract(dest, {
 51483              dmode: 0o555, // all dirs should be readable
 51484              fmode: 0o444 // all files should be readable
 51485            });
 51486            extractor.on('error', reject);
 51487            extractor.on('finish', done);
 51488  
 51489            proc.stdout.pipe(extractor);
 51490            proc.on('error', reject);
 51491          }
 51492        });
 51493      })();
 51494    }
 51495  
 51496    _cloneViaLocalFetched(dest) {
 51497      var _this4 = this;
 51498  
 51499      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 51500        yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['archive', _this4.hash], {
 51501          cwd: _this4.cwd,
 51502          process(proc, resolve, reject, done) {
 51503            const extractor = (_tarFs || _load_tarFs()).default.extract(dest, {
 51504              dmode: 0o555, // all dirs should be readable
 51505              fmode: 0o444 // all files should be readable
 51506            });
 51507  
 51508            extractor.on('error', reject);
 51509            extractor.on('finish', done);
 51510  
 51511            proc.stdout.pipe(extractor);
 51512          }
 51513        });
 51514      })();
 51515    }
 51516  
 51517    /**
 51518     * Clone this repo.
 51519     */
 51520  
 51521    fetch() {
 51522      var _this5 = this;
 51523  
 51524      const gitUrl = this.gitUrl,
 51525            cwd = this.cwd;
 51526  
 51527  
 51528      return (_fs2 || _load_fs2()).lockQueue.push(gitUrl.repository, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 51529        if (yield (_fs2 || _load_fs2()).exists(cwd)) {
 51530          yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['fetch', '--tags'], { cwd });
 51531          yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['pull'], { cwd });
 51532        } else {
 51533          yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['clone', gitUrl.repository, cwd]);
 51534        }
 51535  
 51536        _this5.fetched = true;
 51537      }));
 51538    }
 51539  
 51540    /**
 51541     * Fetch the file by cloning the repo and reading it.
 51542     */
 51543  
 51544    getFile(filename) {
 51545      if (this.supportsArchive) {
 51546        return this._getFileFromArchive(filename);
 51547      } else {
 51548        return this._getFileFromClone(filename);
 51549      }
 51550    }
 51551  
 51552    _getFileFromArchive(filename) {
 51553      var _this6 = this;
 51554  
 51555      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 51556        try {
 51557          return yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['archive', `--remote=${_this6.gitUrl.repository}`, _this6.ref, filename], {
 51558            process(proc, update, reject, done) {
 51559              const parser = (_tarStream || _load_tarStream()).default.extract();
 51560  
 51561              parser.on('error', reject);
 51562              parser.on('finish', done);
 51563  
 51564              parser.on('entry', (header, stream, next) => {
 51565                const decoder = new (_string_decoder || _load_string_decoder()).StringDecoder('utf8');
 51566                let fileContent = '';
 51567  
 51568                stream.on('data', buffer => {
 51569                  fileContent += decoder.write(buffer);
 51570                });
 51571                stream.on('end', () => {
 51572                  const remaining = decoder.end();
 51573                  update(fileContent + remaining);
 51574                  next();
 51575                });
 51576                stream.resume();
 51577              });
 51578  
 51579              proc.stdout.pipe(parser);
 51580            }
 51581          });
 51582        } catch (err) {
 51583          if (err.message.indexOf('did not match any files') >= 0) {
 51584            return false;
 51585          } else {
 51586            throw err;
 51587          }
 51588        }
 51589      })();
 51590    }
 51591  
 51592    _getFileFromClone(filename) {
 51593      var _this7 = this;
 51594  
 51595      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 51596        (0, (_invariant || _load_invariant()).default)(_this7.fetched, 'Repo not fetched');
 51597  
 51598        try {
 51599          return yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['show', `${_this7.hash}:${filename}`], {
 51600            cwd: _this7.cwd
 51601          });
 51602        } catch (err) {
 51603          handleSpawnError(err);
 51604          // file doesn't exist
 51605          return false;
 51606        }
 51607      })();
 51608    }
 51609  
 51610    /**
 51611     * Initialize the repo, find a secure url to use and
 51612     * set the ref to match an input `target`.
 51613     */
 51614    init() {
 51615      var _this8 = this;
 51616  
 51617      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 51618        _this8.gitUrl = yield Git.secureGitUrl(_this8.gitUrl, _this8.hash, _this8.reporter);
 51619  
 51620        yield _this8.setRefRemote();
 51621  
 51622        // check capabilities
 51623        if (_this8.ref !== '' && (yield Git.hasArchiveCapability(_this8.gitUrl))) {
 51624          _this8.supportsArchive = true;
 51625        } else {
 51626          yield _this8.fetch();
 51627        }
 51628  
 51629        return _this8.hash;
 51630      })();
 51631    }
 51632  
 51633    setRefRemote() {
 51634      var _this9 = this;
 51635  
 51636      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 51637        const isLocal = _this9.gitUrl.protocol === FILE_PROTOCOL;
 51638        let stdout;
 51639  
 51640        if (isLocal) {
 51641          stdout = yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['show-ref', '--tags', '--heads'], { cwd: _this9.gitUrl.repository });
 51642        } else {
 51643          stdout = yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['ls-remote', '--tags', '--heads', _this9.gitUrl.repository]);
 51644        }
 51645  
 51646        const refs = (0, (_gitRefResolver || _load_gitRefResolver()).parseRefs)(stdout);
 51647        return _this9.setRef(refs);
 51648      })();
 51649    }
 51650  
 51651    setRefHosted(hostedRefsList) {
 51652      const refs = (0, (_gitRefResolver || _load_gitRefResolver()).parseRefs)(hostedRefsList);
 51653      return this.setRef(refs);
 51654    }
 51655  
 51656    /**
 51657     * Resolves the default branch of a remote repository (not always "master")
 51658     */
 51659  
 51660    resolveDefaultBranch() {
 51661      var _this10 = this;
 51662  
 51663      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 51664        const isLocal = _this10.gitUrl.protocol === FILE_PROTOCOL;
 51665  
 51666        try {
 51667          let stdout;
 51668          if (isLocal) {
 51669            stdout = yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['show-ref', 'HEAD'], { cwd: _this10.gitUrl.repository });
 51670            const refs = (0, (_gitRefResolver || _load_gitRefResolver()).parseRefs)(stdout);
 51671            const sha = refs.values().next().value;
 51672            if (sha) {
 51673              return { sha, ref: undefined };
 51674            } else {
 51675              throw new Error('Unable to find SHA for git HEAD');
 51676            }
 51677          } else {
 51678            stdout = yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['ls-remote', '--symref', _this10.gitUrl.repository, 'HEAD']);
 51679            const lines = stdout.split('\n').filter(validRef);
 51680  
 51681            var _lines$0$split = lines[0].split(/\s+/);
 51682  
 51683            const ref = _lines$0$split[1];
 51684  
 51685            var _lines$1$split = lines[1].split(/\s+/);
 51686  
 51687            const sha = _lines$1$split[0];
 51688  
 51689            return { sha, ref };
 51690          }
 51691        } catch (err) {
 51692          handleSpawnError(err);
 51693          // older versions of git don't support "--symref"
 51694          const stdout = yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['ls-remote', _this10.gitUrl.repository, 'HEAD']);
 51695          const lines = stdout.split('\n').filter(validRef);
 51696  
 51697          var _lines$0$split2 = lines[0].split(/\s+/);
 51698  
 51699          const sha = _lines$0$split2[0];
 51700  
 51701          return { sha, ref: undefined };
 51702        }
 51703      })();
 51704    }
 51705  
 51706    /**
 51707     * Resolve a git commit to it's 40-chars format and ensure it exists in the repository
 51708     * We need to use the 40-chars format to avoid multiple folders in the cache
 51709     */
 51710  
 51711    resolveCommit(shaToResolve) {
 51712      var _this11 = this;
 51713  
 51714      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 51715        try {
 51716          yield _this11.fetch();
 51717          const revListArgs = ['rev-list', '-n', '1', '--no-abbrev-commit', '--format=oneline', shaToResolve];
 51718          const stdout = yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(revListArgs, { cwd: _this11.cwd });
 51719  
 51720          var _stdout$split = stdout.split(/\s+/);
 51721  
 51722          const sha = _stdout$split[0];
 51723  
 51724          return { sha, ref: undefined };
 51725        } catch (err) {
 51726          handleSpawnError(err);
 51727          // assuming commit not found, let's try something else
 51728          return null;
 51729        }
 51730      })();
 51731    }
 51732  
 51733    /**
 51734     * Resolves the input hash / ref / semver range to a valid commit sha
 51735     * If possible also resolves the sha to a valid ref in order to use "git archive"
 51736     */
 51737  
 51738    setRef(refs) {
 51739      var _this12 = this;
 51740  
 51741      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 51742        // get commit ref
 51743        const version = _this12.hash;
 51744  
 51745  
 51746        const resolvedResult = yield (0, (_gitRefResolver || _load_gitRefResolver()).resolveVersion)({
 51747          config: _this12.config,
 51748          git: _this12,
 51749          version,
 51750          refs
 51751        });
 51752        if (!resolvedResult) {
 51753          throw new (_errors || _load_errors()).MessageError(_this12.reporter.lang('couldntFindMatch', version, Array.from(refs.keys()).join(','), _this12.gitUrl.repository));
 51754        }
 51755  
 51756        _this12.hash = resolvedResult.sha;
 51757        _this12.ref = resolvedResult.ref || '';
 51758        return _this12.hash;
 51759      })();
 51760    }
 51761  }
 51762  exports.default = Git;
 51763  
 51764  /***/ }),
 51765  /* 218 */
 51766  /***/ (function(module, exports, __webpack_require__) {
 51767  
 51768  "use strict";
 51769  
 51770  
 51771  Object.defineProperty(exports, "__esModule", {
 51772    value: true
 51773  });
 51774  
 51775  var _asyncToGenerator2;
 51776  
 51777  function _load_asyncToGenerator() {
 51778    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 51779  }
 51780  
 51781  var _resolveRelative;
 51782  
 51783  function _load_resolveRelative() {
 51784    return _resolveRelative = _interopRequireDefault(__webpack_require__(554));
 51785  }
 51786  
 51787  var _validate;
 51788  
 51789  function _load_validate() {
 51790    return _validate = _interopRequireDefault(__webpack_require__(125));
 51791  }
 51792  
 51793  var _fix;
 51794  
 51795  function _load_fix() {
 51796    return _fix = _interopRequireDefault(__webpack_require__(551));
 51797  }
 51798  
 51799  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 51800  
 51801  const path = __webpack_require__(0);
 51802  
 51803  exports.default = (() => {
 51804    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (info, moduleLoc, config, isRoot) {
 51805      // create human readable name
 51806      const name = info.name,
 51807            version = info.version;
 51808  
 51809      let human;
 51810      if (typeof name === 'string') {
 51811        human = name;
 51812      }
 51813      if (human && typeof version === 'string' && version) {
 51814        human += `@${version}`;
 51815      }
 51816      if (isRoot && info._loc) {
 51817        human = path.relative(config.cwd, info._loc);
 51818      }
 51819  
 51820      function warn(msg) {
 51821        if (human) {
 51822          msg = `${human}: ${msg}`;
 51823        }
 51824        config.reporter.warn(msg);
 51825      }
 51826  
 51827      yield (0, (_fix || _load_fix()).default)(info, moduleLoc, config.reporter, warn, config.looseSemver);
 51828      (0, (_resolveRelative || _load_resolveRelative()).default)(info, moduleLoc, config.lockfileFolder);
 51829  
 51830      if (config.cwd === config.globalFolder) {
 51831        return info;
 51832      }
 51833  
 51834      try {
 51835        (0, (_validate || _load_validate()).default)(info, isRoot, config.reporter, warn);
 51836      } catch (err) {
 51837        if (human) {
 51838          err.message = `${human}: ${err.message}`;
 51839        }
 51840        throw err;
 51841      }
 51842  
 51843      return info;
 51844    });
 51845  
 51846    return function (_x, _x2, _x3, _x4) {
 51847      return _ref.apply(this, arguments);
 51848    };
 51849  })();
 51850  
 51851  /***/ }),
 51852  /* 219 */
 51853  /***/ (function(module, exports, __webpack_require__) {
 51854  
 51855  "use strict";
 51856  
 51857  
 51858  Object.defineProperty(exports, "__esModule", {
 51859    value: true
 51860  });
 51861  exports.isValidLicense = isValidLicense;
 51862  exports.isValidBin = isValidBin;
 51863  exports.stringifyPerson = stringifyPerson;
 51864  exports.parsePerson = parsePerson;
 51865  exports.normalizePerson = normalizePerson;
 51866  exports.extractDescription = extractDescription;
 51867  exports.extractRepositoryUrl = extractRepositoryUrl;
 51868  
 51869  
 51870  const path = __webpack_require__(0);
 51871  
 51872  const validateLicense = __webpack_require__(959);
 51873  
 51874  const PARENT_PATH = /^\.\.([\\\/]|$)/;
 51875  
 51876  function isValidLicense(license) {
 51877    return !!license && validateLicense(license).validForNewPackages;
 51878  }
 51879  
 51880  function isValidBin(bin) {
 51881    return !path.isAbsolute(bin) && !PARENT_PATH.test(path.normalize(bin));
 51882  }
 51883  
 51884  function stringifyPerson(person) {
 51885    if (!person || typeof person !== 'object') {
 51886      return person;
 51887    }
 51888  
 51889    const parts = [];
 51890    if (person.name) {
 51891      parts.push(person.name);
 51892    }
 51893  
 51894    const email = person.email || person.mail;
 51895    if (typeof email === 'string') {
 51896      parts.push(`<${email}>`);
 51897    }
 51898  
 51899    const url = person.url || person.web;
 51900    if (typeof url === 'string') {
 51901      parts.push(`(${url})`);
 51902    }
 51903  
 51904    return parts.join(' ');
 51905  }
 51906  
 51907  function parsePerson(person) {
 51908    if (typeof person !== 'string') {
 51909      return person;
 51910    }
 51911  
 51912    // format: name (url) <email>
 51913    const obj = {};
 51914  
 51915    let name = person.match(/^([^\(<]+)/);
 51916    if (name) {
 51917      name = name[0].trim();
 51918      if (name) {
 51919        obj.name = name;
 51920      }
 51921    }
 51922  
 51923    const email = person.match(/<([^>]+)>/);
 51924    if (email) {
 51925      obj.email = email[1];
 51926    }
 51927  
 51928    const url = person.match(/\(([^\)]+)\)/);
 51929    if (url) {
 51930      obj.url = url[1];
 51931    }
 51932  
 51933    return obj;
 51934  }
 51935  
 51936  function normalizePerson(person) {
 51937    return parsePerson(stringifyPerson(person));
 51938  }
 51939  
 51940  function extractDescription(readme) {
 51941    if (typeof readme !== 'string' || readme === '') {
 51942      return undefined;
 51943    }
 51944  
 51945    // split into lines
 51946    const lines = readme.trim().split('\n').map(line => line.trim());
 51947  
 51948    // find the start of the first paragraph, ignore headings
 51949    let start = 0;
 51950    for (; start < lines.length; start++) {
 51951      const line = lines[start];
 51952      if (line && line.match(/^(#|$)/)) {
 51953        // line isn't empty and isn't a heading so this is the start of a paragraph
 51954        start++;
 51955        break;
 51956      }
 51957    }
 51958  
 51959    // skip newlines from the header to the first line
 51960    while (start < lines.length && !lines[start]) {
 51961      start++;
 51962    }
 51963  
 51964    // continue to the first non empty line
 51965    let end = start;
 51966    while (end < lines.length && lines[end]) {
 51967      end++;
 51968    }
 51969  
 51970    return lines.slice(start, end).join(' ');
 51971  }
 51972  
 51973  function extractRepositoryUrl(repository) {
 51974    if (!repository || typeof repository !== 'object') {
 51975      return repository;
 51976    }
 51977    return repository.url;
 51978  }
 51979  
 51980  /***/ }),
 51981  /* 220 */
 51982  /***/ (function(module, exports, __webpack_require__) {
 51983  
 51984  "use strict";
 51985  
 51986  
 51987  Object.defineProperty(exports, "__esModule", {
 51988    value: true
 51989  });
 51990  exports.getPlatformSpecificPackageFilename = getPlatformSpecificPackageFilename;
 51991  exports.getSystemParams = getSystemParams;
 51992  function getPlatformSpecificPackageFilename(pkg) {
 51993    // TODO support hash for all subdependencies that have installs scripts
 51994    const normalizeScope = name => name[0] === '@' ? name.substr(1).replace('/', '-') : name;
 51995    const suffix = getSystemParams();
 51996    return `${normalizeScope(pkg.name)}-v${pkg.version}-${suffix}`;
 51997  }
 51998  
 51999  function getSystemParams() {
 52000    // TODO support platform variant for linux
 52001    return `${process.platform}-${process.arch}-${process.versions.modules || ''}`;
 52002  }
 52003  
 52004  /***/ }),
 52005  /* 221 */
 52006  /***/ (function(module, exports, __webpack_require__) {
 52007  
 52008  "use strict";
 52009  
 52010  
 52011  Object.defineProperty(exports, "__esModule", {
 52012    value: true
 52013  });
 52014  exports.isFakeRoot = isFakeRoot;
 52015  exports.isRootUser = isRootUser;
 52016  function getUid() {
 52017    if (process.platform !== 'win32' && process.getuid) {
 52018      return process.getuid();
 52019    }
 52020    return null;
 52021  }
 52022  
 52023  exports.default = isRootUser(getUid()) && !isFakeRoot();
 52024  function isFakeRoot() {
 52025    return Boolean(process.env.FAKEROOTKEY);
 52026  }
 52027  
 52028  function isRootUser(uid) {
 52029    return uid === 0;
 52030  }
 52031  
 52032  /***/ }),
 52033  /* 222 */
 52034  /***/ (function(module, exports, __webpack_require__) {
 52035  
 52036  "use strict";
 52037  
 52038  
 52039  Object.defineProperty(exports, "__esModule", {
 52040    value: true
 52041  });
 52042  exports.getDataDir = getDataDir;
 52043  exports.getCacheDir = getCacheDir;
 52044  exports.getConfigDir = getConfigDir;
 52045  const path = __webpack_require__(0);
 52046  const userHome = __webpack_require__(67).default;
 52047  
 52048  const FALLBACK_CONFIG_DIR = path.join(userHome, '.config', 'yarn');
 52049  const FALLBACK_CACHE_DIR = path.join(userHome, '.cache', 'yarn');
 52050  
 52051  function getDataDir() {
 52052    if (process.platform === 'win32') {
 52053      const WIN32_APPDATA_DIR = getLocalAppDataDir();
 52054      return WIN32_APPDATA_DIR == null ? FALLBACK_CONFIG_DIR : path.join(WIN32_APPDATA_DIR, 'Data');
 52055    } else if (process.env.XDG_DATA_HOME) {
 52056      return path.join(process.env.XDG_DATA_HOME, 'yarn');
 52057    } else {
 52058      // This could arguably be ~/Library/Application Support/Yarn on Macs,
 52059      // but that feels unintuitive for a cli tool
 52060  
 52061      // Instead, use our prior fallback. Some day this could be
 52062      // path.join(userHome, '.local', 'share', 'yarn')
 52063      // or return path.join(WIN32_APPDATA_DIR, 'Data') on win32
 52064      return FALLBACK_CONFIG_DIR;
 52065    }
 52066  }
 52067  
 52068  function getCacheDir() {
 52069    if (process.platform === 'win32') {
 52070      // process.env.TEMP also exists, but most apps put caches here
 52071      return path.join(getLocalAppDataDir() || path.join(userHome, 'AppData', 'Local', 'Yarn'), 'Cache');
 52072    } else if (process.env.XDG_CACHE_HOME) {
 52073      return path.join(process.env.XDG_CACHE_HOME, 'yarn');
 52074    } else if (process.platform === 'darwin') {
 52075      return path.join(userHome, 'Library', 'Caches', 'Yarn');
 52076    } else {
 52077      return FALLBACK_CACHE_DIR;
 52078    }
 52079  }
 52080  
 52081  function getConfigDir() {
 52082    if (process.platform === 'win32') {
 52083      // Use our prior fallback. Some day this could be
 52084      // return path.join(WIN32_APPDATA_DIR, 'Config')
 52085      const WIN32_APPDATA_DIR = getLocalAppDataDir();
 52086      return WIN32_APPDATA_DIR == null ? FALLBACK_CONFIG_DIR : path.join(WIN32_APPDATA_DIR, 'Config');
 52087    } else if (process.env.XDG_CONFIG_HOME) {
 52088      return path.join(process.env.XDG_CONFIG_HOME, 'yarn');
 52089    } else {
 52090      return FALLBACK_CONFIG_DIR;
 52091    }
 52092  }
 52093  
 52094  function getLocalAppDataDir() {
 52095    return process.env.LOCALAPPDATA ? path.join(process.env.LOCALAPPDATA, 'Yarn') : null;
 52096  }
 52097  
 52098  /***/ }),
 52099  /* 223 */
 52100  /***/ (function(module, exports, __webpack_require__) {
 52101  
 52102  "use strict";
 52103  
 52104  
 52105  Object.defineProperty(exports, "__esModule", {
 52106    value: true
 52107  });
 52108  exports.explodeHashedUrl = explodeHashedUrl;
 52109  function explodeHashedUrl(url) {
 52110    const parts = url.split('#');
 52111  
 52112    return {
 52113      hash: parts[1] || '',
 52114      url: parts[0]
 52115    };
 52116  }
 52117  
 52118  /***/ }),
 52119  /* 224 */
 52120  /***/ (function(module, exports, __webpack_require__) {
 52121  
 52122  module.exports = { "default": __webpack_require__(230), __esModule: true };
 52123  
 52124  /***/ }),
 52125  /* 225 */
 52126  /***/ (function(module, exports, __webpack_require__) {
 52127  
 52128  "use strict";
 52129  
 52130  module.exports = balanced;
 52131  function balanced(a, b, str) {
 52132    if (a instanceof RegExp) a = maybeMatch(a, str);
 52133    if (b instanceof RegExp) b = maybeMatch(b, str);
 52134  
 52135    var r = range(a, b, str);
 52136  
 52137    return r && {
 52138      start: r[0],
 52139      end: r[1],
 52140      pre: str.slice(0, r[0]),
 52141      body: str.slice(r[0] + a.length, r[1]),
 52142      post: str.slice(r[1] + b.length)
 52143    };
 52144  }
 52145  
 52146  function maybeMatch(reg, str) {
 52147    var m = str.match(reg);
 52148    return m ? m[0] : null;
 52149  }
 52150  
 52151  balanced.range = range;
 52152  function range(a, b, str) {
 52153    var begs, beg, left, right, result;
 52154    var ai = str.indexOf(a);
 52155    var bi = str.indexOf(b, ai + 1);
 52156    var i = ai;
 52157  
 52158    if (ai >= 0 && bi > 0) {
 52159      begs = [];
 52160      left = str.length;
 52161  
 52162      while (i >= 0 && !result) {
 52163        if (i == ai) {
 52164          begs.push(i);
 52165          ai = str.indexOf(a, i + 1);
 52166        } else if (begs.length == 1) {
 52167          result = [ begs.pop(), bi ];
 52168        } else {
 52169          beg = begs.pop();
 52170          if (beg < left) {
 52171            left = beg;
 52172            right = bi;
 52173          }
 52174  
 52175          bi = str.indexOf(b, i + 1);
 52176        }
 52177  
 52178        i = ai < bi && ai >= 0 ? ai : bi;
 52179      }
 52180  
 52181      if (begs.length) {
 52182        result = [ left, right ];
 52183      }
 52184    }
 52185  
 52186    return result;
 52187  }
 52188  
 52189  
 52190  /***/ }),
 52191  /* 226 */
 52192  /***/ (function(module, exports, __webpack_require__) {
 52193  
 52194  var concatMap = __webpack_require__(229);
 52195  var balanced = __webpack_require__(225);
 52196  
 52197  module.exports = expandTop;
 52198  
 52199  var escSlash = '\0SLASH'+Math.random()+'\0';
 52200  var escOpen = '\0OPEN'+Math.random()+'\0';
 52201  var escClose = '\0CLOSE'+Math.random()+'\0';
 52202  var escComma = '\0COMMA'+Math.random()+'\0';
 52203  var escPeriod = '\0PERIOD'+Math.random()+'\0';
 52204  
 52205  function numeric(str) {
 52206    return parseInt(str, 10) == str
 52207      ? parseInt(str, 10)
 52208      : str.charCodeAt(0);
 52209  }
 52210  
 52211  function escapeBraces(str) {
 52212    return str.split('\\\\').join(escSlash)
 52213              .split('\\{').join(escOpen)
 52214              .split('\\}').join(escClose)
 52215              .split('\\,').join(escComma)
 52216              .split('\\.').join(escPeriod);
 52217  }
 52218  
 52219  function unescapeBraces(str) {
 52220    return str.split(escSlash).join('\\')
 52221              .split(escOpen).join('{')
 52222              .split(escClose).join('}')
 52223              .split(escComma).join(',')
 52224              .split(escPeriod).join('.');
 52225  }
 52226  
 52227  
 52228  // Basically just str.split(","), but handling cases
 52229  // where we have nested braced sections, which should be
 52230  // treated as individual members, like {a,{b,c},d}
 52231  function parseCommaParts(str) {
 52232    if (!str)
 52233      return [''];
 52234  
 52235    var parts = [];
 52236    var m = balanced('{', '}', str);
 52237  
 52238    if (!m)
 52239      return str.split(',');
 52240  
 52241    var pre = m.pre;
 52242    var body = m.body;
 52243    var post = m.post;
 52244    var p = pre.split(',');
 52245  
 52246    p[p.length-1] += '{' + body + '}';
 52247    var postParts = parseCommaParts(post);
 52248    if (post.length) {
 52249      p[p.length-1] += postParts.shift();
 52250      p.push.apply(p, postParts);
 52251    }
 52252  
 52253    parts.push.apply(parts, p);
 52254  
 52255    return parts;
 52256  }
 52257  
 52258  function expandTop(str) {
 52259    if (!str)
 52260      return [];
 52261  
 52262    // I don't know why Bash 4.3 does this, but it does.
 52263    // Anything starting with {} will have the first two bytes preserved
 52264    // but *only* at the top level, so {},a}b will not expand to anything,
 52265    // but a{},b}c will be expanded to [a}c,abc].
 52266    // One could argue that this is a bug in Bash, but since the goal of
 52267    // this module is to match Bash's rules, we escape a leading {}
 52268    if (str.substr(0, 2) === '{}') {
 52269      str = '\\{\\}' + str.substr(2);
 52270    }
 52271  
 52272    return expand(escapeBraces(str), true).map(unescapeBraces);
 52273  }
 52274  
 52275  function identity(e) {
 52276    return e;
 52277  }
 52278  
 52279  function embrace(str) {
 52280    return '{' + str + '}';
 52281  }
 52282  function isPadded(el) {
 52283    return /^-?0\d/.test(el);
 52284  }
 52285  
 52286  function lte(i, y) {
 52287    return i <= y;
 52288  }
 52289  function gte(i, y) {
 52290    return i >= y;
 52291  }
 52292  
 52293  function expand(str, isTop) {
 52294    var expansions = [];
 52295  
 52296    var m = balanced('{', '}', str);
 52297    if (!m || /\$$/.test(m.pre)) return [str];
 52298  
 52299    var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
 52300    var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
 52301    var isSequence = isNumericSequence || isAlphaSequence;
 52302    var isOptions = m.body.indexOf(',') >= 0;
 52303    if (!isSequence && !isOptions) {
 52304      // {a},b}
 52305      if (m.post.match(/,.*\}/)) {
 52306        str = m.pre + '{' + m.body + escClose + m.post;
 52307        return expand(str);
 52308      }
 52309      return [str];
 52310    }
 52311  
 52312    var n;
 52313    if (isSequence) {
 52314      n = m.body.split(/\.\./);
 52315    } else {
 52316      n = parseCommaParts(m.body);
 52317      if (n.length === 1) {
 52318        // x{{a,b}}y ==> x{a}y x{b}y
 52319        n = expand(n[0], false).map(embrace);
 52320        if (n.length === 1) {
 52321          var post = m.post.length
 52322            ? expand(m.post, false)
 52323            : [''];
 52324          return post.map(function(p) {
 52325            return m.pre + n[0] + p;
 52326          });
 52327        }
 52328      }
 52329    }
 52330  
 52331    // at this point, n is the parts, and we know it's not a comma set
 52332    // with a single entry.
 52333  
 52334    // no need to expand pre, since it is guaranteed to be free of brace-sets
 52335    var pre = m.pre;
 52336    var post = m.post.length
 52337      ? expand(m.post, false)
 52338      : [''];
 52339  
 52340    var N;
 52341  
 52342    if (isSequence) {
 52343      var x = numeric(n[0]);
 52344      var y = numeric(n[1]);
 52345      var width = Math.max(n[0].length, n[1].length)
 52346      var incr = n.length == 3
 52347        ? Math.abs(numeric(n[2]))
 52348        : 1;
 52349      var test = lte;
 52350      var reverse = y < x;
 52351      if (reverse) {
 52352        incr *= -1;
 52353        test = gte;
 52354      }
 52355      var pad = n.some(isPadded);
 52356  
 52357      N = [];
 52358  
 52359      for (var i = x; test(i, y); i += incr) {
 52360        var c;
 52361        if (isAlphaSequence) {
 52362          c = String.fromCharCode(i);
 52363          if (c === '\\')
 52364            c = '';
 52365        } else {
 52366          c = String(i);
 52367          if (pad) {
 52368            var need = width - c.length;
 52369            if (need > 0) {
 52370              var z = new Array(need + 1).join('0');
 52371              if (i < 0)
 52372                c = '-' + z + c.slice(1);
 52373              else
 52374                c = z + c;
 52375            }
 52376          }
 52377        }
 52378        N.push(c);
 52379      }
 52380    } else {
 52381      N = concatMap(n, function(el) { return expand(el, false) });
 52382    }
 52383  
 52384    for (var j = 0; j < N.length; j++) {
 52385      for (var k = 0; k < post.length; k++) {
 52386        var expansion = pre + N[j] + post[k];
 52387        if (!isTop || isSequence || expansion)
 52388          expansions.push(expansion);
 52389      }
 52390    }
 52391  
 52392    return expansions;
 52393  }
 52394  
 52395  
 52396  
 52397  /***/ }),
 52398  /* 227 */
 52399  /***/ (function(module, exports, __webpack_require__) {
 52400  
 52401  "use strict";
 52402  
 52403  
 52404  function preserveCamelCase(str) {
 52405  	let isLastCharLower = false;
 52406  	let isLastCharUpper = false;
 52407  	let isLastLastCharUpper = false;
 52408  
 52409  	for (let i = 0; i < str.length; i++) {
 52410  		const c = str[i];
 52411  
 52412  		if (isLastCharLower && /[a-zA-Z]/.test(c) && c.toUpperCase() === c) {
 52413  			str = str.substr(0, i) + '-' + str.substr(i);
 52414  			isLastCharLower = false;
 52415  			isLastLastCharUpper = isLastCharUpper;
 52416  			isLastCharUpper = true;
 52417  			i++;
 52418  		} else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(c) && c.toLowerCase() === c) {
 52419  			str = str.substr(0, i - 1) + '-' + str.substr(i - 1);
 52420  			isLastLastCharUpper = isLastCharUpper;
 52421  			isLastCharUpper = false;
 52422  			isLastCharLower = true;
 52423  		} else {
 52424  			isLastCharLower = c.toLowerCase() === c;
 52425  			isLastLastCharUpper = isLastCharUpper;
 52426  			isLastCharUpper = c.toUpperCase() === c;
 52427  		}
 52428  	}
 52429  
 52430  	return str;
 52431  }
 52432  
 52433  module.exports = function (str) {
 52434  	if (arguments.length > 1) {
 52435  		str = Array.from(arguments)
 52436  			.map(x => x.trim())
 52437  			.filter(x => x.length)
 52438  			.join('-');
 52439  	} else {
 52440  		str = str.trim();
 52441  	}
 52442  
 52443  	if (str.length === 0) {
 52444  		return '';
 52445  	}
 52446  
 52447  	if (str.length === 1) {
 52448  		return str.toLowerCase();
 52449  	}
 52450  
 52451  	if (/^[a-z0-9]+$/.test(str)) {
 52452  		return str;
 52453  	}
 52454  
 52455  	const hasUpperCase = str !== str.toLowerCase();
 52456  
 52457  	if (hasUpperCase) {
 52458  		str = preserveCamelCase(str);
 52459  	}
 52460  
 52461  	return str
 52462  		.replace(/^[_.\- ]+/, '')
 52463  		.toLowerCase()
 52464  		.replace(/[_.\- ]+(\w|$)/g, (m, p1) => p1.toUpperCase());
 52465  };
 52466  
 52467  
 52468  /***/ }),
 52469  /* 228 */
 52470  /***/ (function(module, exports) {
 52471  
 52472  function Caseless (dict) {
 52473    this.dict = dict || {}
 52474  }
 52475  Caseless.prototype.set = function (name, value, clobber) {
 52476    if (typeof name === 'object') {
 52477      for (var i in name) {
 52478        this.set(i, name[i], value)
 52479      }
 52480    } else {
 52481      if (typeof clobber === 'undefined') clobber = true
 52482      var has = this.has(name)
 52483  
 52484      if (!clobber && has) this.dict[has] = this.dict[has] + ',' + value
 52485      else this.dict[has || name] = value
 52486      return has
 52487    }
 52488  }
 52489  Caseless.prototype.has = function (name) {
 52490    var keys = Object.keys(this.dict)
 52491      , name = name.toLowerCase()
 52492      ;
 52493    for (var i=0;i<keys.length;i++) {
 52494      if (keys[i].toLowerCase() === name) return keys[i]
 52495    }
 52496    return false
 52497  }
 52498  Caseless.prototype.get = function (name) {
 52499    name = name.toLowerCase()
 52500    var result, _key
 52501    var headers = this.dict
 52502    Object.keys(headers).forEach(function (key) {
 52503      _key = key.toLowerCase()
 52504      if (name === _key) result = headers[key]
 52505    })
 52506    return result
 52507  }
 52508  Caseless.prototype.swap = function (name) {
 52509    var has = this.has(name)
 52510    if (has === name) return
 52511    if (!has) throw new Error('There is no header than matches "'+name+'"')
 52512    this.dict[name] = this.dict[has]
 52513    delete this.dict[has]
 52514  }
 52515  Caseless.prototype.del = function (name) {
 52516    var has = this.has(name)
 52517    return delete this.dict[has || name]
 52518  }
 52519  
 52520  module.exports = function (dict) {return new Caseless(dict)}
 52521  module.exports.httpify = function (resp, headers) {
 52522    var c = new Caseless(headers)
 52523    resp.setHeader = function (key, value, clobber) {
 52524      if (typeof value === 'undefined') return
 52525      return c.set(key, value, clobber)
 52526    }
 52527    resp.hasHeader = function (key) {
 52528      return c.has(key)
 52529    }
 52530    resp.getHeader = function (key) {
 52531      return c.get(key)
 52532    }
 52533    resp.removeHeader = function (key) {
 52534      return c.del(key)
 52535    }
 52536    resp.headers = c.dict
 52537    return c
 52538  }
 52539  
 52540  
 52541  /***/ }),
 52542  /* 229 */
 52543  /***/ (function(module, exports) {
 52544  
 52545  module.exports = function (xs, fn) {
 52546      var res = [];
 52547      for (var i = 0; i < xs.length; i++) {
 52548          var x = fn(xs[i], i);
 52549          if (isArray(x)) res.push.apply(res, x);
 52550          else res.push(x);
 52551      }
 52552      return res;
 52553  };
 52554  
 52555  var isArray = Array.isArray || function (xs) {
 52556      return Object.prototype.toString.call(xs) === '[object Array]';
 52557  };
 52558  
 52559  
 52560  /***/ }),
 52561  /* 230 */
 52562  /***/ (function(module, exports, __webpack_require__) {
 52563  
 52564  __webpack_require__(256);
 52565  __webpack_require__(258);
 52566  __webpack_require__(261);
 52567  __webpack_require__(257);
 52568  __webpack_require__(259);
 52569  __webpack_require__(260);
 52570  module.exports = __webpack_require__(31).Promise;
 52571  
 52572  
 52573  /***/ }),
 52574  /* 231 */
 52575  /***/ (function(module, exports) {
 52576  
 52577  module.exports = function () { /* empty */ };
 52578  
 52579  
 52580  /***/ }),
 52581  /* 232 */
 52582  /***/ (function(module, exports) {
 52583  
 52584  module.exports = function (it, Constructor, name, forbiddenField) {
 52585    if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
 52586      throw TypeError(name + ': incorrect invocation!');
 52587    } return it;
 52588  };
 52589  
 52590  
 52591  /***/ }),
 52592  /* 233 */
 52593  /***/ (function(module, exports, __webpack_require__) {
 52594  
 52595  // false -> Array#indexOf
 52596  // true  -> Array#includes
 52597  var toIObject = __webpack_require__(98);
 52598  var toLength = __webpack_require__(136);
 52599  var toAbsoluteIndex = __webpack_require__(251);
 52600  module.exports = function (IS_INCLUDES) {
 52601    return function ($this, el, fromIndex) {
 52602      var O = toIObject($this);
 52603      var length = toLength(O.length);
 52604      var index = toAbsoluteIndex(fromIndex, length);
 52605      var value;
 52606      // Array#includes uses SameValueZero equality algorithm
 52607      // eslint-disable-next-line no-self-compare
 52608      if (IS_INCLUDES && el != el) while (length > index) {
 52609        value = O[index++];
 52610        // eslint-disable-next-line no-self-compare
 52611        if (value != value) return true;
 52612      // Array#indexOf ignores holes, Array#includes - not
 52613      } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
 52614        if (O[index] === el) return IS_INCLUDES || index || 0;
 52615      } return !IS_INCLUDES && -1;
 52616    };
 52617  };
 52618  
 52619  
 52620  /***/ }),
 52621  /* 234 */
 52622  /***/ (function(module, exports, __webpack_require__) {
 52623  
 52624  var ctx = __webpack_require__(70);
 52625  var call = __webpack_require__(238);
 52626  var isArrayIter = __webpack_require__(237);
 52627  var anObject = __webpack_require__(35);
 52628  var toLength = __webpack_require__(136);
 52629  var getIterFn = __webpack_require__(254);
 52630  var BREAK = {};
 52631  var RETURN = {};
 52632  var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
 52633    var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
 52634    var f = ctx(fn, that, entries ? 2 : 1);
 52635    var index = 0;
 52636    var length, step, iterator, result;
 52637    if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
 52638    // fast case for arrays with default iterator
 52639    if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
 52640      result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
 52641      if (result === BREAK || result === RETURN) return result;
 52642    } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
 52643      result = call(iterator, f, step.value, entries);
 52644      if (result === BREAK || result === RETURN) return result;
 52645    }
 52646  };
 52647  exports.BREAK = BREAK;
 52648  exports.RETURN = RETURN;
 52649  
 52650  
 52651  /***/ }),
 52652  /* 235 */
 52653  /***/ (function(module, exports, __webpack_require__) {
 52654  
 52655  module.exports = !__webpack_require__(52) && !__webpack_require__(112)(function () {
 52656    return Object.defineProperty(__webpack_require__(92)('div'), 'a', { get: function () { return 7; } }).a != 7;
 52657  });
 52658  
 52659  
 52660  /***/ }),
 52661  /* 236 */
 52662  /***/ (function(module, exports) {
 52663  
 52664  // fast apply, http://jsperf.lnkit.com/fast-apply/5
 52665  module.exports = function (fn, args, that) {
 52666    var un = that === undefined;
 52667    switch (args.length) {
 52668      case 0: return un ? fn()
 52669                        : fn.call(that);
 52670      case 1: return un ? fn(args[0])
 52671                        : fn.call(that, args[0]);
 52672      case 2: return un ? fn(args[0], args[1])
 52673                        : fn.call(that, args[0], args[1]);
 52674      case 3: return un ? fn(args[0], args[1], args[2])
 52675                        : fn.call(that, args[0], args[1], args[2]);
 52676      case 4: return un ? fn(args[0], args[1], args[2], args[3])
 52677                        : fn.call(that, args[0], args[1], args[2], args[3]);
 52678    } return fn.apply(that, args);
 52679  };
 52680  
 52681  
 52682  /***/ }),
 52683  /* 237 */
 52684  /***/ (function(module, exports, __webpack_require__) {
 52685  
 52686  // check on default Array iterator
 52687  var Iterators = __webpack_require__(54);
 52688  var ITERATOR = __webpack_require__(21)('iterator');
 52689  var ArrayProto = Array.prototype;
 52690  
 52691  module.exports = function (it) {
 52692    return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
 52693  };
 52694  
 52695  
 52696  /***/ }),
 52697  /* 238 */
 52698  /***/ (function(module, exports, __webpack_require__) {
 52699  
 52700  // call something on iterator step with safe closing on error
 52701  var anObject = __webpack_require__(35);
 52702  module.exports = function (iterator, fn, value, entries) {
 52703    try {
 52704      return entries ? fn(anObject(value)[0], value[1]) : fn(value);
 52705    // 7.4.6 IteratorClose(iterator, completion)
 52706    } catch (e) {
 52707      var ret = iterator['return'];
 52708      if (ret !== undefined) anObject(ret.call(iterator));
 52709      throw e;
 52710    }
 52711  };
 52712  
 52713  
 52714  /***/ }),
 52715  /* 239 */
 52716  /***/ (function(module, exports, __webpack_require__) {
 52717  
 52718  "use strict";
 52719  
 52720  var create = __webpack_require__(243);
 52721  var descriptor = __webpack_require__(132);
 52722  var setToStringTag = __webpack_require__(95);
 52723  var IteratorPrototype = {};
 52724  
 52725  // 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
 52726  __webpack_require__(42)(IteratorPrototype, __webpack_require__(21)('iterator'), function () { return this; });
 52727  
 52728  module.exports = function (Constructor, NAME, next) {
 52729    Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
 52730    setToStringTag(Constructor, NAME + ' Iterator');
 52731  };
 52732  
 52733  
 52734  /***/ }),
 52735  /* 240 */
 52736  /***/ (function(module, exports, __webpack_require__) {
 52737  
 52738  var ITERATOR = __webpack_require__(21)('iterator');
 52739  var SAFE_CLOSING = false;
 52740  
 52741  try {
 52742    var riter = [7][ITERATOR]();
 52743    riter['return'] = function () { SAFE_CLOSING = true; };
 52744    // eslint-disable-next-line no-throw-literal
 52745    Array.from(riter, function () { throw 2; });
 52746  } catch (e) { /* empty */ }
 52747  
 52748  module.exports = function (exec, skipClosing) {
 52749    if (!skipClosing && !SAFE_CLOSING) return false;
 52750    var safe = false;
 52751    try {
 52752      var arr = [7];
 52753      var iter = arr[ITERATOR]();
 52754      iter.next = function () { return { done: safe = true }; };
 52755      arr[ITERATOR] = function () { return iter; };
 52756      exec(arr);
 52757    } catch (e) { /* empty */ }
 52758    return safe;
 52759  };
 52760  
 52761  
 52762  /***/ }),
 52763  /* 241 */
 52764  /***/ (function(module, exports) {
 52765  
 52766  module.exports = function (done, value) {
 52767    return { value: value, done: !!done };
 52768  };
 52769  
 52770  
 52771  /***/ }),
 52772  /* 242 */
 52773  /***/ (function(module, exports, __webpack_require__) {
 52774  
 52775  var global = __webpack_require__(17);
 52776  var macrotask = __webpack_require__(135).set;
 52777  var Observer = global.MutationObserver || global.WebKitMutationObserver;
 52778  var process = global.process;
 52779  var Promise = global.Promise;
 52780  var isNode = __webpack_require__(69)(process) == 'process';
 52781  
 52782  module.exports = function () {
 52783    var head, last, notify;
 52784  
 52785    var flush = function () {
 52786      var parent, fn;
 52787      if (isNode && (parent = process.domain)) parent.exit();
 52788      while (head) {
 52789        fn = head.fn;
 52790        head = head.next;
 52791        try {
 52792          fn();
 52793        } catch (e) {
 52794          if (head) notify();
 52795          else last = undefined;
 52796          throw e;
 52797        }
 52798      } last = undefined;
 52799      if (parent) parent.enter();
 52800    };
 52801  
 52802    // Node.js
 52803    if (isNode) {
 52804      notify = function () {
 52805        process.nextTick(flush);
 52806      };
 52807    // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339
 52808    } else if (Observer && !(global.navigator && global.navigator.standalone)) {
 52809      var toggle = true;
 52810      var node = document.createTextNode('');
 52811      new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
 52812      notify = function () {
 52813        node.data = toggle = !toggle;
 52814      };
 52815    // environments with maybe non-completely correct, but existent Promise
 52816    } else if (Promise && Promise.resolve) {
 52817      // Promise.resolve without an argument throws an error in LG WebOS 2
 52818      var promise = Promise.resolve(undefined);
 52819      notify = function () {
 52820        promise.then(flush);
 52821      };
 52822    // for other environments - macrotask based on:
 52823    // - setImmediate
 52824    // - MessageChannel
 52825    // - window.postMessag
 52826    // - onreadystatechange
 52827    // - setTimeout
 52828    } else {
 52829      notify = function () {
 52830        // strange IE + webpack dev server bug - use .call(global)
 52831        macrotask.call(global, flush);
 52832      };
 52833    }
 52834  
 52835    return function (fn) {
 52836      var task = { fn: fn, next: undefined };
 52837      if (last) last.next = task;
 52838      if (!head) {
 52839        head = task;
 52840        notify();
 52841      } last = task;
 52842    };
 52843  };
 52844  
 52845  
 52846  /***/ }),
 52847  /* 243 */
 52848  /***/ (function(module, exports, __webpack_require__) {
 52849  
 52850  // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
 52851  var anObject = __webpack_require__(35);
 52852  var dPs = __webpack_require__(244);
 52853  var enumBugKeys = __webpack_require__(127);
 52854  var IE_PROTO = __webpack_require__(96)('IE_PROTO');
 52855  var Empty = function () { /* empty */ };
 52856  var PROTOTYPE = 'prototype';
 52857  
 52858  // Create object with fake `null` prototype: use iframe Object with cleared prototype
 52859  var createDict = function () {
 52860    // Thrash, waste and sodomy: IE GC bug
 52861    var iframe = __webpack_require__(92)('iframe');
 52862    var i = enumBugKeys.length;
 52863    var lt = '<';
 52864    var gt = '>';
 52865    var iframeDocument;
 52866    iframe.style.display = 'none';
 52867    __webpack_require__(128).appendChild(iframe);
 52868    iframe.src = 'javascript:'; // eslint-disable-line no-script-url
 52869    // createDict = iframe.contentWindow.Object;
 52870    // html.removeChild(iframe);
 52871    iframeDocument = iframe.contentWindow.document;
 52872    iframeDocument.open();
 52873    iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
 52874    iframeDocument.close();
 52875    createDict = iframeDocument.F;
 52876    while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
 52877    return createDict();
 52878  };
 52879  
 52880  module.exports = Object.create || function create(O, Properties) {
 52881    var result;
 52882    if (O !== null) {
 52883      Empty[PROTOTYPE] = anObject(O);
 52884      result = new Empty();
 52885      Empty[PROTOTYPE] = null;
 52886      // add "__proto__" for Object.getPrototypeOf polyfill
 52887      result[IE_PROTO] = O;
 52888    } else result = createDict();
 52889    return Properties === undefined ? result : dPs(result, Properties);
 52890  };
 52891  
 52892  
 52893  /***/ }),
 52894  /* 244 */
 52895  /***/ (function(module, exports, __webpack_require__) {
 52896  
 52897  var dP = __webpack_require__(72);
 52898  var anObject = __webpack_require__(35);
 52899  var getKeys = __webpack_require__(172);
 52900  
 52901  module.exports = __webpack_require__(52) ? Object.defineProperties : function defineProperties(O, Properties) {
 52902    anObject(O);
 52903    var keys = getKeys(Properties);
 52904    var length = keys.length;
 52905    var i = 0;
 52906    var P;
 52907    while (length > i) dP.f(O, P = keys[i++], Properties[P]);
 52908    return O;
 52909  };
 52910  
 52911  
 52912  /***/ }),
 52913  /* 245 */
 52914  /***/ (function(module, exports, __webpack_require__) {
 52915  
 52916  // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
 52917  var has = __webpack_require__(71);
 52918  var toObject = __webpack_require__(173);
 52919  var IE_PROTO = __webpack_require__(96)('IE_PROTO');
 52920  var ObjectProto = Object.prototype;
 52921  
 52922  module.exports = Object.getPrototypeOf || function (O) {
 52923    O = toObject(O);
 52924    if (has(O, IE_PROTO)) return O[IE_PROTO];
 52925    if (typeof O.constructor == 'function' && O instanceof O.constructor) {
 52926      return O.constructor.prototype;
 52927    } return O instanceof Object ? ObjectProto : null;
 52928  };
 52929  
 52930  
 52931  /***/ }),
 52932  /* 246 */
 52933  /***/ (function(module, exports, __webpack_require__) {
 52934  
 52935  var has = __webpack_require__(71);
 52936  var toIObject = __webpack_require__(98);
 52937  var arrayIndexOf = __webpack_require__(233)(false);
 52938  var IE_PROTO = __webpack_require__(96)('IE_PROTO');
 52939  
 52940  module.exports = function (object, names) {
 52941    var O = toIObject(object);
 52942    var i = 0;
 52943    var result = [];
 52944    var key;
 52945    for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
 52946    // Don't enum bug & hidden keys
 52947    while (names.length > i) if (has(O, key = names[i++])) {
 52948      ~arrayIndexOf(result, key) || result.push(key);
 52949    }
 52950    return result;
 52951  };
 52952  
 52953  
 52954  /***/ }),
 52955  /* 247 */
 52956  /***/ (function(module, exports, __webpack_require__) {
 52957  
 52958  var hide = __webpack_require__(42);
 52959  module.exports = function (target, src, safe) {
 52960    for (var key in src) {
 52961      if (safe && target[key]) target[key] = src[key];
 52962      else hide(target, key, src[key]);
 52963    } return target;
 52964  };
 52965  
 52966  
 52967  /***/ }),
 52968  /* 248 */
 52969  /***/ (function(module, exports, __webpack_require__) {
 52970  
 52971  module.exports = __webpack_require__(42);
 52972  
 52973  
 52974  /***/ }),
 52975  /* 249 */
 52976  /***/ (function(module, exports, __webpack_require__) {
 52977  
 52978  "use strict";
 52979  
 52980  var global = __webpack_require__(17);
 52981  var core = __webpack_require__(31);
 52982  var dP = __webpack_require__(72);
 52983  var DESCRIPTORS = __webpack_require__(52);
 52984  var SPECIES = __webpack_require__(21)('species');
 52985  
 52986  module.exports = function (KEY) {
 52987    var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
 52988    if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
 52989      configurable: true,
 52990      get: function () { return this; }
 52991    });
 52992  };
 52993  
 52994  
 52995  /***/ }),
 52996  /* 250 */
 52997  /***/ (function(module, exports, __webpack_require__) {
 52998  
 52999  var toInteger = __webpack_require__(97);
 53000  var defined = __webpack_require__(91);
 53001  // true  -> String#at
 53002  // false -> String#codePointAt
 53003  module.exports = function (TO_STRING) {
 53004    return function (that, pos) {
 53005      var s = String(defined(that));
 53006      var i = toInteger(pos);
 53007      var l = s.length;
 53008      var a, b;
 53009      if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
 53010      a = s.charCodeAt(i);
 53011      return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
 53012        ? TO_STRING ? s.charAt(i) : a
 53013        : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
 53014    };
 53015  };
 53016  
 53017  
 53018  /***/ }),
 53019  /* 251 */
 53020  /***/ (function(module, exports, __webpack_require__) {
 53021  
 53022  var toInteger = __webpack_require__(97);
 53023  var max = Math.max;
 53024  var min = Math.min;
 53025  module.exports = function (index, length) {
 53026    index = toInteger(index);
 53027    return index < 0 ? max(index + length, 0) : min(index, length);
 53028  };
 53029  
 53030  
 53031  /***/ }),
 53032  /* 252 */
 53033  /***/ (function(module, exports, __webpack_require__) {
 53034  
 53035  // 7.1.1 ToPrimitive(input [, PreferredType])
 53036  var isObject = __webpack_require__(53);
 53037  // instead of the ES6 spec version, we didn't implement @@toPrimitive case
 53038  // and the second argument - flag - preferred type is a string
 53039  module.exports = function (it, S) {
 53040    if (!isObject(it)) return it;
 53041    var fn, val;
 53042    if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
 53043    if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
 53044    if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
 53045    throw TypeError("Can't convert object to primitive value");
 53046  };
 53047  
 53048  
 53049  /***/ }),
 53050  /* 253 */
 53051  /***/ (function(module, exports, __webpack_require__) {
 53052  
 53053  var global = __webpack_require__(17);
 53054  var navigator = global.navigator;
 53055  
 53056  module.exports = navigator && navigator.userAgent || '';
 53057  
 53058  
 53059  /***/ }),
 53060  /* 254 */
 53061  /***/ (function(module, exports, __webpack_require__) {
 53062  
 53063  var classof = __webpack_require__(126);
 53064  var ITERATOR = __webpack_require__(21)('iterator');
 53065  var Iterators = __webpack_require__(54);
 53066  module.exports = __webpack_require__(31).getIteratorMethod = function (it) {
 53067    if (it != undefined) return it[ITERATOR]
 53068      || it['@@iterator']
 53069      || Iterators[classof(it)];
 53070  };
 53071  
 53072  
 53073  /***/ }),
 53074  /* 255 */
 53075  /***/ (function(module, exports, __webpack_require__) {
 53076  
 53077  "use strict";
 53078  
 53079  var addToUnscopables = __webpack_require__(231);
 53080  var step = __webpack_require__(241);
 53081  var Iterators = __webpack_require__(54);
 53082  var toIObject = __webpack_require__(98);
 53083  
 53084  // 22.1.3.4 Array.prototype.entries()
 53085  // 22.1.3.13 Array.prototype.keys()
 53086  // 22.1.3.29 Array.prototype.values()
 53087  // 22.1.3.30 Array.prototype[@@iterator]()
 53088  module.exports = __webpack_require__(129)(Array, 'Array', function (iterated, kind) {
 53089    this._t = toIObject(iterated); // target
 53090    this._i = 0;                   // next index
 53091    this._k = kind;                // kind
 53092  // 22.1.5.2.1 %ArrayIteratorPrototype%.next()
 53093  }, function () {
 53094    var O = this._t;
 53095    var kind = this._k;
 53096    var index = this._i++;
 53097    if (!O || index >= O.length) {
 53098      this._t = undefined;
 53099      return step(1);
 53100    }
 53101    if (kind == 'keys') return step(0, index);
 53102    if (kind == 'values') return step(0, O[index]);
 53103    return step(0, [index, O[index]]);
 53104  }, 'values');
 53105  
 53106  // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
 53107  Iterators.Arguments = Iterators.Array;
 53108  
 53109  addToUnscopables('keys');
 53110  addToUnscopables('values');
 53111  addToUnscopables('entries');
 53112  
 53113  
 53114  /***/ }),
 53115  /* 256 */
 53116  /***/ (function(module, exports) {
 53117  
 53118  
 53119  
 53120  /***/ }),
 53121  /* 257 */
 53122  /***/ (function(module, exports, __webpack_require__) {
 53123  
 53124  "use strict";
 53125  
 53126  var LIBRARY = __webpack_require__(93);
 53127  var global = __webpack_require__(17);
 53128  var ctx = __webpack_require__(70);
 53129  var classof = __webpack_require__(126);
 53130  var $export = __webpack_require__(60);
 53131  var isObject = __webpack_require__(53);
 53132  var aFunction = __webpack_require__(68);
 53133  var anInstance = __webpack_require__(232);
 53134  var forOf = __webpack_require__(234);
 53135  var speciesConstructor = __webpack_require__(134);
 53136  var task = __webpack_require__(135).set;
 53137  var microtask = __webpack_require__(242)();
 53138  var newPromiseCapabilityModule = __webpack_require__(94);
 53139  var perform = __webpack_require__(130);
 53140  var userAgent = __webpack_require__(253);
 53141  var promiseResolve = __webpack_require__(131);
 53142  var PROMISE = 'Promise';
 53143  var TypeError = global.TypeError;
 53144  var process = global.process;
 53145  var versions = process && process.versions;
 53146  var v8 = versions && versions.v8 || '';
 53147  var $Promise = global[PROMISE];
 53148  var isNode = classof(process) == 'process';
 53149  var empty = function () { /* empty */ };
 53150  var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
 53151  var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;
 53152  
 53153  var USE_NATIVE = !!function () {
 53154    try {
 53155      // correct subclassing with @@species support
 53156      var promise = $Promise.resolve(1);
 53157      var FakePromise = (promise.constructor = {})[__webpack_require__(21)('species')] = function (exec) {
 53158        exec(empty, empty);
 53159      };
 53160      // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
 53161      return (isNode || typeof PromiseRejectionEvent == 'function')
 53162        && promise.then(empty) instanceof FakePromise
 53163        // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
 53164        // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
 53165        // we can't detect it synchronously, so just check versions
 53166        && v8.indexOf('6.6') !== 0
 53167        && userAgent.indexOf('Chrome/66') === -1;
 53168    } catch (e) { /* empty */ }
 53169  }();
 53170  
 53171  // helpers
 53172  var isThenable = function (it) {
 53173    var then;
 53174    return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
 53175  };
 53176  var notify = function (promise, isReject) {
 53177    if (promise._n) return;
 53178    promise._n = true;
 53179    var chain = promise._c;
 53180    microtask(function () {
 53181      var value = promise._v;
 53182      var ok = promise._s == 1;
 53183      var i = 0;
 53184      var run = function (reaction) {
 53185        var handler = ok ? reaction.ok : reaction.fail;
 53186        var resolve = reaction.resolve;
 53187        var reject = reaction.reject;
 53188        var domain = reaction.domain;
 53189        var result, then, exited;
 53190        try {
 53191          if (handler) {
 53192            if (!ok) {
 53193              if (promise._h == 2) onHandleUnhandled(promise);
 53194              promise._h = 1;
 53195            }
 53196            if (handler === true) result = value;
 53197            else {
 53198              if (domain) domain.enter();
 53199              result = handler(value); // may throw
 53200              if (domain) {
 53201                domain.exit();
 53202                exited = true;
 53203              }
 53204            }
 53205            if (result === reaction.promise) {
 53206              reject(TypeError('Promise-chain cycle'));
 53207            } else if (then = isThenable(result)) {
 53208              then.call(result, resolve, reject);
 53209            } else resolve(result);
 53210          } else reject(value);
 53211        } catch (e) {
 53212          if (domain && !exited) domain.exit();
 53213          reject(e);
 53214        }
 53215      };
 53216      while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
 53217      promise._c = [];
 53218      promise._n = false;
 53219      if (isReject && !promise._h) onUnhandled(promise);
 53220    });
 53221  };
 53222  var onUnhandled = function (promise) {
 53223    task.call(global, function () {
 53224      var value = promise._v;
 53225      var unhandled = isUnhandled(promise);
 53226      var result, handler, console;
 53227      if (unhandled) {
 53228        result = perform(function () {
 53229          if (isNode) {
 53230            process.emit('unhandledRejection', value, promise);
 53231          } else if (handler = global.onunhandledrejection) {
 53232            handler({ promise: promise, reason: value });
 53233          } else if ((console = global.console) && console.error) {
 53234            console.error('Unhandled promise rejection', value);
 53235          }
 53236        });
 53237        // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
 53238        promise._h = isNode || isUnhandled(promise) ? 2 : 1;
 53239      } promise._a = undefined;
 53240      if (unhandled && result.e) throw result.v;
 53241    });
 53242  };
 53243  var isUnhandled = function (promise) {
 53244    return promise._h !== 1 && (promise._a || promise._c).length === 0;
 53245  };
 53246  var onHandleUnhandled = function (promise) {
 53247    task.call(global, function () {
 53248      var handler;
 53249      if (isNode) {
 53250        process.emit('rejectionHandled', promise);
 53251      } else if (handler = global.onrejectionhandled) {
 53252        handler({ promise: promise, reason: promise._v });
 53253      }
 53254    });
 53255  };
 53256  var $reject = function (value) {
 53257    var promise = this;
 53258    if (promise._d) return;
 53259    promise._d = true;
 53260    promise = promise._w || promise; // unwrap
 53261    promise._v = value;
 53262    promise._s = 2;
 53263    if (!promise._a) promise._a = promise._c.slice();
 53264    notify(promise, true);
 53265  };
 53266  var $resolve = function (value) {
 53267    var promise = this;
 53268    var then;
 53269    if (promise._d) return;
 53270    promise._d = true;
 53271    promise = promise._w || promise; // unwrap
 53272    try {
 53273      if (promise === value) throw TypeError("Promise can't be resolved itself");
 53274      if (then = isThenable(value)) {
 53275        microtask(function () {
 53276          var wrapper = { _w: promise, _d: false }; // wrap
 53277          try {
 53278            then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
 53279          } catch (e) {
 53280            $reject.call(wrapper, e);
 53281          }
 53282        });
 53283      } else {
 53284        promise._v = value;
 53285        promise._s = 1;
 53286        notify(promise, false);
 53287      }
 53288    } catch (e) {
 53289      $reject.call({ _w: promise, _d: false }, e); // wrap
 53290    }
 53291  };
 53292  
 53293  // constructor polyfill
 53294  if (!USE_NATIVE) {
 53295    // 25.4.3.1 Promise(executor)
 53296    $Promise = function Promise(executor) {
 53297      anInstance(this, $Promise, PROMISE, '_h');
 53298      aFunction(executor);
 53299      Internal.call(this);
 53300      try {
 53301        executor(ctx($resolve, this, 1), ctx($reject, this, 1));
 53302      } catch (err) {
 53303        $reject.call(this, err);
 53304      }
 53305    };
 53306    // eslint-disable-next-line no-unused-vars
 53307    Internal = function Promise(executor) {
 53308      this._c = [];             // <- awaiting reactions
 53309      this._a = undefined;      // <- checked in isUnhandled reactions
 53310      this._s = 0;              // <- state
 53311      this._d = false;          // <- done
 53312      this._v = undefined;      // <- value
 53313      this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
 53314      this._n = false;          // <- notify
 53315    };
 53316    Internal.prototype = __webpack_require__(247)($Promise.prototype, {
 53317      // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
 53318      then: function then(onFulfilled, onRejected) {
 53319        var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
 53320        reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
 53321        reaction.fail = typeof onRejected == 'function' && onRejected;
 53322        reaction.domain = isNode ? process.domain : undefined;
 53323        this._c.push(reaction);
 53324        if (this._a) this._a.push(reaction);
 53325        if (this._s) notify(this, false);
 53326        return reaction.promise;
 53327      },
 53328      // 25.4.5.1 Promise.prototype.catch(onRejected)
 53329      'catch': function (onRejected) {
 53330        return this.then(undefined, onRejected);
 53331      }
 53332    });
 53333    OwnPromiseCapability = function () {
 53334      var promise = new Internal();
 53335      this.promise = promise;
 53336      this.resolve = ctx($resolve, promise, 1);
 53337      this.reject = ctx($reject, promise, 1);
 53338    };
 53339    newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
 53340      return C === $Promise || C === Wrapper
 53341        ? new OwnPromiseCapability(C)
 53342        : newGenericPromiseCapability(C);
 53343    };
 53344  }
 53345  
 53346  $export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
 53347  __webpack_require__(95)($Promise, PROMISE);
 53348  __webpack_require__(249)(PROMISE);
 53349  Wrapper = __webpack_require__(31)[PROMISE];
 53350  
 53351  // statics
 53352  $export($export.S + $export.F * !USE_NATIVE, PROMISE, {
 53353    // 25.4.4.5 Promise.reject(r)
 53354    reject: function reject(r) {
 53355      var capability = newPromiseCapability(this);
 53356      var $$reject = capability.reject;
 53357      $$reject(r);
 53358      return capability.promise;
 53359    }
 53360  });
 53361  $export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
 53362    // 25.4.4.6 Promise.resolve(x)
 53363    resolve: function resolve(x) {
 53364      return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
 53365    }
 53366  });
 53367  $export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(240)(function (iter) {
 53368    $Promise.all(iter)['catch'](empty);
 53369  })), PROMISE, {
 53370    // 25.4.4.1 Promise.all(iterable)
 53371    all: function all(iterable) {
 53372      var C = this;
 53373      var capability = newPromiseCapability(C);
 53374      var resolve = capability.resolve;
 53375      var reject = capability.reject;
 53376      var result = perform(function () {
 53377        var values = [];
 53378        var index = 0;
 53379        var remaining = 1;
 53380        forOf(iterable, false, function (promise) {
 53381          var $index = index++;
 53382          var alreadyCalled = false;
 53383          values.push(undefined);
 53384          remaining++;
 53385          C.resolve(promise).then(function (value) {
 53386            if (alreadyCalled) return;
 53387            alreadyCalled = true;
 53388            values[$index] = value;
 53389            --remaining || resolve(values);
 53390          }, reject);
 53391        });
 53392        --remaining || resolve(values);
 53393      });
 53394      if (result.e) reject(result.v);
 53395      return capability.promise;
 53396    },
 53397    // 25.4.4.4 Promise.race(iterable)
 53398    race: function race(iterable) {
 53399      var C = this;
 53400      var capability = newPromiseCapability(C);
 53401      var reject = capability.reject;
 53402      var result = perform(function () {
 53403        forOf(iterable, false, function (promise) {
 53404          C.resolve(promise).then(capability.resolve, reject);
 53405        });
 53406      });
 53407      if (result.e) reject(result.v);
 53408      return capability.promise;
 53409    }
 53410  });
 53411  
 53412  
 53413  /***/ }),
 53414  /* 258 */
 53415  /***/ (function(module, exports, __webpack_require__) {
 53416  
 53417  "use strict";
 53418  
 53419  var $at = __webpack_require__(250)(true);
 53420  
 53421  // 21.1.3.27 String.prototype[@@iterator]()
 53422  __webpack_require__(129)(String, 'String', function (iterated) {
 53423    this._t = String(iterated); // target
 53424    this._i = 0;                // next index
 53425  // 21.1.5.2.1 %StringIteratorPrototype%.next()
 53426  }, function () {
 53427    var O = this._t;
 53428    var index = this._i;
 53429    var point;
 53430    if (index >= O.length) return { value: undefined, done: true };
 53431    point = $at(O, index);
 53432    this._i += point.length;
 53433    return { value: point, done: false };
 53434  });
 53435  
 53436  
 53437  /***/ }),
 53438  /* 259 */
 53439  /***/ (function(module, exports, __webpack_require__) {
 53440  
 53441  "use strict";
 53442  // https://github.com/tc39/proposal-promise-finally
 53443  
 53444  var $export = __webpack_require__(60);
 53445  var core = __webpack_require__(31);
 53446  var global = __webpack_require__(17);
 53447  var speciesConstructor = __webpack_require__(134);
 53448  var promiseResolve = __webpack_require__(131);
 53449  
 53450  $export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {
 53451    var C = speciesConstructor(this, core.Promise || global.Promise);
 53452    var isFunction = typeof onFinally == 'function';
 53453    return this.then(
 53454      isFunction ? function (x) {
 53455        return promiseResolve(C, onFinally()).then(function () { return x; });
 53456      } : onFinally,
 53457      isFunction ? function (e) {
 53458        return promiseResolve(C, onFinally()).then(function () { throw e; });
 53459      } : onFinally
 53460    );
 53461  } });
 53462  
 53463  
 53464  /***/ }),
 53465  /* 260 */
 53466  /***/ (function(module, exports, __webpack_require__) {
 53467  
 53468  "use strict";
 53469  
 53470  // https://github.com/tc39/proposal-promise-try
 53471  var $export = __webpack_require__(60);
 53472  var newPromiseCapability = __webpack_require__(94);
 53473  var perform = __webpack_require__(130);
 53474  
 53475  $export($export.S, 'Promise', { 'try': function (callbackfn) {
 53476    var promiseCapability = newPromiseCapability.f(this);
 53477    var result = perform(callbackfn);
 53478    (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
 53479    return promiseCapability.promise;
 53480  } });
 53481  
 53482  
 53483  /***/ }),
 53484  /* 261 */
 53485  /***/ (function(module, exports, __webpack_require__) {
 53486  
 53487  __webpack_require__(255);
 53488  var global = __webpack_require__(17);
 53489  var hide = __webpack_require__(42);
 53490  var Iterators = __webpack_require__(54);
 53491  var TO_STRING_TAG = __webpack_require__(21)('toStringTag');
 53492  
 53493  var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
 53494    'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
 53495    'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
 53496    'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
 53497    'TextTrackList,TouchList').split(',');
 53498  
 53499  for (var i = 0; i < DOMIterables.length; i++) {
 53500    var NAME = DOMIterables[i];
 53501    var Collection = global[NAME];
 53502    var proto = Collection && Collection.prototype;
 53503    if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
 53504    Iterators[NAME] = Iterators.Array;
 53505  }
 53506  
 53507  
 53508  /***/ }),
 53509  /* 262 */
 53510  /***/ (function(module, exports, __webpack_require__) {
 53511  
 53512  /**
 53513   * This is the web browser implementation of `debug()`.
 53514   *
 53515   * Expose `debug()` as the module.
 53516   */
 53517  
 53518  exports = module.exports = __webpack_require__(138);
 53519  exports.log = log;
 53520  exports.formatArgs = formatArgs;
 53521  exports.save = save;
 53522  exports.load = load;
 53523  exports.useColors = useColors;
 53524  exports.storage = 'undefined' != typeof chrome
 53525                 && 'undefined' != typeof chrome.storage
 53526                    ? chrome.storage.local
 53527                    : localstorage();
 53528  
 53529  /**
 53530   * Colors.
 53531   */
 53532  
 53533  exports.colors = [
 53534    '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',
 53535    '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',
 53536    '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',
 53537    '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',
 53538    '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',
 53539    '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',
 53540    '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',
 53541    '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',
 53542    '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',
 53543    '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',
 53544    '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'
 53545  ];
 53546  
 53547  /**
 53548   * Currently only WebKit-based Web Inspectors, Firefox >= v31,
 53549   * and the Firebug extension (any Firefox version) are known
 53550   * to support "%c" CSS customizations.
 53551   *
 53552   * TODO: add a `localStorage` variable to explicitly enable/disable colors
 53553   */
 53554  
 53555  function useColors() {
 53556    // NB: In an Electron preload script, document will be defined but not fully
 53557    // initialized. Since we know we're in Chrome, we'll just detect this case
 53558    // explicitly
 53559    if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {
 53560      return true;
 53561    }
 53562  
 53563    // Internet Explorer and Edge do not support colors.
 53564    if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
 53565      return false;
 53566    }
 53567  
 53568    // is webkit? http://stackoverflow.com/a/16459606/376773
 53569    // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
 53570    return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
 53571      // is firebug? http://stackoverflow.com/a/398120/376773
 53572      (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
 53573      // is firefox >= v31?
 53574      // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
 53575      (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
 53576      // double check webkit in userAgent just in case we are in a worker
 53577      (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
 53578  }
 53579  
 53580  /**
 53581   * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
 53582   */
 53583  
 53584  exports.formatters.j = function(v) {
 53585    try {
 53586      return JSON.stringify(v);
 53587    } catch (err) {
 53588      return '[UnexpectedJSONParseError]: ' + err.message;
 53589    }
 53590  };
 53591  
 53592  
 53593  /**
 53594   * Colorize log arguments if enabled.
 53595   *
 53596   * @api public
 53597   */
 53598  
 53599  function formatArgs(args) {
 53600    var useColors = this.useColors;
 53601  
 53602    args[0] = (useColors ? '%c' : '')
 53603      + this.namespace
 53604      + (useColors ? ' %c' : ' ')
 53605      + args[0]
 53606      + (useColors ? '%c ' : ' ')
 53607      + '+' + exports.humanize(this.diff);
 53608  
 53609    if (!useColors) return;
 53610  
 53611    var c = 'color: ' + this.color;
 53612    args.splice(1, 0, c, 'color: inherit')
 53613  
 53614    // the final "%c" is somewhat tricky, because there could be other
 53615    // arguments passed either before or after the %c, so we need to
 53616    // figure out the correct index to insert the CSS into
 53617    var index = 0;
 53618    var lastC = 0;
 53619    args[0].replace(/%[a-zA-Z%]/g, function(match) {
 53620      if ('%%' === match) return;
 53621      index++;
 53622      if ('%c' === match) {
 53623        // we only are interested in the *last* %c
 53624        // (the user may have provided their own)
 53625        lastC = index;
 53626      }
 53627    });
 53628  
 53629    args.splice(lastC, 0, c);
 53630  }
 53631  
 53632  /**
 53633   * Invokes `console.log()` when available.
 53634   * No-op when `console.log` is not a "function".
 53635   *
 53636   * @api public
 53637   */
 53638  
 53639  function log() {
 53640    // this hackery is required for IE8/9, where
 53641    // the `console.log` function doesn't have 'apply'
 53642    return 'object' === typeof console
 53643      && console.log
 53644      && Function.prototype.apply.call(console.log, console, arguments);
 53645  }
 53646  
 53647  /**
 53648   * Save `namespaces`.
 53649   *
 53650   * @param {String} namespaces
 53651   * @api private
 53652   */
 53653  
 53654  function save(namespaces) {
 53655    try {
 53656      if (null == namespaces) {
 53657        exports.storage.removeItem('debug');
 53658      } else {
 53659        exports.storage.debug = namespaces;
 53660      }
 53661    } catch(e) {}
 53662  }
 53663  
 53664  /**
 53665   * Load `namespaces`.
 53666   *
 53667   * @return {String} returns the previously persisted debug modes
 53668   * @api private
 53669   */
 53670  
 53671  function load() {
 53672    var r;
 53673    try {
 53674      r = exports.storage.debug;
 53675    } catch(e) {}
 53676  
 53677    // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
 53678    if (!r && typeof process !== 'undefined' && 'env' in process) {
 53679      r = process.env.DEBUG;
 53680    }
 53681  
 53682    return r;
 53683  }
 53684  
 53685  /**
 53686   * Enable namespaces listed in `localStorage.debug` initially.
 53687   */
 53688  
 53689  exports.enable(load());
 53690  
 53691  /**
 53692   * Localstorage attempts to return the localstorage.
 53693   *
 53694   * This is necessary because safari throws
 53695   * when a user disables cookies/localstorage
 53696   * and you attempt to access it.
 53697   *
 53698   * @return {LocalStorage}
 53699   * @api private
 53700   */
 53701  
 53702  function localstorage() {
 53703    try {
 53704      return window.localStorage;
 53705    } catch (e) {}
 53706  }
 53707  
 53708  
 53709  /***/ }),
 53710  /* 263 */
 53711  /***/ (function(module, exports, __webpack_require__) {
 53712  
 53713  /**
 53714   * Detect Electron renderer process, which is node, but we should
 53715   * treat as a browser.
 53716   */
 53717  
 53718  if (typeof process === 'undefined' || process.type === 'renderer') {
 53719    module.exports = __webpack_require__(262);
 53720  } else {
 53721    module.exports = __webpack_require__(264);
 53722  }
 53723  
 53724  
 53725  /***/ }),
 53726  /* 264 */
 53727  /***/ (function(module, exports, __webpack_require__) {
 53728  
 53729  /**
 53730   * Module dependencies.
 53731   */
 53732  
 53733  var tty = __webpack_require__(104);
 53734  var util = __webpack_require__(3);
 53735  
 53736  /**
 53737   * This is the Node.js implementation of `debug()`.
 53738   *
 53739   * Expose `debug()` as the module.
 53740   */
 53741  
 53742  exports = module.exports = __webpack_require__(138);
 53743  exports.init = init;
 53744  exports.log = log;
 53745  exports.formatArgs = formatArgs;
 53746  exports.save = save;
 53747  exports.load = load;
 53748  exports.useColors = useColors;
 53749  
 53750  /**
 53751   * Colors.
 53752   */
 53753  
 53754  exports.colors = [ 6, 2, 3, 4, 5, 1 ];
 53755  
 53756  try {
 53757    var supportsColor = __webpack_require__(330);
 53758    if (supportsColor && supportsColor.level >= 2) {
 53759      exports.colors = [
 53760        20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68,
 53761        69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134,
 53762        135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
 53763        172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204,
 53764        205, 206, 207, 208, 209, 214, 215, 220, 221
 53765      ];
 53766    }
 53767  } catch (err) {
 53768    // swallow - we only care if `supports-color` is available; it doesn't have to be.
 53769  }
 53770  
 53771  /**
 53772   * Build up the default `inspectOpts` object from the environment variables.
 53773   *
 53774   *   $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js
 53775   */
 53776  
 53777  exports.inspectOpts = Object.keys(process.env).filter(function (key) {
 53778    return /^debug_/i.test(key);
 53779  }).reduce(function (obj, key) {
 53780    // camel-case
 53781    var prop = key
 53782      .substring(6)
 53783      .toLowerCase()
 53784      .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });
 53785  
 53786    // coerce string value into JS value
 53787    var val = process.env[key];
 53788    if (/^(yes|on|true|enabled)$/i.test(val)) val = true;
 53789    else if (/^(no|off|false|disabled)$/i.test(val)) val = false;
 53790    else if (val === 'null') val = null;
 53791    else val = Number(val);
 53792  
 53793    obj[prop] = val;
 53794    return obj;
 53795  }, {});
 53796  
 53797  /**
 53798   * Is stdout a TTY? Colored output is enabled when `true`.
 53799   */
 53800  
 53801  function useColors() {
 53802    return 'colors' in exports.inspectOpts
 53803      ? Boolean(exports.inspectOpts.colors)
 53804      : tty.isatty(process.stderr.fd);
 53805  }
 53806  
 53807  /**
 53808   * Map %o to `util.inspect()`, all on a single line.
 53809   */
 53810  
 53811  exports.formatters.o = function(v) {
 53812    this.inspectOpts.colors = this.useColors;
 53813    return util.inspect(v, this.inspectOpts)
 53814      .split('\n').map(function(str) {
 53815        return str.trim()
 53816      }).join(' ');
 53817  };
 53818  
 53819  /**
 53820   * Map %o to `util.inspect()`, allowing multiple lines if needed.
 53821   */
 53822  
 53823  exports.formatters.O = function(v) {
 53824    this.inspectOpts.colors = this.useColors;
 53825    return util.inspect(v, this.inspectOpts);
 53826  };
 53827  
 53828  /**
 53829   * Adds ANSI color escape codes if enabled.
 53830   *
 53831   * @api public
 53832   */
 53833  
 53834  function formatArgs(args) {
 53835    var name = this.namespace;
 53836    var useColors = this.useColors;
 53837  
 53838    if (useColors) {
 53839      var c = this.color;
 53840      var colorCode = '\u001b[3' + (c < 8 ? c : '8;5;' + c);
 53841      var prefix = '  ' + colorCode + ';1m' + name + ' ' + '\u001b[0m';
 53842  
 53843      args[0] = prefix + args[0].split('\n').join('\n' + prefix);
 53844      args.push(colorCode + 'm+' + exports.humanize(this.diff) + '\u001b[0m');
 53845    } else {
 53846      args[0] = getDate() + name + ' ' + args[0];
 53847    }
 53848  }
 53849  
 53850  function getDate() {
 53851    if (exports.inspectOpts.hideDate) {
 53852      return '';
 53853    } else {
 53854      return new Date().toISOString() + ' ';
 53855    }
 53856  }
 53857  
 53858  /**
 53859   * Invokes `util.format()` with the specified arguments and writes to stderr.
 53860   */
 53861  
 53862  function log() {
 53863    return process.stderr.write(util.format.apply(util, arguments) + '\n');
 53864  }
 53865  
 53866  /**
 53867   * Save `namespaces`.
 53868   *
 53869   * @param {String} namespaces
 53870   * @api private
 53871   */
 53872  
 53873  function save(namespaces) {
 53874    if (null == namespaces) {
 53875      // If you set a process.env field to null or undefined, it gets cast to the
 53876      // string 'null' or 'undefined'. Just delete instead.
 53877      delete process.env.DEBUG;
 53878    } else {
 53879      process.env.DEBUG = namespaces;
 53880    }
 53881  }
 53882  
 53883  /**
 53884   * Load `namespaces`.
 53885   *
 53886   * @return {String} returns the previously persisted debug modes
 53887   * @api private
 53888   */
 53889  
 53890  function load() {
 53891    return process.env.DEBUG;
 53892  }
 53893  
 53894  /**
 53895   * Init logic for `debug` instances.
 53896   *
 53897   * Create a new `inspectOpts` object in case `useColors` is set
 53898   * differently for a particular `debug` instance.
 53899   */
 53900  
 53901  function init (debug) {
 53902    debug.inspectOpts = {};
 53903  
 53904    var keys = Object.keys(exports.inspectOpts);
 53905    for (var i = 0; i < keys.length; i++) {
 53906      debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
 53907    }
 53908  }
 53909  
 53910  /**
 53911   * Enable namespaces listed in `process.env.DEBUG` initially.
 53912   */
 53913  
 53914  exports.enable(load());
 53915  
 53916  
 53917  /***/ }),
 53918  /* 265 */
 53919  /***/ (function(module, exports, __webpack_require__) {
 53920  
 53921  (function webpackUniversalModuleDefinition(root, factory) {
 53922  /* istanbul ignore next */
 53923  	if(true)
 53924  		module.exports = factory();
 53925  	else if(typeof define === 'function' && define.amd)
 53926  		define([], factory);
 53927  /* istanbul ignore next */
 53928  	else if(typeof exports === 'object')
 53929  		exports["esprima"] = factory();
 53930  	else
 53931  		root["esprima"] = factory();
 53932  })(this, function() {
 53933  return /******/ (function(modules) { // webpackBootstrap
 53934  /******/ 	// The module cache
 53935  /******/ 	var installedModules = {};
 53936  
 53937  /******/ 	// The require function
 53938  /******/ 	function __webpack_require__(moduleId) {
 53939  
 53940  /******/ 		// Check if module is in cache
 53941  /* istanbul ignore if */
 53942  /******/ 		if(installedModules[moduleId])
 53943  /******/ 			return installedModules[moduleId].exports;
 53944  
 53945  /******/ 		// Create a new module (and put it into the cache)
 53946  /******/ 		var module = installedModules[moduleId] = {
 53947  /******/ 			exports: {},
 53948  /******/ 			id: moduleId,
 53949  /******/ 			loaded: false
 53950  /******/ 		};
 53951  
 53952  /******/ 		// Execute the module function
 53953  /******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
 53954  
 53955  /******/ 		// Flag the module as loaded
 53956  /******/ 		module.loaded = true;
 53957  
 53958  /******/ 		// Return the exports of the module
 53959  /******/ 		return module.exports;
 53960  /******/ 	}
 53961  
 53962  
 53963  /******/ 	// expose the modules object (__webpack_modules__)
 53964  /******/ 	__webpack_require__.m = modules;
 53965  
 53966  /******/ 	// expose the module cache
 53967  /******/ 	__webpack_require__.c = installedModules;
 53968  
 53969  /******/ 	// __webpack_public_path__
 53970  /******/ 	__webpack_require__.p = "";
 53971  
 53972  /******/ 	// Load entry module and return exports
 53973  /******/ 	return __webpack_require__(0);
 53974  /******/ })
 53975  /************************************************************************/
 53976  /******/ ([
 53977  /* 0 */
 53978  /***/ function(module, exports, __webpack_require__) {
 53979  
 53980  	"use strict";
 53981  	/*
 53982  	  Copyright JS Foundation and other contributors, https://js.foundation/
 53983  
 53984  	  Redistribution and use in source and binary forms, with or without
 53985  	  modification, are permitted provided that the following conditions are met:
 53986  
 53987  	    * Redistributions of source code must retain the above copyright
 53988  	      notice, this list of conditions and the following disclaimer.
 53989  	    * Redistributions in binary form must reproduce the above copyright
 53990  	      notice, this list of conditions and the following disclaimer in the
 53991  	      documentation and/or other materials provided with the distribution.
 53992  
 53993  	  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 53994  	  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 53995  	  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 53996  	  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
 53997  	  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 53998  	  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 53999  	  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 54000  	  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 54001  	  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 54002  	  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 54003  	*/
 54004  	Object.defineProperty(exports, "__esModule", { value: true });
 54005  	var comment_handler_1 = __webpack_require__(1);
 54006  	var jsx_parser_1 = __webpack_require__(3);
 54007  	var parser_1 = __webpack_require__(8);
 54008  	var tokenizer_1 = __webpack_require__(15);
 54009  	function parse(code, options, delegate) {
 54010  	    var commentHandler = null;
 54011  	    var proxyDelegate = function (node, metadata) {
 54012  	        if (delegate) {
 54013  	            delegate(node, metadata);
 54014  	        }
 54015  	        if (commentHandler) {
 54016  	            commentHandler.visit(node, metadata);
 54017  	        }
 54018  	    };
 54019  	    var parserDelegate = (typeof delegate === 'function') ? proxyDelegate : null;
 54020  	    var collectComment = false;
 54021  	    if (options) {
 54022  	        collectComment = (typeof options.comment === 'boolean' && options.comment);
 54023  	        var attachComment = (typeof options.attachComment === 'boolean' && options.attachComment);
 54024  	        if (collectComment || attachComment) {
 54025  	            commentHandler = new comment_handler_1.CommentHandler();
 54026  	            commentHandler.attach = attachComment;
 54027  	            options.comment = true;
 54028  	            parserDelegate = proxyDelegate;
 54029  	        }
 54030  	    }
 54031  	    var isModule = false;
 54032  	    if (options && typeof options.sourceType === 'string') {
 54033  	        isModule = (options.sourceType === 'module');
 54034  	    }
 54035  	    var parser;
 54036  	    if (options && typeof options.jsx === 'boolean' && options.jsx) {
 54037  	        parser = new jsx_parser_1.JSXParser(code, options, parserDelegate);
 54038  	    }
 54039  	    else {
 54040  	        parser = new parser_1.Parser(code, options, parserDelegate);
 54041  	    }
 54042  	    var program = isModule ? parser.parseModule() : parser.parseScript();
 54043  	    var ast = program;
 54044  	    if (collectComment && commentHandler) {
 54045  	        ast.comments = commentHandler.comments;
 54046  	    }
 54047  	    if (parser.config.tokens) {
 54048  	        ast.tokens = parser.tokens;
 54049  	    }
 54050  	    if (parser.config.tolerant) {
 54051  	        ast.errors = parser.errorHandler.errors;
 54052  	    }
 54053  	    return ast;
 54054  	}
 54055  	exports.parse = parse;
 54056  	function parseModule(code, options, delegate) {
 54057  	    var parsingOptions = options || {};
 54058  	    parsingOptions.sourceType = 'module';
 54059  	    return parse(code, parsingOptions, delegate);
 54060  	}
 54061  	exports.parseModule = parseModule;
 54062  	function parseScript(code, options, delegate) {
 54063  	    var parsingOptions = options || {};
 54064  	    parsingOptions.sourceType = 'script';
 54065  	    return parse(code, parsingOptions, delegate);
 54066  	}
 54067  	exports.parseScript = parseScript;
 54068  	function tokenize(code, options, delegate) {
 54069  	    var tokenizer = new tokenizer_1.Tokenizer(code, options);
 54070  	    var tokens;
 54071  	    tokens = [];
 54072  	    try {
 54073  	        while (true) {
 54074  	            var token = tokenizer.getNextToken();
 54075  	            if (!token) {
 54076  	                break;
 54077  	            }
 54078  	            if (delegate) {
 54079  	                token = delegate(token);
 54080  	            }
 54081  	            tokens.push(token);
 54082  	        }
 54083  	    }
 54084  	    catch (e) {
 54085  	        tokenizer.errorHandler.tolerate(e);
 54086  	    }
 54087  	    if (tokenizer.errorHandler.tolerant) {
 54088  	        tokens.errors = tokenizer.errors();
 54089  	    }
 54090  	    return tokens;
 54091  	}
 54092  	exports.tokenize = tokenize;
 54093  	var syntax_1 = __webpack_require__(2);
 54094  	exports.Syntax = syntax_1.Syntax;
 54095  	// Sync with *.json manifests.
 54096  	exports.version = '4.0.1';
 54097  
 54098  
 54099  /***/ },
 54100  /* 1 */
 54101  /***/ function(module, exports, __webpack_require__) {
 54102  
 54103  	"use strict";
 54104  	Object.defineProperty(exports, "__esModule", { value: true });
 54105  	var syntax_1 = __webpack_require__(2);
 54106  	var CommentHandler = (function () {
 54107  	    function CommentHandler() {
 54108  	        this.attach = false;
 54109  	        this.comments = [];
 54110  	        this.stack = [];
 54111  	        this.leading = [];
 54112  	        this.trailing = [];
 54113  	    }
 54114  	    CommentHandler.prototype.insertInnerComments = function (node, metadata) {
 54115  	        //  innnerComments for properties empty block
 54116  	        //  `function a() {/** comments **\/}`
 54117  	        if (node.type === syntax_1.Syntax.BlockStatement && node.body.length === 0) {
 54118  	            var innerComments = [];
 54119  	            for (var i = this.leading.length - 1; i >= 0; --i) {
 54120  	                var entry = this.leading[i];
 54121  	                if (metadata.end.offset >= entry.start) {
 54122  	                    innerComments.unshift(entry.comment);
 54123  	                    this.leading.splice(i, 1);
 54124  	                    this.trailing.splice(i, 1);
 54125  	                }
 54126  	            }
 54127  	            if (innerComments.length) {
 54128  	                node.innerComments = innerComments;
 54129  	            }
 54130  	        }
 54131  	    };
 54132  	    CommentHandler.prototype.findTrailingComments = function (metadata) {
 54133  	        var trailingComments = [];
 54134  	        if (this.trailing.length > 0) {
 54135  	            for (var i = this.trailing.length - 1; i >= 0; --i) {
 54136  	                var entry_1 = this.trailing[i];
 54137  	                if (entry_1.start >= metadata.end.offset) {
 54138  	                    trailingComments.unshift(entry_1.comment);
 54139  	                }
 54140  	            }
 54141  	            this.trailing.length = 0;
 54142  	            return trailingComments;
 54143  	        }
 54144  	        var entry = this.stack[this.stack.length - 1];
 54145  	        if (entry && entry.node.trailingComments) {
 54146  	            var firstComment = entry.node.trailingComments[0];
 54147  	            if (firstComment && firstComment.range[0] >= metadata.end.offset) {
 54148  	                trailingComments = entry.node.trailingComments;
 54149  	                delete entry.node.trailingComments;
 54150  	            }
 54151  	        }
 54152  	        return trailingComments;
 54153  	    };
 54154  	    CommentHandler.prototype.findLeadingComments = function (metadata) {
 54155  	        var leadingComments = [];
 54156  	        var target;
 54157  	        while (this.stack.length > 0) {
 54158  	            var entry = this.stack[this.stack.length - 1];
 54159  	            if (entry && entry.start >= metadata.start.offset) {
 54160  	                target = entry.node;
 54161  	                this.stack.pop();
 54162  	            }
 54163  	            else {
 54164  	                break;
 54165  	            }
 54166  	        }
 54167  	        if (target) {
 54168  	            var count = target.leadingComments ? target.leadingComments.length : 0;
 54169  	            for (var i = count - 1; i >= 0; --i) {
 54170  	                var comment = target.leadingComments[i];
 54171  	                if (comment.range[1] <= metadata.start.offset) {
 54172  	                    leadingComments.unshift(comment);
 54173  	                    target.leadingComments.splice(i, 1);
 54174  	                }
 54175  	            }
 54176  	            if (target.leadingComments && target.leadingComments.length === 0) {
 54177  	                delete target.leadingComments;
 54178  	            }
 54179  	            return leadingComments;
 54180  	        }
 54181  	        for (var i = this.leading.length - 1; i >= 0; --i) {
 54182  	            var entry = this.leading[i];
 54183  	            if (entry.start <= metadata.start.offset) {
 54184  	                leadingComments.unshift(entry.comment);
 54185  	                this.leading.splice(i, 1);
 54186  	            }
 54187  	        }
 54188  	        return leadingComments;
 54189  	    };
 54190  	    CommentHandler.prototype.visitNode = function (node, metadata) {
 54191  	        if (node.type === syntax_1.Syntax.Program && node.body.length > 0) {
 54192  	            return;
 54193  	        }
 54194  	        this.insertInnerComments(node, metadata);
 54195  	        var trailingComments = this.findTrailingComments(metadata);
 54196  	        var leadingComments = this.findLeadingComments(metadata);
 54197  	        if (leadingComments.length > 0) {
 54198  	            node.leadingComments = leadingComments;
 54199  	        }
 54200  	        if (trailingComments.length > 0) {
 54201  	            node.trailingComments = trailingComments;
 54202  	        }
 54203  	        this.stack.push({
 54204  	            node: node,
 54205  	            start: metadata.start.offset
 54206  	        });
 54207  	    };
 54208  	    CommentHandler.prototype.visitComment = function (node, metadata) {
 54209  	        var type = (node.type[0] === 'L') ? 'Line' : 'Block';
 54210  	        var comment = {
 54211  	            type: type,
 54212  	            value: node.value
 54213  	        };
 54214  	        if (node.range) {
 54215  	            comment.range = node.range;
 54216  	        }
 54217  	        if (node.loc) {
 54218  	            comment.loc = node.loc;
 54219  	        }
 54220  	        this.comments.push(comment);
 54221  	        if (this.attach) {
 54222  	            var entry = {
 54223  	                comment: {
 54224  	                    type: type,
 54225  	                    value: node.value,
 54226  	                    range: [metadata.start.offset, metadata.end.offset]
 54227  	                },
 54228  	                start: metadata.start.offset
 54229  	            };
 54230  	            if (node.loc) {
 54231  	                entry.comment.loc = node.loc;
 54232  	            }
 54233  	            node.type = type;
 54234  	            this.leading.push(entry);
 54235  	            this.trailing.push(entry);
 54236  	        }
 54237  	    };
 54238  	    CommentHandler.prototype.visit = function (node, metadata) {
 54239  	        if (node.type === 'LineComment') {
 54240  	            this.visitComment(node, metadata);
 54241  	        }
 54242  	        else if (node.type === 'BlockComment') {
 54243  	            this.visitComment(node, metadata);
 54244  	        }
 54245  	        else if (this.attach) {
 54246  	            this.visitNode(node, metadata);
 54247  	        }
 54248  	    };
 54249  	    return CommentHandler;
 54250  	}());
 54251  	exports.CommentHandler = CommentHandler;
 54252  
 54253  
 54254  /***/ },
 54255  /* 2 */
 54256  /***/ function(module, exports) {
 54257  
 54258  	"use strict";
 54259  	Object.defineProperty(exports, "__esModule", { value: true });
 54260  	exports.Syntax = {
 54261  	    AssignmentExpression: 'AssignmentExpression',
 54262  	    AssignmentPattern: 'AssignmentPattern',
 54263  	    ArrayExpression: 'ArrayExpression',
 54264  	    ArrayPattern: 'ArrayPattern',
 54265  	    ArrowFunctionExpression: 'ArrowFunctionExpression',
 54266  	    AwaitExpression: 'AwaitExpression',
 54267  	    BlockStatement: 'BlockStatement',
 54268  	    BinaryExpression: 'BinaryExpression',
 54269  	    BreakStatement: 'BreakStatement',
 54270  	    CallExpression: 'CallExpression',
 54271  	    CatchClause: 'CatchClause',
 54272  	    ClassBody: 'ClassBody',
 54273  	    ClassDeclaration: 'ClassDeclaration',
 54274  	    ClassExpression: 'ClassExpression',
 54275  	    ConditionalExpression: 'ConditionalExpression',
 54276  	    ContinueStatement: 'ContinueStatement',
 54277  	    DoWhileStatement: 'DoWhileStatement',
 54278  	    DebuggerStatement: 'DebuggerStatement',
 54279  	    EmptyStatement: 'EmptyStatement',
 54280  	    ExportAllDeclaration: 'ExportAllDeclaration',
 54281  	    ExportDefaultDeclaration: 'ExportDefaultDeclaration',
 54282  	    ExportNamedDeclaration: 'ExportNamedDeclaration',
 54283  	    ExportSpecifier: 'ExportSpecifier',
 54284  	    ExpressionStatement: 'ExpressionStatement',
 54285  	    ForStatement: 'ForStatement',
 54286  	    ForOfStatement: 'ForOfStatement',
 54287  	    ForInStatement: 'ForInStatement',
 54288  	    FunctionDeclaration: 'FunctionDeclaration',
 54289  	    FunctionExpression: 'FunctionExpression',
 54290  	    Identifier: 'Identifier',
 54291  	    IfStatement: 'IfStatement',
 54292  	    ImportDeclaration: 'ImportDeclaration',
 54293  	    ImportDefaultSpecifier: 'ImportDefaultSpecifier',
 54294  	    ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',
 54295  	    ImportSpecifier: 'ImportSpecifier',
 54296  	    Literal: 'Literal',
 54297  	    LabeledStatement: 'LabeledStatement',
 54298  	    LogicalExpression: 'LogicalExpression',
 54299  	    MemberExpression: 'MemberExpression',
 54300  	    MetaProperty: 'MetaProperty',
 54301  	    MethodDefinition: 'MethodDefinition',
 54302  	    NewExpression: 'NewExpression',
 54303  	    ObjectExpression: 'ObjectExpression',
 54304  	    ObjectPattern: 'ObjectPattern',
 54305  	    Program: 'Program',
 54306  	    Property: 'Property',
 54307  	    RestElement: 'RestElement',
 54308  	    ReturnStatement: 'ReturnStatement',
 54309  	    SequenceExpression: 'SequenceExpression',
 54310  	    SpreadElement: 'SpreadElement',
 54311  	    Super: 'Super',
 54312  	    SwitchCase: 'SwitchCase',
 54313  	    SwitchStatement: 'SwitchStatement',
 54314  	    TaggedTemplateExpression: 'TaggedTemplateExpression',
 54315  	    TemplateElement: 'TemplateElement',
 54316  	    TemplateLiteral: 'TemplateLiteral',
 54317  	    ThisExpression: 'ThisExpression',
 54318  	    ThrowStatement: 'ThrowStatement',
 54319  	    TryStatement: 'TryStatement',
 54320  	    UnaryExpression: 'UnaryExpression',
 54321  	    UpdateExpression: 'UpdateExpression',
 54322  	    VariableDeclaration: 'VariableDeclaration',
 54323  	    VariableDeclarator: 'VariableDeclarator',
 54324  	    WhileStatement: 'WhileStatement',
 54325  	    WithStatement: 'WithStatement',
 54326  	    YieldExpression: 'YieldExpression'
 54327  	};
 54328  
 54329  
 54330  /***/ },
 54331  /* 3 */
 54332  /***/ function(module, exports, __webpack_require__) {
 54333  
 54334  	"use strict";
 54335  /* istanbul ignore next */
 54336  	var __extends = (this && this.__extends) || (function () {
 54337  	    var extendStatics = Object.setPrototypeOf ||
 54338  	        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
 54339  	        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
 54340  	    return function (d, b) {
 54341  	        extendStatics(d, b);
 54342  	        function __() { this.constructor = d; }
 54343  	        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
 54344  	    };
 54345  	})();
 54346  	Object.defineProperty(exports, "__esModule", { value: true });
 54347  	var character_1 = __webpack_require__(4);
 54348  	var JSXNode = __webpack_require__(5);
 54349  	var jsx_syntax_1 = __webpack_require__(6);
 54350  	var Node = __webpack_require__(7);
 54351  	var parser_1 = __webpack_require__(8);
 54352  	var token_1 = __webpack_require__(13);
 54353  	var xhtml_entities_1 = __webpack_require__(14);
 54354  	token_1.TokenName[100 /* Identifier */] = 'JSXIdentifier';
 54355  	token_1.TokenName[101 /* Text */] = 'JSXText';
 54356  	// Fully qualified element name, e.g. <svg:path> returns "svg:path"
 54357  	function getQualifiedElementName(elementName) {
 54358  	    var qualifiedName;
 54359  	    switch (elementName.type) {
 54360  	        case jsx_syntax_1.JSXSyntax.JSXIdentifier:
 54361  	            var id = elementName;
 54362  	            qualifiedName = id.name;
 54363  	            break;
 54364  	        case jsx_syntax_1.JSXSyntax.JSXNamespacedName:
 54365  	            var ns = elementName;
 54366  	            qualifiedName = getQualifiedElementName(ns.namespace) + ':' +
 54367  	                getQualifiedElementName(ns.name);
 54368  	            break;
 54369  	        case jsx_syntax_1.JSXSyntax.JSXMemberExpression:
 54370  	            var expr = elementName;
 54371  	            qualifiedName = getQualifiedElementName(expr.object) + '.' +
 54372  	                getQualifiedElementName(expr.property);
 54373  	            break;
 54374  	        /* istanbul ignore next */
 54375  	        default:
 54376  	            break;
 54377  	    }
 54378  	    return qualifiedName;
 54379  	}
 54380  	var JSXParser = (function (_super) {
 54381  	    __extends(JSXParser, _super);
 54382  	    function JSXParser(code, options, delegate) {
 54383  	        return _super.call(this, code, options, delegate) || this;
 54384  	    }
 54385  	    JSXParser.prototype.parsePrimaryExpression = function () {
 54386  	        return this.match('<') ? this.parseJSXRoot() : _super.prototype.parsePrimaryExpression.call(this);
 54387  	    };
 54388  	    JSXParser.prototype.startJSX = function () {
 54389  	        // Unwind the scanner before the lookahead token.
 54390  	        this.scanner.index = this.startMarker.index;
 54391  	        this.scanner.lineNumber = this.startMarker.line;
 54392  	        this.scanner.lineStart = this.startMarker.index - this.startMarker.column;
 54393  	    };
 54394  	    JSXParser.prototype.finishJSX = function () {
 54395  	        // Prime the next lookahead.
 54396  	        this.nextToken();
 54397  	    };
 54398  	    JSXParser.prototype.reenterJSX = function () {
 54399  	        this.startJSX();
 54400  	        this.expectJSX('}');
 54401  	        // Pop the closing '}' added from the lookahead.
 54402  	        if (this.config.tokens) {
 54403  	            this.tokens.pop();
 54404  	        }
 54405  	    };
 54406  	    JSXParser.prototype.createJSXNode = function () {
 54407  	        this.collectComments();
 54408  	        return {
 54409  	            index: this.scanner.index,
 54410  	            line: this.scanner.lineNumber,
 54411  	            column: this.scanner.index - this.scanner.lineStart
 54412  	        };
 54413  	    };
 54414  	    JSXParser.prototype.createJSXChildNode = function () {
 54415  	        return {
 54416  	            index: this.scanner.index,
 54417  	            line: this.scanner.lineNumber,
 54418  	            column: this.scanner.index - this.scanner.lineStart
 54419  	        };
 54420  	    };
 54421  	    JSXParser.prototype.scanXHTMLEntity = function (quote) {
 54422  	        var result = '&';
 54423  	        var valid = true;
 54424  	        var terminated = false;
 54425  	        var numeric = false;
 54426  	        var hex = false;
 54427  	        while (!this.scanner.eof() && valid && !terminated) {
 54428  	            var ch = this.scanner.source[this.scanner.index];
 54429  	            if (ch === quote) {
 54430  	                break;
 54431  	            }
 54432  	            terminated = (ch === ';');
 54433  	            result += ch;
 54434  	            ++this.scanner.index;
 54435  	            if (!terminated) {
 54436  	                switch (result.length) {
 54437  	                    case 2:
 54438  	                        // e.g. '&#123;'
 54439  	                        numeric = (ch === '#');
 54440  	                        break;
 54441  	                    case 3:
 54442  	                        if (numeric) {
 54443  	                            // e.g. '&#x41;'
 54444  	                            hex = (ch === 'x');
 54445  	                            valid = hex || character_1.Character.isDecimalDigit(ch.charCodeAt(0));
 54446  	                            numeric = numeric && !hex;
 54447  	                        }
 54448  	                        break;
 54449  	                    default:
 54450  	                        valid = valid && !(numeric && !character_1.Character.isDecimalDigit(ch.charCodeAt(0)));
 54451  	                        valid = valid && !(hex && !character_1.Character.isHexDigit(ch.charCodeAt(0)));
 54452  	                        break;
 54453  	                }
 54454  	            }
 54455  	        }
 54456  	        if (valid && terminated && result.length > 2) {
 54457  	            // e.g. '&#x41;' becomes just '#x41'
 54458  	            var str = result.substr(1, result.length - 2);
 54459  	            if (numeric && str.length > 1) {
 54460  	                result = String.fromCharCode(parseInt(str.substr(1), 10));
 54461  	            }
 54462  	            else if (hex && str.length > 2) {
 54463  	                result = String.fromCharCode(parseInt('0' + str.substr(1), 16));
 54464  	            }
 54465  	            else if (!numeric && !hex && xhtml_entities_1.XHTMLEntities[str]) {
 54466  	                result = xhtml_entities_1.XHTMLEntities[str];
 54467  	            }
 54468  	        }
 54469  	        return result;
 54470  	    };
 54471  	    // Scan the next JSX token. This replaces Scanner#lex when in JSX mode.
 54472  	    JSXParser.prototype.lexJSX = function () {
 54473  	        var cp = this.scanner.source.charCodeAt(this.scanner.index);
 54474  	        // < > / : = { }
 54475  	        if (cp === 60 || cp === 62 || cp === 47 || cp === 58 || cp === 61 || cp === 123 || cp === 125) {
 54476  	            var value = this.scanner.source[this.scanner.index++];
 54477  	            return {
 54478  	                type: 7 /* Punctuator */,
 54479  	                value: value,
 54480  	                lineNumber: this.scanner.lineNumber,
 54481  	                lineStart: this.scanner.lineStart,
 54482  	                start: this.scanner.index - 1,
 54483  	                end: this.scanner.index
 54484  	            };
 54485  	        }
 54486  	        // " '
 54487  	        if (cp === 34 || cp === 39) {
 54488  	            var start = this.scanner.index;
 54489  	            var quote = this.scanner.source[this.scanner.index++];
 54490  	            var str = '';
 54491  	            while (!this.scanner.eof()) {
 54492  	                var ch = this.scanner.source[this.scanner.index++];
 54493  	                if (ch === quote) {
 54494  	                    break;
 54495  	                }
 54496  	                else if (ch === '&') {
 54497  	                    str += this.scanXHTMLEntity(quote);
 54498  	                }
 54499  	                else {
 54500  	                    str += ch;
 54501  	                }
 54502  	            }
 54503  	            return {
 54504  	                type: 8 /* StringLiteral */,
 54505  	                value: str,
 54506  	                lineNumber: this.scanner.lineNumber,
 54507  	                lineStart: this.scanner.lineStart,
 54508  	                start: start,
 54509  	                end: this.scanner.index
 54510  	            };
 54511  	        }
 54512  	        // ... or .
 54513  	        if (cp === 46) {
 54514  	            var n1 = this.scanner.source.charCodeAt(this.scanner.index + 1);
 54515  	            var n2 = this.scanner.source.charCodeAt(this.scanner.index + 2);
 54516  	            var value = (n1 === 46 && n2 === 46) ? '...' : '.';
 54517  	            var start = this.scanner.index;
 54518  	            this.scanner.index += value.length;
 54519  	            return {
 54520  	                type: 7 /* Punctuator */,
 54521  	                value: value,
 54522  	                lineNumber: this.scanner.lineNumber,
 54523  	                lineStart: this.scanner.lineStart,
 54524  	                start: start,
 54525  	                end: this.scanner.index
 54526  	            };
 54527  	        }
 54528  	        // `
 54529  	        if (cp === 96) {
 54530  	            // Only placeholder, since it will be rescanned as a real assignment expression.
 54531  	            return {
 54532  	                type: 10 /* Template */,
 54533  	                value: '',
 54534  	                lineNumber: this.scanner.lineNumber,
 54535  	                lineStart: this.scanner.lineStart,
 54536  	                start: this.scanner.index,
 54537  	                end: this.scanner.index
 54538  	            };
 54539  	        }
 54540  	        // Identifer can not contain backslash (char code 92).
 54541  	        if (character_1.Character.isIdentifierStart(cp) && (cp !== 92)) {
 54542  	            var start = this.scanner.index;
 54543  	            ++this.scanner.index;
 54544  	            while (!this.scanner.eof()) {
 54545  	                var ch = this.scanner.source.charCodeAt(this.scanner.index);
 54546  	                if (character_1.Character.isIdentifierPart(ch) && (ch !== 92)) {
 54547  	                    ++this.scanner.index;
 54548  	                }
 54549  	                else if (ch === 45) {
 54550  	                    // Hyphen (char code 45) can be part of an identifier.
 54551  	                    ++this.scanner.index;
 54552  	                }
 54553  	                else {
 54554  	                    break;
 54555  	                }
 54556  	            }
 54557  	            var id = this.scanner.source.slice(start, this.scanner.index);
 54558  	            return {
 54559  	                type: 100 /* Identifier */,
 54560  	                value: id,
 54561  	                lineNumber: this.scanner.lineNumber,
 54562  	                lineStart: this.scanner.lineStart,
 54563  	                start: start,
 54564  	                end: this.scanner.index
 54565  	            };
 54566  	        }
 54567  	        return this.scanner.lex();
 54568  	    };
 54569  	    JSXParser.prototype.nextJSXToken = function () {
 54570  	        this.collectComments();
 54571  	        this.startMarker.index = this.scanner.index;
 54572  	        this.startMarker.line = this.scanner.lineNumber;
 54573  	        this.startMarker.column = this.scanner.index - this.scanner.lineStart;
 54574  	        var token = this.lexJSX();
 54575  	        this.lastMarker.index = this.scanner.index;
 54576  	        this.lastMarker.line = this.scanner.lineNumber;
 54577  	        this.lastMarker.column = this.scanner.index - this.scanner.lineStart;
 54578  	        if (this.config.tokens) {
 54579  	            this.tokens.push(this.convertToken(token));
 54580  	        }
 54581  	        return token;
 54582  	    };
 54583  	    JSXParser.prototype.nextJSXText = function () {
 54584  	        this.startMarker.index = this.scanner.index;
 54585  	        this.startMarker.line = this.scanner.lineNumber;
 54586  	        this.startMarker.column = this.scanner.index - this.scanner.lineStart;
 54587  	        var start = this.scanner.index;
 54588  	        var text = '';
 54589  	        while (!this.scanner.eof()) {
 54590  	            var ch = this.scanner.source[this.scanner.index];
 54591  	            if (ch === '{' || ch === '<') {
 54592  	                break;
 54593  	            }
 54594  	            ++this.scanner.index;
 54595  	            text += ch;
 54596  	            if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {
 54597  	                ++this.scanner.lineNumber;
 54598  	                if (ch === '\r' && this.scanner.source[this.scanner.index] === '\n') {
 54599  	                    ++this.scanner.index;
 54600  	                }
 54601  	                this.scanner.lineStart = this.scanner.index;
 54602  	            }
 54603  	        }
 54604  	        this.lastMarker.index = this.scanner.index;
 54605  	        this.lastMarker.line = this.scanner.lineNumber;
 54606  	        this.lastMarker.column = this.scanner.index - this.scanner.lineStart;
 54607  	        var token = {
 54608  	            type: 101 /* Text */,
 54609  	            value: text,
 54610  	            lineNumber: this.scanner.lineNumber,
 54611  	            lineStart: this.scanner.lineStart,
 54612  	            start: start,
 54613  	            end: this.scanner.index
 54614  	        };
 54615  	        if ((text.length > 0) && this.config.tokens) {
 54616  	            this.tokens.push(this.convertToken(token));
 54617  	        }
 54618  	        return token;
 54619  	    };
 54620  	    JSXParser.prototype.peekJSXToken = function () {
 54621  	        var state = this.scanner.saveState();
 54622  	        this.scanner.scanComments();
 54623  	        var next = this.lexJSX();
 54624  	        this.scanner.restoreState(state);
 54625  	        return next;
 54626  	    };
 54627  	    // Expect the next JSX token to match the specified punctuator.
 54628  	    // If not, an exception will be thrown.
 54629  	    JSXParser.prototype.expectJSX = function (value) {
 54630  	        var token = this.nextJSXToken();
 54631  	        if (token.type !== 7 /* Punctuator */ || token.value !== value) {
 54632  	            this.throwUnexpectedToken(token);
 54633  	        }
 54634  	    };
 54635  	    // Return true if the next JSX token matches the specified punctuator.
 54636  	    JSXParser.prototype.matchJSX = function (value) {
 54637  	        var next = this.peekJSXToken();
 54638  	        return next.type === 7 /* Punctuator */ && next.value === value;
 54639  	    };
 54640  	    JSXParser.prototype.parseJSXIdentifier = function () {
 54641  	        var node = this.createJSXNode();
 54642  	        var token = this.nextJSXToken();
 54643  	        if (token.type !== 100 /* Identifier */) {
 54644  	            this.throwUnexpectedToken(token);
 54645  	        }
 54646  	        return this.finalize(node, new JSXNode.JSXIdentifier(token.value));
 54647  	    };
 54648  	    JSXParser.prototype.parseJSXElementName = function () {
 54649  	        var node = this.createJSXNode();
 54650  	        var elementName = this.parseJSXIdentifier();
 54651  	        if (this.matchJSX(':')) {
 54652  	            var namespace = elementName;
 54653  	            this.expectJSX(':');
 54654  	            var name_1 = this.parseJSXIdentifier();
 54655  	            elementName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_1));
 54656  	        }
 54657  	        else if (this.matchJSX('.')) {
 54658  	            while (this.matchJSX('.')) {
 54659  	                var object = elementName;
 54660  	                this.expectJSX('.');
 54661  	                var property = this.parseJSXIdentifier();
 54662  	                elementName = this.finalize(node, new JSXNode.JSXMemberExpression(object, property));
 54663  	            }
 54664  	        }
 54665  	        return elementName;
 54666  	    };
 54667  	    JSXParser.prototype.parseJSXAttributeName = function () {
 54668  	        var node = this.createJSXNode();
 54669  	        var attributeName;
 54670  	        var identifier = this.parseJSXIdentifier();
 54671  	        if (this.matchJSX(':')) {
 54672  	            var namespace = identifier;
 54673  	            this.expectJSX(':');
 54674  	            var name_2 = this.parseJSXIdentifier();
 54675  	            attributeName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_2));
 54676  	        }
 54677  	        else {
 54678  	            attributeName = identifier;
 54679  	        }
 54680  	        return attributeName;
 54681  	    };
 54682  	    JSXParser.prototype.parseJSXStringLiteralAttribute = function () {
 54683  	        var node = this.createJSXNode();
 54684  	        var token = this.nextJSXToken();
 54685  	        if (token.type !== 8 /* StringLiteral */) {
 54686  	            this.throwUnexpectedToken(token);
 54687  	        }
 54688  	        var raw = this.getTokenRaw(token);
 54689  	        return this.finalize(node, new Node.Literal(token.value, raw));
 54690  	    };
 54691  	    JSXParser.prototype.parseJSXExpressionAttribute = function () {
 54692  	        var node = this.createJSXNode();
 54693  	        this.expectJSX('{');
 54694  	        this.finishJSX();
 54695  	        if (this.match('}')) {
 54696  	            this.tolerateError('JSX attributes must only be assigned a non-empty expression');
 54697  	        }
 54698  	        var expression = this.parseAssignmentExpression();
 54699  	        this.reenterJSX();
 54700  	        return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));
 54701  	    };
 54702  	    JSXParser.prototype.parseJSXAttributeValue = function () {
 54703  	        return this.matchJSX('{') ? this.parseJSXExpressionAttribute() :
 54704  	            this.matchJSX('<') ? this.parseJSXElement() : this.parseJSXStringLiteralAttribute();
 54705  	    };
 54706  	    JSXParser.prototype.parseJSXNameValueAttribute = function () {
 54707  	        var node = this.createJSXNode();
 54708  	        var name = this.parseJSXAttributeName();
 54709  	        var value = null;
 54710  	        if (this.matchJSX('=')) {
 54711  	            this.expectJSX('=');
 54712  	            value = this.parseJSXAttributeValue();
 54713  	        }
 54714  	        return this.finalize(node, new JSXNode.JSXAttribute(name, value));
 54715  	    };
 54716  	    JSXParser.prototype.parseJSXSpreadAttribute = function () {
 54717  	        var node = this.createJSXNode();
 54718  	        this.expectJSX('{');
 54719  	        this.expectJSX('...');
 54720  	        this.finishJSX();
 54721  	        var argument = this.parseAssignmentExpression();
 54722  	        this.reenterJSX();
 54723  	        return this.finalize(node, new JSXNode.JSXSpreadAttribute(argument));
 54724  	    };
 54725  	    JSXParser.prototype.parseJSXAttributes = function () {
 54726  	        var attributes = [];
 54727  	        while (!this.matchJSX('/') && !this.matchJSX('>')) {
 54728  	            var attribute = this.matchJSX('{') ? this.parseJSXSpreadAttribute() :
 54729  	                this.parseJSXNameValueAttribute();
 54730  	            attributes.push(attribute);
 54731  	        }
 54732  	        return attributes;
 54733  	    };
 54734  	    JSXParser.prototype.parseJSXOpeningElement = function () {
 54735  	        var node = this.createJSXNode();
 54736  	        this.expectJSX('<');
 54737  	        var name = this.parseJSXElementName();
 54738  	        var attributes = this.parseJSXAttributes();
 54739  	        var selfClosing = this.matchJSX('/');
 54740  	        if (selfClosing) {
 54741  	            this.expectJSX('/');
 54742  	        }
 54743  	        this.expectJSX('>');
 54744  	        return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));
 54745  	    };
 54746  	    JSXParser.prototype.parseJSXBoundaryElement = function () {
 54747  	        var node = this.createJSXNode();
 54748  	        this.expectJSX('<');
 54749  	        if (this.matchJSX('/')) {
 54750  	            this.expectJSX('/');
 54751  	            var name_3 = this.parseJSXElementName();
 54752  	            this.expectJSX('>');
 54753  	            return this.finalize(node, new JSXNode.JSXClosingElement(name_3));
 54754  	        }
 54755  	        var name = this.parseJSXElementName();
 54756  	        var attributes = this.parseJSXAttributes();
 54757  	        var selfClosing = this.matchJSX('/');
 54758  	        if (selfClosing) {
 54759  	            this.expectJSX('/');
 54760  	        }
 54761  	        this.expectJSX('>');
 54762  	        return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));
 54763  	    };
 54764  	    JSXParser.prototype.parseJSXEmptyExpression = function () {
 54765  	        var node = this.createJSXChildNode();
 54766  	        this.collectComments();
 54767  	        this.lastMarker.index = this.scanner.index;
 54768  	        this.lastMarker.line = this.scanner.lineNumber;
 54769  	        this.lastMarker.column = this.scanner.index - this.scanner.lineStart;
 54770  	        return this.finalize(node, new JSXNode.JSXEmptyExpression());
 54771  	    };
 54772  	    JSXParser.prototype.parseJSXExpressionContainer = function () {
 54773  	        var node = this.createJSXNode();
 54774  	        this.expectJSX('{');
 54775  	        var expression;
 54776  	        if (this.matchJSX('}')) {
 54777  	            expression = this.parseJSXEmptyExpression();
 54778  	            this.expectJSX('}');
 54779  	        }
 54780  	        else {
 54781  	            this.finishJSX();
 54782  	            expression = this.parseAssignmentExpression();
 54783  	            this.reenterJSX();
 54784  	        }
 54785  	        return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));
 54786  	    };
 54787  	    JSXParser.prototype.parseJSXChildren = function () {
 54788  	        var children = [];
 54789  	        while (!this.scanner.eof()) {
 54790  	            var node = this.createJSXChildNode();
 54791  	            var token = this.nextJSXText();
 54792  	            if (token.start < token.end) {
 54793  	                var raw = this.getTokenRaw(token);
 54794  	                var child = this.finalize(node, new JSXNode.JSXText(token.value, raw));
 54795  	                children.push(child);
 54796  	            }
 54797  	            if (this.scanner.source[this.scanner.index] === '{') {
 54798  	                var container = this.parseJSXExpressionContainer();
 54799  	                children.push(container);
 54800  	            }
 54801  	            else {
 54802  	                break;
 54803  	            }
 54804  	        }
 54805  	        return children;
 54806  	    };
 54807  	    JSXParser.prototype.parseComplexJSXElement = function (el) {
 54808  	        var stack = [];
 54809  	        while (!this.scanner.eof()) {
 54810  	            el.children = el.children.concat(this.parseJSXChildren());
 54811  	            var node = this.createJSXChildNode();
 54812  	            var element = this.parseJSXBoundaryElement();
 54813  	            if (element.type === jsx_syntax_1.JSXSyntax.JSXOpeningElement) {
 54814  	                var opening = element;
 54815  	                if (opening.selfClosing) {
 54816  	                    var child = this.finalize(node, new JSXNode.JSXElement(opening, [], null));
 54817  	                    el.children.push(child);
 54818  	                }
 54819  	                else {
 54820  	                    stack.push(el);
 54821  	                    el = { node: node, opening: opening, closing: null, children: [] };
 54822  	                }
 54823  	            }
 54824  	            if (element.type === jsx_syntax_1.JSXSyntax.JSXClosingElement) {
 54825  	                el.closing = element;
 54826  	                var open_1 = getQualifiedElementName(el.opening.name);
 54827  	                var close_1 = getQualifiedElementName(el.closing.name);
 54828  	                if (open_1 !== close_1) {
 54829  	                    this.tolerateError('Expected corresponding JSX closing tag for %0', open_1);
 54830  	                }
 54831  	                if (stack.length > 0) {
 54832  	                    var child = this.finalize(el.node, new JSXNode.JSXElement(el.opening, el.children, el.closing));
 54833  	                    el = stack[stack.length - 1];
 54834  	                    el.children.push(child);
 54835  	                    stack.pop();
 54836  	                }
 54837  	                else {
 54838  	                    break;
 54839  	                }
 54840  	            }
 54841  	        }
 54842  	        return el;
 54843  	    };
 54844  	    JSXParser.prototype.parseJSXElement = function () {
 54845  	        var node = this.createJSXNode();
 54846  	        var opening = this.parseJSXOpeningElement();
 54847  	        var children = [];
 54848  	        var closing = null;
 54849  	        if (!opening.selfClosing) {
 54850  	            var el = this.parseComplexJSXElement({ node: node, opening: opening, closing: closing, children: children });
 54851  	            children = el.children;
 54852  	            closing = el.closing;
 54853  	        }
 54854  	        return this.finalize(node, new JSXNode.JSXElement(opening, children, closing));
 54855  	    };
 54856  	    JSXParser.prototype.parseJSXRoot = function () {
 54857  	        // Pop the opening '<' added from the lookahead.
 54858  	        if (this.config.tokens) {
 54859  	            this.tokens.pop();
 54860  	        }
 54861  	        this.startJSX();
 54862  	        var element = this.parseJSXElement();
 54863  	        this.finishJSX();
 54864  	        return element;
 54865  	    };
 54866  	    JSXParser.prototype.isStartOfExpression = function () {
 54867  	        return _super.prototype.isStartOfExpression.call(this) || this.match('<');
 54868  	    };
 54869  	    return JSXParser;
 54870  	}(parser_1.Parser));
 54871  	exports.JSXParser = JSXParser;
 54872  
 54873  
 54874  /***/ },
 54875  /* 4 */
 54876  /***/ function(module, exports) {
 54877  
 54878  	"use strict";
 54879  	Object.defineProperty(exports, "__esModule", { value: true });
 54880  	// See also tools/generate-unicode-regex.js.
 54881  	var Regex = {
 54882  	    // Unicode v8.0.0 NonAsciiIdentifierStart:
 54883  	    NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/,
 54884  	    // Unicode v8.0.0 NonAsciiIdentifierPart:
 54885  	    NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/
 54886  	};
 54887  	exports.Character = {
 54888  	    /* tslint:disable:no-bitwise */
 54889  	    fromCodePoint: function (cp) {
 54890  	        return (cp < 0x10000) ? String.fromCharCode(cp) :
 54891  	            String.fromCharCode(0xD800 + ((cp - 0x10000) >> 10)) +
 54892  	                String.fromCharCode(0xDC00 + ((cp - 0x10000) & 1023));
 54893  	    },
 54894  	    // https://tc39.github.io/ecma262/#sec-white-space
 54895  	    isWhiteSpace: function (cp) {
 54896  	        return (cp === 0x20) || (cp === 0x09) || (cp === 0x0B) || (cp === 0x0C) || (cp === 0xA0) ||
 54897  	            (cp >= 0x1680 && [0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(cp) >= 0);
 54898  	    },
 54899  	    // https://tc39.github.io/ecma262/#sec-line-terminators
 54900  	    isLineTerminator: function (cp) {
 54901  	        return (cp === 0x0A) || (cp === 0x0D) || (cp === 0x2028) || (cp === 0x2029);
 54902  	    },
 54903  	    // https://tc39.github.io/ecma262/#sec-names-and-keywords
 54904  	    isIdentifierStart: function (cp) {
 54905  	        return (cp === 0x24) || (cp === 0x5F) ||
 54906  	            (cp >= 0x41 && cp <= 0x5A) ||
 54907  	            (cp >= 0x61 && cp <= 0x7A) ||
 54908  	            (cp === 0x5C) ||
 54909  	            ((cp >= 0x80) && Regex.NonAsciiIdentifierStart.test(exports.Character.fromCodePoint(cp)));
 54910  	    },
 54911  	    isIdentifierPart: function (cp) {
 54912  	        return (cp === 0x24) || (cp === 0x5F) ||
 54913  	            (cp >= 0x41 && cp <= 0x5A) ||
 54914  	            (cp >= 0x61 && cp <= 0x7A) ||
 54915  	            (cp >= 0x30 && cp <= 0x39) ||
 54916  	            (cp === 0x5C) ||
 54917  	            ((cp >= 0x80) && Regex.NonAsciiIdentifierPart.test(exports.Character.fromCodePoint(cp)));
 54918  	    },
 54919  	    // https://tc39.github.io/ecma262/#sec-literals-numeric-literals
 54920  	    isDecimalDigit: function (cp) {
 54921  	        return (cp >= 0x30 && cp <= 0x39); // 0..9
 54922  	    },
 54923  	    isHexDigit: function (cp) {
 54924  	        return (cp >= 0x30 && cp <= 0x39) ||
 54925  	            (cp >= 0x41 && cp <= 0x46) ||
 54926  	            (cp >= 0x61 && cp <= 0x66); // a..f
 54927  	    },
 54928  	    isOctalDigit: function (cp) {
 54929  	        return (cp >= 0x30 && cp <= 0x37); // 0..7
 54930  	    }
 54931  	};
 54932  
 54933  
 54934  /***/ },
 54935  /* 5 */
 54936  /***/ function(module, exports, __webpack_require__) {
 54937  
 54938  	"use strict";
 54939  	Object.defineProperty(exports, "__esModule", { value: true });
 54940  	var jsx_syntax_1 = __webpack_require__(6);
 54941  	/* tslint:disable:max-classes-per-file */
 54942  	var JSXClosingElement = (function () {
 54943  	    function JSXClosingElement(name) {
 54944  	        this.type = jsx_syntax_1.JSXSyntax.JSXClosingElement;
 54945  	        this.name = name;
 54946  	    }
 54947  	    return JSXClosingElement;
 54948  	}());
 54949  	exports.JSXClosingElement = JSXClosingElement;
 54950  	var JSXElement = (function () {
 54951  	    function JSXElement(openingElement, children, closingElement) {
 54952  	        this.type = jsx_syntax_1.JSXSyntax.JSXElement;
 54953  	        this.openingElement = openingElement;
 54954  	        this.children = children;
 54955  	        this.closingElement = closingElement;
 54956  	    }
 54957  	    return JSXElement;
 54958  	}());
 54959  	exports.JSXElement = JSXElement;
 54960  	var JSXEmptyExpression = (function () {
 54961  	    function JSXEmptyExpression() {
 54962  	        this.type = jsx_syntax_1.JSXSyntax.JSXEmptyExpression;
 54963  	    }
 54964  	    return JSXEmptyExpression;
 54965  	}());
 54966  	exports.JSXEmptyExpression = JSXEmptyExpression;
 54967  	var JSXExpressionContainer = (function () {
 54968  	    function JSXExpressionContainer(expression) {
 54969  	        this.type = jsx_syntax_1.JSXSyntax.JSXExpressionContainer;
 54970  	        this.expression = expression;
 54971  	    }
 54972  	    return JSXExpressionContainer;
 54973  	}());
 54974  	exports.JSXExpressionContainer = JSXExpressionContainer;
 54975  	var JSXIdentifier = (function () {
 54976  	    function JSXIdentifier(name) {
 54977  	        this.type = jsx_syntax_1.JSXSyntax.JSXIdentifier;
 54978  	        this.name = name;
 54979  	    }
 54980  	    return JSXIdentifier;
 54981  	}());
 54982  	exports.JSXIdentifier = JSXIdentifier;
 54983  	var JSXMemberExpression = (function () {
 54984  	    function JSXMemberExpression(object, property) {
 54985  	        this.type = jsx_syntax_1.JSXSyntax.JSXMemberExpression;
 54986  	        this.object = object;
 54987  	        this.property = property;
 54988  	    }
 54989  	    return JSXMemberExpression;
 54990  	}());
 54991  	exports.JSXMemberExpression = JSXMemberExpression;
 54992  	var JSXAttribute = (function () {
 54993  	    function JSXAttribute(name, value) {
 54994  	        this.type = jsx_syntax_1.JSXSyntax.JSXAttribute;
 54995  	        this.name = name;
 54996  	        this.value = value;
 54997  	    }
 54998  	    return JSXAttribute;
 54999  	}());
 55000  	exports.JSXAttribute = JSXAttribute;
 55001  	var JSXNamespacedName = (function () {
 55002  	    function JSXNamespacedName(namespace, name) {
 55003  	        this.type = jsx_syntax_1.JSXSyntax.JSXNamespacedName;
 55004  	        this.namespace = namespace;
 55005  	        this.name = name;
 55006  	    }
 55007  	    return JSXNamespacedName;
 55008  	}());
 55009  	exports.JSXNamespacedName = JSXNamespacedName;
 55010  	var JSXOpeningElement = (function () {
 55011  	    function JSXOpeningElement(name, selfClosing, attributes) {
 55012  	        this.type = jsx_syntax_1.JSXSyntax.JSXOpeningElement;
 55013  	        this.name = name;
 55014  	        this.selfClosing = selfClosing;
 55015  	        this.attributes = attributes;
 55016  	    }
 55017  	    return JSXOpeningElement;
 55018  	}());
 55019  	exports.JSXOpeningElement = JSXOpeningElement;
 55020  	var JSXSpreadAttribute = (function () {
 55021  	    function JSXSpreadAttribute(argument) {
 55022  	        this.type = jsx_syntax_1.JSXSyntax.JSXSpreadAttribute;
 55023  	        this.argument = argument;
 55024  	    }
 55025  	    return JSXSpreadAttribute;
 55026  	}());
 55027  	exports.JSXSpreadAttribute = JSXSpreadAttribute;
 55028  	var JSXText = (function () {
 55029  	    function JSXText(value, raw) {
 55030  	        this.type = jsx_syntax_1.JSXSyntax.JSXText;
 55031  	        this.value = value;
 55032  	        this.raw = raw;
 55033  	    }
 55034  	    return JSXText;
 55035  	}());
 55036  	exports.JSXText = JSXText;
 55037  
 55038  
 55039  /***/ },
 55040  /* 6 */
 55041  /***/ function(module, exports) {
 55042  
 55043  	"use strict";
 55044  	Object.defineProperty(exports, "__esModule", { value: true });
 55045  	exports.JSXSyntax = {
 55046  	    JSXAttribute: 'JSXAttribute',
 55047  	    JSXClosingElement: 'JSXClosingElement',
 55048  	    JSXElement: 'JSXElement',
 55049  	    JSXEmptyExpression: 'JSXEmptyExpression',
 55050  	    JSXExpressionContainer: 'JSXExpressionContainer',
 55051  	    JSXIdentifier: 'JSXIdentifier',
 55052  	    JSXMemberExpression: 'JSXMemberExpression',
 55053  	    JSXNamespacedName: 'JSXNamespacedName',
 55054  	    JSXOpeningElement: 'JSXOpeningElement',
 55055  	    JSXSpreadAttribute: 'JSXSpreadAttribute',
 55056  	    JSXText: 'JSXText'
 55057  	};
 55058  
 55059  
 55060  /***/ },
 55061  /* 7 */
 55062  /***/ function(module, exports, __webpack_require__) {
 55063  
 55064  	"use strict";
 55065  	Object.defineProperty(exports, "__esModule", { value: true });
 55066  	var syntax_1 = __webpack_require__(2);
 55067  	/* tslint:disable:max-classes-per-file */
 55068  	var ArrayExpression = (function () {
 55069  	    function ArrayExpression(elements) {
 55070  	        this.type = syntax_1.Syntax.ArrayExpression;
 55071  	        this.elements = elements;
 55072  	    }
 55073  	    return ArrayExpression;
 55074  	}());
 55075  	exports.ArrayExpression = ArrayExpression;
 55076  	var ArrayPattern = (function () {
 55077  	    function ArrayPattern(elements) {
 55078  	        this.type = syntax_1.Syntax.ArrayPattern;
 55079  	        this.elements = elements;
 55080  	    }
 55081  	    return ArrayPattern;
 55082  	}());
 55083  	exports.ArrayPattern = ArrayPattern;
 55084  	var ArrowFunctionExpression = (function () {
 55085  	    function ArrowFunctionExpression(params, body, expression) {
 55086  	        this.type = syntax_1.Syntax.ArrowFunctionExpression;
 55087  	        this.id = null;
 55088  	        this.params = params;
 55089  	        this.body = body;
 55090  	        this.generator = false;
 55091  	        this.expression = expression;
 55092  	        this.async = false;
 55093  	    }
 55094  	    return ArrowFunctionExpression;
 55095  	}());
 55096  	exports.ArrowFunctionExpression = ArrowFunctionExpression;
 55097  	var AssignmentExpression = (function () {
 55098  	    function AssignmentExpression(operator, left, right) {
 55099  	        this.type = syntax_1.Syntax.AssignmentExpression;
 55100  	        this.operator = operator;
 55101  	        this.left = left;
 55102  	        this.right = right;
 55103  	    }
 55104  	    return AssignmentExpression;
 55105  	}());
 55106  	exports.AssignmentExpression = AssignmentExpression;
 55107  	var AssignmentPattern = (function () {
 55108  	    function AssignmentPattern(left, right) {
 55109  	        this.type = syntax_1.Syntax.AssignmentPattern;
 55110  	        this.left = left;
 55111  	        this.right = right;
 55112  	    }
 55113  	    return AssignmentPattern;
 55114  	}());
 55115  	exports.AssignmentPattern = AssignmentPattern;
 55116  	var AsyncArrowFunctionExpression = (function () {
 55117  	    function AsyncArrowFunctionExpression(params, body, expression) {
 55118  	        this.type = syntax_1.Syntax.ArrowFunctionExpression;
 55119  	        this.id = null;
 55120  	        this.params = params;
 55121  	        this.body = body;
 55122  	        this.generator = false;
 55123  	        this.expression = expression;
 55124  	        this.async = true;
 55125  	    }
 55126  	    return AsyncArrowFunctionExpression;
 55127  	}());
 55128  	exports.AsyncArrowFunctionExpression = AsyncArrowFunctionExpression;
 55129  	var AsyncFunctionDeclaration = (function () {
 55130  	    function AsyncFunctionDeclaration(id, params, body) {
 55131  	        this.type = syntax_1.Syntax.FunctionDeclaration;
 55132  	        this.id = id;
 55133  	        this.params = params;
 55134  	        this.body = body;
 55135  	        this.generator = false;
 55136  	        this.expression = false;
 55137  	        this.async = true;
 55138  	    }
 55139  	    return AsyncFunctionDeclaration;
 55140  	}());
 55141  	exports.AsyncFunctionDeclaration = AsyncFunctionDeclaration;
 55142  	var AsyncFunctionExpression = (function () {
 55143  	    function AsyncFunctionExpression(id, params, body) {
 55144  	        this.type = syntax_1.Syntax.FunctionExpression;
 55145  	        this.id = id;
 55146  	        this.params = params;
 55147  	        this.body = body;
 55148  	        this.generator = false;
 55149  	        this.expression = false;
 55150  	        this.async = true;
 55151  	    }
 55152  	    return AsyncFunctionExpression;
 55153  	}());
 55154  	exports.AsyncFunctionExpression = AsyncFunctionExpression;
 55155  	var AwaitExpression = (function () {
 55156  	    function AwaitExpression(argument) {
 55157  	        this.type = syntax_1.Syntax.AwaitExpression;
 55158  	        this.argument = argument;
 55159  	    }
 55160  	    return AwaitExpression;
 55161  	}());
 55162  	exports.AwaitExpression = AwaitExpression;
 55163  	var BinaryExpression = (function () {
 55164  	    function BinaryExpression(operator, left, right) {
 55165  	        var logical = (operator === '||' || operator === '&&');
 55166  	        this.type = logical ? syntax_1.Syntax.LogicalExpression : syntax_1.Syntax.BinaryExpression;
 55167  	        this.operator = operator;
 55168  	        this.left = left;
 55169  	        this.right = right;
 55170  	    }
 55171  	    return BinaryExpression;
 55172  	}());
 55173  	exports.BinaryExpression = BinaryExpression;
 55174  	var BlockStatement = (function () {
 55175  	    function BlockStatement(body) {
 55176  	        this.type = syntax_1.Syntax.BlockStatement;
 55177  	        this.body = body;
 55178  	    }
 55179  	    return BlockStatement;
 55180  	}());
 55181  	exports.BlockStatement = BlockStatement;
 55182  	var BreakStatement = (function () {
 55183  	    function BreakStatement(label) {
 55184  	        this.type = syntax_1.Syntax.BreakStatement;
 55185  	        this.label = label;
 55186  	    }
 55187  	    return BreakStatement;
 55188  	}());
 55189  	exports.BreakStatement = BreakStatement;
 55190  	var CallExpression = (function () {
 55191  	    function CallExpression(callee, args) {
 55192  	        this.type = syntax_1.Syntax.CallExpression;
 55193  	        this.callee = callee;
 55194  	        this.arguments = args;
 55195  	    }
 55196  	    return CallExpression;
 55197  	}());
 55198  	exports.CallExpression = CallExpression;
 55199  	var CatchClause = (function () {
 55200  	    function CatchClause(param, body) {
 55201  	        this.type = syntax_1.Syntax.CatchClause;
 55202  	        this.param = param;
 55203  	        this.body = body;
 55204  	    }
 55205  	    return CatchClause;
 55206  	}());
 55207  	exports.CatchClause = CatchClause;
 55208  	var ClassBody = (function () {
 55209  	    function ClassBody(body) {
 55210  	        this.type = syntax_1.Syntax.ClassBody;
 55211  	        this.body = body;
 55212  	    }
 55213  	    return ClassBody;
 55214  	}());
 55215  	exports.ClassBody = ClassBody;
 55216  	var ClassDeclaration = (function () {
 55217  	    function ClassDeclaration(id, superClass, body) {
 55218  	        this.type = syntax_1.Syntax.ClassDeclaration;
 55219  	        this.id = id;
 55220  	        this.superClass = superClass;
 55221  	        this.body = body;
 55222  	    }
 55223  	    return ClassDeclaration;
 55224  	}());
 55225  	exports.ClassDeclaration = ClassDeclaration;
 55226  	var ClassExpression = (function () {
 55227  	    function ClassExpression(id, superClass, body) {
 55228  	        this.type = syntax_1.Syntax.ClassExpression;
 55229  	        this.id = id;
 55230  	        this.superClass = superClass;
 55231  	        this.body = body;
 55232  	    }
 55233  	    return ClassExpression;
 55234  	}());
 55235  	exports.ClassExpression = ClassExpression;
 55236  	var ComputedMemberExpression = (function () {
 55237  	    function ComputedMemberExpression(object, property) {
 55238  	        this.type = syntax_1.Syntax.MemberExpression;
 55239  	        this.computed = true;
 55240  	        this.object = object;
 55241  	        this.property = property;
 55242  	    }
 55243  	    return ComputedMemberExpression;
 55244  	}());
 55245  	exports.ComputedMemberExpression = ComputedMemberExpression;
 55246  	var ConditionalExpression = (function () {
 55247  	    function ConditionalExpression(test, consequent, alternate) {
 55248  	        this.type = syntax_1.Syntax.ConditionalExpression;
 55249  	        this.test = test;
 55250  	        this.consequent = consequent;
 55251  	        this.alternate = alternate;
 55252  	    }
 55253  	    return ConditionalExpression;
 55254  	}());
 55255  	exports.ConditionalExpression = ConditionalExpression;
 55256  	var ContinueStatement = (function () {
 55257  	    function ContinueStatement(label) {
 55258  	        this.type = syntax_1.Syntax.ContinueStatement;
 55259  	        this.label = label;
 55260  	    }
 55261  	    return ContinueStatement;
 55262  	}());
 55263  	exports.ContinueStatement = ContinueStatement;
 55264  	var DebuggerStatement = (function () {
 55265  	    function DebuggerStatement() {
 55266  	        this.type = syntax_1.Syntax.DebuggerStatement;
 55267  	    }
 55268  	    return DebuggerStatement;
 55269  	}());
 55270  	exports.DebuggerStatement = DebuggerStatement;
 55271  	var Directive = (function () {
 55272  	    function Directive(expression, directive) {
 55273  	        this.type = syntax_1.Syntax.ExpressionStatement;
 55274  	        this.expression = expression;
 55275  	        this.directive = directive;
 55276  	    }
 55277  	    return Directive;
 55278  	}());
 55279  	exports.Directive = Directive;
 55280  	var DoWhileStatement = (function () {
 55281  	    function DoWhileStatement(body, test) {
 55282  	        this.type = syntax_1.Syntax.DoWhileStatement;
 55283  	        this.body = body;
 55284  	        this.test = test;
 55285  	    }
 55286  	    return DoWhileStatement;
 55287  	}());
 55288  	exports.DoWhileStatement = DoWhileStatement;
 55289  	var EmptyStatement = (function () {
 55290  	    function EmptyStatement() {
 55291  	        this.type = syntax_1.Syntax.EmptyStatement;
 55292  	    }
 55293  	    return EmptyStatement;
 55294  	}());
 55295  	exports.EmptyStatement = EmptyStatement;
 55296  	var ExportAllDeclaration = (function () {
 55297  	    function ExportAllDeclaration(source) {
 55298  	        this.type = syntax_1.Syntax.ExportAllDeclaration;
 55299  	        this.source = source;
 55300  	    }
 55301  	    return ExportAllDeclaration;
 55302  	}());
 55303  	exports.ExportAllDeclaration = ExportAllDeclaration;
 55304  	var ExportDefaultDeclaration = (function () {
 55305  	    function ExportDefaultDeclaration(declaration) {
 55306  	        this.type = syntax_1.Syntax.ExportDefaultDeclaration;
 55307  	        this.declaration = declaration;
 55308  	    }
 55309  	    return ExportDefaultDeclaration;
 55310  	}());
 55311  	exports.ExportDefaultDeclaration = ExportDefaultDeclaration;
 55312  	var ExportNamedDeclaration = (function () {
 55313  	    function ExportNamedDeclaration(declaration, specifiers, source) {
 55314  	        this.type = syntax_1.Syntax.ExportNamedDeclaration;
 55315  	        this.declaration = declaration;
 55316  	        this.specifiers = specifiers;
 55317  	        this.source = source;
 55318  	    }
 55319  	    return ExportNamedDeclaration;
 55320  	}());
 55321  	exports.ExportNamedDeclaration = ExportNamedDeclaration;
 55322  	var ExportSpecifier = (function () {
 55323  	    function ExportSpecifier(local, exported) {
 55324  	        this.type = syntax_1.Syntax.ExportSpecifier;
 55325  	        this.exported = exported;
 55326  	        this.local = local;
 55327  	    }
 55328  	    return ExportSpecifier;
 55329  	}());
 55330  	exports.ExportSpecifier = ExportSpecifier;
 55331  	var ExpressionStatement = (function () {
 55332  	    function ExpressionStatement(expression) {
 55333  	        this.type = syntax_1.Syntax.ExpressionStatement;
 55334  	        this.expression = expression;
 55335  	    }
 55336  	    return ExpressionStatement;
 55337  	}());
 55338  	exports.ExpressionStatement = ExpressionStatement;
 55339  	var ForInStatement = (function () {
 55340  	    function ForInStatement(left, right, body) {
 55341  	        this.type = syntax_1.Syntax.ForInStatement;
 55342  	        this.left = left;
 55343  	        this.right = right;
 55344  	        this.body = body;
 55345  	        this.each = false;
 55346  	    }
 55347  	    return ForInStatement;
 55348  	}());
 55349  	exports.ForInStatement = ForInStatement;
 55350  	var ForOfStatement = (function () {
 55351  	    function ForOfStatement(left, right, body) {
 55352  	        this.type = syntax_1.Syntax.ForOfStatement;
 55353  	        this.left = left;
 55354  	        this.right = right;
 55355  	        this.body = body;
 55356  	    }
 55357  	    return ForOfStatement;
 55358  	}());
 55359  	exports.ForOfStatement = ForOfStatement;
 55360  	var ForStatement = (function () {
 55361  	    function ForStatement(init, test, update, body) {
 55362  	        this.type = syntax_1.Syntax.ForStatement;
 55363  	        this.init = init;
 55364  	        this.test = test;
 55365  	        this.update = update;
 55366  	        this.body = body;
 55367  	    }
 55368  	    return ForStatement;
 55369  	}());
 55370  	exports.ForStatement = ForStatement;
 55371  	var FunctionDeclaration = (function () {
 55372  	    function FunctionDeclaration(id, params, body, generator) {
 55373  	        this.type = syntax_1.Syntax.FunctionDeclaration;
 55374  	        this.id = id;
 55375  	        this.params = params;
 55376  	        this.body = body;
 55377  	        this.generator = generator;
 55378  	        this.expression = false;
 55379  	        this.async = false;
 55380  	    }
 55381  	    return FunctionDeclaration;
 55382  	}());
 55383  	exports.FunctionDeclaration = FunctionDeclaration;
 55384  	var FunctionExpression = (function () {
 55385  	    function FunctionExpression(id, params, body, generator) {
 55386  	        this.type = syntax_1.Syntax.FunctionExpression;
 55387  	        this.id = id;
 55388  	        this.params = params;
 55389  	        this.body = body;
 55390  	        this.generator = generator;
 55391  	        this.expression = false;
 55392  	        this.async = false;
 55393  	    }
 55394  	    return FunctionExpression;
 55395  	}());
 55396  	exports.FunctionExpression = FunctionExpression;
 55397  	var Identifier = (function () {
 55398  	    function Identifier(name) {
 55399  	        this.type = syntax_1.Syntax.Identifier;
 55400  	        this.name = name;
 55401  	    }
 55402  	    return Identifier;
 55403  	}());
 55404  	exports.Identifier = Identifier;
 55405  	var IfStatement = (function () {
 55406  	    function IfStatement(test, consequent, alternate) {
 55407  	        this.type = syntax_1.Syntax.IfStatement;
 55408  	        this.test = test;
 55409  	        this.consequent = consequent;
 55410  	        this.alternate = alternate;
 55411  	    }
 55412  	    return IfStatement;
 55413  	}());
 55414  	exports.IfStatement = IfStatement;
 55415  	var ImportDeclaration = (function () {
 55416  	    function ImportDeclaration(specifiers, source) {
 55417  	        this.type = syntax_1.Syntax.ImportDeclaration;
 55418  	        this.specifiers = specifiers;
 55419  	        this.source = source;
 55420  	    }
 55421  	    return ImportDeclaration;
 55422  	}());
 55423  	exports.ImportDeclaration = ImportDeclaration;
 55424  	var ImportDefaultSpecifier = (function () {
 55425  	    function ImportDefaultSpecifier(local) {
 55426  	        this.type = syntax_1.Syntax.ImportDefaultSpecifier;
 55427  	        this.local = local;
 55428  	    }
 55429  	    return ImportDefaultSpecifier;
 55430  	}());
 55431  	exports.ImportDefaultSpecifier = ImportDefaultSpecifier;
 55432  	var ImportNamespaceSpecifier = (function () {
 55433  	    function ImportNamespaceSpecifier(local) {
 55434  	        this.type = syntax_1.Syntax.ImportNamespaceSpecifier;
 55435  	        this.local = local;
 55436  	    }
 55437  	    return ImportNamespaceSpecifier;
 55438  	}());
 55439  	exports.ImportNamespaceSpecifier = ImportNamespaceSpecifier;
 55440  	var ImportSpecifier = (function () {
 55441  	    function ImportSpecifier(local, imported) {
 55442  	        this.type = syntax_1.Syntax.ImportSpecifier;
 55443  	        this.local = local;
 55444  	        this.imported = imported;
 55445  	    }
 55446  	    return ImportSpecifier;
 55447  	}());
 55448  	exports.ImportSpecifier = ImportSpecifier;
 55449  	var LabeledStatement = (function () {
 55450  	    function LabeledStatement(label, body) {
 55451  	        this.type = syntax_1.Syntax.LabeledStatement;
 55452  	        this.label = label;
 55453  	        this.body = body;
 55454  	    }
 55455  	    return LabeledStatement;
 55456  	}());
 55457  	exports.LabeledStatement = LabeledStatement;
 55458  	var Literal = (function () {
 55459  	    function Literal(value, raw) {
 55460  	        this.type = syntax_1.Syntax.Literal;
 55461  	        this.value = value;
 55462  	        this.raw = raw;
 55463  	    }
 55464  	    return Literal;
 55465  	}());
 55466  	exports.Literal = Literal;
 55467  	var MetaProperty = (function () {
 55468  	    function MetaProperty(meta, property) {
 55469  	        this.type = syntax_1.Syntax.MetaProperty;
 55470  	        this.meta = meta;
 55471  	        this.property = property;
 55472  	    }
 55473  	    return MetaProperty;
 55474  	}());
 55475  	exports.MetaProperty = MetaProperty;
 55476  	var MethodDefinition = (function () {
 55477  	    function MethodDefinition(key, computed, value, kind, isStatic) {
 55478  	        this.type = syntax_1.Syntax.MethodDefinition;
 55479  	        this.key = key;
 55480  	        this.computed = computed;
 55481  	        this.value = value;
 55482  	        this.kind = kind;
 55483  	        this.static = isStatic;
 55484  	    }
 55485  	    return MethodDefinition;
 55486  	}());
 55487  	exports.MethodDefinition = MethodDefinition;
 55488  	var Module = (function () {
 55489  	    function Module(body) {
 55490  	        this.type = syntax_1.Syntax.Program;
 55491  	        this.body = body;
 55492  	        this.sourceType = 'module';
 55493  	    }
 55494  	    return Module;
 55495  	}());
 55496  	exports.Module = Module;
 55497  	var NewExpression = (function () {
 55498  	    function NewExpression(callee, args) {
 55499  	        this.type = syntax_1.Syntax.NewExpression;
 55500  	        this.callee = callee;
 55501  	        this.arguments = args;
 55502  	    }
 55503  	    return NewExpression;
 55504  	}());
 55505  	exports.NewExpression = NewExpression;
 55506  	var ObjectExpression = (function () {
 55507  	    function ObjectExpression(properties) {
 55508  	        this.type = syntax_1.Syntax.ObjectExpression;
 55509  	        this.properties = properties;
 55510  	    }
 55511  	    return ObjectExpression;
 55512  	}());
 55513  	exports.ObjectExpression = ObjectExpression;
 55514  	var ObjectPattern = (function () {
 55515  	    function ObjectPattern(properties) {
 55516  	        this.type = syntax_1.Syntax.ObjectPattern;
 55517  	        this.properties = properties;
 55518  	    }
 55519  	    return ObjectPattern;
 55520  	}());
 55521  	exports.ObjectPattern = ObjectPattern;
 55522  	var Property = (function () {
 55523  	    function Property(kind, key, computed, value, method, shorthand) {
 55524  	        this.type = syntax_1.Syntax.Property;
 55525  	        this.key = key;
 55526  	        this.computed = computed;
 55527  	        this.value = value;
 55528  	        this.kind = kind;
 55529  	        this.method = method;
 55530  	        this.shorthand = shorthand;
 55531  	    }
 55532  	    return Property;
 55533  	}());
 55534  	exports.Property = Property;
 55535  	var RegexLiteral = (function () {
 55536  	    function RegexLiteral(value, raw, pattern, flags) {
 55537  	        this.type = syntax_1.Syntax.Literal;
 55538  	        this.value = value;
 55539  	        this.raw = raw;
 55540  	        this.regex = { pattern: pattern, flags: flags };
 55541  	    }
 55542  	    return RegexLiteral;
 55543  	}());
 55544  	exports.RegexLiteral = RegexLiteral;
 55545  	var RestElement = (function () {
 55546  	    function RestElement(argument) {
 55547  	        this.type = syntax_1.Syntax.RestElement;
 55548  	        this.argument = argument;
 55549  	    }
 55550  	    return RestElement;
 55551  	}());
 55552  	exports.RestElement = RestElement;
 55553  	var ReturnStatement = (function () {
 55554  	    function ReturnStatement(argument) {
 55555  	        this.type = syntax_1.Syntax.ReturnStatement;
 55556  	        this.argument = argument;
 55557  	    }
 55558  	    return ReturnStatement;
 55559  	}());
 55560  	exports.ReturnStatement = ReturnStatement;
 55561  	var Script = (function () {
 55562  	    function Script(body) {
 55563  	        this.type = syntax_1.Syntax.Program;
 55564  	        this.body = body;
 55565  	        this.sourceType = 'script';
 55566  	    }
 55567  	    return Script;
 55568  	}());
 55569  	exports.Script = Script;
 55570  	var SequenceExpression = (function () {
 55571  	    function SequenceExpression(expressions) {
 55572  	        this.type = syntax_1.Syntax.SequenceExpression;
 55573  	        this.expressions = expressions;
 55574  	    }
 55575  	    return SequenceExpression;
 55576  	}());
 55577  	exports.SequenceExpression = SequenceExpression;
 55578  	var SpreadElement = (function () {
 55579  	    function SpreadElement(argument) {
 55580  	        this.type = syntax_1.Syntax.SpreadElement;
 55581  	        this.argument = argument;
 55582  	    }
 55583  	    return SpreadElement;
 55584  	}());
 55585  	exports.SpreadElement = SpreadElement;
 55586  	var StaticMemberExpression = (function () {
 55587  	    function StaticMemberExpression(object, property) {
 55588  	        this.type = syntax_1.Syntax.MemberExpression;
 55589  	        this.computed = false;
 55590  	        this.object = object;
 55591  	        this.property = property;
 55592  	    }
 55593  	    return StaticMemberExpression;
 55594  	}());
 55595  	exports.StaticMemberExpression = StaticMemberExpression;
 55596  	var Super = (function () {
 55597  	    function Super() {
 55598  	        this.type = syntax_1.Syntax.Super;
 55599  	    }
 55600  	    return Super;
 55601  	}());
 55602  	exports.Super = Super;
 55603  	var SwitchCase = (function () {
 55604  	    function SwitchCase(test, consequent) {
 55605  	        this.type = syntax_1.Syntax.SwitchCase;
 55606  	        this.test = test;
 55607  	        this.consequent = consequent;
 55608  	    }
 55609  	    return SwitchCase;
 55610  	}());
 55611  	exports.SwitchCase = SwitchCase;
 55612  	var SwitchStatement = (function () {
 55613  	    function SwitchStatement(discriminant, cases) {
 55614  	        this.type = syntax_1.Syntax.SwitchStatement;
 55615  	        this.discriminant = discriminant;
 55616  	        this.cases = cases;
 55617  	    }
 55618  	    return SwitchStatement;
 55619  	}());
 55620  	exports.SwitchStatement = SwitchStatement;
 55621  	var TaggedTemplateExpression = (function () {
 55622  	    function TaggedTemplateExpression(tag, quasi) {
 55623  	        this.type = syntax_1.Syntax.TaggedTemplateExpression;
 55624  	        this.tag = tag;
 55625  	        this.quasi = quasi;
 55626  	    }
 55627  	    return TaggedTemplateExpression;
 55628  	}());
 55629  	exports.TaggedTemplateExpression = TaggedTemplateExpression;
 55630  	var TemplateElement = (function () {
 55631  	    function TemplateElement(value, tail) {
 55632  	        this.type = syntax_1.Syntax.TemplateElement;
 55633  	        this.value = value;
 55634  	        this.tail = tail;
 55635  	    }
 55636  	    return TemplateElement;
 55637  	}());
 55638  	exports.TemplateElement = TemplateElement;
 55639  	var TemplateLiteral = (function () {
 55640  	    function TemplateLiteral(quasis, expressions) {
 55641  	        this.type = syntax_1.Syntax.TemplateLiteral;
 55642  	        this.quasis = quasis;
 55643  	        this.expressions = expressions;
 55644  	    }
 55645  	    return TemplateLiteral;
 55646  	}());
 55647  	exports.TemplateLiteral = TemplateLiteral;
 55648  	var ThisExpression = (function () {
 55649  	    function ThisExpression() {
 55650  	        this.type = syntax_1.Syntax.ThisExpression;
 55651  	    }
 55652  	    return ThisExpression;
 55653  	}());
 55654  	exports.ThisExpression = ThisExpression;
 55655  	var ThrowStatement = (function () {
 55656  	    function ThrowStatement(argument) {
 55657  	        this.type = syntax_1.Syntax.ThrowStatement;
 55658  	        this.argument = argument;
 55659  	    }
 55660  	    return ThrowStatement;
 55661  	}());
 55662  	exports.ThrowStatement = ThrowStatement;
 55663  	var TryStatement = (function () {
 55664  	    function TryStatement(block, handler, finalizer) {
 55665  	        this.type = syntax_1.Syntax.TryStatement;
 55666  	        this.block = block;
 55667  	        this.handler = handler;
 55668  	        this.finalizer = finalizer;
 55669  	    }
 55670  	    return TryStatement;
 55671  	}());
 55672  	exports.TryStatement = TryStatement;
 55673  	var UnaryExpression = (function () {
 55674  	    function UnaryExpression(operator, argument) {
 55675  	        this.type = syntax_1.Syntax.UnaryExpression;
 55676  	        this.operator = operator;
 55677  	        this.argument = argument;
 55678  	        this.prefix = true;
 55679  	    }
 55680  	    return UnaryExpression;
 55681  	}());
 55682  	exports.UnaryExpression = UnaryExpression;
 55683  	var UpdateExpression = (function () {
 55684  	    function UpdateExpression(operator, argument, prefix) {
 55685  	        this.type = syntax_1.Syntax.UpdateExpression;
 55686  	        this.operator = operator;
 55687  	        this.argument = argument;
 55688  	        this.prefix = prefix;
 55689  	    }
 55690  	    return UpdateExpression;
 55691  	}());
 55692  	exports.UpdateExpression = UpdateExpression;
 55693  	var VariableDeclaration = (function () {
 55694  	    function VariableDeclaration(declarations, kind) {
 55695  	        this.type = syntax_1.Syntax.VariableDeclaration;
 55696  	        this.declarations = declarations;
 55697  	        this.kind = kind;
 55698  	    }
 55699  	    return VariableDeclaration;
 55700  	}());
 55701  	exports.VariableDeclaration = VariableDeclaration;
 55702  	var VariableDeclarator = (function () {
 55703  	    function VariableDeclarator(id, init) {
 55704  	        this.type = syntax_1.Syntax.VariableDeclarator;
 55705  	        this.id = id;
 55706  	        this.init = init;
 55707  	    }
 55708  	    return VariableDeclarator;
 55709  	}());
 55710  	exports.VariableDeclarator = VariableDeclarator;
 55711  	var WhileStatement = (function () {
 55712  	    function WhileStatement(test, body) {
 55713  	        this.type = syntax_1.Syntax.WhileStatement;
 55714  	        this.test = test;
 55715  	        this.body = body;
 55716  	    }
 55717  	    return WhileStatement;
 55718  	}());
 55719  	exports.WhileStatement = WhileStatement;
 55720  	var WithStatement = (function () {
 55721  	    function WithStatement(object, body) {
 55722  	        this.type = syntax_1.Syntax.WithStatement;
 55723  	        this.object = object;
 55724  	        this.body = body;
 55725  	    }
 55726  	    return WithStatement;
 55727  	}());
 55728  	exports.WithStatement = WithStatement;
 55729  	var YieldExpression = (function () {
 55730  	    function YieldExpression(argument, delegate) {
 55731  	        this.type = syntax_1.Syntax.YieldExpression;
 55732  	        this.argument = argument;
 55733  	        this.delegate = delegate;
 55734  	    }
 55735  	    return YieldExpression;
 55736  	}());
 55737  	exports.YieldExpression = YieldExpression;
 55738  
 55739  
 55740  /***/ },
 55741  /* 8 */
 55742  /***/ function(module, exports, __webpack_require__) {
 55743  
 55744  	"use strict";
 55745  	Object.defineProperty(exports, "__esModule", { value: true });
 55746  	var assert_1 = __webpack_require__(9);
 55747  	var error_handler_1 = __webpack_require__(10);
 55748  	var messages_1 = __webpack_require__(11);
 55749  	var Node = __webpack_require__(7);
 55750  	var scanner_1 = __webpack_require__(12);
 55751  	var syntax_1 = __webpack_require__(2);
 55752  	var token_1 = __webpack_require__(13);
 55753  	var ArrowParameterPlaceHolder = 'ArrowParameterPlaceHolder';
 55754  	var Parser = (function () {
 55755  	    function Parser(code, options, delegate) {
 55756  	        if (options === void 0) { options = {}; }
 55757  	        this.config = {
 55758  	            range: (typeof options.range === 'boolean') && options.range,
 55759  	            loc: (typeof options.loc === 'boolean') && options.loc,
 55760  	            source: null,
 55761  	            tokens: (typeof options.tokens === 'boolean') && options.tokens,
 55762  	            comment: (typeof options.comment === 'boolean') && options.comment,
 55763  	            tolerant: (typeof options.tolerant === 'boolean') && options.tolerant
 55764  	        };
 55765  	        if (this.config.loc && options.source && options.source !== null) {
 55766  	            this.config.source = String(options.source);
 55767  	        }
 55768  	        this.delegate = delegate;
 55769  	        this.errorHandler = new error_handler_1.ErrorHandler();
 55770  	        this.errorHandler.tolerant = this.config.tolerant;
 55771  	        this.scanner = new scanner_1.Scanner(code, this.errorHandler);
 55772  	        this.scanner.trackComment = this.config.comment;
 55773  	        this.operatorPrecedence = {
 55774  	            ')': 0,
 55775  	            ';': 0,
 55776  	            ',': 0,
 55777  	            '=': 0,
 55778  	            ']': 0,
 55779  	            '||': 1,
 55780  	            '&&': 2,
 55781  	            '|': 3,
 55782  	            '^': 4,
 55783  	            '&': 5,
 55784  	            '==': 6,
 55785  	            '!=': 6,
 55786  	            '===': 6,
 55787  	            '!==': 6,
 55788  	            '<': 7,
 55789  	            '>': 7,
 55790  	            '<=': 7,
 55791  	            '>=': 7,
 55792  	            '<<': 8,
 55793  	            '>>': 8,
 55794  	            '>>>': 8,
 55795  	            '+': 9,
 55796  	            '-': 9,
 55797  	            '*': 11,
 55798  	            '/': 11,
 55799  	            '%': 11
 55800  	        };
 55801  	        this.lookahead = {
 55802  	            type: 2 /* EOF */,
 55803  	            value: '',
 55804  	            lineNumber: this.scanner.lineNumber,
 55805  	            lineStart: 0,
 55806  	            start: 0,
 55807  	            end: 0
 55808  	        };
 55809  	        this.hasLineTerminator = false;
 55810  	        this.context = {
 55811  	            isModule: false,
 55812  	            await: false,
 55813  	            allowIn: true,
 55814  	            allowStrictDirective: true,
 55815  	            allowYield: true,
 55816  	            firstCoverInitializedNameError: null,
 55817  	            isAssignmentTarget: false,
 55818  	            isBindingElement: false,
 55819  	            inFunctionBody: false,
 55820  	            inIteration: false,
 55821  	            inSwitch: false,
 55822  	            labelSet: {},
 55823  	            strict: false
 55824  	        };
 55825  	        this.tokens = [];
 55826  	        this.startMarker = {
 55827  	            index: 0,
 55828  	            line: this.scanner.lineNumber,
 55829  	            column: 0
 55830  	        };
 55831  	        this.lastMarker = {
 55832  	            index: 0,
 55833  	            line: this.scanner.lineNumber,
 55834  	            column: 0
 55835  	        };
 55836  	        this.nextToken();
 55837  	        this.lastMarker = {
 55838  	            index: this.scanner.index,
 55839  	            line: this.scanner.lineNumber,
 55840  	            column: this.scanner.index - this.scanner.lineStart
 55841  	        };
 55842  	    }
 55843  	    Parser.prototype.throwError = function (messageFormat) {
 55844  	        var values = [];
 55845  	        for (var _i = 1; _i < arguments.length; _i++) {
 55846  	            values[_i - 1] = arguments[_i];
 55847  	        }
 55848  	        var args = Array.prototype.slice.call(arguments, 1);
 55849  	        var msg = messageFormat.replace(/%(\d)/g, function (whole, idx) {
 55850  	            assert_1.assert(idx < args.length, 'Message reference must be in range');
 55851  	            return args[idx];
 55852  	        });
 55853  	        var index = this.lastMarker.index;
 55854  	        var line = this.lastMarker.line;
 55855  	        var column = this.lastMarker.column + 1;
 55856  	        throw this.errorHandler.createError(index, line, column, msg);
 55857  	    };
 55858  	    Parser.prototype.tolerateError = function (messageFormat) {
 55859  	        var values = [];
 55860  	        for (var _i = 1; _i < arguments.length; _i++) {
 55861  	            values[_i - 1] = arguments[_i];
 55862  	        }
 55863  	        var args = Array.prototype.slice.call(arguments, 1);
 55864  	        var msg = messageFormat.replace(/%(\d)/g, function (whole, idx) {
 55865  	            assert_1.assert(idx < args.length, 'Message reference must be in range');
 55866  	            return args[idx];
 55867  	        });
 55868  	        var index = this.lastMarker.index;
 55869  	        var line = this.scanner.lineNumber;
 55870  	        var column = this.lastMarker.column + 1;
 55871  	        this.errorHandler.tolerateError(index, line, column, msg);
 55872  	    };
 55873  	    // Throw an exception because of the token.
 55874  	    Parser.prototype.unexpectedTokenError = function (token, message) {
 55875  	        var msg = message || messages_1.Messages.UnexpectedToken;
 55876  	        var value;
 55877  	        if (token) {
 55878  	            if (!message) {
 55879  	                msg = (token.type === 2 /* EOF */) ? messages_1.Messages.UnexpectedEOS :
 55880  	                    (token.type === 3 /* Identifier */) ? messages_1.Messages.UnexpectedIdentifier :
 55881  	                        (token.type === 6 /* NumericLiteral */) ? messages_1.Messages.UnexpectedNumber :
 55882  	                            (token.type === 8 /* StringLiteral */) ? messages_1.Messages.UnexpectedString :
 55883  	                                (token.type === 10 /* Template */) ? messages_1.Messages.UnexpectedTemplate :
 55884  	                                    messages_1.Messages.UnexpectedToken;
 55885  	                if (token.type === 4 /* Keyword */) {
 55886  	                    if (this.scanner.isFutureReservedWord(token.value)) {
 55887  	                        msg = messages_1.Messages.UnexpectedReserved;
 55888  	                    }
 55889  	                    else if (this.context.strict && this.scanner.isStrictModeReservedWord(token.value)) {
 55890  	                        msg = messages_1.Messages.StrictReservedWord;
 55891  	                    }
 55892  	                }
 55893  	            }
 55894  	            value = token.value;
 55895  	        }
 55896  	        else {
 55897  	            value = 'ILLEGAL';
 55898  	        }
 55899  	        msg = msg.replace('%0', value);
 55900  	        if (token && typeof token.lineNumber === 'number') {
 55901  	            var index = token.start;
 55902  	            var line = token.lineNumber;
 55903  	            var lastMarkerLineStart = this.lastMarker.index - this.lastMarker.column;
 55904  	            var column = token.start - lastMarkerLineStart + 1;
 55905  	            return this.errorHandler.createError(index, line, column, msg);
 55906  	        }
 55907  	        else {
 55908  	            var index = this.lastMarker.index;
 55909  	            var line = this.lastMarker.line;
 55910  	            var column = this.lastMarker.column + 1;
 55911  	            return this.errorHandler.createError(index, line, column, msg);
 55912  	        }
 55913  	    };
 55914  	    Parser.prototype.throwUnexpectedToken = function (token, message) {
 55915  	        throw this.unexpectedTokenError(token, message);
 55916  	    };
 55917  	    Parser.prototype.tolerateUnexpectedToken = function (token, message) {
 55918  	        this.errorHandler.tolerate(this.unexpectedTokenError(token, message));
 55919  	    };
 55920  	    Parser.prototype.collectComments = function () {
 55921  	        if (!this.config.comment) {
 55922  	            this.scanner.scanComments();
 55923  	        }
 55924  	        else {
 55925  	            var comments = this.scanner.scanComments();
 55926  	            if (comments.length > 0 && this.delegate) {
 55927  	                for (var i = 0; i < comments.length; ++i) {
 55928  	                    var e = comments[i];
 55929  	                    var node = void 0;
 55930  	                    node = {
 55931  	                        type: e.multiLine ? 'BlockComment' : 'LineComment',
 55932  	                        value: this.scanner.source.slice(e.slice[0], e.slice[1])
 55933  	                    };
 55934  	                    if (this.config.range) {
 55935  	                        node.range = e.range;
 55936  	                    }
 55937  	                    if (this.config.loc) {
 55938  	                        node.loc = e.loc;
 55939  	                    }
 55940  	                    var metadata = {
 55941  	                        start: {
 55942  	                            line: e.loc.start.line,
 55943  	                            column: e.loc.start.column,
 55944  	                            offset: e.range[0]
 55945  	                        },
 55946  	                        end: {
 55947  	                            line: e.loc.end.line,
 55948  	                            column: e.loc.end.column,
 55949  	                            offset: e.range[1]
 55950  	                        }
 55951  	                    };
 55952  	                    this.delegate(node, metadata);
 55953  	                }
 55954  	            }
 55955  	        }
 55956  	    };
 55957  	    // From internal representation to an external structure
 55958  	    Parser.prototype.getTokenRaw = function (token) {
 55959  	        return this.scanner.source.slice(token.start, token.end);
 55960  	    };
 55961  	    Parser.prototype.convertToken = function (token) {
 55962  	        var t = {
 55963  	            type: token_1.TokenName[token.type],
 55964  	            value: this.getTokenRaw(token)
 55965  	        };
 55966  	        if (this.config.range) {
 55967  	            t.range = [token.start, token.end];
 55968  	        }
 55969  	        if (this.config.loc) {
 55970  	            t.loc = {
 55971  	                start: {
 55972  	                    line: this.startMarker.line,
 55973  	                    column: this.startMarker.column
 55974  	                },
 55975  	                end: {
 55976  	                    line: this.scanner.lineNumber,
 55977  	                    column: this.scanner.index - this.scanner.lineStart
 55978  	                }
 55979  	            };
 55980  	        }
 55981  	        if (token.type === 9 /* RegularExpression */) {
 55982  	            var pattern = token.pattern;
 55983  	            var flags = token.flags;
 55984  	            t.regex = { pattern: pattern, flags: flags };
 55985  	        }
 55986  	        return t;
 55987  	    };
 55988  	    Parser.prototype.nextToken = function () {
 55989  	        var token = this.lookahead;
 55990  	        this.lastMarker.index = this.scanner.index;
 55991  	        this.lastMarker.line = this.scanner.lineNumber;
 55992  	        this.lastMarker.column = this.scanner.index - this.scanner.lineStart;
 55993  	        this.collectComments();
 55994  	        if (this.scanner.index !== this.startMarker.index) {
 55995  	            this.startMarker.index = this.scanner.index;
 55996  	            this.startMarker.line = this.scanner.lineNumber;
 55997  	            this.startMarker.column = this.scanner.index - this.scanner.lineStart;
 55998  	        }
 55999  	        var next = this.scanner.lex();
 56000  	        this.hasLineTerminator = (token.lineNumber !== next.lineNumber);
 56001  	        if (next && this.context.strict && next.type === 3 /* Identifier */) {
 56002  	            if (this.scanner.isStrictModeReservedWord(next.value)) {
 56003  	                next.type = 4 /* Keyword */;
 56004  	            }
 56005  	        }
 56006  	        this.lookahead = next;
 56007  	        if (this.config.tokens && next.type !== 2 /* EOF */) {
 56008  	            this.tokens.push(this.convertToken(next));
 56009  	        }
 56010  	        return token;
 56011  	    };
 56012  	    Parser.prototype.nextRegexToken = function () {
 56013  	        this.collectComments();
 56014  	        var token = this.scanner.scanRegExp();
 56015  	        if (this.config.tokens) {
 56016  	            // Pop the previous token, '/' or '/='
 56017  	            // This is added from the lookahead token.
 56018  	            this.tokens.pop();
 56019  	            this.tokens.push(this.convertToken(token));
 56020  	        }
 56021  	        // Prime the next lookahead.
 56022  	        this.lookahead = token;
 56023  	        this.nextToken();
 56024  	        return token;
 56025  	    };
 56026  	    Parser.prototype.createNode = function () {
 56027  	        return {
 56028  	            index: this.startMarker.index,
 56029  	            line: this.startMarker.line,
 56030  	            column: this.startMarker.column
 56031  	        };
 56032  	    };
 56033  	    Parser.prototype.startNode = function (token, lastLineStart) {
 56034  	        if (lastLineStart === void 0) { lastLineStart = 0; }
 56035  	        var column = token.start - token.lineStart;
 56036  	        var line = token.lineNumber;
 56037  	        if (column < 0) {
 56038  	            column += lastLineStart;
 56039  	            line--;
 56040  	        }
 56041  	        return {
 56042  	            index: token.start,
 56043  	            line: line,
 56044  	            column: column
 56045  	        };
 56046  	    };
 56047  	    Parser.prototype.finalize = function (marker, node) {
 56048  	        if (this.config.range) {
 56049  	            node.range = [marker.index, this.lastMarker.index];
 56050  	        }
 56051  	        if (this.config.loc) {
 56052  	            node.loc = {
 56053  	                start: {
 56054  	                    line: marker.line,
 56055  	                    column: marker.column,
 56056  	                },
 56057  	                end: {
 56058  	                    line: this.lastMarker.line,
 56059  	                    column: this.lastMarker.column
 56060  	                }
 56061  	            };
 56062  	            if (this.config.source) {
 56063  	                node.loc.source = this.config.source;
 56064  	            }
 56065  	        }
 56066  	        if (this.delegate) {
 56067  	            var metadata = {
 56068  	                start: {
 56069  	                    line: marker.line,
 56070  	                    column: marker.column,
 56071  	                    offset: marker.index
 56072  	                },
 56073  	                end: {
 56074  	                    line: this.lastMarker.line,
 56075  	                    column: this.lastMarker.column,
 56076  	                    offset: this.lastMarker.index
 56077  	                }
 56078  	            };
 56079  	            this.delegate(node, metadata);
 56080  	        }
 56081  	        return node;
 56082  	    };
 56083  	    // Expect the next token to match the specified punctuator.
 56084  	    // If not, an exception will be thrown.
 56085  	    Parser.prototype.expect = function (value) {
 56086  	        var token = this.nextToken();
 56087  	        if (token.type !== 7 /* Punctuator */ || token.value !== value) {
 56088  	            this.throwUnexpectedToken(token);
 56089  	        }
 56090  	    };
 56091  	    // Quietly expect a comma when in tolerant mode, otherwise delegates to expect().
 56092  	    Parser.prototype.expectCommaSeparator = function () {
 56093  	        if (this.config.tolerant) {
 56094  	            var token = this.lookahead;
 56095  	            if (token.type === 7 /* Punctuator */ && token.value === ',') {
 56096  	                this.nextToken();
 56097  	            }
 56098  	            else if (token.type === 7 /* Punctuator */ && token.value === ';') {
 56099  	                this.nextToken();
 56100  	                this.tolerateUnexpectedToken(token);
 56101  	            }
 56102  	            else {
 56103  	                this.tolerateUnexpectedToken(token, messages_1.Messages.UnexpectedToken);
 56104  	            }
 56105  	        }
 56106  	        else {
 56107  	            this.expect(',');
 56108  	        }
 56109  	    };
 56110  	    // Expect the next token to match the specified keyword.
 56111  	    // If not, an exception will be thrown.
 56112  	    Parser.prototype.expectKeyword = function (keyword) {
 56113  	        var token = this.nextToken();
 56114  	        if (token.type !== 4 /* Keyword */ || token.value !== keyword) {
 56115  	            this.throwUnexpectedToken(token);
 56116  	        }
 56117  	    };
 56118  	    // Return true if the next token matches the specified punctuator.
 56119  	    Parser.prototype.match = function (value) {
 56120  	        return this.lookahead.type === 7 /* Punctuator */ && this.lookahead.value === value;
 56121  	    };
 56122  	    // Return true if the next token matches the specified keyword
 56123  	    Parser.prototype.matchKeyword = function (keyword) {
 56124  	        return this.lookahead.type === 4 /* Keyword */ && this.lookahead.value === keyword;
 56125  	    };
 56126  	    // Return true if the next token matches the specified contextual keyword
 56127  	    // (where an identifier is sometimes a keyword depending on the context)
 56128  	    Parser.prototype.matchContextualKeyword = function (keyword) {
 56129  	        return this.lookahead.type === 3 /* Identifier */ && this.lookahead.value === keyword;
 56130  	    };
 56131  	    // Return true if the next token is an assignment operator
 56132  	    Parser.prototype.matchAssign = function () {
 56133  	        if (this.lookahead.type !== 7 /* Punctuator */) {
 56134  	            return false;
 56135  	        }
 56136  	        var op = this.lookahead.value;
 56137  	        return op === '=' ||
 56138  	            op === '*=' ||
 56139  	            op === '**=' ||
 56140  	            op === '/=' ||
 56141  	            op === '%=' ||
 56142  	            op === '+=' ||
 56143  	            op === '-=' ||
 56144  	            op === '<<=' ||
 56145  	            op === '>>=' ||
 56146  	            op === '>>>=' ||
 56147  	            op === '&=' ||
 56148  	            op === '^=' ||
 56149  	            op === '|=';
 56150  	    };
 56151  	    // Cover grammar support.
 56152  	    //
 56153  	    // When an assignment expression position starts with an left parenthesis, the determination of the type
 56154  	    // of the syntax is to be deferred arbitrarily long until the end of the parentheses pair (plus a lookahead)
 56155  	    // or the first comma. This situation also defers the determination of all the expressions nested in the pair.
 56156  	    //
 56157  	    // There are three productions that can be parsed in a parentheses pair that needs to be determined
 56158  	    // after the outermost pair is closed. They are:
 56159  	    //
 56160  	    //   1. AssignmentExpression
 56161  	    //   2. BindingElements
 56162  	    //   3. AssignmentTargets
 56163  	    //
 56164  	    // In order to avoid exponential backtracking, we use two flags to denote if the production can be
 56165  	    // binding element or assignment target.
 56166  	    //
 56167  	    // The three productions have the relationship:
 56168  	    //
 56169  	    //   BindingElements ⊆ AssignmentTargets ⊆ AssignmentExpression
 56170  	    //
 56171  	    // with a single exception that CoverInitializedName when used directly in an Expression, generates
 56172  	    // an early error. Therefore, we need the third state, firstCoverInitializedNameError, to track the
 56173  	    // first usage of CoverInitializedName and report it when we reached the end of the parentheses pair.
 56174  	    //
 56175  	    // isolateCoverGrammar function runs the given parser function with a new cover grammar context, and it does not
 56176  	    // effect the current flags. This means the production the parser parses is only used as an expression. Therefore
 56177  	    // the CoverInitializedName check is conducted.
 56178  	    //
 56179  	    // inheritCoverGrammar function runs the given parse function with a new cover grammar context, and it propagates
 56180  	    // the flags outside of the parser. This means the production the parser parses is used as a part of a potential
 56181  	    // pattern. The CoverInitializedName check is deferred.
 56182  	    Parser.prototype.isolateCoverGrammar = function (parseFunction) {
 56183  	        var previousIsBindingElement = this.context.isBindingElement;
 56184  	        var previousIsAssignmentTarget = this.context.isAssignmentTarget;
 56185  	        var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;
 56186  	        this.context.isBindingElement = true;
 56187  	        this.context.isAssignmentTarget = true;
 56188  	        this.context.firstCoverInitializedNameError = null;
 56189  	        var result = parseFunction.call(this);
 56190  	        if (this.context.firstCoverInitializedNameError !== null) {
 56191  	            this.throwUnexpectedToken(this.context.firstCoverInitializedNameError);
 56192  	        }
 56193  	        this.context.isBindingElement = previousIsBindingElement;
 56194  	        this.context.isAssignmentTarget = previousIsAssignmentTarget;
 56195  	        this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError;
 56196  	        return result;
 56197  	    };
 56198  	    Parser.prototype.inheritCoverGrammar = function (parseFunction) {
 56199  	        var previousIsBindingElement = this.context.isBindingElement;
 56200  	        var previousIsAssignmentTarget = this.context.isAssignmentTarget;
 56201  	        var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;
 56202  	        this.context.isBindingElement = true;
 56203  	        this.context.isAssignmentTarget = true;
 56204  	        this.context.firstCoverInitializedNameError = null;
 56205  	        var result = parseFunction.call(this);
 56206  	        this.context.isBindingElement = this.context.isBindingElement && previousIsBindingElement;
 56207  	        this.context.isAssignmentTarget = this.context.isAssignmentTarget && previousIsAssignmentTarget;
 56208  	        this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError || this.context.firstCoverInitializedNameError;
 56209  	        return result;
 56210  	    };
 56211  	    Parser.prototype.consumeSemicolon = function () {
 56212  	        if (this.match(';')) {
 56213  	            this.nextToken();
 56214  	        }
 56215  	        else if (!this.hasLineTerminator) {
 56216  	            if (this.lookahead.type !== 2 /* EOF */ && !this.match('}')) {
 56217  	                this.throwUnexpectedToken(this.lookahead);
 56218  	            }
 56219  	            this.lastMarker.index = this.startMarker.index;
 56220  	            this.lastMarker.line = this.startMarker.line;
 56221  	            this.lastMarker.column = this.startMarker.column;
 56222  	        }
 56223  	    };
 56224  	    // https://tc39.github.io/ecma262/#sec-primary-expression
 56225  	    Parser.prototype.parsePrimaryExpression = function () {
 56226  	        var node = this.createNode();
 56227  	        var expr;
 56228  	        var token, raw;
 56229  	        switch (this.lookahead.type) {
 56230  	            case 3 /* Identifier */:
 56231  	                if ((this.context.isModule || this.context.await) && this.lookahead.value === 'await') {
 56232  	                    this.tolerateUnexpectedToken(this.lookahead);
 56233  	                }
 56234  	                expr = this.matchAsyncFunction() ? this.parseFunctionExpression() : this.finalize(node, new Node.Identifier(this.nextToken().value));
 56235  	                break;
 56236  	            case 6 /* NumericLiteral */:
 56237  	            case 8 /* StringLiteral */:
 56238  	                if (this.context.strict && this.lookahead.octal) {
 56239  	                    this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.StrictOctalLiteral);
 56240  	                }
 56241  	                this.context.isAssignmentTarget = false;
 56242  	                this.context.isBindingElement = false;
 56243  	                token = this.nextToken();
 56244  	                raw = this.getTokenRaw(token);
 56245  	                expr = this.finalize(node, new Node.Literal(token.value, raw));
 56246  	                break;
 56247  	            case 1 /* BooleanLiteral */:
 56248  	                this.context.isAssignmentTarget = false;
 56249  	                this.context.isBindingElement = false;
 56250  	                token = this.nextToken();
 56251  	                raw = this.getTokenRaw(token);
 56252  	                expr = this.finalize(node, new Node.Literal(token.value === 'true', raw));
 56253  	                break;
 56254  	            case 5 /* NullLiteral */:
 56255  	                this.context.isAssignmentTarget = false;
 56256  	                this.context.isBindingElement = false;
 56257  	                token = this.nextToken();
 56258  	                raw = this.getTokenRaw(token);
 56259  	                expr = this.finalize(node, new Node.Literal(null, raw));
 56260  	                break;
 56261  	            case 10 /* Template */:
 56262  	                expr = this.parseTemplateLiteral();
 56263  	                break;
 56264  	            case 7 /* Punctuator */:
 56265  	                switch (this.lookahead.value) {
 56266  	                    case '(':
 56267  	                        this.context.isBindingElement = false;
 56268  	                        expr = this.inheritCoverGrammar(this.parseGroupExpression);
 56269  	                        break;
 56270  	                    case '[':
 56271  	                        expr = this.inheritCoverGrammar(this.parseArrayInitializer);
 56272  	                        break;
 56273  	                    case '{':
 56274  	                        expr = this.inheritCoverGrammar(this.parseObjectInitializer);
 56275  	                        break;
 56276  	                    case '/':
 56277  	                    case '/=':
 56278  	                        this.context.isAssignmentTarget = false;
 56279  	                        this.context.isBindingElement = false;
 56280  	                        this.scanner.index = this.startMarker.index;
 56281  	                        token = this.nextRegexToken();
 56282  	                        raw = this.getTokenRaw(token);
 56283  	                        expr = this.finalize(node, new Node.RegexLiteral(token.regex, raw, token.pattern, token.flags));
 56284  	                        break;
 56285  	                    default:
 56286  	                        expr = this.throwUnexpectedToken(this.nextToken());
 56287  	                }
 56288  	                break;
 56289  	            case 4 /* Keyword */:
 56290  	                if (!this.context.strict && this.context.allowYield && this.matchKeyword('yield')) {
 56291  	                    expr = this.parseIdentifierName();
 56292  	                }
 56293  	                else if (!this.context.strict && this.matchKeyword('let')) {
 56294  	                    expr = this.finalize(node, new Node.Identifier(this.nextToken().value));
 56295  	                }
 56296  	                else {
 56297  	                    this.context.isAssignmentTarget = false;
 56298  	                    this.context.isBindingElement = false;
 56299  	                    if (this.matchKeyword('function')) {
 56300  	                        expr = this.parseFunctionExpression();
 56301  	                    }
 56302  	                    else if (this.matchKeyword('this')) {
 56303  	                        this.nextToken();
 56304  	                        expr = this.finalize(node, new Node.ThisExpression());
 56305  	                    }
 56306  	                    else if (this.matchKeyword('class')) {
 56307  	                        expr = this.parseClassExpression();
 56308  	                    }
 56309  	                    else {
 56310  	                        expr = this.throwUnexpectedToken(this.nextToken());
 56311  	                    }
 56312  	                }
 56313  	                break;
 56314  	            default:
 56315  	                expr = this.throwUnexpectedToken(this.nextToken());
 56316  	        }
 56317  	        return expr;
 56318  	    };
 56319  	    // https://tc39.github.io/ecma262/#sec-array-initializer
 56320  	    Parser.prototype.parseSpreadElement = function () {
 56321  	        var node = this.createNode();
 56322  	        this.expect('...');
 56323  	        var arg = this.inheritCoverGrammar(this.parseAssignmentExpression);
 56324  	        return this.finalize(node, new Node.SpreadElement(arg));
 56325  	    };
 56326  	    Parser.prototype.parseArrayInitializer = function () {
 56327  	        var node = this.createNode();
 56328  	        var elements = [];
 56329  	        this.expect('[');
 56330  	        while (!this.match(']')) {
 56331  	            if (this.match(',')) {
 56332  	                this.nextToken();
 56333  	                elements.push(null);
 56334  	            }
 56335  	            else if (this.match('...')) {
 56336  	                var element = this.parseSpreadElement();
 56337  	                if (!this.match(']')) {
 56338  	                    this.context.isAssignmentTarget = false;
 56339  	                    this.context.isBindingElement = false;
 56340  	                    this.expect(',');
 56341  	                }
 56342  	                elements.push(element);
 56343  	            }
 56344  	            else {
 56345  	                elements.push(this.inheritCoverGrammar(this.parseAssignmentExpression));
 56346  	                if (!this.match(']')) {
 56347  	                    this.expect(',');
 56348  	                }
 56349  	            }
 56350  	        }
 56351  	        this.expect(']');
 56352  	        return this.finalize(node, new Node.ArrayExpression(elements));
 56353  	    };
 56354  	    // https://tc39.github.io/ecma262/#sec-object-initializer
 56355  	    Parser.prototype.parsePropertyMethod = function (params) {
 56356  	        this.context.isAssignmentTarget = false;
 56357  	        this.context.isBindingElement = false;
 56358  	        var previousStrict = this.context.strict;
 56359  	        var previousAllowStrictDirective = this.context.allowStrictDirective;
 56360  	        this.context.allowStrictDirective = params.simple;
 56361  	        var body = this.isolateCoverGrammar(this.parseFunctionSourceElements);
 56362  	        if (this.context.strict && params.firstRestricted) {
 56363  	            this.tolerateUnexpectedToken(params.firstRestricted, params.message);
 56364  	        }
 56365  	        if (this.context.strict && params.stricted) {
 56366  	            this.tolerateUnexpectedToken(params.stricted, params.message);
 56367  	        }
 56368  	        this.context.strict = previousStrict;
 56369  	        this.context.allowStrictDirective = previousAllowStrictDirective;
 56370  	        return body;
 56371  	    };
 56372  	    Parser.prototype.parsePropertyMethodFunction = function () {
 56373  	        var isGenerator = false;
 56374  	        var node = this.createNode();
 56375  	        var previousAllowYield = this.context.allowYield;
 56376  	        this.context.allowYield = true;
 56377  	        var params = this.parseFormalParameters();
 56378  	        var method = this.parsePropertyMethod(params);
 56379  	        this.context.allowYield = previousAllowYield;
 56380  	        return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));
 56381  	    };
 56382  	    Parser.prototype.parsePropertyMethodAsyncFunction = function () {
 56383  	        var node = this.createNode();
 56384  	        var previousAllowYield = this.context.allowYield;
 56385  	        var previousAwait = this.context.await;
 56386  	        this.context.allowYield = false;
 56387  	        this.context.await = true;
 56388  	        var params = this.parseFormalParameters();
 56389  	        var method = this.parsePropertyMethod(params);
 56390  	        this.context.allowYield = previousAllowYield;
 56391  	        this.context.await = previousAwait;
 56392  	        return this.finalize(node, new Node.AsyncFunctionExpression(null, params.params, method));
 56393  	    };
 56394  	    Parser.prototype.parseObjectPropertyKey = function () {
 56395  	        var node = this.createNode();
 56396  	        var token = this.nextToken();
 56397  	        var key;
 56398  	        switch (token.type) {
 56399  	            case 8 /* StringLiteral */:
 56400  	            case 6 /* NumericLiteral */:
 56401  	                if (this.context.strict && token.octal) {
 56402  	                    this.tolerateUnexpectedToken(token, messages_1.Messages.StrictOctalLiteral);
 56403  	                }
 56404  	                var raw = this.getTokenRaw(token);
 56405  	                key = this.finalize(node, new Node.Literal(token.value, raw));
 56406  	                break;
 56407  	            case 3 /* Identifier */:
 56408  	            case 1 /* BooleanLiteral */:
 56409  	            case 5 /* NullLiteral */:
 56410  	            case 4 /* Keyword */:
 56411  	                key = this.finalize(node, new Node.Identifier(token.value));
 56412  	                break;
 56413  	            case 7 /* Punctuator */:
 56414  	                if (token.value === '[') {
 56415  	                    key = this.isolateCoverGrammar(this.parseAssignmentExpression);
 56416  	                    this.expect(']');
 56417  	                }
 56418  	                else {
 56419  	                    key = this.throwUnexpectedToken(token);
 56420  	                }
 56421  	                break;
 56422  	            default:
 56423  	                key = this.throwUnexpectedToken(token);
 56424  	        }
 56425  	        return key;
 56426  	    };
 56427  	    Parser.prototype.isPropertyKey = function (key, value) {
 56428  	        return (key.type === syntax_1.Syntax.Identifier && key.name === value) ||
 56429  	            (key.type === syntax_1.Syntax.Literal && key.value === value);
 56430  	    };
 56431  	    Parser.prototype.parseObjectProperty = function (hasProto) {
 56432  	        var node = this.createNode();
 56433  	        var token = this.lookahead;
 56434  	        var kind;
 56435  	        var key = null;
 56436  	        var value = null;
 56437  	        var computed = false;
 56438  	        var method = false;
 56439  	        var shorthand = false;
 56440  	        var isAsync = false;
 56441  	        if (token.type === 3 /* Identifier */) {
 56442  	            var id = token.value;
 56443  	            this.nextToken();
 56444  	            computed = this.match('[');
 56445  	            isAsync = !this.hasLineTerminator && (id === 'async') &&
 56446  	                !this.match(':') && !this.match('(') && !this.match('*') && !this.match(',');
 56447  	            key = isAsync ? this.parseObjectPropertyKey() : this.finalize(node, new Node.Identifier(id));
 56448  	        }
 56449  	        else if (this.match('*')) {
 56450  	            this.nextToken();
 56451  	        }
 56452  	        else {
 56453  	            computed = this.match('[');
 56454  	            key = this.parseObjectPropertyKey();
 56455  	        }
 56456  	        var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);
 56457  	        if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'get' && lookaheadPropertyKey) {
 56458  	            kind = 'get';
 56459  	            computed = this.match('[');
 56460  	            key = this.parseObjectPropertyKey();
 56461  	            this.context.allowYield = false;
 56462  	            value = this.parseGetterMethod();
 56463  	        }
 56464  	        else if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'set' && lookaheadPropertyKey) {
 56465  	            kind = 'set';
 56466  	            computed = this.match('[');
 56467  	            key = this.parseObjectPropertyKey();
 56468  	            value = this.parseSetterMethod();
 56469  	        }
 56470  	        else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {
 56471  	            kind = 'init';
 56472  	            computed = this.match('[');
 56473  	            key = this.parseObjectPropertyKey();
 56474  	            value = this.parseGeneratorMethod();
 56475  	            method = true;
 56476  	        }
 56477  	        else {
 56478  	            if (!key) {
 56479  	                this.throwUnexpectedToken(this.lookahead);
 56480  	            }
 56481  	            kind = 'init';
 56482  	            if (this.match(':') && !isAsync) {
 56483  	                if (!computed && this.isPropertyKey(key, '__proto__')) {
 56484  	                    if (hasProto.value) {
 56485  	                        this.tolerateError(messages_1.Messages.DuplicateProtoProperty);
 56486  	                    }
 56487  	                    hasProto.value = true;
 56488  	                }
 56489  	                this.nextToken();
 56490  	                value = this.inheritCoverGrammar(this.parseAssignmentExpression);
 56491  	            }
 56492  	            else if (this.match('(')) {
 56493  	                value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();
 56494  	                method = true;
 56495  	            }
 56496  	            else if (token.type === 3 /* Identifier */) {
 56497  	                var id = this.finalize(node, new Node.Identifier(token.value));
 56498  	                if (this.match('=')) {
 56499  	                    this.context.firstCoverInitializedNameError = this.lookahead;
 56500  	                    this.nextToken();
 56501  	                    shorthand = true;
 56502  	                    var init = this.isolateCoverGrammar(this.parseAssignmentExpression);
 56503  	                    value = this.finalize(node, new Node.AssignmentPattern(id, init));
 56504  	                }
 56505  	                else {
 56506  	                    shorthand = true;
 56507  	                    value = id;
 56508  	                }
 56509  	            }
 56510  	            else {
 56511  	                this.throwUnexpectedToken(this.nextToken());
 56512  	            }
 56513  	        }
 56514  	        return this.finalize(node, new Node.Property(kind, key, computed, value, method, shorthand));
 56515  	    };
 56516  	    Parser.prototype.parseObjectInitializer = function () {
 56517  	        var node = this.createNode();
 56518  	        this.expect('{');
 56519  	        var properties = [];
 56520  	        var hasProto = { value: false };
 56521  	        while (!this.match('}')) {
 56522  	            properties.push(this.parseObjectProperty(hasProto));
 56523  	            if (!this.match('}')) {
 56524  	                this.expectCommaSeparator();
 56525  	            }
 56526  	        }
 56527  	        this.expect('}');
 56528  	        return this.finalize(node, new Node.ObjectExpression(properties));
 56529  	    };
 56530  	    // https://tc39.github.io/ecma262/#sec-template-literals
 56531  	    Parser.prototype.parseTemplateHead = function () {
 56532  	        assert_1.assert(this.lookahead.head, 'Template literal must start with a template head');
 56533  	        var node = this.createNode();
 56534  	        var token = this.nextToken();
 56535  	        var raw = token.value;
 56536  	        var cooked = token.cooked;
 56537  	        return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));
 56538  	    };
 56539  	    Parser.prototype.parseTemplateElement = function () {
 56540  	        if (this.lookahead.type !== 10 /* Template */) {
 56541  	            this.throwUnexpectedToken();
 56542  	        }
 56543  	        var node = this.createNode();
 56544  	        var token = this.nextToken();
 56545  	        var raw = token.value;
 56546  	        var cooked = token.cooked;
 56547  	        return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));
 56548  	    };
 56549  	    Parser.prototype.parseTemplateLiteral = function () {
 56550  	        var node = this.createNode();
 56551  	        var expressions = [];
 56552  	        var quasis = [];
 56553  	        var quasi = this.parseTemplateHead();
 56554  	        quasis.push(quasi);
 56555  	        while (!quasi.tail) {
 56556  	            expressions.push(this.parseExpression());
 56557  	            quasi = this.parseTemplateElement();
 56558  	            quasis.push(quasi);
 56559  	        }
 56560  	        return this.finalize(node, new Node.TemplateLiteral(quasis, expressions));
 56561  	    };
 56562  	    // https://tc39.github.io/ecma262/#sec-grouping-operator
 56563  	    Parser.prototype.reinterpretExpressionAsPattern = function (expr) {
 56564  	        switch (expr.type) {
 56565  	            case syntax_1.Syntax.Identifier:
 56566  	            case syntax_1.Syntax.MemberExpression:
 56567  	            case syntax_1.Syntax.RestElement:
 56568  	            case syntax_1.Syntax.AssignmentPattern:
 56569  	                break;
 56570  	            case syntax_1.Syntax.SpreadElement:
 56571  	                expr.type = syntax_1.Syntax.RestElement;
 56572  	                this.reinterpretExpressionAsPattern(expr.argument);
 56573  	                break;
 56574  	            case syntax_1.Syntax.ArrayExpression:
 56575  	                expr.type = syntax_1.Syntax.ArrayPattern;
 56576  	                for (var i = 0; i < expr.elements.length; i++) {
 56577  	                    if (expr.elements[i] !== null) {
 56578  	                        this.reinterpretExpressionAsPattern(expr.elements[i]);
 56579  	                    }
 56580  	                }
 56581  	                break;
 56582  	            case syntax_1.Syntax.ObjectExpression:
 56583  	                expr.type = syntax_1.Syntax.ObjectPattern;
 56584  	                for (var i = 0; i < expr.properties.length; i++) {
 56585  	                    this.reinterpretExpressionAsPattern(expr.properties[i].value);
 56586  	                }
 56587  	                break;
 56588  	            case syntax_1.Syntax.AssignmentExpression:
 56589  	                expr.type = syntax_1.Syntax.AssignmentPattern;
 56590  	                delete expr.operator;
 56591  	                this.reinterpretExpressionAsPattern(expr.left);
 56592  	                break;
 56593  	            default:
 56594  	                // Allow other node type for tolerant parsing.
 56595  	                break;
 56596  	        }
 56597  	    };
 56598  	    Parser.prototype.parseGroupExpression = function () {
 56599  	        var expr;
 56600  	        this.expect('(');
 56601  	        if (this.match(')')) {
 56602  	            this.nextToken();
 56603  	            if (!this.match('=>')) {
 56604  	                this.expect('=>');
 56605  	            }
 56606  	            expr = {
 56607  	                type: ArrowParameterPlaceHolder,
 56608  	                params: [],
 56609  	                async: false
 56610  	            };
 56611  	        }
 56612  	        else {
 56613  	            var startToken = this.lookahead;
 56614  	            var params = [];
 56615  	            if (this.match('...')) {
 56616  	                expr = this.parseRestElement(params);
 56617  	                this.expect(')');
 56618  	                if (!this.match('=>')) {
 56619  	                    this.expect('=>');
 56620  	                }
 56621  	                expr = {
 56622  	                    type: ArrowParameterPlaceHolder,
 56623  	                    params: [expr],
 56624  	                    async: false
 56625  	                };
 56626  	            }
 56627  	            else {
 56628  	                var arrow = false;
 56629  	                this.context.isBindingElement = true;
 56630  	                expr = this.inheritCoverGrammar(this.parseAssignmentExpression);
 56631  	                if (this.match(',')) {
 56632  	                    var expressions = [];
 56633  	                    this.context.isAssignmentTarget = false;
 56634  	                    expressions.push(expr);
 56635  	                    while (this.lookahead.type !== 2 /* EOF */) {
 56636  	                        if (!this.match(',')) {
 56637  	                            break;
 56638  	                        }
 56639  	                        this.nextToken();
 56640  	                        if (this.match(')')) {
 56641  	                            this.nextToken();
 56642  	                            for (var i = 0; i < expressions.length; i++) {
 56643  	                                this.reinterpretExpressionAsPattern(expressions[i]);
 56644  	                            }
 56645  	                            arrow = true;
 56646  	                            expr = {
 56647  	                                type: ArrowParameterPlaceHolder,
 56648  	                                params: expressions,
 56649  	                                async: false
 56650  	                            };
 56651  	                        }
 56652  	                        else if (this.match('...')) {
 56653  	                            if (!this.context.isBindingElement) {
 56654  	                                this.throwUnexpectedToken(this.lookahead);
 56655  	                            }
 56656  	                            expressions.push(this.parseRestElement(params));
 56657  	                            this.expect(')');
 56658  	                            if (!this.match('=>')) {
 56659  	                                this.expect('=>');
 56660  	                            }
 56661  	                            this.context.isBindingElement = false;
 56662  	                            for (var i = 0; i < expressions.length; i++) {
 56663  	                                this.reinterpretExpressionAsPattern(expressions[i]);
 56664  	                            }
 56665  	                            arrow = true;
 56666  	                            expr = {
 56667  	                                type: ArrowParameterPlaceHolder,
 56668  	                                params: expressions,
 56669  	                                async: false
 56670  	                            };
 56671  	                        }
 56672  	                        else {
 56673  	                            expressions.push(this.inheritCoverGrammar(this.parseAssignmentExpression));
 56674  	                        }
 56675  	                        if (arrow) {
 56676  	                            break;
 56677  	                        }
 56678  	                    }
 56679  	                    if (!arrow) {
 56680  	                        expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));
 56681  	                    }
 56682  	                }
 56683  	                if (!arrow) {
 56684  	                    this.expect(')');
 56685  	                    if (this.match('=>')) {
 56686  	                        if (expr.type === syntax_1.Syntax.Identifier && expr.name === 'yield') {
 56687  	                            arrow = true;
 56688  	                            expr = {
 56689  	                                type: ArrowParameterPlaceHolder,
 56690  	                                params: [expr],
 56691  	                                async: false
 56692  	                            };
 56693  	                        }
 56694  	                        if (!arrow) {
 56695  	                            if (!this.context.isBindingElement) {
 56696  	                                this.throwUnexpectedToken(this.lookahead);
 56697  	                            }
 56698  	                            if (expr.type === syntax_1.Syntax.SequenceExpression) {
 56699  	                                for (var i = 0; i < expr.expressions.length; i++) {
 56700  	                                    this.reinterpretExpressionAsPattern(expr.expressions[i]);
 56701  	                                }
 56702  	                            }
 56703  	                            else {
 56704  	                                this.reinterpretExpressionAsPattern(expr);
 56705  	                            }
 56706  	                            var parameters = (expr.type === syntax_1.Syntax.SequenceExpression ? expr.expressions : [expr]);
 56707  	                            expr = {
 56708  	                                type: ArrowParameterPlaceHolder,
 56709  	                                params: parameters,
 56710  	                                async: false
 56711  	                            };
 56712  	                        }
 56713  	                    }
 56714  	                    this.context.isBindingElement = false;
 56715  	                }
 56716  	            }
 56717  	        }
 56718  	        return expr;
 56719  	    };
 56720  	    // https://tc39.github.io/ecma262/#sec-left-hand-side-expressions
 56721  	    Parser.prototype.parseArguments = function () {
 56722  	        this.expect('(');
 56723  	        var args = [];
 56724  	        if (!this.match(')')) {
 56725  	            while (true) {
 56726  	                var expr = this.match('...') ? this.parseSpreadElement() :
 56727  	                    this.isolateCoverGrammar(this.parseAssignmentExpression);
 56728  	                args.push(expr);
 56729  	                if (this.match(')')) {
 56730  	                    break;
 56731  	                }
 56732  	                this.expectCommaSeparator();
 56733  	                if (this.match(')')) {
 56734  	                    break;
 56735  	                }
 56736  	            }
 56737  	        }
 56738  	        this.expect(')');
 56739  	        return args;
 56740  	    };
 56741  	    Parser.prototype.isIdentifierName = function (token) {
 56742  	        return token.type === 3 /* Identifier */ ||
 56743  	            token.type === 4 /* Keyword */ ||
 56744  	            token.type === 1 /* BooleanLiteral */ ||
 56745  	            token.type === 5 /* NullLiteral */;
 56746  	    };
 56747  	    Parser.prototype.parseIdentifierName = function () {
 56748  	        var node = this.createNode();
 56749  	        var token = this.nextToken();
 56750  	        if (!this.isIdentifierName(token)) {
 56751  	            this.throwUnexpectedToken(token);
 56752  	        }
 56753  	        return this.finalize(node, new Node.Identifier(token.value));
 56754  	    };
 56755  	    Parser.prototype.parseNewExpression = function () {
 56756  	        var node = this.createNode();
 56757  	        var id = this.parseIdentifierName();
 56758  	        assert_1.assert(id.name === 'new', 'New expression must start with `new`');
 56759  	        var expr;
 56760  	        if (this.match('.')) {
 56761  	            this.nextToken();
 56762  	            if (this.lookahead.type === 3 /* Identifier */ && this.context.inFunctionBody && this.lookahead.value === 'target') {
 56763  	                var property = this.parseIdentifierName();
 56764  	                expr = new Node.MetaProperty(id, property);
 56765  	            }
 56766  	            else {
 56767  	                this.throwUnexpectedToken(this.lookahead);
 56768  	            }
 56769  	        }
 56770  	        else {
 56771  	            var callee = this.isolateCoverGrammar(this.parseLeftHandSideExpression);
 56772  	            var args = this.match('(') ? this.parseArguments() : [];
 56773  	            expr = new Node.NewExpression(callee, args);
 56774  	            this.context.isAssignmentTarget = false;
 56775  	            this.context.isBindingElement = false;
 56776  	        }
 56777  	        return this.finalize(node, expr);
 56778  	    };
 56779  	    Parser.prototype.parseAsyncArgument = function () {
 56780  	        var arg = this.parseAssignmentExpression();
 56781  	        this.context.firstCoverInitializedNameError = null;
 56782  	        return arg;
 56783  	    };
 56784  	    Parser.prototype.parseAsyncArguments = function () {
 56785  	        this.expect('(');
 56786  	        var args = [];
 56787  	        if (!this.match(')')) {
 56788  	            while (true) {
 56789  	                var expr = this.match('...') ? this.parseSpreadElement() :
 56790  	                    this.isolateCoverGrammar(this.parseAsyncArgument);
 56791  	                args.push(expr);
 56792  	                if (this.match(')')) {
 56793  	                    break;
 56794  	                }
 56795  	                this.expectCommaSeparator();
 56796  	                if (this.match(')')) {
 56797  	                    break;
 56798  	                }
 56799  	            }
 56800  	        }
 56801  	        this.expect(')');
 56802  	        return args;
 56803  	    };
 56804  	    Parser.prototype.parseLeftHandSideExpressionAllowCall = function () {
 56805  	        var startToken = this.lookahead;
 56806  	        var maybeAsync = this.matchContextualKeyword('async');
 56807  	        var previousAllowIn = this.context.allowIn;
 56808  	        this.context.allowIn = true;
 56809  	        var expr;
 56810  	        if (this.matchKeyword('super') && this.context.inFunctionBody) {
 56811  	            expr = this.createNode();
 56812  	            this.nextToken();
 56813  	            expr = this.finalize(expr, new Node.Super());
 56814  	            if (!this.match('(') && !this.match('.') && !this.match('[')) {
 56815  	                this.throwUnexpectedToken(this.lookahead);
 56816  	            }
 56817  	        }
 56818  	        else {
 56819  	            expr = this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);
 56820  	        }
 56821  	        while (true) {
 56822  	            if (this.match('.')) {
 56823  	                this.context.isBindingElement = false;
 56824  	                this.context.isAssignmentTarget = true;
 56825  	                this.expect('.');
 56826  	                var property = this.parseIdentifierName();
 56827  	                expr = this.finalize(this.startNode(startToken), new Node.StaticMemberExpression(expr, property));
 56828  	            }
 56829  	            else if (this.match('(')) {
 56830  	                var asyncArrow = maybeAsync && (startToken.lineNumber === this.lookahead.lineNumber);
 56831  	                this.context.isBindingElement = false;
 56832  	                this.context.isAssignmentTarget = false;
 56833  	                var args = asyncArrow ? this.parseAsyncArguments() : this.parseArguments();
 56834  	                expr = this.finalize(this.startNode(startToken), new Node.CallExpression(expr, args));
 56835  	                if (asyncArrow && this.match('=>')) {
 56836  	                    for (var i = 0; i < args.length; ++i) {
 56837  	                        this.reinterpretExpressionAsPattern(args[i]);
 56838  	                    }
 56839  	                    expr = {
 56840  	                        type: ArrowParameterPlaceHolder,
 56841  	                        params: args,
 56842  	                        async: true
 56843  	                    };
 56844  	                }
 56845  	            }
 56846  	            else if (this.match('[')) {
 56847  	                this.context.isBindingElement = false;
 56848  	                this.context.isAssignmentTarget = true;
 56849  	                this.expect('[');
 56850  	                var property = this.isolateCoverGrammar(this.parseExpression);
 56851  	                this.expect(']');
 56852  	                expr = this.finalize(this.startNode(startToken), new Node.ComputedMemberExpression(expr, property));
 56853  	            }
 56854  	            else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {
 56855  	                var quasi = this.parseTemplateLiteral();
 56856  	                expr = this.finalize(this.startNode(startToken), new Node.TaggedTemplateExpression(expr, quasi));
 56857  	            }
 56858  	            else {
 56859  	                break;
 56860  	            }
 56861  	        }
 56862  	        this.context.allowIn = previousAllowIn;
 56863  	        return expr;
 56864  	    };
 56865  	    Parser.prototype.parseSuper = function () {
 56866  	        var node = this.createNode();
 56867  	        this.expectKeyword('super');
 56868  	        if (!this.match('[') && !this.match('.')) {
 56869  	            this.throwUnexpectedToken(this.lookahead);
 56870  	        }
 56871  	        return this.finalize(node, new Node.Super());
 56872  	    };
 56873  	    Parser.prototype.parseLeftHandSideExpression = function () {
 56874  	        assert_1.assert(this.context.allowIn, 'callee of new expression always allow in keyword.');
 56875  	        var node = this.startNode(this.lookahead);
 56876  	        var expr = (this.matchKeyword('super') && this.context.inFunctionBody) ? this.parseSuper() :
 56877  	            this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);
 56878  	        while (true) {
 56879  	            if (this.match('[')) {
 56880  	                this.context.isBindingElement = false;
 56881  	                this.context.isAssignmentTarget = true;
 56882  	                this.expect('[');
 56883  	                var property = this.isolateCoverGrammar(this.parseExpression);
 56884  	                this.expect(']');
 56885  	                expr = this.finalize(node, new Node.ComputedMemberExpression(expr, property));
 56886  	            }
 56887  	            else if (this.match('.')) {
 56888  	                this.context.isBindingElement = false;
 56889  	                this.context.isAssignmentTarget = true;
 56890  	                this.expect('.');
 56891  	                var property = this.parseIdentifierName();
 56892  	                expr = this.finalize(node, new Node.StaticMemberExpression(expr, property));
 56893  	            }
 56894  	            else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {
 56895  	                var quasi = this.parseTemplateLiteral();
 56896  	                expr = this.finalize(node, new Node.TaggedTemplateExpression(expr, quasi));
 56897  	            }
 56898  	            else {
 56899  	                break;
 56900  	            }
 56901  	        }
 56902  	        return expr;
 56903  	    };
 56904  	    // https://tc39.github.io/ecma262/#sec-update-expressions
 56905  	    Parser.prototype.parseUpdateExpression = function () {
 56906  	        var expr;
 56907  	        var startToken = this.lookahead;
 56908  	        if (this.match('++') || this.match('--')) {
 56909  	            var node = this.startNode(startToken);
 56910  	            var token = this.nextToken();
 56911  	            expr = this.inheritCoverGrammar(this.parseUnaryExpression);
 56912  	            if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {
 56913  	                this.tolerateError(messages_1.Messages.StrictLHSPrefix);
 56914  	            }
 56915  	            if (!this.context.isAssignmentTarget) {
 56916  	                this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);
 56917  	            }
 56918  	            var prefix = true;
 56919  	            expr = this.finalize(node, new Node.UpdateExpression(token.value, expr, prefix));
 56920  	            this.context.isAssignmentTarget = false;
 56921  	            this.context.isBindingElement = false;
 56922  	        }
 56923  	        else {
 56924  	            expr = this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall);
 56925  	            if (!this.hasLineTerminator && this.lookahead.type === 7 /* Punctuator */) {
 56926  	                if (this.match('++') || this.match('--')) {
 56927  	                    if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {
 56928  	                        this.tolerateError(messages_1.Messages.StrictLHSPostfix);
 56929  	                    }
 56930  	                    if (!this.context.isAssignmentTarget) {
 56931  	                        this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);
 56932  	                    }
 56933  	                    this.context.isAssignmentTarget = false;
 56934  	                    this.context.isBindingElement = false;
 56935  	                    var operator = this.nextToken().value;
 56936  	                    var prefix = false;
 56937  	                    expr = this.finalize(this.startNode(startToken), new Node.UpdateExpression(operator, expr, prefix));
 56938  	                }
 56939  	            }
 56940  	        }
 56941  	        return expr;
 56942  	    };
 56943  	    // https://tc39.github.io/ecma262/#sec-unary-operators
 56944  	    Parser.prototype.parseAwaitExpression = function () {
 56945  	        var node = this.createNode();
 56946  	        this.nextToken();
 56947  	        var argument = this.parseUnaryExpression();
 56948  	        return this.finalize(node, new Node.AwaitExpression(argument));
 56949  	    };
 56950  	    Parser.prototype.parseUnaryExpression = function () {
 56951  	        var expr;
 56952  	        if (this.match('+') || this.match('-') || this.match('~') || this.match('!') ||
 56953  	            this.matchKeyword('delete') || this.matchKeyword('void') || this.matchKeyword('typeof')) {
 56954  	            var node = this.startNode(this.lookahead);
 56955  	            var token = this.nextToken();
 56956  	            expr = this.inheritCoverGrammar(this.parseUnaryExpression);
 56957  	            expr = this.finalize(node, new Node.UnaryExpression(token.value, expr));
 56958  	            if (this.context.strict && expr.operator === 'delete' && expr.argument.type === syntax_1.Syntax.Identifier) {
 56959  	                this.tolerateError(messages_1.Messages.StrictDelete);
 56960  	            }
 56961  	            this.context.isAssignmentTarget = false;
 56962  	            this.context.isBindingElement = false;
 56963  	        }
 56964  	        else if (this.context.await && this.matchContextualKeyword('await')) {
 56965  	            expr = this.parseAwaitExpression();
 56966  	        }
 56967  	        else {
 56968  	            expr = this.parseUpdateExpression();
 56969  	        }
 56970  	        return expr;
 56971  	    };
 56972  	    Parser.prototype.parseExponentiationExpression = function () {
 56973  	        var startToken = this.lookahead;
 56974  	        var expr = this.inheritCoverGrammar(this.parseUnaryExpression);
 56975  	        if (expr.type !== syntax_1.Syntax.UnaryExpression && this.match('**')) {
 56976  	            this.nextToken();
 56977  	            this.context.isAssignmentTarget = false;
 56978  	            this.context.isBindingElement = false;
 56979  	            var left = expr;
 56980  	            var right = this.isolateCoverGrammar(this.parseExponentiationExpression);
 56981  	            expr = this.finalize(this.startNode(startToken), new Node.BinaryExpression('**', left, right));
 56982  	        }
 56983  	        return expr;
 56984  	    };
 56985  	    // https://tc39.github.io/ecma262/#sec-exp-operator
 56986  	    // https://tc39.github.io/ecma262/#sec-multiplicative-operators
 56987  	    // https://tc39.github.io/ecma262/#sec-additive-operators
 56988  	    // https://tc39.github.io/ecma262/#sec-bitwise-shift-operators
 56989  	    // https://tc39.github.io/ecma262/#sec-relational-operators
 56990  	    // https://tc39.github.io/ecma262/#sec-equality-operators
 56991  	    // https://tc39.github.io/ecma262/#sec-binary-bitwise-operators
 56992  	    // https://tc39.github.io/ecma262/#sec-binary-logical-operators
 56993  	    Parser.prototype.binaryPrecedence = function (token) {
 56994  	        var op = token.value;
 56995  	        var precedence;
 56996  	        if (token.type === 7 /* Punctuator */) {
 56997  	            precedence = this.operatorPrecedence[op] || 0;
 56998  	        }
 56999  	        else if (token.type === 4 /* Keyword */) {
 57000  	            precedence = (op === 'instanceof' || (this.context.allowIn && op === 'in')) ? 7 : 0;
 57001  	        }
 57002  	        else {
 57003  	            precedence = 0;
 57004  	        }
 57005  	        return precedence;
 57006  	    };
 57007  	    Parser.prototype.parseBinaryExpression = function () {
 57008  	        var startToken = this.lookahead;
 57009  	        var expr = this.inheritCoverGrammar(this.parseExponentiationExpression);
 57010  	        var token = this.lookahead;
 57011  	        var prec = this.binaryPrecedence(token);
 57012  	        if (prec > 0) {
 57013  	            this.nextToken();
 57014  	            this.context.isAssignmentTarget = false;
 57015  	            this.context.isBindingElement = false;
 57016  	            var markers = [startToken, this.lookahead];
 57017  	            var left = expr;
 57018  	            var right = this.isolateCoverGrammar(this.parseExponentiationExpression);
 57019  	            var stack = [left, token.value, right];
 57020  	            var precedences = [prec];
 57021  	            while (true) {
 57022  	                prec = this.binaryPrecedence(this.lookahead);
 57023  	                if (prec <= 0) {
 57024  	                    break;
 57025  	                }
 57026  	                // Reduce: make a binary expression from the three topmost entries.
 57027  	                while ((stack.length > 2) && (prec <= precedences[precedences.length - 1])) {
 57028  	                    right = stack.pop();
 57029  	                    var operator = stack.pop();
 57030  	                    precedences.pop();
 57031  	                    left = stack.pop();
 57032  	                    markers.pop();
 57033  	                    var node = this.startNode(markers[markers.length - 1]);
 57034  	                    stack.push(this.finalize(node, new Node.BinaryExpression(operator, left, right)));
 57035  	                }
 57036  	                // Shift.
 57037  	                stack.push(this.nextToken().value);
 57038  	                precedences.push(prec);
 57039  	                markers.push(this.lookahead);
 57040  	                stack.push(this.isolateCoverGrammar(this.parseExponentiationExpression));
 57041  	            }
 57042  	            // Final reduce to clean-up the stack.
 57043  	            var i = stack.length - 1;
 57044  	            expr = stack[i];
 57045  	            var lastMarker = markers.pop();
 57046  	            while (i > 1) {
 57047  	                var marker = markers.pop();
 57048  	                var lastLineStart = lastMarker && lastMarker.lineStart;
 57049  	                var node = this.startNode(marker, lastLineStart);
 57050  	                var operator = stack[i - 1];
 57051  	                expr = this.finalize(node, new Node.BinaryExpression(operator, stack[i - 2], expr));
 57052  	                i -= 2;
 57053  	                lastMarker = marker;
 57054  	            }
 57055  	        }
 57056  	        return expr;
 57057  	    };
 57058  	    // https://tc39.github.io/ecma262/#sec-conditional-operator
 57059  	    Parser.prototype.parseConditionalExpression = function () {
 57060  	        var startToken = this.lookahead;
 57061  	        var expr = this.inheritCoverGrammar(this.parseBinaryExpression);
 57062  	        if (this.match('?')) {
 57063  	            this.nextToken();
 57064  	            var previousAllowIn = this.context.allowIn;
 57065  	            this.context.allowIn = true;
 57066  	            var consequent = this.isolateCoverGrammar(this.parseAssignmentExpression);
 57067  	            this.context.allowIn = previousAllowIn;
 57068  	            this.expect(':');
 57069  	            var alternate = this.isolateCoverGrammar(this.parseAssignmentExpression);
 57070  	            expr = this.finalize(this.startNode(startToken), new Node.ConditionalExpression(expr, consequent, alternate));
 57071  	            this.context.isAssignmentTarget = false;
 57072  	            this.context.isBindingElement = false;
 57073  	        }
 57074  	        return expr;
 57075  	    };
 57076  	    // https://tc39.github.io/ecma262/#sec-assignment-operators
 57077  	    Parser.prototype.checkPatternParam = function (options, param) {
 57078  	        switch (param.type) {
 57079  	            case syntax_1.Syntax.Identifier:
 57080  	                this.validateParam(options, param, param.name);
 57081  	                break;
 57082  	            case syntax_1.Syntax.RestElement:
 57083  	                this.checkPatternParam(options, param.argument);
 57084  	                break;
 57085  	            case syntax_1.Syntax.AssignmentPattern:
 57086  	                this.checkPatternParam(options, param.left);
 57087  	                break;
 57088  	            case syntax_1.Syntax.ArrayPattern:
 57089  	                for (var i = 0; i < param.elements.length; i++) {
 57090  	                    if (param.elements[i] !== null) {
 57091  	                        this.checkPatternParam(options, param.elements[i]);
 57092  	                    }
 57093  	                }
 57094  	                break;
 57095  	            case syntax_1.Syntax.ObjectPattern:
 57096  	                for (var i = 0; i < param.properties.length; i++) {
 57097  	                    this.checkPatternParam(options, param.properties[i].value);
 57098  	                }
 57099  	                break;
 57100  	            default:
 57101  	                break;
 57102  	        }
 57103  	        options.simple = options.simple && (param instanceof Node.Identifier);
 57104  	    };
 57105  	    Parser.prototype.reinterpretAsCoverFormalsList = function (expr) {
 57106  	        var params = [expr];
 57107  	        var options;
 57108  	        var asyncArrow = false;
 57109  	        switch (expr.type) {
 57110  	            case syntax_1.Syntax.Identifier:
 57111  	                break;
 57112  	            case ArrowParameterPlaceHolder:
 57113  	                params = expr.params;
 57114  	                asyncArrow = expr.async;
 57115  	                break;
 57116  	            default:
 57117  	                return null;
 57118  	        }
 57119  	        options = {
 57120  	            simple: true,
 57121  	            paramSet: {}
 57122  	        };
 57123  	        for (var i = 0; i < params.length; ++i) {
 57124  	            var param = params[i];
 57125  	            if (param.type === syntax_1.Syntax.AssignmentPattern) {
 57126  	                if (param.right.type === syntax_1.Syntax.YieldExpression) {
 57127  	                    if (param.right.argument) {
 57128  	                        this.throwUnexpectedToken(this.lookahead);
 57129  	                    }
 57130  	                    param.right.type = syntax_1.Syntax.Identifier;
 57131  	                    param.right.name = 'yield';
 57132  	                    delete param.right.argument;
 57133  	                    delete param.right.delegate;
 57134  	                }
 57135  	            }
 57136  	            else if (asyncArrow && param.type === syntax_1.Syntax.Identifier && param.name === 'await') {
 57137  	                this.throwUnexpectedToken(this.lookahead);
 57138  	            }
 57139  	            this.checkPatternParam(options, param);
 57140  	            params[i] = param;
 57141  	        }
 57142  	        if (this.context.strict || !this.context.allowYield) {
 57143  	            for (var i = 0; i < params.length; ++i) {
 57144  	                var param = params[i];
 57145  	                if (param.type === syntax_1.Syntax.YieldExpression) {
 57146  	                    this.throwUnexpectedToken(this.lookahead);
 57147  	                }
 57148  	            }
 57149  	        }
 57150  	        if (options.message === messages_1.Messages.StrictParamDupe) {
 57151  	            var token = this.context.strict ? options.stricted : options.firstRestricted;
 57152  	            this.throwUnexpectedToken(token, options.message);
 57153  	        }
 57154  	        return {
 57155  	            simple: options.simple,
 57156  	            params: params,
 57157  	            stricted: options.stricted,
 57158  	            firstRestricted: options.firstRestricted,
 57159  	            message: options.message
 57160  	        };
 57161  	    };
 57162  	    Parser.prototype.parseAssignmentExpression = function () {
 57163  	        var expr;
 57164  	        if (!this.context.allowYield && this.matchKeyword('yield')) {
 57165  	            expr = this.parseYieldExpression();
 57166  	        }
 57167  	        else {
 57168  	            var startToken = this.lookahead;
 57169  	            var token = startToken;
 57170  	            expr = this.parseConditionalExpression();
 57171  	            if (token.type === 3 /* Identifier */ && (token.lineNumber === this.lookahead.lineNumber) && token.value === 'async') {
 57172  	                if (this.lookahead.type === 3 /* Identifier */ || this.matchKeyword('yield')) {
 57173  	                    var arg = this.parsePrimaryExpression();
 57174  	                    this.reinterpretExpressionAsPattern(arg);
 57175  	                    expr = {
 57176  	                        type: ArrowParameterPlaceHolder,
 57177  	                        params: [arg],
 57178  	                        async: true
 57179  	                    };
 57180  	                }
 57181  	            }
 57182  	            if (expr.type === ArrowParameterPlaceHolder || this.match('=>')) {
 57183  	                // https://tc39.github.io/ecma262/#sec-arrow-function-definitions
 57184  	                this.context.isAssignmentTarget = false;
 57185  	                this.context.isBindingElement = false;
 57186  	                var isAsync = expr.async;
 57187  	                var list = this.reinterpretAsCoverFormalsList(expr);
 57188  	                if (list) {
 57189  	                    if (this.hasLineTerminator) {
 57190  	                        this.tolerateUnexpectedToken(this.lookahead);
 57191  	                    }
 57192  	                    this.context.firstCoverInitializedNameError = null;
 57193  	                    var previousStrict = this.context.strict;
 57194  	                    var previousAllowStrictDirective = this.context.allowStrictDirective;
 57195  	                    this.context.allowStrictDirective = list.simple;
 57196  	                    var previousAllowYield = this.context.allowYield;
 57197  	                    var previousAwait = this.context.await;
 57198  	                    this.context.allowYield = true;
 57199  	                    this.context.await = isAsync;
 57200  	                    var node = this.startNode(startToken);
 57201  	                    this.expect('=>');
 57202  	                    var body = void 0;
 57203  	                    if (this.match('{')) {
 57204  	                        var previousAllowIn = this.context.allowIn;
 57205  	                        this.context.allowIn = true;
 57206  	                        body = this.parseFunctionSourceElements();
 57207  	                        this.context.allowIn = previousAllowIn;
 57208  	                    }
 57209  	                    else {
 57210  	                        body = this.isolateCoverGrammar(this.parseAssignmentExpression);
 57211  	                    }
 57212  	                    var expression = body.type !== syntax_1.Syntax.BlockStatement;
 57213  	                    if (this.context.strict && list.firstRestricted) {
 57214  	                        this.throwUnexpectedToken(list.firstRestricted, list.message);
 57215  	                    }
 57216  	                    if (this.context.strict && list.stricted) {
 57217  	                        this.tolerateUnexpectedToken(list.stricted, list.message);
 57218  	                    }
 57219  	                    expr = isAsync ? this.finalize(node, new Node.AsyncArrowFunctionExpression(list.params, body, expression)) :
 57220  	                        this.finalize(node, new Node.ArrowFunctionExpression(list.params, body, expression));
 57221  	                    this.context.strict = previousStrict;
 57222  	                    this.context.allowStrictDirective = previousAllowStrictDirective;
 57223  	                    this.context.allowYield = previousAllowYield;
 57224  	                    this.context.await = previousAwait;
 57225  	                }
 57226  	            }
 57227  	            else {
 57228  	                if (this.matchAssign()) {
 57229  	                    if (!this.context.isAssignmentTarget) {
 57230  	                        this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);
 57231  	                    }
 57232  	                    if (this.context.strict && expr.type === syntax_1.Syntax.Identifier) {
 57233  	                        var id = expr;
 57234  	                        if (this.scanner.isRestrictedWord(id.name)) {
 57235  	                            this.tolerateUnexpectedToken(token, messages_1.Messages.StrictLHSAssignment);
 57236  	                        }
 57237  	                        if (this.scanner.isStrictModeReservedWord(id.name)) {
 57238  	                            this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);
 57239  	                        }
 57240  	                    }
 57241  	                    if (!this.match('=')) {
 57242  	                        this.context.isAssignmentTarget = false;
 57243  	                        this.context.isBindingElement = false;
 57244  	                    }
 57245  	                    else {
 57246  	                        this.reinterpretExpressionAsPattern(expr);
 57247  	                    }
 57248  	                    token = this.nextToken();
 57249  	                    var operator = token.value;
 57250  	                    var right = this.isolateCoverGrammar(this.parseAssignmentExpression);
 57251  	                    expr = this.finalize(this.startNode(startToken), new Node.AssignmentExpression(operator, expr, right));
 57252  	                    this.context.firstCoverInitializedNameError = null;
 57253  	                }
 57254  	            }
 57255  	        }
 57256  	        return expr;
 57257  	    };
 57258  	    // https://tc39.github.io/ecma262/#sec-comma-operator
 57259  	    Parser.prototype.parseExpression = function () {
 57260  	        var startToken = this.lookahead;
 57261  	        var expr = this.isolateCoverGrammar(this.parseAssignmentExpression);
 57262  	        if (this.match(',')) {
 57263  	            var expressions = [];
 57264  	            expressions.push(expr);
 57265  	            while (this.lookahead.type !== 2 /* EOF */) {
 57266  	                if (!this.match(',')) {
 57267  	                    break;
 57268  	                }
 57269  	                this.nextToken();
 57270  	                expressions.push(this.isolateCoverGrammar(this.parseAssignmentExpression));
 57271  	            }
 57272  	            expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));
 57273  	        }
 57274  	        return expr;
 57275  	    };
 57276  	    // https://tc39.github.io/ecma262/#sec-block
 57277  	    Parser.prototype.parseStatementListItem = function () {
 57278  	        var statement;
 57279  	        this.context.isAssignmentTarget = true;
 57280  	        this.context.isBindingElement = true;
 57281  	        if (this.lookahead.type === 4 /* Keyword */) {
 57282  	            switch (this.lookahead.value) {
 57283  	                case 'export':
 57284  	                    if (!this.context.isModule) {
 57285  	                        this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalExportDeclaration);
 57286  	                    }
 57287  	                    statement = this.parseExportDeclaration();
 57288  	                    break;
 57289  	                case 'import':
 57290  	                    if (!this.context.isModule) {
 57291  	                        this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalImportDeclaration);
 57292  	                    }
 57293  	                    statement = this.parseImportDeclaration();
 57294  	                    break;
 57295  	                case 'const':
 57296  	                    statement = this.parseLexicalDeclaration({ inFor: false });
 57297  	                    break;
 57298  	                case 'function':
 57299  	                    statement = this.parseFunctionDeclaration();
 57300  	                    break;
 57301  	                case 'class':
 57302  	                    statement = this.parseClassDeclaration();
 57303  	                    break;
 57304  	                case 'let':
 57305  	                    statement = this.isLexicalDeclaration() ? this.parseLexicalDeclaration({ inFor: false }) : this.parseStatement();
 57306  	                    break;
 57307  	                default:
 57308  	                    statement = this.parseStatement();
 57309  	                    break;
 57310  	            }
 57311  	        }
 57312  	        else {
 57313  	            statement = this.parseStatement();
 57314  	        }
 57315  	        return statement;
 57316  	    };
 57317  	    Parser.prototype.parseBlock = function () {
 57318  	        var node = this.createNode();
 57319  	        this.expect('{');
 57320  	        var block = [];
 57321  	        while (true) {
 57322  	            if (this.match('}')) {
 57323  	                break;
 57324  	            }
 57325  	            block.push(this.parseStatementListItem());
 57326  	        }
 57327  	        this.expect('}');
 57328  	        return this.finalize(node, new Node.BlockStatement(block));
 57329  	    };
 57330  	    // https://tc39.github.io/ecma262/#sec-let-and-const-declarations
 57331  	    Parser.prototype.parseLexicalBinding = function (kind, options) {
 57332  	        var node = this.createNode();
 57333  	        var params = [];
 57334  	        var id = this.parsePattern(params, kind);
 57335  	        if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {
 57336  	            if (this.scanner.isRestrictedWord(id.name)) {
 57337  	                this.tolerateError(messages_1.Messages.StrictVarName);
 57338  	            }
 57339  	        }
 57340  	        var init = null;
 57341  	        if (kind === 'const') {
 57342  	            if (!this.matchKeyword('in') && !this.matchContextualKeyword('of')) {
 57343  	                if (this.match('=')) {
 57344  	                    this.nextToken();
 57345  	                    init = this.isolateCoverGrammar(this.parseAssignmentExpression);
 57346  	                }
 57347  	                else {
 57348  	                    this.throwError(messages_1.Messages.DeclarationMissingInitializer, 'const');
 57349  	                }
 57350  	            }
 57351  	        }
 57352  	        else if ((!options.inFor && id.type !== syntax_1.Syntax.Identifier) || this.match('=')) {
 57353  	            this.expect('=');
 57354  	            init = this.isolateCoverGrammar(this.parseAssignmentExpression);
 57355  	        }
 57356  	        return this.finalize(node, new Node.VariableDeclarator(id, init));
 57357  	    };
 57358  	    Parser.prototype.parseBindingList = function (kind, options) {
 57359  	        var list = [this.parseLexicalBinding(kind, options)];
 57360  	        while (this.match(',')) {
 57361  	            this.nextToken();
 57362  	            list.push(this.parseLexicalBinding(kind, options));
 57363  	        }
 57364  	        return list;
 57365  	    };
 57366  	    Parser.prototype.isLexicalDeclaration = function () {
 57367  	        var state = this.scanner.saveState();
 57368  	        this.scanner.scanComments();
 57369  	        var next = this.scanner.lex();
 57370  	        this.scanner.restoreState(state);
 57371  	        return (next.type === 3 /* Identifier */) ||
 57372  	            (next.type === 7 /* Punctuator */ && next.value === '[') ||
 57373  	            (next.type === 7 /* Punctuator */ && next.value === '{') ||
 57374  	            (next.type === 4 /* Keyword */ && next.value === 'let') ||
 57375  	            (next.type === 4 /* Keyword */ && next.value === 'yield');
 57376  	    };
 57377  	    Parser.prototype.parseLexicalDeclaration = function (options) {
 57378  	        var node = this.createNode();
 57379  	        var kind = this.nextToken().value;
 57380  	        assert_1.assert(kind === 'let' || kind === 'const', 'Lexical declaration must be either let or const');
 57381  	        var declarations = this.parseBindingList(kind, options);
 57382  	        this.consumeSemicolon();
 57383  	        return this.finalize(node, new Node.VariableDeclaration(declarations, kind));
 57384  	    };
 57385  	    // https://tc39.github.io/ecma262/#sec-destructuring-binding-patterns
 57386  	    Parser.prototype.parseBindingRestElement = function (params, kind) {
 57387  	        var node = this.createNode();
 57388  	        this.expect('...');
 57389  	        var arg = this.parsePattern(params, kind);
 57390  	        return this.finalize(node, new Node.RestElement(arg));
 57391  	    };
 57392  	    Parser.prototype.parseArrayPattern = function (params, kind) {
 57393  	        var node = this.createNode();
 57394  	        this.expect('[');
 57395  	        var elements = [];
 57396  	        while (!this.match(']')) {
 57397  	            if (this.match(',')) {
 57398  	                this.nextToken();
 57399  	                elements.push(null);
 57400  	            }
 57401  	            else {
 57402  	                if (this.match('...')) {
 57403  	                    elements.push(this.parseBindingRestElement(params, kind));
 57404  	                    break;
 57405  	                }
 57406  	                else {
 57407  	                    elements.push(this.parsePatternWithDefault(params, kind));
 57408  	                }
 57409  	                if (!this.match(']')) {
 57410  	                    this.expect(',');
 57411  	                }
 57412  	            }
 57413  	        }
 57414  	        this.expect(']');
 57415  	        return this.finalize(node, new Node.ArrayPattern(elements));
 57416  	    };
 57417  	    Parser.prototype.parsePropertyPattern = function (params, kind) {
 57418  	        var node = this.createNode();
 57419  	        var computed = false;
 57420  	        var shorthand = false;
 57421  	        var method = false;
 57422  	        var key;
 57423  	        var value;
 57424  	        if (this.lookahead.type === 3 /* Identifier */) {
 57425  	            var keyToken = this.lookahead;
 57426  	            key = this.parseVariableIdentifier();
 57427  	            var init = this.finalize(node, new Node.Identifier(keyToken.value));
 57428  	            if (this.match('=')) {
 57429  	                params.push(keyToken);
 57430  	                shorthand = true;
 57431  	                this.nextToken();
 57432  	                var expr = this.parseAssignmentExpression();
 57433  	                value = this.finalize(this.startNode(keyToken), new Node.AssignmentPattern(init, expr));
 57434  	            }
 57435  	            else if (!this.match(':')) {
 57436  	                params.push(keyToken);
 57437  	                shorthand = true;
 57438  	                value = init;
 57439  	            }
 57440  	            else {
 57441  	                this.expect(':');
 57442  	                value = this.parsePatternWithDefault(params, kind);
 57443  	            }
 57444  	        }
 57445  	        else {
 57446  	            computed = this.match('[');
 57447  	            key = this.parseObjectPropertyKey();
 57448  	            this.expect(':');
 57449  	            value = this.parsePatternWithDefault(params, kind);
 57450  	        }
 57451  	        return this.finalize(node, new Node.Property('init', key, computed, value, method, shorthand));
 57452  	    };
 57453  	    Parser.prototype.parseObjectPattern = function (params, kind) {
 57454  	        var node = this.createNode();
 57455  	        var properties = [];
 57456  	        this.expect('{');
 57457  	        while (!this.match('}')) {
 57458  	            properties.push(this.parsePropertyPattern(params, kind));
 57459  	            if (!this.match('}')) {
 57460  	                this.expect(',');
 57461  	            }
 57462  	        }
 57463  	        this.expect('}');
 57464  	        return this.finalize(node, new Node.ObjectPattern(properties));
 57465  	    };
 57466  	    Parser.prototype.parsePattern = function (params, kind) {
 57467  	        var pattern;
 57468  	        if (this.match('[')) {
 57469  	            pattern = this.parseArrayPattern(params, kind);
 57470  	        }
 57471  	        else if (this.match('{')) {
 57472  	            pattern = this.parseObjectPattern(params, kind);
 57473  	        }
 57474  	        else {
 57475  	            if (this.matchKeyword('let') && (kind === 'const' || kind === 'let')) {
 57476  	                this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.LetInLexicalBinding);
 57477  	            }
 57478  	            params.push(this.lookahead);
 57479  	            pattern = this.parseVariableIdentifier(kind);
 57480  	        }
 57481  	        return pattern;
 57482  	    };
 57483  	    Parser.prototype.parsePatternWithDefault = function (params, kind) {
 57484  	        var startToken = this.lookahead;
 57485  	        var pattern = this.parsePattern(params, kind);
 57486  	        if (this.match('=')) {
 57487  	            this.nextToken();
 57488  	            var previousAllowYield = this.context.allowYield;
 57489  	            this.context.allowYield = true;
 57490  	            var right = this.isolateCoverGrammar(this.parseAssignmentExpression);
 57491  	            this.context.allowYield = previousAllowYield;
 57492  	            pattern = this.finalize(this.startNode(startToken), new Node.AssignmentPattern(pattern, right));
 57493  	        }
 57494  	        return pattern;
 57495  	    };
 57496  	    // https://tc39.github.io/ecma262/#sec-variable-statement
 57497  	    Parser.prototype.parseVariableIdentifier = function (kind) {
 57498  	        var node = this.createNode();
 57499  	        var token = this.nextToken();
 57500  	        if (token.type === 4 /* Keyword */ && token.value === 'yield') {
 57501  	            if (this.context.strict) {
 57502  	                this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);
 57503  	            }
 57504  	            else if (!this.context.allowYield) {
 57505  	                this.throwUnexpectedToken(token);
 57506  	            }
 57507  	        }
 57508  	        else if (token.type !== 3 /* Identifier */) {
 57509  	            if (this.context.strict && token.type === 4 /* Keyword */ && this.scanner.isStrictModeReservedWord(token.value)) {
 57510  	                this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);
 57511  	            }
 57512  	            else {
 57513  	                if (this.context.strict || token.value !== 'let' || kind !== 'var') {
 57514  	                    this.throwUnexpectedToken(token);
 57515  	                }
 57516  	            }
 57517  	        }
 57518  	        else if ((this.context.isModule || this.context.await) && token.type === 3 /* Identifier */ && token.value === 'await') {
 57519  	            this.tolerateUnexpectedToken(token);
 57520  	        }
 57521  	        return this.finalize(node, new Node.Identifier(token.value));
 57522  	    };
 57523  	    Parser.prototype.parseVariableDeclaration = function (options) {
 57524  	        var node = this.createNode();
 57525  	        var params = [];
 57526  	        var id = this.parsePattern(params, 'var');
 57527  	        if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {
 57528  	            if (this.scanner.isRestrictedWord(id.name)) {
 57529  	                this.tolerateError(messages_1.Messages.StrictVarName);
 57530  	            }
 57531  	        }
 57532  	        var init = null;
 57533  	        if (this.match('=')) {
 57534  	            this.nextToken();
 57535  	            init = this.isolateCoverGrammar(this.parseAssignmentExpression);
 57536  	        }
 57537  	        else if (id.type !== syntax_1.Syntax.Identifier && !options.inFor) {
 57538  	            this.expect('=');
 57539  	        }
 57540  	        return this.finalize(node, new Node.VariableDeclarator(id, init));
 57541  	    };
 57542  	    Parser.prototype.parseVariableDeclarationList = function (options) {
 57543  	        var opt = { inFor: options.inFor };
 57544  	        var list = [];
 57545  	        list.push(this.parseVariableDeclaration(opt));
 57546  	        while (this.match(',')) {
 57547  	            this.nextToken();
 57548  	            list.push(this.parseVariableDeclaration(opt));
 57549  	        }
 57550  	        return list;
 57551  	    };
 57552  	    Parser.prototype.parseVariableStatement = function () {
 57553  	        var node = this.createNode();
 57554  	        this.expectKeyword('var');
 57555  	        var declarations = this.parseVariableDeclarationList({ inFor: false });
 57556  	        this.consumeSemicolon();
 57557  	        return this.finalize(node, new Node.VariableDeclaration(declarations, 'var'));
 57558  	    };
 57559  	    // https://tc39.github.io/ecma262/#sec-empty-statement
 57560  	    Parser.prototype.parseEmptyStatement = function () {
 57561  	        var node = this.createNode();
 57562  	        this.expect(';');
 57563  	        return this.finalize(node, new Node.EmptyStatement());
 57564  	    };
 57565  	    // https://tc39.github.io/ecma262/#sec-expression-statement
 57566  	    Parser.prototype.parseExpressionStatement = function () {
 57567  	        var node = this.createNode();
 57568  	        var expr = this.parseExpression();
 57569  	        this.consumeSemicolon();
 57570  	        return this.finalize(node, new Node.ExpressionStatement(expr));
 57571  	    };
 57572  	    // https://tc39.github.io/ecma262/#sec-if-statement
 57573  	    Parser.prototype.parseIfClause = function () {
 57574  	        if (this.context.strict && this.matchKeyword('function')) {
 57575  	            this.tolerateError(messages_1.Messages.StrictFunction);
 57576  	        }
 57577  	        return this.parseStatement();
 57578  	    };
 57579  	    Parser.prototype.parseIfStatement = function () {
 57580  	        var node = this.createNode();
 57581  	        var consequent;
 57582  	        var alternate = null;
 57583  	        this.expectKeyword('if');
 57584  	        this.expect('(');
 57585  	        var test = this.parseExpression();
 57586  	        if (!this.match(')') && this.config.tolerant) {
 57587  	            this.tolerateUnexpectedToken(this.nextToken());
 57588  	            consequent = this.finalize(this.createNode(), new Node.EmptyStatement());
 57589  	        }
 57590  	        else {
 57591  	            this.expect(')');
 57592  	            consequent = this.parseIfClause();
 57593  	            if (this.matchKeyword('else')) {
 57594  	                this.nextToken();
 57595  	                alternate = this.parseIfClause();
 57596  	            }
 57597  	        }
 57598  	        return this.finalize(node, new Node.IfStatement(test, consequent, alternate));
 57599  	    };
 57600  	    // https://tc39.github.io/ecma262/#sec-do-while-statement
 57601  	    Parser.prototype.parseDoWhileStatement = function () {
 57602  	        var node = this.createNode();
 57603  	        this.expectKeyword('do');
 57604  	        var previousInIteration = this.context.inIteration;
 57605  	        this.context.inIteration = true;
 57606  	        var body = this.parseStatement();
 57607  	        this.context.inIteration = previousInIteration;
 57608  	        this.expectKeyword('while');
 57609  	        this.expect('(');
 57610  	        var test = this.parseExpression();
 57611  	        if (!this.match(')') && this.config.tolerant) {
 57612  	            this.tolerateUnexpectedToken(this.nextToken());
 57613  	        }
 57614  	        else {
 57615  	            this.expect(')');
 57616  	            if (this.match(';')) {
 57617  	                this.nextToken();
 57618  	            }
 57619  	        }
 57620  	        return this.finalize(node, new Node.DoWhileStatement(body, test));
 57621  	    };
 57622  	    // https://tc39.github.io/ecma262/#sec-while-statement
 57623  	    Parser.prototype.parseWhileStatement = function () {
 57624  	        var node = this.createNode();
 57625  	        var body;
 57626  	        this.expectKeyword('while');
 57627  	        this.expect('(');
 57628  	        var test = this.parseExpression();
 57629  	        if (!this.match(')') && this.config.tolerant) {
 57630  	            this.tolerateUnexpectedToken(this.nextToken());
 57631  	            body = this.finalize(this.createNode(), new Node.EmptyStatement());
 57632  	        }
 57633  	        else {
 57634  	            this.expect(')');
 57635  	            var previousInIteration = this.context.inIteration;
 57636  	            this.context.inIteration = true;
 57637  	            body = this.parseStatement();
 57638  	            this.context.inIteration = previousInIteration;
 57639  	        }
 57640  	        return this.finalize(node, new Node.WhileStatement(test, body));
 57641  	    };
 57642  	    // https://tc39.github.io/ecma262/#sec-for-statement
 57643  	    // https://tc39.github.io/ecma262/#sec-for-in-and-for-of-statements
 57644  	    Parser.prototype.parseForStatement = function () {
 57645  	        var init = null;
 57646  	        var test = null;
 57647  	        var update = null;
 57648  	        var forIn = true;
 57649  	        var left, right;
 57650  	        var node = this.createNode();
 57651  	        this.expectKeyword('for');
 57652  	        this.expect('(');
 57653  	        if (this.match(';')) {
 57654  	            this.nextToken();
 57655  	        }
 57656  	        else {
 57657  	            if (this.matchKeyword('var')) {
 57658  	                init = this.createNode();
 57659  	                this.nextToken();
 57660  	                var previousAllowIn = this.context.allowIn;
 57661  	                this.context.allowIn = false;
 57662  	                var declarations = this.parseVariableDeclarationList({ inFor: true });
 57663  	                this.context.allowIn = previousAllowIn;
 57664  	                if (declarations.length === 1 && this.matchKeyword('in')) {
 57665  	                    var decl = declarations[0];
 57666  	                    if (decl.init && (decl.id.type === syntax_1.Syntax.ArrayPattern || decl.id.type === syntax_1.Syntax.ObjectPattern || this.context.strict)) {
 57667  	                        this.tolerateError(messages_1.Messages.ForInOfLoopInitializer, 'for-in');
 57668  	                    }
 57669  	                    init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));
 57670  	                    this.nextToken();
 57671  	                    left = init;
 57672  	                    right = this.parseExpression();
 57673  	                    init = null;
 57674  	                }
 57675  	                else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {
 57676  	                    init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));
 57677  	                    this.nextToken();
 57678  	                    left = init;
 57679  	                    right = this.parseAssignmentExpression();
 57680  	                    init = null;
 57681  	                    forIn = false;
 57682  	                }
 57683  	                else {
 57684  	                    init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));
 57685  	                    this.expect(';');
 57686  	                }
 57687  	            }
 57688  	            else if (this.matchKeyword('const') || this.matchKeyword('let')) {
 57689  	                init = this.createNode();
 57690  	                var kind = this.nextToken().value;
 57691  	                if (!this.context.strict && this.lookahead.value === 'in') {
 57692  	                    init = this.finalize(init, new Node.Identifier(kind));
 57693  	                    this.nextToken();
 57694  	                    left = init;
 57695  	                    right = this.parseExpression();
 57696  	                    init = null;
 57697  	                }
 57698  	                else {
 57699  	                    var previousAllowIn = this.context.allowIn;
 57700  	                    this.context.allowIn = false;
 57701  	                    var declarations = this.parseBindingList(kind, { inFor: true });
 57702  	                    this.context.allowIn = previousAllowIn;
 57703  	                    if (declarations.length === 1 && declarations[0].init === null && this.matchKeyword('in')) {
 57704  	                        init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));
 57705  	                        this.nextToken();
 57706  	                        left = init;
 57707  	                        right = this.parseExpression();
 57708  	                        init = null;
 57709  	                    }
 57710  	                    else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {
 57711  	                        init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));
 57712  	                        this.nextToken();
 57713  	                        left = init;
 57714  	                        right = this.parseAssignmentExpression();
 57715  	                        init = null;
 57716  	                        forIn = false;
 57717  	                    }
 57718  	                    else {
 57719  	                        this.consumeSemicolon();
 57720  	                        init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));
 57721  	                    }
 57722  	                }
 57723  	            }
 57724  	            else {
 57725  	                var initStartToken = this.lookahead;
 57726  	                var previousAllowIn = this.context.allowIn;
 57727  	                this.context.allowIn = false;
 57728  	                init = this.inheritCoverGrammar(this.parseAssignmentExpression);
 57729  	                this.context.allowIn = previousAllowIn;
 57730  	                if (this.matchKeyword('in')) {
 57731  	                    if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {
 57732  	                        this.tolerateError(messages_1.Messages.InvalidLHSInForIn);
 57733  	                    }
 57734  	                    this.nextToken();
 57735  	                    this.reinterpretExpressionAsPattern(init);
 57736  	                    left = init;
 57737  	                    right = this.parseExpression();
 57738  	                    init = null;
 57739  	                }
 57740  	                else if (this.matchContextualKeyword('of')) {
 57741  	                    if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {
 57742  	                        this.tolerateError(messages_1.Messages.InvalidLHSInForLoop);
 57743  	                    }
 57744  	                    this.nextToken();
 57745  	                    this.reinterpretExpressionAsPattern(init);
 57746  	                    left = init;
 57747  	                    right = this.parseAssignmentExpression();
 57748  	                    init = null;
 57749  	                    forIn = false;
 57750  	                }
 57751  	                else {
 57752  	                    if (this.match(',')) {
 57753  	                        var initSeq = [init];
 57754  	                        while (this.match(',')) {
 57755  	                            this.nextToken();
 57756  	                            initSeq.push(this.isolateCoverGrammar(this.parseAssignmentExpression));
 57757  	                        }
 57758  	                        init = this.finalize(this.startNode(initStartToken), new Node.SequenceExpression(initSeq));
 57759  	                    }
 57760  	                    this.expect(';');
 57761  	                }
 57762  	            }
 57763  	        }
 57764  	        if (typeof left === 'undefined') {
 57765  	            if (!this.match(';')) {
 57766  	                test = this.parseExpression();
 57767  	            }
 57768  	            this.expect(';');
 57769  	            if (!this.match(')')) {
 57770  	                update = this.parseExpression();
 57771  	            }
 57772  	        }
 57773  	        var body;
 57774  	        if (!this.match(')') && this.config.tolerant) {
 57775  	            this.tolerateUnexpectedToken(this.nextToken());
 57776  	            body = this.finalize(this.createNode(), new Node.EmptyStatement());
 57777  	        }
 57778  	        else {
 57779  	            this.expect(')');
 57780  	            var previousInIteration = this.context.inIteration;
 57781  	            this.context.inIteration = true;
 57782  	            body = this.isolateCoverGrammar(this.parseStatement);
 57783  	            this.context.inIteration = previousInIteration;
 57784  	        }
 57785  	        return (typeof left === 'undefined') ?
 57786  	            this.finalize(node, new Node.ForStatement(init, test, update, body)) :
 57787  	            forIn ? this.finalize(node, new Node.ForInStatement(left, right, body)) :
 57788  	                this.finalize(node, new Node.ForOfStatement(left, right, body));
 57789  	    };
 57790  	    // https://tc39.github.io/ecma262/#sec-continue-statement
 57791  	    Parser.prototype.parseContinueStatement = function () {
 57792  	        var node = this.createNode();
 57793  	        this.expectKeyword('continue');
 57794  	        var label = null;
 57795  	        if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {
 57796  	            var id = this.parseVariableIdentifier();
 57797  	            label = id;
 57798  	            var key = '$' + id.name;
 57799  	            if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {
 57800  	                this.throwError(messages_1.Messages.UnknownLabel, id.name);
 57801  	            }
 57802  	        }
 57803  	        this.consumeSemicolon();
 57804  	        if (label === null && !this.context.inIteration) {
 57805  	            this.throwError(messages_1.Messages.IllegalContinue);
 57806  	        }
 57807  	        return this.finalize(node, new Node.ContinueStatement(label));
 57808  	    };
 57809  	    // https://tc39.github.io/ecma262/#sec-break-statement
 57810  	    Parser.prototype.parseBreakStatement = function () {
 57811  	        var node = this.createNode();
 57812  	        this.expectKeyword('break');
 57813  	        var label = null;
 57814  	        if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {
 57815  	            var id = this.parseVariableIdentifier();
 57816  	            var key = '$' + id.name;
 57817  	            if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {
 57818  	                this.throwError(messages_1.Messages.UnknownLabel, id.name);
 57819  	            }
 57820  	            label = id;
 57821  	        }
 57822  	        this.consumeSemicolon();
 57823  	        if (label === null && !this.context.inIteration && !this.context.inSwitch) {
 57824  	            this.throwError(messages_1.Messages.IllegalBreak);
 57825  	        }
 57826  	        return this.finalize(node, new Node.BreakStatement(label));
 57827  	    };
 57828  	    // https://tc39.github.io/ecma262/#sec-return-statement
 57829  	    Parser.prototype.parseReturnStatement = function () {
 57830  	        if (!this.context.inFunctionBody) {
 57831  	            this.tolerateError(messages_1.Messages.IllegalReturn);
 57832  	        }
 57833  	        var node = this.createNode();
 57834  	        this.expectKeyword('return');
 57835  	        var hasArgument = (!this.match(';') && !this.match('}') &&
 57836  	            !this.hasLineTerminator && this.lookahead.type !== 2 /* EOF */) ||
 57837  	            this.lookahead.type === 8 /* StringLiteral */ ||
 57838  	            this.lookahead.type === 10 /* Template */;
 57839  	        var argument = hasArgument ? this.parseExpression() : null;
 57840  	        this.consumeSemicolon();
 57841  	        return this.finalize(node, new Node.ReturnStatement(argument));
 57842  	    };
 57843  	    // https://tc39.github.io/ecma262/#sec-with-statement
 57844  	    Parser.prototype.parseWithStatement = function () {
 57845  	        if (this.context.strict) {
 57846  	            this.tolerateError(messages_1.Messages.StrictModeWith);
 57847  	        }
 57848  	        var node = this.createNode();
 57849  	        var body;
 57850  	        this.expectKeyword('with');
 57851  	        this.expect('(');
 57852  	        var object = this.parseExpression();
 57853  	        if (!this.match(')') && this.config.tolerant) {
 57854  	            this.tolerateUnexpectedToken(this.nextToken());
 57855  	            body = this.finalize(this.createNode(), new Node.EmptyStatement());
 57856  	        }
 57857  	        else {
 57858  	            this.expect(')');
 57859  	            body = this.parseStatement();
 57860  	        }
 57861  	        return this.finalize(node, new Node.WithStatement(object, body));
 57862  	    };
 57863  	    // https://tc39.github.io/ecma262/#sec-switch-statement
 57864  	    Parser.prototype.parseSwitchCase = function () {
 57865  	        var node = this.createNode();
 57866  	        var test;
 57867  	        if (this.matchKeyword('default')) {
 57868  	            this.nextToken();
 57869  	            test = null;
 57870  	        }
 57871  	        else {
 57872  	            this.expectKeyword('case');
 57873  	            test = this.parseExpression();
 57874  	        }
 57875  	        this.expect(':');
 57876  	        var consequent = [];
 57877  	        while (true) {
 57878  	            if (this.match('}') || this.matchKeyword('default') || this.matchKeyword('case')) {
 57879  	                break;
 57880  	            }
 57881  	            consequent.push(this.parseStatementListItem());
 57882  	        }
 57883  	        return this.finalize(node, new Node.SwitchCase(test, consequent));
 57884  	    };
 57885  	    Parser.prototype.parseSwitchStatement = function () {
 57886  	        var node = this.createNode();
 57887  	        this.expectKeyword('switch');
 57888  	        this.expect('(');
 57889  	        var discriminant = this.parseExpression();
 57890  	        this.expect(')');
 57891  	        var previousInSwitch = this.context.inSwitch;
 57892  	        this.context.inSwitch = true;
 57893  	        var cases = [];
 57894  	        var defaultFound = false;
 57895  	        this.expect('{');
 57896  	        while (true) {
 57897  	            if (this.match('}')) {
 57898  	                break;
 57899  	            }
 57900  	            var clause = this.parseSwitchCase();
 57901  	            if (clause.test === null) {
 57902  	                if (defaultFound) {
 57903  	                    this.throwError(messages_1.Messages.MultipleDefaultsInSwitch);
 57904  	                }
 57905  	                defaultFound = true;
 57906  	            }
 57907  	            cases.push(clause);
 57908  	        }
 57909  	        this.expect('}');
 57910  	        this.context.inSwitch = previousInSwitch;
 57911  	        return this.finalize(node, new Node.SwitchStatement(discriminant, cases));
 57912  	    };
 57913  	    // https://tc39.github.io/ecma262/#sec-labelled-statements
 57914  	    Parser.prototype.parseLabelledStatement = function () {
 57915  	        var node = this.createNode();
 57916  	        var expr = this.parseExpression();
 57917  	        var statement;
 57918  	        if ((expr.type === syntax_1.Syntax.Identifier) && this.match(':')) {
 57919  	            this.nextToken();
 57920  	            var id = expr;
 57921  	            var key = '$' + id.name;
 57922  	            if (Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {
 57923  	                this.throwError(messages_1.Messages.Redeclaration, 'Label', id.name);
 57924  	            }
 57925  	            this.context.labelSet[key] = true;
 57926  	            var body = void 0;
 57927  	            if (this.matchKeyword('class')) {
 57928  	                this.tolerateUnexpectedToken(this.lookahead);
 57929  	                body = this.parseClassDeclaration();
 57930  	            }
 57931  	            else if (this.matchKeyword('function')) {
 57932  	                var token = this.lookahead;
 57933  	                var declaration = this.parseFunctionDeclaration();
 57934  	                if (this.context.strict) {
 57935  	                    this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunction);
 57936  	                }
 57937  	                else if (declaration.generator) {
 57938  	                    this.tolerateUnexpectedToken(token, messages_1.Messages.GeneratorInLegacyContext);
 57939  	                }
 57940  	                body = declaration;
 57941  	            }
 57942  	            else {
 57943  	                body = this.parseStatement();
 57944  	            }
 57945  	            delete this.context.labelSet[key];
 57946  	            statement = new Node.LabeledStatement(id, body);
 57947  	        }
 57948  	        else {
 57949  	            this.consumeSemicolon();
 57950  	            statement = new Node.ExpressionStatement(expr);
 57951  	        }
 57952  	        return this.finalize(node, statement);
 57953  	    };
 57954  	    // https://tc39.github.io/ecma262/#sec-throw-statement
 57955  	    Parser.prototype.parseThrowStatement = function () {
 57956  	        var node = this.createNode();
 57957  	        this.expectKeyword('throw');
 57958  	        if (this.hasLineTerminator) {
 57959  	            this.throwError(messages_1.Messages.NewlineAfterThrow);
 57960  	        }
 57961  	        var argument = this.parseExpression();
 57962  	        this.consumeSemicolon();
 57963  	        return this.finalize(node, new Node.ThrowStatement(argument));
 57964  	    };
 57965  	    // https://tc39.github.io/ecma262/#sec-try-statement
 57966  	    Parser.prototype.parseCatchClause = function () {
 57967  	        var node = this.createNode();
 57968  	        this.expectKeyword('catch');
 57969  	        this.expect('(');
 57970  	        if (this.match(')')) {
 57971  	            this.throwUnexpectedToken(this.lookahead);
 57972  	        }
 57973  	        var params = [];
 57974  	        var param = this.parsePattern(params);
 57975  	        var paramMap = {};
 57976  	        for (var i = 0; i < params.length; i++) {
 57977  	            var key = '$' + params[i].value;
 57978  	            if (Object.prototype.hasOwnProperty.call(paramMap, key)) {
 57979  	                this.tolerateError(messages_1.Messages.DuplicateBinding, params[i].value);
 57980  	            }
 57981  	            paramMap[key] = true;
 57982  	        }
 57983  	        if (this.context.strict && param.type === syntax_1.Syntax.Identifier) {
 57984  	            if (this.scanner.isRestrictedWord(param.name)) {
 57985  	                this.tolerateError(messages_1.Messages.StrictCatchVariable);
 57986  	            }
 57987  	        }
 57988  	        this.expect(')');
 57989  	        var body = this.parseBlock();
 57990  	        return this.finalize(node, new Node.CatchClause(param, body));
 57991  	    };
 57992  	    Parser.prototype.parseFinallyClause = function () {
 57993  	        this.expectKeyword('finally');
 57994  	        return this.parseBlock();
 57995  	    };
 57996  	    Parser.prototype.parseTryStatement = function () {
 57997  	        var node = this.createNode();
 57998  	        this.expectKeyword('try');
 57999  	        var block = this.parseBlock();
 58000  	        var handler = this.matchKeyword('catch') ? this.parseCatchClause() : null;
 58001  	        var finalizer = this.matchKeyword('finally') ? this.parseFinallyClause() : null;
 58002  	        if (!handler && !finalizer) {
 58003  	            this.throwError(messages_1.Messages.NoCatchOrFinally);
 58004  	        }
 58005  	        return this.finalize(node, new Node.TryStatement(block, handler, finalizer));
 58006  	    };
 58007  	    // https://tc39.github.io/ecma262/#sec-debugger-statement
 58008  	    Parser.prototype.parseDebuggerStatement = function () {
 58009  	        var node = this.createNode();
 58010  	        this.expectKeyword('debugger');
 58011  	        this.consumeSemicolon();
 58012  	        return this.finalize(node, new Node.DebuggerStatement());
 58013  	    };
 58014  	    // https://tc39.github.io/ecma262/#sec-ecmascript-language-statements-and-declarations
 58015  	    Parser.prototype.parseStatement = function () {
 58016  	        var statement;
 58017  	        switch (this.lookahead.type) {
 58018  	            case 1 /* BooleanLiteral */:
 58019  	            case 5 /* NullLiteral */:
 58020  	            case 6 /* NumericLiteral */:
 58021  	            case 8 /* StringLiteral */:
 58022  	            case 10 /* Template */:
 58023  	            case 9 /* RegularExpression */:
 58024  	                statement = this.parseExpressionStatement();
 58025  	                break;
 58026  	            case 7 /* Punctuator */:
 58027  	                var value = this.lookahead.value;
 58028  	                if (value === '{') {
 58029  	                    statement = this.parseBlock();
 58030  	                }
 58031  	                else if (value === '(') {
 58032  	                    statement = this.parseExpressionStatement();
 58033  	                }
 58034  	                else if (value === ';') {
 58035  	                    statement = this.parseEmptyStatement();
 58036  	                }
 58037  	                else {
 58038  	                    statement = this.parseExpressionStatement();
 58039  	                }
 58040  	                break;
 58041  	            case 3 /* Identifier */:
 58042  	                statement = this.matchAsyncFunction() ? this.parseFunctionDeclaration() : this.parseLabelledStatement();
 58043  	                break;
 58044  	            case 4 /* Keyword */:
 58045  	                switch (this.lookahead.value) {
 58046  	                    case 'break':
 58047  	                        statement = this.parseBreakStatement();
 58048  	                        break;
 58049  	                    case 'continue':
 58050  	                        statement = this.parseContinueStatement();
 58051  	                        break;
 58052  	                    case 'debugger':
 58053  	                        statement = this.parseDebuggerStatement();
 58054  	                        break;
 58055  	                    case 'do':
 58056  	                        statement = this.parseDoWhileStatement();
 58057  	                        break;
 58058  	                    case 'for':
 58059  	                        statement = this.parseForStatement();
 58060  	                        break;
 58061  	                    case 'function':
 58062  	                        statement = this.parseFunctionDeclaration();
 58063  	                        break;
 58064  	                    case 'if':
 58065  	                        statement = this.parseIfStatement();
 58066  	                        break;
 58067  	                    case 'return':
 58068  	                        statement = this.parseReturnStatement();
 58069  	                        break;
 58070  	                    case 'switch':
 58071  	                        statement = this.parseSwitchStatement();
 58072  	                        break;
 58073  	                    case 'throw':
 58074  	                        statement = this.parseThrowStatement();
 58075  	                        break;
 58076  	                    case 'try':
 58077  	                        statement = this.parseTryStatement();
 58078  	                        break;
 58079  	                    case 'var':
 58080  	                        statement = this.parseVariableStatement();
 58081  	                        break;
 58082  	                    case 'while':
 58083  	                        statement = this.parseWhileStatement();
 58084  	                        break;
 58085  	                    case 'with':
 58086  	                        statement = this.parseWithStatement();
 58087  	                        break;
 58088  	                    default:
 58089  	                        statement = this.parseExpressionStatement();
 58090  	                        break;
 58091  	                }
 58092  	                break;
 58093  	            default:
 58094  	                statement = this.throwUnexpectedToken(this.lookahead);
 58095  	        }
 58096  	        return statement;
 58097  	    };
 58098  	    // https://tc39.github.io/ecma262/#sec-function-definitions
 58099  	    Parser.prototype.parseFunctionSourceElements = function () {
 58100  	        var node = this.createNode();
 58101  	        this.expect('{');
 58102  	        var body = this.parseDirectivePrologues();
 58103  	        var previousLabelSet = this.context.labelSet;
 58104  	        var previousInIteration = this.context.inIteration;
 58105  	        var previousInSwitch = this.context.inSwitch;
 58106  	        var previousInFunctionBody = this.context.inFunctionBody;
 58107  	        this.context.labelSet = {};
 58108  	        this.context.inIteration = false;
 58109  	        this.context.inSwitch = false;
 58110  	        this.context.inFunctionBody = true;
 58111  	        while (this.lookahead.type !== 2 /* EOF */) {
 58112  	            if (this.match('}')) {
 58113  	                break;
 58114  	            }
 58115  	            body.push(this.parseStatementListItem());
 58116  	        }
 58117  	        this.expect('}');
 58118  	        this.context.labelSet = previousLabelSet;
 58119  	        this.context.inIteration = previousInIteration;
 58120  	        this.context.inSwitch = previousInSwitch;
 58121  	        this.context.inFunctionBody = previousInFunctionBody;
 58122  	        return this.finalize(node, new Node.BlockStatement(body));
 58123  	    };
 58124  	    Parser.prototype.validateParam = function (options, param, name) {
 58125  	        var key = '$' + name;
 58126  	        if (this.context.strict) {
 58127  	            if (this.scanner.isRestrictedWord(name)) {
 58128  	                options.stricted = param;
 58129  	                options.message = messages_1.Messages.StrictParamName;
 58130  	            }
 58131  	            if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {
 58132  	                options.stricted = param;
 58133  	                options.message = messages_1.Messages.StrictParamDupe;
 58134  	            }
 58135  	        }
 58136  	        else if (!options.firstRestricted) {
 58137  	            if (this.scanner.isRestrictedWord(name)) {
 58138  	                options.firstRestricted = param;
 58139  	                options.message = messages_1.Messages.StrictParamName;
 58140  	            }
 58141  	            else if (this.scanner.isStrictModeReservedWord(name)) {
 58142  	                options.firstRestricted = param;
 58143  	                options.message = messages_1.Messages.StrictReservedWord;
 58144  	            }
 58145  	            else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {
 58146  	                options.stricted = param;
 58147  	                options.message = messages_1.Messages.StrictParamDupe;
 58148  	            }
 58149  	        }
 58150  	        /* istanbul ignore next */
 58151  	        if (typeof Object.defineProperty === 'function') {
 58152  	            Object.defineProperty(options.paramSet, key, { value: true, enumerable: true, writable: true, configurable: true });
 58153  	        }
 58154  	        else {
 58155  	            options.paramSet[key] = true;
 58156  	        }
 58157  	    };
 58158  	    Parser.prototype.parseRestElement = function (params) {
 58159  	        var node = this.createNode();
 58160  	        this.expect('...');
 58161  	        var arg = this.parsePattern(params);
 58162  	        if (this.match('=')) {
 58163  	            this.throwError(messages_1.Messages.DefaultRestParameter);
 58164  	        }
 58165  	        if (!this.match(')')) {
 58166  	            this.throwError(messages_1.Messages.ParameterAfterRestParameter);
 58167  	        }
 58168  	        return this.finalize(node, new Node.RestElement(arg));
 58169  	    };
 58170  	    Parser.prototype.parseFormalParameter = function (options) {
 58171  	        var params = [];
 58172  	        var param = this.match('...') ? this.parseRestElement(params) : this.parsePatternWithDefault(params);
 58173  	        for (var i = 0; i < params.length; i++) {
 58174  	            this.validateParam(options, params[i], params[i].value);
 58175  	        }
 58176  	        options.simple = options.simple && (param instanceof Node.Identifier);
 58177  	        options.params.push(param);
 58178  	    };
 58179  	    Parser.prototype.parseFormalParameters = function (firstRestricted) {
 58180  	        var options;
 58181  	        options = {
 58182  	            simple: true,
 58183  	            params: [],
 58184  	            firstRestricted: firstRestricted
 58185  	        };
 58186  	        this.expect('(');
 58187  	        if (!this.match(')')) {
 58188  	            options.paramSet = {};
 58189  	            while (this.lookahead.type !== 2 /* EOF */) {
 58190  	                this.parseFormalParameter(options);
 58191  	                if (this.match(')')) {
 58192  	                    break;
 58193  	                }
 58194  	                this.expect(',');
 58195  	                if (this.match(')')) {
 58196  	                    break;
 58197  	                }
 58198  	            }
 58199  	        }
 58200  	        this.expect(')');
 58201  	        return {
 58202  	            simple: options.simple,
 58203  	            params: options.params,
 58204  	            stricted: options.stricted,
 58205  	            firstRestricted: options.firstRestricted,
 58206  	            message: options.message
 58207  	        };
 58208  	    };
 58209  	    Parser.prototype.matchAsyncFunction = function () {
 58210  	        var match = this.matchContextualKeyword('async');
 58211  	        if (match) {
 58212  	            var state = this.scanner.saveState();
 58213  	            this.scanner.scanComments();
 58214  	            var next = this.scanner.lex();
 58215  	            this.scanner.restoreState(state);
 58216  	            match = (state.lineNumber === next.lineNumber) && (next.type === 4 /* Keyword */) && (next.value === 'function');
 58217  	        }
 58218  	        return match;
 58219  	    };
 58220  	    Parser.prototype.parseFunctionDeclaration = function (identifierIsOptional) {
 58221  	        var node = this.createNode();
 58222  	        var isAsync = this.matchContextualKeyword('async');
 58223  	        if (isAsync) {
 58224  	            this.nextToken();
 58225  	        }
 58226  	        this.expectKeyword('function');
 58227  	        var isGenerator = isAsync ? false : this.match('*');
 58228  	        if (isGenerator) {
 58229  	            this.nextToken();
 58230  	        }
 58231  	        var message;
 58232  	        var id = null;
 58233  	        var firstRestricted = null;
 58234  	        if (!identifierIsOptional || !this.match('(')) {
 58235  	            var token = this.lookahead;
 58236  	            id = this.parseVariableIdentifier();
 58237  	            if (this.context.strict) {
 58238  	                if (this.scanner.isRestrictedWord(token.value)) {
 58239  	                    this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);
 58240  	                }
 58241  	            }
 58242  	            else {
 58243  	                if (this.scanner.isRestrictedWord(token.value)) {
 58244  	                    firstRestricted = token;
 58245  	                    message = messages_1.Messages.StrictFunctionName;
 58246  	                }
 58247  	                else if (this.scanner.isStrictModeReservedWord(token.value)) {
 58248  	                    firstRestricted = token;
 58249  	                    message = messages_1.Messages.StrictReservedWord;
 58250  	                }
 58251  	            }
 58252  	        }
 58253  	        var previousAllowAwait = this.context.await;
 58254  	        var previousAllowYield = this.context.allowYield;
 58255  	        this.context.await = isAsync;
 58256  	        this.context.allowYield = !isGenerator;
 58257  	        var formalParameters = this.parseFormalParameters(firstRestricted);
 58258  	        var params = formalParameters.params;
 58259  	        var stricted = formalParameters.stricted;
 58260  	        firstRestricted = formalParameters.firstRestricted;
 58261  	        if (formalParameters.message) {
 58262  	            message = formalParameters.message;
 58263  	        }
 58264  	        var previousStrict = this.context.strict;
 58265  	        var previousAllowStrictDirective = this.context.allowStrictDirective;
 58266  	        this.context.allowStrictDirective = formalParameters.simple;
 58267  	        var body = this.parseFunctionSourceElements();
 58268  	        if (this.context.strict && firstRestricted) {
 58269  	            this.throwUnexpectedToken(firstRestricted, message);
 58270  	        }
 58271  	        if (this.context.strict && stricted) {
 58272  	            this.tolerateUnexpectedToken(stricted, message);
 58273  	        }
 58274  	        this.context.strict = previousStrict;
 58275  	        this.context.allowStrictDirective = previousAllowStrictDirective;
 58276  	        this.context.await = previousAllowAwait;
 58277  	        this.context.allowYield = previousAllowYield;
 58278  	        return isAsync ? this.finalize(node, new Node.AsyncFunctionDeclaration(id, params, body)) :
 58279  	            this.finalize(node, new Node.FunctionDeclaration(id, params, body, isGenerator));
 58280  	    };
 58281  	    Parser.prototype.parseFunctionExpression = function () {
 58282  	        var node = this.createNode();
 58283  	        var isAsync = this.matchContextualKeyword('async');
 58284  	        if (isAsync) {
 58285  	            this.nextToken();
 58286  	        }
 58287  	        this.expectKeyword('function');
 58288  	        var isGenerator = isAsync ? false : this.match('*');
 58289  	        if (isGenerator) {
 58290  	            this.nextToken();
 58291  	        }
 58292  	        var message;
 58293  	        var id = null;
 58294  	        var firstRestricted;
 58295  	        var previousAllowAwait = this.context.await;
 58296  	        var previousAllowYield = this.context.allowYield;
 58297  	        this.context.await = isAsync;
 58298  	        this.context.allowYield = !isGenerator;
 58299  	        if (!this.match('(')) {
 58300  	            var token = this.lookahead;
 58301  	            id = (!this.context.strict && !isGenerator && this.matchKeyword('yield')) ? this.parseIdentifierName() : this.parseVariableIdentifier();
 58302  	            if (this.context.strict) {
 58303  	                if (this.scanner.isRestrictedWord(token.value)) {
 58304  	                    this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);
 58305  	                }
 58306  	            }
 58307  	            else {
 58308  	                if (this.scanner.isRestrictedWord(token.value)) {
 58309  	                    firstRestricted = token;
 58310  	                    message = messages_1.Messages.StrictFunctionName;
 58311  	                }
 58312  	                else if (this.scanner.isStrictModeReservedWord(token.value)) {
 58313  	                    firstRestricted = token;
 58314  	                    message = messages_1.Messages.StrictReservedWord;
 58315  	                }
 58316  	            }
 58317  	        }
 58318  	        var formalParameters = this.parseFormalParameters(firstRestricted);
 58319  	        var params = formalParameters.params;
 58320  	        var stricted = formalParameters.stricted;
 58321  	        firstRestricted = formalParameters.firstRestricted;
 58322  	        if (formalParameters.message) {
 58323  	            message = formalParameters.message;
 58324  	        }
 58325  	        var previousStrict = this.context.strict;
 58326  	        var previousAllowStrictDirective = this.context.allowStrictDirective;
 58327  	        this.context.allowStrictDirective = formalParameters.simple;
 58328  	        var body = this.parseFunctionSourceElements();
 58329  	        if (this.context.strict && firstRestricted) {
 58330  	            this.throwUnexpectedToken(firstRestricted, message);
 58331  	        }
 58332  	        if (this.context.strict && stricted) {
 58333  	            this.tolerateUnexpectedToken(stricted, message);
 58334  	        }
 58335  	        this.context.strict = previousStrict;
 58336  	        this.context.allowStrictDirective = previousAllowStrictDirective;
 58337  	        this.context.await = previousAllowAwait;
 58338  	        this.context.allowYield = previousAllowYield;
 58339  	        return isAsync ? this.finalize(node, new Node.AsyncFunctionExpression(id, params, body)) :
 58340  	            this.finalize(node, new Node.FunctionExpression(id, params, body, isGenerator));
 58341  	    };
 58342  	    // https://tc39.github.io/ecma262/#sec-directive-prologues-and-the-use-strict-directive
 58343  	    Parser.prototype.parseDirective = function () {
 58344  	        var token = this.lookahead;
 58345  	        var node = this.createNode();
 58346  	        var expr = this.parseExpression();
 58347  	        var directive = (expr.type === syntax_1.Syntax.Literal) ? this.getTokenRaw(token).slice(1, -1) : null;
 58348  	        this.consumeSemicolon();
 58349  	        return this.finalize(node, directive ? new Node.Directive(expr, directive) : new Node.ExpressionStatement(expr));
 58350  	    };
 58351  	    Parser.prototype.parseDirectivePrologues = function () {
 58352  	        var firstRestricted = null;
 58353  	        var body = [];
 58354  	        while (true) {
 58355  	            var token = this.lookahead;
 58356  	            if (token.type !== 8 /* StringLiteral */) {
 58357  	                break;
 58358  	            }
 58359  	            var statement = this.parseDirective();
 58360  	            body.push(statement);
 58361  	            var directive = statement.directive;
 58362  	            if (typeof directive !== 'string') {
 58363  	                break;
 58364  	            }
 58365  	            if (directive === 'use strict') {
 58366  	                this.context.strict = true;
 58367  	                if (firstRestricted) {
 58368  	                    this.tolerateUnexpectedToken(firstRestricted, messages_1.Messages.StrictOctalLiteral);
 58369  	                }
 58370  	                if (!this.context.allowStrictDirective) {
 58371  	                    this.tolerateUnexpectedToken(token, messages_1.Messages.IllegalLanguageModeDirective);
 58372  	                }
 58373  	            }
 58374  	            else {
 58375  	                if (!firstRestricted && token.octal) {
 58376  	                    firstRestricted = token;
 58377  	                }
 58378  	            }
 58379  	        }
 58380  	        return body;
 58381  	    };
 58382  	    // https://tc39.github.io/ecma262/#sec-method-definitions
 58383  	    Parser.prototype.qualifiedPropertyName = function (token) {
 58384  	        switch (token.type) {
 58385  	            case 3 /* Identifier */:
 58386  	            case 8 /* StringLiteral */:
 58387  	            case 1 /* BooleanLiteral */:
 58388  	            case 5 /* NullLiteral */:
 58389  	            case 6 /* NumericLiteral */:
 58390  	            case 4 /* Keyword */:
 58391  	                return true;
 58392  	            case 7 /* Punctuator */:
 58393  	                return token.value === '[';
 58394  	            default:
 58395  	                break;
 58396  	        }
 58397  	        return false;
 58398  	    };
 58399  	    Parser.prototype.parseGetterMethod = function () {
 58400  	        var node = this.createNode();
 58401  	        var isGenerator = false;
 58402  	        var previousAllowYield = this.context.allowYield;
 58403  	        this.context.allowYield = !isGenerator;
 58404  	        var formalParameters = this.parseFormalParameters();
 58405  	        if (formalParameters.params.length > 0) {
 58406  	            this.tolerateError(messages_1.Messages.BadGetterArity);
 58407  	        }
 58408  	        var method = this.parsePropertyMethod(formalParameters);
 58409  	        this.context.allowYield = previousAllowYield;
 58410  	        return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));
 58411  	    };
 58412  	    Parser.prototype.parseSetterMethod = function () {
 58413  	        var node = this.createNode();
 58414  	        var isGenerator = false;
 58415  	        var previousAllowYield = this.context.allowYield;
 58416  	        this.context.allowYield = !isGenerator;
 58417  	        var formalParameters = this.parseFormalParameters();
 58418  	        if (formalParameters.params.length !== 1) {
 58419  	            this.tolerateError(messages_1.Messages.BadSetterArity);
 58420  	        }
 58421  	        else if (formalParameters.params[0] instanceof Node.RestElement) {
 58422  	            this.tolerateError(messages_1.Messages.BadSetterRestParameter);
 58423  	        }
 58424  	        var method = this.parsePropertyMethod(formalParameters);
 58425  	        this.context.allowYield = previousAllowYield;
 58426  	        return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));
 58427  	    };
 58428  	    Parser.prototype.parseGeneratorMethod = function () {
 58429  	        var node = this.createNode();
 58430  	        var isGenerator = true;
 58431  	        var previousAllowYield = this.context.allowYield;
 58432  	        this.context.allowYield = true;
 58433  	        var params = this.parseFormalParameters();
 58434  	        this.context.allowYield = false;
 58435  	        var method = this.parsePropertyMethod(params);
 58436  	        this.context.allowYield = previousAllowYield;
 58437  	        return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));
 58438  	    };
 58439  	    // https://tc39.github.io/ecma262/#sec-generator-function-definitions
 58440  	    Parser.prototype.isStartOfExpression = function () {
 58441  	        var start = true;
 58442  	        var value = this.lookahead.value;
 58443  	        switch (this.lookahead.type) {
 58444  	            case 7 /* Punctuator */:
 58445  	                start = (value === '[') || (value === '(') || (value === '{') ||
 58446  	                    (value === '+') || (value === '-') ||
 58447  	                    (value === '!') || (value === '~') ||
 58448  	                    (value === '++') || (value === '--') ||
 58449  	                    (value === '/') || (value === '/='); // regular expression literal
 58450  	                break;
 58451  	            case 4 /* Keyword */:
 58452  	                start = (value === 'class') || (value === 'delete') ||
 58453  	                    (value === 'function') || (value === 'let') || (value === 'new') ||
 58454  	                    (value === 'super') || (value === 'this') || (value === 'typeof') ||
 58455  	                    (value === 'void') || (value === 'yield');
 58456  	                break;
 58457  	            default:
 58458  	                break;
 58459  	        }
 58460  	        return start;
 58461  	    };
 58462  	    Parser.prototype.parseYieldExpression = function () {
 58463  	        var node = this.createNode();
 58464  	        this.expectKeyword('yield');
 58465  	        var argument = null;
 58466  	        var delegate = false;
 58467  	        if (!this.hasLineTerminator) {
 58468  	            var previousAllowYield = this.context.allowYield;
 58469  	            this.context.allowYield = false;
 58470  	            delegate = this.match('*');
 58471  	            if (delegate) {
 58472  	                this.nextToken();
 58473  	                argument = this.parseAssignmentExpression();
 58474  	            }
 58475  	            else if (this.isStartOfExpression()) {
 58476  	                argument = this.parseAssignmentExpression();
 58477  	            }
 58478  	            this.context.allowYield = previousAllowYield;
 58479  	        }
 58480  	        return this.finalize(node, new Node.YieldExpression(argument, delegate));
 58481  	    };
 58482  	    // https://tc39.github.io/ecma262/#sec-class-definitions
 58483  	    Parser.prototype.parseClassElement = function (hasConstructor) {
 58484  	        var token = this.lookahead;
 58485  	        var node = this.createNode();
 58486  	        var kind = '';
 58487  	        var key = null;
 58488  	        var value = null;
 58489  	        var computed = false;
 58490  	        var method = false;
 58491  	        var isStatic = false;
 58492  	        var isAsync = false;
 58493  	        if (this.match('*')) {
 58494  	            this.nextToken();
 58495  	        }
 58496  	        else {
 58497  	            computed = this.match('[');
 58498  	            key = this.parseObjectPropertyKey();
 58499  	            var id = key;
 58500  	            if (id.name === 'static' && (this.qualifiedPropertyName(this.lookahead) || this.match('*'))) {
 58501  	                token = this.lookahead;
 58502  	                isStatic = true;
 58503  	                computed = this.match('[');
 58504  	                if (this.match('*')) {
 58505  	                    this.nextToken();
 58506  	                }
 58507  	                else {
 58508  	                    key = this.parseObjectPropertyKey();
 58509  	                }
 58510  	            }
 58511  	            if ((token.type === 3 /* Identifier */) && !this.hasLineTerminator && (token.value === 'async')) {
 58512  	                var punctuator = this.lookahead.value;
 58513  	                if (punctuator !== ':' && punctuator !== '(' && punctuator !== '*') {
 58514  	                    isAsync = true;
 58515  	                    token = this.lookahead;
 58516  	                    key = this.parseObjectPropertyKey();
 58517  	                    if (token.type === 3 /* Identifier */ && token.value === 'constructor') {
 58518  	                        this.tolerateUnexpectedToken(token, messages_1.Messages.ConstructorIsAsync);
 58519  	                    }
 58520  	                }
 58521  	            }
 58522  	        }
 58523  	        var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);
 58524  	        if (token.type === 3 /* Identifier */) {
 58525  	            if (token.value === 'get' && lookaheadPropertyKey) {
 58526  	                kind = 'get';
 58527  	                computed = this.match('[');
 58528  	                key = this.parseObjectPropertyKey();
 58529  	                this.context.allowYield = false;
 58530  	                value = this.parseGetterMethod();
 58531  	            }
 58532  	            else if (token.value === 'set' && lookaheadPropertyKey) {
 58533  	                kind = 'set';
 58534  	                computed = this.match('[');
 58535  	                key = this.parseObjectPropertyKey();
 58536  	                value = this.parseSetterMethod();
 58537  	            }
 58538  	        }
 58539  	        else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {
 58540  	            kind = 'init';
 58541  	            computed = this.match('[');
 58542  	            key = this.parseObjectPropertyKey();
 58543  	            value = this.parseGeneratorMethod();
 58544  	            method = true;
 58545  	        }
 58546  	        if (!kind && key && this.match('(')) {
 58547  	            kind = 'init';
 58548  	            value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();
 58549  	            method = true;
 58550  	        }
 58551  	        if (!kind) {
 58552  	            this.throwUnexpectedToken(this.lookahead);
 58553  	        }
 58554  	        if (kind === 'init') {
 58555  	            kind = 'method';
 58556  	        }
 58557  	        if (!computed) {
 58558  	            if (isStatic && this.isPropertyKey(key, 'prototype')) {
 58559  	                this.throwUnexpectedToken(token, messages_1.Messages.StaticPrototype);
 58560  	            }
 58561  	            if (!isStatic && this.isPropertyKey(key, 'constructor')) {
 58562  	                if (kind !== 'method' || !method || (value && value.generator)) {
 58563  	                    this.throwUnexpectedToken(token, messages_1.Messages.ConstructorSpecialMethod);
 58564  	                }
 58565  	                if (hasConstructor.value) {
 58566  	                    this.throwUnexpectedToken(token, messages_1.Messages.DuplicateConstructor);
 58567  	                }
 58568  	                else {
 58569  	                    hasConstructor.value = true;
 58570  	                }
 58571  	                kind = 'constructor';
 58572  	            }
 58573  	        }
 58574  	        return this.finalize(node, new Node.MethodDefinition(key, computed, value, kind, isStatic));
 58575  	    };
 58576  	    Parser.prototype.parseClassElementList = function () {
 58577  	        var body = [];
 58578  	        var hasConstructor = { value: false };
 58579  	        this.expect('{');
 58580  	        while (!this.match('}')) {
 58581  	            if (this.match(';')) {
 58582  	                this.nextToken();
 58583  	            }
 58584  	            else {
 58585  	                body.push(this.parseClassElement(hasConstructor));
 58586  	            }
 58587  	        }
 58588  	        this.expect('}');
 58589  	        return body;
 58590  	    };
 58591  	    Parser.prototype.parseClassBody = function () {
 58592  	        var node = this.createNode();
 58593  	        var elementList = this.parseClassElementList();
 58594  	        return this.finalize(node, new Node.ClassBody(elementList));
 58595  	    };
 58596  	    Parser.prototype.parseClassDeclaration = function (identifierIsOptional) {
 58597  	        var node = this.createNode();
 58598  	        var previousStrict = this.context.strict;
 58599  	        this.context.strict = true;
 58600  	        this.expectKeyword('class');
 58601  	        var id = (identifierIsOptional && (this.lookahead.type !== 3 /* Identifier */)) ? null : this.parseVariableIdentifier();
 58602  	        var superClass = null;
 58603  	        if (this.matchKeyword('extends')) {
 58604  	            this.nextToken();
 58605  	            superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);
 58606  	        }
 58607  	        var classBody = this.parseClassBody();
 58608  	        this.context.strict = previousStrict;
 58609  	        return this.finalize(node, new Node.ClassDeclaration(id, superClass, classBody));
 58610  	    };
 58611  	    Parser.prototype.parseClassExpression = function () {
 58612  	        var node = this.createNode();
 58613  	        var previousStrict = this.context.strict;
 58614  	        this.context.strict = true;
 58615  	        this.expectKeyword('class');
 58616  	        var id = (this.lookahead.type === 3 /* Identifier */) ? this.parseVariableIdentifier() : null;
 58617  	        var superClass = null;
 58618  	        if (this.matchKeyword('extends')) {
 58619  	            this.nextToken();
 58620  	            superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);
 58621  	        }
 58622  	        var classBody = this.parseClassBody();
 58623  	        this.context.strict = previousStrict;
 58624  	        return this.finalize(node, new Node.ClassExpression(id, superClass, classBody));
 58625  	    };
 58626  	    // https://tc39.github.io/ecma262/#sec-scripts
 58627  	    // https://tc39.github.io/ecma262/#sec-modules
 58628  	    Parser.prototype.parseModule = function () {
 58629  	        this.context.strict = true;
 58630  	        this.context.isModule = true;
 58631  	        this.scanner.isModule = true;
 58632  	        var node = this.createNode();
 58633  	        var body = this.parseDirectivePrologues();
 58634  	        while (this.lookahead.type !== 2 /* EOF */) {
 58635  	            body.push(this.parseStatementListItem());
 58636  	        }
 58637  	        return this.finalize(node, new Node.Module(body));
 58638  	    };
 58639  	    Parser.prototype.parseScript = function () {
 58640  	        var node = this.createNode();
 58641  	        var body = this.parseDirectivePrologues();
 58642  	        while (this.lookahead.type !== 2 /* EOF */) {
 58643  	            body.push(this.parseStatementListItem());
 58644  	        }
 58645  	        return this.finalize(node, new Node.Script(body));
 58646  	    };
 58647  	    // https://tc39.github.io/ecma262/#sec-imports
 58648  	    Parser.prototype.parseModuleSpecifier = function () {
 58649  	        var node = this.createNode();
 58650  	        if (this.lookahead.type !== 8 /* StringLiteral */) {
 58651  	            this.throwError(messages_1.Messages.InvalidModuleSpecifier);
 58652  	        }
 58653  	        var token = this.nextToken();
 58654  	        var raw = this.getTokenRaw(token);
 58655  	        return this.finalize(node, new Node.Literal(token.value, raw));
 58656  	    };
 58657  	    // import {<foo as bar>} ...;
 58658  	    Parser.prototype.parseImportSpecifier = function () {
 58659  	        var node = this.createNode();
 58660  	        var imported;
 58661  	        var local;
 58662  	        if (this.lookahead.type === 3 /* Identifier */) {
 58663  	            imported = this.parseVariableIdentifier();
 58664  	            local = imported;
 58665  	            if (this.matchContextualKeyword('as')) {
 58666  	                this.nextToken();
 58667  	                local = this.parseVariableIdentifier();
 58668  	            }
 58669  	        }
 58670  	        else {
 58671  	            imported = this.parseIdentifierName();
 58672  	            local = imported;
 58673  	            if (this.matchContextualKeyword('as')) {
 58674  	                this.nextToken();
 58675  	                local = this.parseVariableIdentifier();
 58676  	            }
 58677  	            else {
 58678  	                this.throwUnexpectedToken(this.nextToken());
 58679  	            }
 58680  	        }
 58681  	        return this.finalize(node, new Node.ImportSpecifier(local, imported));
 58682  	    };
 58683  	    // {foo, bar as bas}
 58684  	    Parser.prototype.parseNamedImports = function () {
 58685  	        this.expect('{');
 58686  	        var specifiers = [];
 58687  	        while (!this.match('}')) {
 58688  	            specifiers.push(this.parseImportSpecifier());
 58689  	            if (!this.match('}')) {
 58690  	                this.expect(',');
 58691  	            }
 58692  	        }
 58693  	        this.expect('}');
 58694  	        return specifiers;
 58695  	    };
 58696  	    // import <foo> ...;
 58697  	    Parser.prototype.parseImportDefaultSpecifier = function () {
 58698  	        var node = this.createNode();
 58699  	        var local = this.parseIdentifierName();
 58700  	        return this.finalize(node, new Node.ImportDefaultSpecifier(local));
 58701  	    };
 58702  	    // import <* as foo> ...;
 58703  	    Parser.prototype.parseImportNamespaceSpecifier = function () {
 58704  	        var node = this.createNode();
 58705  	        this.expect('*');
 58706  	        if (!this.matchContextualKeyword('as')) {
 58707  	            this.throwError(messages_1.Messages.NoAsAfterImportNamespace);
 58708  	        }
 58709  	        this.nextToken();
 58710  	        var local = this.parseIdentifierName();
 58711  	        return this.finalize(node, new Node.ImportNamespaceSpecifier(local));
 58712  	    };
 58713  	    Parser.prototype.parseImportDeclaration = function () {
 58714  	        if (this.context.inFunctionBody) {
 58715  	            this.throwError(messages_1.Messages.IllegalImportDeclaration);
 58716  	        }
 58717  	        var node = this.createNode();
 58718  	        this.expectKeyword('import');
 58719  	        var src;
 58720  	        var specifiers = [];
 58721  	        if (this.lookahead.type === 8 /* StringLiteral */) {
 58722  	            // import 'foo';
 58723  	            src = this.parseModuleSpecifier();
 58724  	        }
 58725  	        else {
 58726  	            if (this.match('{')) {
 58727  	                // import {bar}
 58728  	                specifiers = specifiers.concat(this.parseNamedImports());
 58729  	            }
 58730  	            else if (this.match('*')) {
 58731  	                // import * as foo
 58732  	                specifiers.push(this.parseImportNamespaceSpecifier());
 58733  	            }
 58734  	            else if (this.isIdentifierName(this.lookahead) && !this.matchKeyword('default')) {
 58735  	                // import foo
 58736  	                specifiers.push(this.parseImportDefaultSpecifier());
 58737  	                if (this.match(',')) {
 58738  	                    this.nextToken();
 58739  	                    if (this.match('*')) {
 58740  	                        // import foo, * as foo
 58741  	                        specifiers.push(this.parseImportNamespaceSpecifier());
 58742  	                    }
 58743  	                    else if (this.match('{')) {
 58744  	                        // import foo, {bar}
 58745  	                        specifiers = specifiers.concat(this.parseNamedImports());
 58746  	                    }
 58747  	                    else {
 58748  	                        this.throwUnexpectedToken(this.lookahead);
 58749  	                    }
 58750  	                }
 58751  	            }
 58752  	            else {
 58753  	                this.throwUnexpectedToken(this.nextToken());
 58754  	            }
 58755  	            if (!this.matchContextualKeyword('from')) {
 58756  	                var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;
 58757  	                this.throwError(message, this.lookahead.value);
 58758  	            }
 58759  	            this.nextToken();
 58760  	            src = this.parseModuleSpecifier();
 58761  	        }
 58762  	        this.consumeSemicolon();
 58763  	        return this.finalize(node, new Node.ImportDeclaration(specifiers, src));
 58764  	    };
 58765  	    // https://tc39.github.io/ecma262/#sec-exports
 58766  	    Parser.prototype.parseExportSpecifier = function () {
 58767  	        var node = this.createNode();
 58768  	        var local = this.parseIdentifierName();
 58769  	        var exported = local;
 58770  	        if (this.matchContextualKeyword('as')) {
 58771  	            this.nextToken();
 58772  	            exported = this.parseIdentifierName();
 58773  	        }
 58774  	        return this.finalize(node, new Node.ExportSpecifier(local, exported));
 58775  	    };
 58776  	    Parser.prototype.parseExportDeclaration = function () {
 58777  	        if (this.context.inFunctionBody) {
 58778  	            this.throwError(messages_1.Messages.IllegalExportDeclaration);
 58779  	        }
 58780  	        var node = this.createNode();
 58781  	        this.expectKeyword('export');
 58782  	        var exportDeclaration;
 58783  	        if (this.matchKeyword('default')) {
 58784  	            // export default ...
 58785  	            this.nextToken();
 58786  	            if (this.matchKeyword('function')) {
 58787  	                // export default function foo () {}
 58788  	                // export default function () {}
 58789  	                var declaration = this.parseFunctionDeclaration(true);
 58790  	                exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));
 58791  	            }
 58792  	            else if (this.matchKeyword('class')) {
 58793  	                // export default class foo {}
 58794  	                var declaration = this.parseClassDeclaration(true);
 58795  	                exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));
 58796  	            }
 58797  	            else if (this.matchContextualKeyword('async')) {
 58798  	                // export default async function f () {}
 58799  	                // export default async function () {}
 58800  	                // export default async x => x
 58801  	                var declaration = this.matchAsyncFunction() ? this.parseFunctionDeclaration(true) : this.parseAssignmentExpression();
 58802  	                exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));
 58803  	            }
 58804  	            else {
 58805  	                if (this.matchContextualKeyword('from')) {
 58806  	                    this.throwError(messages_1.Messages.UnexpectedToken, this.lookahead.value);
 58807  	                }
 58808  	                // export default {};
 58809  	                // export default [];
 58810  	                // export default (1 + 2);
 58811  	                var declaration = this.match('{') ? this.parseObjectInitializer() :
 58812  	                    this.match('[') ? this.parseArrayInitializer() : this.parseAssignmentExpression();
 58813  	                this.consumeSemicolon();
 58814  	                exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));
 58815  	            }
 58816  	        }
 58817  	        else if (this.match('*')) {
 58818  	            // export * from 'foo';
 58819  	            this.nextToken();
 58820  	            if (!this.matchContextualKeyword('from')) {
 58821  	                var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;
 58822  	                this.throwError(message, this.lookahead.value);
 58823  	            }
 58824  	            this.nextToken();
 58825  	            var src = this.parseModuleSpecifier();
 58826  	            this.consumeSemicolon();
 58827  	            exportDeclaration = this.finalize(node, new Node.ExportAllDeclaration(src));
 58828  	        }
 58829  	        else if (this.lookahead.type === 4 /* Keyword */) {
 58830  	            // export var f = 1;
 58831  	            var declaration = void 0;
 58832  	            switch (this.lookahead.value) {
 58833  	                case 'let':
 58834  	                case 'const':
 58835  	                    declaration = this.parseLexicalDeclaration({ inFor: false });
 58836  	                    break;
 58837  	                case 'var':
 58838  	                case 'class':
 58839  	                case 'function':
 58840  	                    declaration = this.parseStatementListItem();
 58841  	                    break;
 58842  	                default:
 58843  	                    this.throwUnexpectedToken(this.lookahead);
 58844  	            }
 58845  	            exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));
 58846  	        }
 58847  	        else if (this.matchAsyncFunction()) {
 58848  	            var declaration = this.parseFunctionDeclaration();
 58849  	            exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));
 58850  	        }
 58851  	        else {
 58852  	            var specifiers = [];
 58853  	            var source = null;
 58854  	            var isExportFromIdentifier = false;
 58855  	            this.expect('{');
 58856  	            while (!this.match('}')) {
 58857  	                isExportFromIdentifier = isExportFromIdentifier || this.matchKeyword('default');
 58858  	                specifiers.push(this.parseExportSpecifier());
 58859  	                if (!this.match('}')) {
 58860  	                    this.expect(',');
 58861  	                }
 58862  	            }
 58863  	            this.expect('}');
 58864  	            if (this.matchContextualKeyword('from')) {
 58865  	                // export {default} from 'foo';
 58866  	                // export {foo} from 'foo';
 58867  	                this.nextToken();
 58868  	                source = this.parseModuleSpecifier();
 58869  	                this.consumeSemicolon();
 58870  	            }
 58871  	            else if (isExportFromIdentifier) {
 58872  	                // export {default}; // missing fromClause
 58873  	                var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;
 58874  	                this.throwError(message, this.lookahead.value);
 58875  	            }
 58876  	            else {
 58877  	                // export {foo};
 58878  	                this.consumeSemicolon();
 58879  	            }
 58880  	            exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(null, specifiers, source));
 58881  	        }
 58882  	        return exportDeclaration;
 58883  	    };
 58884  	    return Parser;
 58885  	}());
 58886  	exports.Parser = Parser;
 58887  
 58888  
 58889  /***/ },
 58890  /* 9 */
 58891  /***/ function(module, exports) {
 58892  
 58893  	"use strict";
 58894  	// Ensure the condition is true, otherwise throw an error.
 58895  	// This is only to have a better contract semantic, i.e. another safety net
 58896  	// to catch a logic error. The condition shall be fulfilled in normal case.
 58897  	// Do NOT use this to enforce a certain condition on any user input.
 58898  	Object.defineProperty(exports, "__esModule", { value: true });
 58899  	function assert(condition, message) {
 58900  	    /* istanbul ignore if */
 58901  	    if (!condition) {
 58902  	        throw new Error('ASSERT: ' + message);
 58903  	    }
 58904  	}
 58905  	exports.assert = assert;
 58906  
 58907  
 58908  /***/ },
 58909  /* 10 */
 58910  /***/ function(module, exports) {
 58911  
 58912  	"use strict";
 58913  	/* tslint:disable:max-classes-per-file */
 58914  	Object.defineProperty(exports, "__esModule", { value: true });
 58915  	var ErrorHandler = (function () {
 58916  	    function ErrorHandler() {
 58917  	        this.errors = [];
 58918  	        this.tolerant = false;
 58919  	    }
 58920  	    ErrorHandler.prototype.recordError = function (error) {
 58921  	        this.errors.push(error);
 58922  	    };
 58923  	    ErrorHandler.prototype.tolerate = function (error) {
 58924  	        if (this.tolerant) {
 58925  	            this.recordError(error);
 58926  	        }
 58927  	        else {
 58928  	            throw error;
 58929  	        }
 58930  	    };
 58931  	    ErrorHandler.prototype.constructError = function (msg, column) {
 58932  	        var error = new Error(msg);
 58933  	        try {
 58934  	            throw error;
 58935  	        }
 58936  	        catch (base) {
 58937  	            /* istanbul ignore else */
 58938  	            if (Object.create && Object.defineProperty) {
 58939  	                error = Object.create(base);
 58940  	                Object.defineProperty(error, 'column', { value: column });
 58941  	            }
 58942  	        }
 58943  	        /* istanbul ignore next */
 58944  	        return error;
 58945  	    };
 58946  	    ErrorHandler.prototype.createError = function (index, line, col, description) {
 58947  	        var msg = 'Line ' + line + ': ' + description;
 58948  	        var error = this.constructError(msg, col);
 58949  	        error.index = index;
 58950  	        error.lineNumber = line;
 58951  	        error.description = description;
 58952  	        return error;
 58953  	    };
 58954  	    ErrorHandler.prototype.throwError = function (index, line, col, description) {
 58955  	        throw this.createError(index, line, col, description);
 58956  	    };
 58957  	    ErrorHandler.prototype.tolerateError = function (index, line, col, description) {
 58958  	        var error = this.createError(index, line, col, description);
 58959  	        if (this.tolerant) {
 58960  	            this.recordError(error);
 58961  	        }
 58962  	        else {
 58963  	            throw error;
 58964  	        }
 58965  	    };
 58966  	    return ErrorHandler;
 58967  	}());
 58968  	exports.ErrorHandler = ErrorHandler;
 58969  
 58970  
 58971  /***/ },
 58972  /* 11 */
 58973  /***/ function(module, exports) {
 58974  
 58975  	"use strict";
 58976  	Object.defineProperty(exports, "__esModule", { value: true });
 58977  	// Error messages should be identical to V8.
 58978  	exports.Messages = {
 58979  	    BadGetterArity: 'Getter must not have any formal parameters',
 58980  	    BadSetterArity: 'Setter must have exactly one formal parameter',
 58981  	    BadSetterRestParameter: 'Setter function argument must not be a rest parameter',
 58982  	    ConstructorIsAsync: 'Class constructor may not be an async method',
 58983  	    ConstructorSpecialMethod: 'Class constructor may not be an accessor',
 58984  	    DeclarationMissingInitializer: 'Missing initializer in %0 declaration',
 58985  	    DefaultRestParameter: 'Unexpected token =',
 58986  	    DuplicateBinding: 'Duplicate binding %0',
 58987  	    DuplicateConstructor: 'A class may only have one constructor',
 58988  	    DuplicateProtoProperty: 'Duplicate __proto__ fields are not allowed in object literals',
 58989  	    ForInOfLoopInitializer: '%0 loop variable declaration may not have an initializer',
 58990  	    GeneratorInLegacyContext: 'Generator declarations are not allowed in legacy contexts',
 58991  	    IllegalBreak: 'Illegal break statement',
 58992  	    IllegalContinue: 'Illegal continue statement',
 58993  	    IllegalExportDeclaration: 'Unexpected token',
 58994  	    IllegalImportDeclaration: 'Unexpected token',
 58995  	    IllegalLanguageModeDirective: 'Illegal \'use strict\' directive in function with non-simple parameter list',
 58996  	    IllegalReturn: 'Illegal return statement',
 58997  	    InvalidEscapedReservedWord: 'Keyword must not contain escaped characters',
 58998  	    InvalidHexEscapeSequence: 'Invalid hexadecimal escape sequence',
 58999  	    InvalidLHSInAssignment: 'Invalid left-hand side in assignment',
 59000  	    InvalidLHSInForIn: 'Invalid left-hand side in for-in',
 59001  	    InvalidLHSInForLoop: 'Invalid left-hand side in for-loop',
 59002  	    InvalidModuleSpecifier: 'Unexpected token',
 59003  	    InvalidRegExp: 'Invalid regular expression',
 59004  	    LetInLexicalBinding: 'let is disallowed as a lexically bound name',
 59005  	    MissingFromClause: 'Unexpected token',
 59006  	    MultipleDefaultsInSwitch: 'More than one default clause in switch statement',
 59007  	    NewlineAfterThrow: 'Illegal newline after throw',
 59008  	    NoAsAfterImportNamespace: 'Unexpected token',
 59009  	    NoCatchOrFinally: 'Missing catch or finally after try',
 59010  	    ParameterAfterRestParameter: 'Rest parameter must be last formal parameter',
 59011  	    Redeclaration: '%0 \'%1\' has already been declared',
 59012  	    StaticPrototype: 'Classes may not have static property named prototype',
 59013  	    StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode',
 59014  	    StrictDelete: 'Delete of an unqualified identifier in strict mode.',
 59015  	    StrictFunction: 'In strict mode code, functions can only be declared at top level or inside a block',
 59016  	    StrictFunctionName: 'Function name may not be eval or arguments in strict mode',
 59017  	    StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode',
 59018  	    StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode',
 59019  	    StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode',
 59020  	    StrictModeWith: 'Strict mode code may not include a with statement',
 59021  	    StrictOctalLiteral: 'Octal literals are not allowed in strict mode.',
 59022  	    StrictParamDupe: 'Strict mode function may not have duplicate parameter names',
 59023  	    StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode',
 59024  	    StrictReservedWord: 'Use of future reserved word in strict mode',
 59025  	    StrictVarName: 'Variable name may not be eval or arguments in strict mode',
 59026  	    TemplateOctalLiteral: 'Octal literals are not allowed in template strings.',
 59027  	    UnexpectedEOS: 'Unexpected end of input',
 59028  	    UnexpectedIdentifier: 'Unexpected identifier',
 59029  	    UnexpectedNumber: 'Unexpected number',
 59030  	    UnexpectedReserved: 'Unexpected reserved word',
 59031  	    UnexpectedString: 'Unexpected string',
 59032  	    UnexpectedTemplate: 'Unexpected quasi %0',
 59033  	    UnexpectedToken: 'Unexpected token %0',
 59034  	    UnexpectedTokenIllegal: 'Unexpected token ILLEGAL',
 59035  	    UnknownLabel: 'Undefined label \'%0\'',
 59036  	    UnterminatedRegExp: 'Invalid regular expression: missing /'
 59037  	};
 59038  
 59039  
 59040  /***/ },
 59041  /* 12 */
 59042  /***/ function(module, exports, __webpack_require__) {
 59043  
 59044  	"use strict";
 59045  	Object.defineProperty(exports, "__esModule", { value: true });
 59046  	var assert_1 = __webpack_require__(9);
 59047  	var character_1 = __webpack_require__(4);
 59048  	var messages_1 = __webpack_require__(11);
 59049  	function hexValue(ch) {
 59050  	    return '0123456789abcdef'.indexOf(ch.toLowerCase());
 59051  	}
 59052  	function octalValue(ch) {
 59053  	    return '01234567'.indexOf(ch);
 59054  	}
 59055  	var Scanner = (function () {
 59056  	    function Scanner(code, handler) {
 59057  	        this.source = code;
 59058  	        this.errorHandler = handler;
 59059  	        this.trackComment = false;
 59060  	        this.isModule = false;
 59061  	        this.length = code.length;
 59062  	        this.index = 0;
 59063  	        this.lineNumber = (code.length > 0) ? 1 : 0;
 59064  	        this.lineStart = 0;
 59065  	        this.curlyStack = [];
 59066  	    }
 59067  	    Scanner.prototype.saveState = function () {
 59068  	        return {
 59069  	            index: this.index,
 59070  	            lineNumber: this.lineNumber,
 59071  	            lineStart: this.lineStart
 59072  	        };
 59073  	    };
 59074  	    Scanner.prototype.restoreState = function (state) {
 59075  	        this.index = state.index;
 59076  	        this.lineNumber = state.lineNumber;
 59077  	        this.lineStart = state.lineStart;
 59078  	    };
 59079  	    Scanner.prototype.eof = function () {
 59080  	        return this.index >= this.length;
 59081  	    };
 59082  	    Scanner.prototype.throwUnexpectedToken = function (message) {
 59083  	        if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }
 59084  	        return this.errorHandler.throwError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);
 59085  	    };
 59086  	    Scanner.prototype.tolerateUnexpectedToken = function (message) {
 59087  	        if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }
 59088  	        this.errorHandler.tolerateError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);
 59089  	    };
 59090  	    // https://tc39.github.io/ecma262/#sec-comments
 59091  	    Scanner.prototype.skipSingleLineComment = function (offset) {
 59092  	        var comments = [];
 59093  	        var start, loc;
 59094  	        if (this.trackComment) {
 59095  	            comments = [];
 59096  	            start = this.index - offset;
 59097  	            loc = {
 59098  	                start: {
 59099  	                    line: this.lineNumber,
 59100  	                    column: this.index - this.lineStart - offset
 59101  	                },
 59102  	                end: {}
 59103  	            };
 59104  	        }
 59105  	        while (!this.eof()) {
 59106  	            var ch = this.source.charCodeAt(this.index);
 59107  	            ++this.index;
 59108  	            if (character_1.Character.isLineTerminator(ch)) {
 59109  	                if (this.trackComment) {
 59110  	                    loc.end = {
 59111  	                        line: this.lineNumber,
 59112  	                        column: this.index - this.lineStart - 1
 59113  	                    };
 59114  	                    var entry = {
 59115  	                        multiLine: false,
 59116  	                        slice: [start + offset, this.index - 1],
 59117  	                        range: [start, this.index - 1],
 59118  	                        loc: loc
 59119  	                    };
 59120  	                    comments.push(entry);
 59121  	                }
 59122  	                if (ch === 13 && this.source.charCodeAt(this.index) === 10) {
 59123  	                    ++this.index;
 59124  	                }
 59125  	                ++this.lineNumber;
 59126  	                this.lineStart = this.index;
 59127  	                return comments;
 59128  	            }
 59129  	        }
 59130  	        if (this.trackComment) {
 59131  	            loc.end = {
 59132  	                line: this.lineNumber,
 59133  	                column: this.index - this.lineStart
 59134  	            };
 59135  	            var entry = {
 59136  	                multiLine: false,
 59137  	                slice: [start + offset, this.index],
 59138  	                range: [start, this.index],
 59139  	                loc: loc
 59140  	            };
 59141  	            comments.push(entry);
 59142  	        }
 59143  	        return comments;
 59144  	    };
 59145  	    Scanner.prototype.skipMultiLineComment = function () {
 59146  	        var comments = [];
 59147  	        var start, loc;
 59148  	        if (this.trackComment) {
 59149  	            comments = [];
 59150  	            start = this.index - 2;
 59151  	            loc = {
 59152  	                start: {
 59153  	                    line: this.lineNumber,
 59154  	                    column: this.index - this.lineStart - 2
 59155  	                },
 59156  	                end: {}
 59157  	            };
 59158  	        }
 59159  	        while (!this.eof()) {
 59160  	            var ch = this.source.charCodeAt(this.index);
 59161  	            if (character_1.Character.isLineTerminator(ch)) {
 59162  	                if (ch === 0x0D && this.source.charCodeAt(this.index + 1) === 0x0A) {
 59163  	                    ++this.index;
 59164  	                }
 59165  	                ++this.lineNumber;
 59166  	                ++this.index;
 59167  	                this.lineStart = this.index;
 59168  	            }
 59169  	            else if (ch === 0x2A) {
 59170  	                // Block comment ends with '*/'.
 59171  	                if (this.source.charCodeAt(this.index + 1) === 0x2F) {
 59172  	                    this.index += 2;
 59173  	                    if (this.trackComment) {
 59174  	                        loc.end = {
 59175  	                            line: this.lineNumber,
 59176  	                            column: this.index - this.lineStart
 59177  	                        };
 59178  	                        var entry = {
 59179  	                            multiLine: true,
 59180  	                            slice: [start + 2, this.index - 2],
 59181  	                            range: [start, this.index],
 59182  	                            loc: loc
 59183  	                        };
 59184  	                        comments.push(entry);
 59185  	                    }
 59186  	                    return comments;
 59187  	                }
 59188  	                ++this.index;
 59189  	            }
 59190  	            else {
 59191  	                ++this.index;
 59192  	            }
 59193  	        }
 59194  	        // Ran off the end of the file - the whole thing is a comment
 59195  	        if (this.trackComment) {
 59196  	            loc.end = {
 59197  	                line: this.lineNumber,
 59198  	                column: this.index - this.lineStart
 59199  	            };
 59200  	            var entry = {
 59201  	                multiLine: true,
 59202  	                slice: [start + 2, this.index],
 59203  	                range: [start, this.index],
 59204  	                loc: loc
 59205  	            };
 59206  	            comments.push(entry);
 59207  	        }
 59208  	        this.tolerateUnexpectedToken();
 59209  	        return comments;
 59210  	    };
 59211  	    Scanner.prototype.scanComments = function () {
 59212  	        var comments;
 59213  	        if (this.trackComment) {
 59214  	            comments = [];
 59215  	        }
 59216  	        var start = (this.index === 0);
 59217  	        while (!this.eof()) {
 59218  	            var ch = this.source.charCodeAt(this.index);
 59219  	            if (character_1.Character.isWhiteSpace(ch)) {
 59220  	                ++this.index;
 59221  	            }
 59222  	            else if (character_1.Character.isLineTerminator(ch)) {
 59223  	                ++this.index;
 59224  	                if (ch === 0x0D && this.source.charCodeAt(this.index) === 0x0A) {
 59225  	                    ++this.index;
 59226  	                }
 59227  	                ++this.lineNumber;
 59228  	                this.lineStart = this.index;
 59229  	                start = true;
 59230  	            }
 59231  	            else if (ch === 0x2F) {
 59232  	                ch = this.source.charCodeAt(this.index + 1);
 59233  	                if (ch === 0x2F) {
 59234  	                    this.index += 2;
 59235  	                    var comment = this.skipSingleLineComment(2);
 59236  	                    if (this.trackComment) {
 59237  	                        comments = comments.concat(comment);
 59238  	                    }
 59239  	                    start = true;
 59240  	                }
 59241  	                else if (ch === 0x2A) {
 59242  	                    this.index += 2;
 59243  	                    var comment = this.skipMultiLineComment();
 59244  	                    if (this.trackComment) {
 59245  	                        comments = comments.concat(comment);
 59246  	                    }
 59247  	                }
 59248  	                else {
 59249  	                    break;
 59250  	                }
 59251  	            }
 59252  	            else if (start && ch === 0x2D) {
 59253  	                // U+003E is '>'
 59254  	                if ((this.source.charCodeAt(this.index + 1) === 0x2D) && (this.source.charCodeAt(this.index + 2) === 0x3E)) {
 59255  	                    // '-->' is a single-line comment
 59256  	                    this.index += 3;
 59257  	                    var comment = this.skipSingleLineComment(3);
 59258  	                    if (this.trackComment) {
 59259  	                        comments = comments.concat(comment);
 59260  	                    }
 59261  	                }
 59262  	                else {
 59263  	                    break;
 59264  	                }
 59265  	            }
 59266  	            else if (ch === 0x3C && !this.isModule) {
 59267  	                if (this.source.slice(this.index + 1, this.index + 4) === '!--') {
 59268  	                    this.index += 4; // `<!--`
 59269  	                    var comment = this.skipSingleLineComment(4);
 59270  	                    if (this.trackComment) {
 59271  	                        comments = comments.concat(comment);
 59272  	                    }
 59273  	                }
 59274  	                else {
 59275  	                    break;
 59276  	                }
 59277  	            }
 59278  	            else {
 59279  	                break;
 59280  	            }
 59281  	        }
 59282  	        return comments;
 59283  	    };
 59284  	    // https://tc39.github.io/ecma262/#sec-future-reserved-words
 59285  	    Scanner.prototype.isFutureReservedWord = function (id) {
 59286  	        switch (id) {
 59287  	            case 'enum':
 59288  	            case 'export':
 59289  	            case 'import':
 59290  	            case 'super':
 59291  	                return true;
 59292  	            default:
 59293  	                return false;
 59294  	        }
 59295  	    };
 59296  	    Scanner.prototype.isStrictModeReservedWord = function (id) {
 59297  	        switch (id) {
 59298  	            case 'implements':
 59299  	            case 'interface':
 59300  	            case 'package':
 59301  	            case 'private':
 59302  	            case 'protected':
 59303  	            case 'public':
 59304  	            case 'static':
 59305  	            case 'yield':
 59306  	            case 'let':
 59307  	                return true;
 59308  	            default:
 59309  	                return false;
 59310  	        }
 59311  	    };
 59312  	    Scanner.prototype.isRestrictedWord = function (id) {
 59313  	        return id === 'eval' || id === 'arguments';
 59314  	    };
 59315  	    // https://tc39.github.io/ecma262/#sec-keywords
 59316  	    Scanner.prototype.isKeyword = function (id) {
 59317  	        switch (id.length) {
 59318  	            case 2:
 59319  	                return (id === 'if') || (id === 'in') || (id === 'do');
 59320  	            case 3:
 59321  	                return (id === 'var') || (id === 'for') || (id === 'new') ||
 59322  	                    (id === 'try') || (id === 'let');
 59323  	            case 4:
 59324  	                return (id === 'this') || (id === 'else') || (id === 'case') ||
 59325  	                    (id === 'void') || (id === 'with') || (id === 'enum');
 59326  	            case 5:
 59327  	                return (id === 'while') || (id === 'break') || (id === 'catch') ||
 59328  	                    (id === 'throw') || (id === 'const') || (id === 'yield') ||
 59329  	                    (id === 'class') || (id === 'super');
 59330  	            case 6:
 59331  	                return (id === 'return') || (id === 'typeof') || (id === 'delete') ||
 59332  	                    (id === 'switch') || (id === 'export') || (id === 'import');
 59333  	            case 7:
 59334  	                return (id === 'default') || (id === 'finally') || (id === 'extends');
 59335  	            case 8:
 59336  	                return (id === 'function') || (id === 'continue') || (id === 'debugger');
 59337  	            case 10:
 59338  	                return (id === 'instanceof');
 59339  	            default:
 59340  	                return false;
 59341  	        }
 59342  	    };
 59343  	    Scanner.prototype.codePointAt = function (i) {
 59344  	        var cp = this.source.charCodeAt(i);
 59345  	        if (cp >= 0xD800 && cp <= 0xDBFF) {
 59346  	            var second = this.source.charCodeAt(i + 1);
 59347  	            if (second >= 0xDC00 && second <= 0xDFFF) {
 59348  	                var first = cp;
 59349  	                cp = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
 59350  	            }
 59351  	        }
 59352  	        return cp;
 59353  	    };
 59354  	    Scanner.prototype.scanHexEscape = function (prefix) {
 59355  	        var len = (prefix === 'u') ? 4 : 2;
 59356  	        var code = 0;
 59357  	        for (var i = 0; i < len; ++i) {
 59358  	            if (!this.eof() && character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {
 59359  	                code = code * 16 + hexValue(this.source[this.index++]);
 59360  	            }
 59361  	            else {
 59362  	                return null;
 59363  	            }
 59364  	        }
 59365  	        return String.fromCharCode(code);
 59366  	    };
 59367  	    Scanner.prototype.scanUnicodeCodePointEscape = function () {
 59368  	        var ch = this.source[this.index];
 59369  	        var code = 0;
 59370  	        // At least, one hex digit is required.
 59371  	        if (ch === '}') {
 59372  	            this.throwUnexpectedToken();
 59373  	        }
 59374  	        while (!this.eof()) {
 59375  	            ch = this.source[this.index++];
 59376  	            if (!character_1.Character.isHexDigit(ch.charCodeAt(0))) {
 59377  	                break;
 59378  	            }
 59379  	            code = code * 16 + hexValue(ch);
 59380  	        }
 59381  	        if (code > 0x10FFFF || ch !== '}') {
 59382  	            this.throwUnexpectedToken();
 59383  	        }
 59384  	        return character_1.Character.fromCodePoint(code);
 59385  	    };
 59386  	    Scanner.prototype.getIdentifier = function () {
 59387  	        var start = this.index++;
 59388  	        while (!this.eof()) {
 59389  	            var ch = this.source.charCodeAt(this.index);
 59390  	            if (ch === 0x5C) {
 59391  	                // Blackslash (U+005C) marks Unicode escape sequence.
 59392  	                this.index = start;
 59393  	                return this.getComplexIdentifier();
 59394  	            }
 59395  	            else if (ch >= 0xD800 && ch < 0xDFFF) {
 59396  	                // Need to handle surrogate pairs.
 59397  	                this.index = start;
 59398  	                return this.getComplexIdentifier();
 59399  	            }
 59400  	            if (character_1.Character.isIdentifierPart(ch)) {
 59401  	                ++this.index;
 59402  	            }
 59403  	            else {
 59404  	                break;
 59405  	            }
 59406  	        }
 59407  	        return this.source.slice(start, this.index);
 59408  	    };
 59409  	    Scanner.prototype.getComplexIdentifier = function () {
 59410  	        var cp = this.codePointAt(this.index);
 59411  	        var id = character_1.Character.fromCodePoint(cp);
 59412  	        this.index += id.length;
 59413  	        // '\u' (U+005C, U+0075) denotes an escaped character.
 59414  	        var ch;
 59415  	        if (cp === 0x5C) {
 59416  	            if (this.source.charCodeAt(this.index) !== 0x75) {
 59417  	                this.throwUnexpectedToken();
 59418  	            }
 59419  	            ++this.index;
 59420  	            if (this.source[this.index] === '{') {
 59421  	                ++this.index;
 59422  	                ch = this.scanUnicodeCodePointEscape();
 59423  	            }
 59424  	            else {
 59425  	                ch = this.scanHexEscape('u');
 59426  	                if (ch === null || ch === '\\' || !character_1.Character.isIdentifierStart(ch.charCodeAt(0))) {
 59427  	                    this.throwUnexpectedToken();
 59428  	                }
 59429  	            }
 59430  	            id = ch;
 59431  	        }
 59432  	        while (!this.eof()) {
 59433  	            cp = this.codePointAt(this.index);
 59434  	            if (!character_1.Character.isIdentifierPart(cp)) {
 59435  	                break;
 59436  	            }
 59437  	            ch = character_1.Character.fromCodePoint(cp);
 59438  	            id += ch;
 59439  	            this.index += ch.length;
 59440  	            // '\u' (U+005C, U+0075) denotes an escaped character.
 59441  	            if (cp === 0x5C) {
 59442  	                id = id.substr(0, id.length - 1);
 59443  	                if (this.source.charCodeAt(this.index) !== 0x75) {
 59444  	                    this.throwUnexpectedToken();
 59445  	                }
 59446  	                ++this.index;
 59447  	                if (this.source[this.index] === '{') {
 59448  	                    ++this.index;
 59449  	                    ch = this.scanUnicodeCodePointEscape();
 59450  	                }
 59451  	                else {
 59452  	                    ch = this.scanHexEscape('u');
 59453  	                    if (ch === null || ch === '\\' || !character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {
 59454  	                        this.throwUnexpectedToken();
 59455  	                    }
 59456  	                }
 59457  	                id += ch;
 59458  	            }
 59459  	        }
 59460  	        return id;
 59461  	    };
 59462  	    Scanner.prototype.octalToDecimal = function (ch) {
 59463  	        // \0 is not octal escape sequence
 59464  	        var octal = (ch !== '0');
 59465  	        var code = octalValue(ch);
 59466  	        if (!this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {
 59467  	            octal = true;
 59468  	            code = code * 8 + octalValue(this.source[this.index++]);
 59469  	            // 3 digits are only allowed when string starts
 59470  	            // with 0, 1, 2, 3
 59471  	            if ('0123'.indexOf(ch) >= 0 && !this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {
 59472  	                code = code * 8 + octalValue(this.source[this.index++]);
 59473  	            }
 59474  	        }
 59475  	        return {
 59476  	            code: code,
 59477  	            octal: octal
 59478  	        };
 59479  	    };
 59480  	    // https://tc39.github.io/ecma262/#sec-names-and-keywords
 59481  	    Scanner.prototype.scanIdentifier = function () {
 59482  	        var type;
 59483  	        var start = this.index;
 59484  	        // Backslash (U+005C) starts an escaped character.
 59485  	        var id = (this.source.charCodeAt(start) === 0x5C) ? this.getComplexIdentifier() : this.getIdentifier();
 59486  	        // There is no keyword or literal with only one character.
 59487  	        // Thus, it must be an identifier.
 59488  	        if (id.length === 1) {
 59489  	            type = 3 /* Identifier */;
 59490  	        }
 59491  	        else if (this.isKeyword(id)) {
 59492  	            type = 4 /* Keyword */;
 59493  	        }
 59494  	        else if (id === 'null') {
 59495  	            type = 5 /* NullLiteral */;
 59496  	        }
 59497  	        else if (id === 'true' || id === 'false') {
 59498  	            type = 1 /* BooleanLiteral */;
 59499  	        }
 59500  	        else {
 59501  	            type = 3 /* Identifier */;
 59502  	        }
 59503  	        if (type !== 3 /* Identifier */ && (start + id.length !== this.index)) {
 59504  	            var restore = this.index;
 59505  	            this.index = start;
 59506  	            this.tolerateUnexpectedToken(messages_1.Messages.InvalidEscapedReservedWord);
 59507  	            this.index = restore;
 59508  	        }
 59509  	        return {
 59510  	            type: type,
 59511  	            value: id,
 59512  	            lineNumber: this.lineNumber,
 59513  	            lineStart: this.lineStart,
 59514  	            start: start,
 59515  	            end: this.index
 59516  	        };
 59517  	    };
 59518  	    // https://tc39.github.io/ecma262/#sec-punctuators
 59519  	    Scanner.prototype.scanPunctuator = function () {
 59520  	        var start = this.index;
 59521  	        // Check for most common single-character punctuators.
 59522  	        var str = this.source[this.index];
 59523  	        switch (str) {
 59524  	            case '(':
 59525  	            case '{':
 59526  	                if (str === '{') {
 59527  	                    this.curlyStack.push('{');
 59528  	                }
 59529  	                ++this.index;
 59530  	                break;
 59531  	            case '.':
 59532  	                ++this.index;
 59533  	                if (this.source[this.index] === '.' && this.source[this.index + 1] === '.') {
 59534  	                    // Spread operator: ...
 59535  	                    this.index += 2;
 59536  	                    str = '...';
 59537  	                }
 59538  	                break;
 59539  	            case '}':
 59540  	                ++this.index;
 59541  	                this.curlyStack.pop();
 59542  	                break;
 59543  	            case ')':
 59544  	            case ';':
 59545  	            case ',':
 59546  	            case '[':
 59547  	            case ']':
 59548  	            case ':':
 59549  	            case '?':
 59550  	            case '~':
 59551  	                ++this.index;
 59552  	                break;
 59553  	            default:
 59554  	                // 4-character punctuator.
 59555  	                str = this.source.substr(this.index, 4);
 59556  	                if (str === '>>>=') {
 59557  	                    this.index += 4;
 59558  	                }
 59559  	                else {
 59560  	                    // 3-character punctuators.
 59561  	                    str = str.substr(0, 3);
 59562  	                    if (str === '===' || str === '!==' || str === '>>>' ||
 59563  	                        str === '<<=' || str === '>>=' || str === '**=') {
 59564  	                        this.index += 3;
 59565  	                    }
 59566  	                    else {
 59567  	                        // 2-character punctuators.
 59568  	                        str = str.substr(0, 2);
 59569  	                        if (str === '&&' || str === '||' || str === '==' || str === '!=' ||
 59570  	                            str === '+=' || str === '-=' || str === '*=' || str === '/=' ||
 59571  	                            str === '++' || str === '--' || str === '<<' || str === '>>' ||
 59572  	                            str === '&=' || str === '|=' || str === '^=' || str === '%=' ||
 59573  	                            str === '<=' || str === '>=' || str === '=>' || str === '**') {
 59574  	                            this.index += 2;
 59575  	                        }
 59576  	                        else {
 59577  	                            // 1-character punctuators.
 59578  	                            str = this.source[this.index];
 59579  	                            if ('<>=!+-*%&|^/'.indexOf(str) >= 0) {
 59580  	                                ++this.index;
 59581  	                            }
 59582  	                        }
 59583  	                    }
 59584  	                }
 59585  	        }
 59586  	        if (this.index === start) {
 59587  	            this.throwUnexpectedToken();
 59588  	        }
 59589  	        return {
 59590  	            type: 7 /* Punctuator */,
 59591  	            value: str,
 59592  	            lineNumber: this.lineNumber,
 59593  	            lineStart: this.lineStart,
 59594  	            start: start,
 59595  	            end: this.index
 59596  	        };
 59597  	    };
 59598  	    // https://tc39.github.io/ecma262/#sec-literals-numeric-literals
 59599  	    Scanner.prototype.scanHexLiteral = function (start) {
 59600  	        var num = '';
 59601  	        while (!this.eof()) {
 59602  	            if (!character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {
 59603  	                break;
 59604  	            }
 59605  	            num += this.source[this.index++];
 59606  	        }
 59607  	        if (num.length === 0) {
 59608  	            this.throwUnexpectedToken();
 59609  	        }
 59610  	        if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {
 59611  	            this.throwUnexpectedToken();
 59612  	        }
 59613  	        return {
 59614  	            type: 6 /* NumericLiteral */,
 59615  	            value: parseInt('0x' + num, 16),
 59616  	            lineNumber: this.lineNumber,
 59617  	            lineStart: this.lineStart,
 59618  	            start: start,
 59619  	            end: this.index
 59620  	        };
 59621  	    };
 59622  	    Scanner.prototype.scanBinaryLiteral = function (start) {
 59623  	        var num = '';
 59624  	        var ch;
 59625  	        while (!this.eof()) {
 59626  	            ch = this.source[this.index];
 59627  	            if (ch !== '0' && ch !== '1') {
 59628  	                break;
 59629  	            }
 59630  	            num += this.source[this.index++];
 59631  	        }
 59632  	        if (num.length === 0) {
 59633  	            // only 0b or 0B
 59634  	            this.throwUnexpectedToken();
 59635  	        }
 59636  	        if (!this.eof()) {
 59637  	            ch = this.source.charCodeAt(this.index);
 59638  	            /* istanbul ignore else */
 59639  	            if (character_1.Character.isIdentifierStart(ch) || character_1.Character.isDecimalDigit(ch)) {
 59640  	                this.throwUnexpectedToken();
 59641  	            }
 59642  	        }
 59643  	        return {
 59644  	            type: 6 /* NumericLiteral */,
 59645  	            value: parseInt(num, 2),
 59646  	            lineNumber: this.lineNumber,
 59647  	            lineStart: this.lineStart,
 59648  	            start: start,
 59649  	            end: this.index
 59650  	        };
 59651  	    };
 59652  	    Scanner.prototype.scanOctalLiteral = function (prefix, start) {
 59653  	        var num = '';
 59654  	        var octal = false;
 59655  	        if (character_1.Character.isOctalDigit(prefix.charCodeAt(0))) {
 59656  	            octal = true;
 59657  	            num = '0' + this.source[this.index++];
 59658  	        }
 59659  	        else {
 59660  	            ++this.index;
 59661  	        }
 59662  	        while (!this.eof()) {
 59663  	            if (!character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {
 59664  	                break;
 59665  	            }
 59666  	            num += this.source[this.index++];
 59667  	        }
 59668  	        if (!octal && num.length === 0) {
 59669  	            // only 0o or 0O
 59670  	            this.throwUnexpectedToken();
 59671  	        }
 59672  	        if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index)) || character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {
 59673  	            this.throwUnexpectedToken();
 59674  	        }
 59675  	        return {
 59676  	            type: 6 /* NumericLiteral */,
 59677  	            value: parseInt(num, 8),
 59678  	            octal: octal,
 59679  	            lineNumber: this.lineNumber,
 59680  	            lineStart: this.lineStart,
 59681  	            start: start,
 59682  	            end: this.index
 59683  	        };
 59684  	    };
 59685  	    Scanner.prototype.isImplicitOctalLiteral = function () {
 59686  	        // Implicit octal, unless there is a non-octal digit.
 59687  	        // (Annex B.1.1 on Numeric Literals)
 59688  	        for (var i = this.index + 1; i < this.length; ++i) {
 59689  	            var ch = this.source[i];
 59690  	            if (ch === '8' || ch === '9') {
 59691  	                return false;
 59692  	            }
 59693  	            if (!character_1.Character.isOctalDigit(ch.charCodeAt(0))) {
 59694  	                return true;
 59695  	            }
 59696  	        }
 59697  	        return true;
 59698  	    };
 59699  	    Scanner.prototype.scanNumericLiteral = function () {
 59700  	        var start = this.index;
 59701  	        var ch = this.source[start];
 59702  	        assert_1.assert(character_1.Character.isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), 'Numeric literal must start with a decimal digit or a decimal point');
 59703  	        var num = '';
 59704  	        if (ch !== '.') {
 59705  	            num = this.source[this.index++];
 59706  	            ch = this.source[this.index];
 59707  	            // Hex number starts with '0x'.
 59708  	            // Octal number starts with '0'.
 59709  	            // Octal number in ES6 starts with '0o'.
 59710  	            // Binary number in ES6 starts with '0b'.
 59711  	            if (num === '0') {
 59712  	                if (ch === 'x' || ch === 'X') {
 59713  	                    ++this.index;
 59714  	                    return this.scanHexLiteral(start);
 59715  	                }
 59716  	                if (ch === 'b' || ch === 'B') {
 59717  	                    ++this.index;
 59718  	                    return this.scanBinaryLiteral(start);
 59719  	                }
 59720  	                if (ch === 'o' || ch === 'O') {
 59721  	                    return this.scanOctalLiteral(ch, start);
 59722  	                }
 59723  	                if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {
 59724  	                    if (this.isImplicitOctalLiteral()) {
 59725  	                        return this.scanOctalLiteral(ch, start);
 59726  	                    }
 59727  	                }
 59728  	            }
 59729  	            while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {
 59730  	                num += this.source[this.index++];
 59731  	            }
 59732  	            ch = this.source[this.index];
 59733  	        }
 59734  	        if (ch === '.') {
 59735  	            num += this.source[this.index++];
 59736  	            while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {
 59737  	                num += this.source[this.index++];
 59738  	            }
 59739  	            ch = this.source[this.index];
 59740  	        }
 59741  	        if (ch === 'e' || ch === 'E') {
 59742  	            num += this.source[this.index++];
 59743  	            ch = this.source[this.index];
 59744  	            if (ch === '+' || ch === '-') {
 59745  	                num += this.source[this.index++];
 59746  	            }
 59747  	            if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {
 59748  	                while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {
 59749  	                    num += this.source[this.index++];
 59750  	                }
 59751  	            }
 59752  	            else {
 59753  	                this.throwUnexpectedToken();
 59754  	            }
 59755  	        }
 59756  	        if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {
 59757  	            this.throwUnexpectedToken();
 59758  	        }
 59759  	        return {
 59760  	            type: 6 /* NumericLiteral */,
 59761  	            value: parseFloat(num),
 59762  	            lineNumber: this.lineNumber,
 59763  	            lineStart: this.lineStart,
 59764  	            start: start,
 59765  	            end: this.index
 59766  	        };
 59767  	    };
 59768  	    // https://tc39.github.io/ecma262/#sec-literals-string-literals
 59769  	    Scanner.prototype.scanStringLiteral = function () {
 59770  	        var start = this.index;
 59771  	        var quote = this.source[start];
 59772  	        assert_1.assert((quote === '\'' || quote === '"'), 'String literal must starts with a quote');
 59773  	        ++this.index;
 59774  	        var octal = false;
 59775  	        var str = '';
 59776  	        while (!this.eof()) {
 59777  	            var ch = this.source[this.index++];
 59778  	            if (ch === quote) {
 59779  	                quote = '';
 59780  	                break;
 59781  	            }
 59782  	            else if (ch === '\\') {
 59783  	                ch = this.source[this.index++];
 59784  	                if (!ch || !character_1.Character.isLineTerminator(ch.charCodeAt(0))) {
 59785  	                    switch (ch) {
 59786  	                        case 'u':
 59787  	                            if (this.source[this.index] === '{') {
 59788  	                                ++this.index;
 59789  	                                str += this.scanUnicodeCodePointEscape();
 59790  	                            }
 59791  	                            else {
 59792  	                                var unescaped_1 = this.scanHexEscape(ch);
 59793  	                                if (unescaped_1 === null) {
 59794  	                                    this.throwUnexpectedToken();
 59795  	                                }
 59796  	                                str += unescaped_1;
 59797  	                            }
 59798  	                            break;
 59799  	                        case 'x':
 59800  	                            var unescaped = this.scanHexEscape(ch);
 59801  	                            if (unescaped === null) {
 59802  	                                this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);
 59803  	                            }
 59804  	                            str += unescaped;
 59805  	                            break;
 59806  	                        case 'n':
 59807  	                            str += '\n';
 59808  	                            break;
 59809  	                        case 'r':
 59810  	                            str += '\r';
 59811  	                            break;
 59812  	                        case 't':
 59813  	                            str += '\t';
 59814  	                            break;
 59815  	                        case 'b':
 59816  	                            str += '\b';
 59817  	                            break;
 59818  	                        case 'f':
 59819  	                            str += '\f';
 59820  	                            break;
 59821  	                        case 'v':
 59822  	                            str += '\x0B';
 59823  	                            break;
 59824  	                        case '8':
 59825  	                        case '9':
 59826  	                            str += ch;
 59827  	                            this.tolerateUnexpectedToken();
 59828  	                            break;
 59829  	                        default:
 59830  	                            if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {
 59831  	                                var octToDec = this.octalToDecimal(ch);
 59832  	                                octal = octToDec.octal || octal;
 59833  	                                str += String.fromCharCode(octToDec.code);
 59834  	                            }
 59835  	                            else {
 59836  	                                str += ch;
 59837  	                            }
 59838  	                            break;
 59839  	                    }
 59840  	                }
 59841  	                else {
 59842  	                    ++this.lineNumber;
 59843  	                    if (ch === '\r' && this.source[this.index] === '\n') {
 59844  	                        ++this.index;
 59845  	                    }
 59846  	                    this.lineStart = this.index;
 59847  	                }
 59848  	            }
 59849  	            else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {
 59850  	                break;
 59851  	            }
 59852  	            else {
 59853  	                str += ch;
 59854  	            }
 59855  	        }
 59856  	        if (quote !== '') {
 59857  	            this.index = start;
 59858  	            this.throwUnexpectedToken();
 59859  	        }
 59860  	        return {
 59861  	            type: 8 /* StringLiteral */,
 59862  	            value: str,
 59863  	            octal: octal,
 59864  	            lineNumber: this.lineNumber,
 59865  	            lineStart: this.lineStart,
 59866  	            start: start,
 59867  	            end: this.index
 59868  	        };
 59869  	    };
 59870  	    // https://tc39.github.io/ecma262/#sec-template-literal-lexical-components
 59871  	    Scanner.prototype.scanTemplate = function () {
 59872  	        var cooked = '';
 59873  	        var terminated = false;
 59874  	        var start = this.index;
 59875  	        var head = (this.source[start] === '`');
 59876  	        var tail = false;
 59877  	        var rawOffset = 2;
 59878  	        ++this.index;
 59879  	        while (!this.eof()) {
 59880  	            var ch = this.source[this.index++];
 59881  	            if (ch === '`') {
 59882  	                rawOffset = 1;
 59883  	                tail = true;
 59884  	                terminated = true;
 59885  	                break;
 59886  	            }
 59887  	            else if (ch === '$') {
 59888  	                if (this.source[this.index] === '{') {
 59889  	                    this.curlyStack.push('${');
 59890  	                    ++this.index;
 59891  	                    terminated = true;
 59892  	                    break;
 59893  	                }
 59894  	                cooked += ch;
 59895  	            }
 59896  	            else if (ch === '\\') {
 59897  	                ch = this.source[this.index++];
 59898  	                if (!character_1.Character.isLineTerminator(ch.charCodeAt(0))) {
 59899  	                    switch (ch) {
 59900  	                        case 'n':
 59901  	                            cooked += '\n';
 59902  	                            break;
 59903  	                        case 'r':
 59904  	                            cooked += '\r';
 59905  	                            break;
 59906  	                        case 't':
 59907  	                            cooked += '\t';
 59908  	                            break;
 59909  	                        case 'u':
 59910  	                            if (this.source[this.index] === '{') {
 59911  	                                ++this.index;
 59912  	                                cooked += this.scanUnicodeCodePointEscape();
 59913  	                            }
 59914  	                            else {
 59915  	                                var restore = this.index;
 59916  	                                var unescaped_2 = this.scanHexEscape(ch);
 59917  	                                if (unescaped_2 !== null) {
 59918  	                                    cooked += unescaped_2;
 59919  	                                }
 59920  	                                else {
 59921  	                                    this.index = restore;
 59922  	                                    cooked += ch;
 59923  	                                }
 59924  	                            }
 59925  	                            break;
 59926  	                        case 'x':
 59927  	                            var unescaped = this.scanHexEscape(ch);
 59928  	                            if (unescaped === null) {
 59929  	                                this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);
 59930  	                            }
 59931  	                            cooked += unescaped;
 59932  	                            break;
 59933  	                        case 'b':
 59934  	                            cooked += '\b';
 59935  	                            break;
 59936  	                        case 'f':
 59937  	                            cooked += '\f';
 59938  	                            break;
 59939  	                        case 'v':
 59940  	                            cooked += '\v';
 59941  	                            break;
 59942  	                        default:
 59943  	                            if (ch === '0') {
 59944  	                                if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {
 59945  	                                    // Illegal: \01 \02 and so on
 59946  	                                    this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);
 59947  	                                }
 59948  	                                cooked += '\0';
 59949  	                            }
 59950  	                            else if (character_1.Character.isOctalDigit(ch.charCodeAt(0))) {
 59951  	                                // Illegal: \1 \2
 59952  	                                this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);
 59953  	                            }
 59954  	                            else {
 59955  	                                cooked += ch;
 59956  	                            }
 59957  	                            break;
 59958  	                    }
 59959  	                }
 59960  	                else {
 59961  	                    ++this.lineNumber;
 59962  	                    if (ch === '\r' && this.source[this.index] === '\n') {
 59963  	                        ++this.index;
 59964  	                    }
 59965  	                    this.lineStart = this.index;
 59966  	                }
 59967  	            }
 59968  	            else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {
 59969  	                ++this.lineNumber;
 59970  	                if (ch === '\r' && this.source[this.index] === '\n') {
 59971  	                    ++this.index;
 59972  	                }
 59973  	                this.lineStart = this.index;
 59974  	                cooked += '\n';
 59975  	            }
 59976  	            else {
 59977  	                cooked += ch;
 59978  	            }
 59979  	        }
 59980  	        if (!terminated) {
 59981  	            this.throwUnexpectedToken();
 59982  	        }
 59983  	        if (!head) {
 59984  	            this.curlyStack.pop();
 59985  	        }
 59986  	        return {
 59987  	            type: 10 /* Template */,
 59988  	            value: this.source.slice(start + 1, this.index - rawOffset),
 59989  	            cooked: cooked,
 59990  	            head: head,
 59991  	            tail: tail,
 59992  	            lineNumber: this.lineNumber,
 59993  	            lineStart: this.lineStart,
 59994  	            start: start,
 59995  	            end: this.index
 59996  	        };
 59997  	    };
 59998  	    // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals
 59999  	    Scanner.prototype.testRegExp = function (pattern, flags) {
 60000  	        // The BMP character to use as a replacement for astral symbols when
 60001  	        // translating an ES6 "u"-flagged pattern to an ES5-compatible
 60002  	        // approximation.
 60003  	        // Note: replacing with '\uFFFF' enables false positives in unlikely
 60004  	        // scenarios. For example, `[\u{1044f}-\u{10440}]` is an invalid
 60005  	        // pattern that would not be detected by this substitution.
 60006  	        var astralSubstitute = '\uFFFF';
 60007  	        var tmp = pattern;
 60008  	        var self = this;
 60009  	        if (flags.indexOf('u') >= 0) {
 60010  	            tmp = tmp
 60011  	                .replace(/\\u\{([0-9a-fA-F]+)\}|\\u([a-fA-F0-9]{4})/g, function ($0, $1, $2) {
 60012  	                var codePoint = parseInt($1 || $2, 16);
 60013  	                if (codePoint > 0x10FFFF) {
 60014  	                    self.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);
 60015  	                }
 60016  	                if (codePoint <= 0xFFFF) {
 60017  	                    return String.fromCharCode(codePoint);
 60018  	                }
 60019  	                return astralSubstitute;
 60020  	            })
 60021  	                .replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, astralSubstitute);
 60022  	        }
 60023  	        // First, detect invalid regular expressions.
 60024  	        try {
 60025  	            RegExp(tmp);
 60026  	        }
 60027  	        catch (e) {
 60028  	            this.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);
 60029  	        }
 60030  	        // Return a regular expression object for this pattern-flag pair, or
 60031  	        // `null` in case the current environment doesn't support the flags it
 60032  	        // uses.
 60033  	        try {
 60034  	            return new RegExp(pattern, flags);
 60035  	        }
 60036  	        catch (exception) {
 60037  	            /* istanbul ignore next */
 60038  	            return null;
 60039  	        }
 60040  	    };
 60041  	    Scanner.prototype.scanRegExpBody = function () {
 60042  	        var ch = this.source[this.index];
 60043  	        assert_1.assert(ch === '/', 'Regular expression literal must start with a slash');
 60044  	        var str = this.source[this.index++];
 60045  	        var classMarker = false;
 60046  	        var terminated = false;
 60047  	        while (!this.eof()) {
 60048  	            ch = this.source[this.index++];
 60049  	            str += ch;
 60050  	            if (ch === '\\') {
 60051  	                ch = this.source[this.index++];
 60052  	                // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals
 60053  	                if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {
 60054  	                    this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);
 60055  	                }
 60056  	                str += ch;
 60057  	            }
 60058  	            else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {
 60059  	                this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);
 60060  	            }
 60061  	            else if (classMarker) {
 60062  	                if (ch === ']') {
 60063  	                    classMarker = false;
 60064  	                }
 60065  	            }
 60066  	            else {
 60067  	                if (ch === '/') {
 60068  	                    terminated = true;
 60069  	                    break;
 60070  	                }
 60071  	                else if (ch === '[') {
 60072  	                    classMarker = true;
 60073  	                }
 60074  	            }
 60075  	        }
 60076  	        if (!terminated) {
 60077  	            this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);
 60078  	        }
 60079  	        // Exclude leading and trailing slash.
 60080  	        return str.substr(1, str.length - 2);
 60081  	    };
 60082  	    Scanner.prototype.scanRegExpFlags = function () {
 60083  	        var str = '';
 60084  	        var flags = '';
 60085  	        while (!this.eof()) {
 60086  	            var ch = this.source[this.index];
 60087  	            if (!character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {
 60088  	                break;
 60089  	            }
 60090  	            ++this.index;
 60091  	            if (ch === '\\' && !this.eof()) {
 60092  	                ch = this.source[this.index];
 60093  	                if (ch === 'u') {
 60094  	                    ++this.index;
 60095  	                    var restore = this.index;
 60096  	                    var char = this.scanHexEscape('u');
 60097  	                    if (char !== null) {
 60098  	                        flags += char;
 60099  	                        for (str += '\\u'; restore < this.index; ++restore) {
 60100  	                            str += this.source[restore];
 60101  	                        }
 60102  	                    }
 60103  	                    else {
 60104  	                        this.index = restore;
 60105  	                        flags += 'u';
 60106  	                        str += '\\u';
 60107  	                    }
 60108  	                    this.tolerateUnexpectedToken();
 60109  	                }
 60110  	                else {
 60111  	                    str += '\\';
 60112  	                    this.tolerateUnexpectedToken();
 60113  	                }
 60114  	            }
 60115  	            else {
 60116  	                flags += ch;
 60117  	                str += ch;
 60118  	            }
 60119  	        }
 60120  	        return flags;
 60121  	    };
 60122  	    Scanner.prototype.scanRegExp = function () {
 60123  	        var start = this.index;
 60124  	        var pattern = this.scanRegExpBody();
 60125  	        var flags = this.scanRegExpFlags();
 60126  	        var value = this.testRegExp(pattern, flags);
 60127  	        return {
 60128  	            type: 9 /* RegularExpression */,
 60129  	            value: '',
 60130  	            pattern: pattern,
 60131  	            flags: flags,
 60132  	            regex: value,
 60133  	            lineNumber: this.lineNumber,
 60134  	            lineStart: this.lineStart,
 60135  	            start: start,
 60136  	            end: this.index
 60137  	        };
 60138  	    };
 60139  	    Scanner.prototype.lex = function () {
 60140  	        if (this.eof()) {
 60141  	            return {
 60142  	                type: 2 /* EOF */,
 60143  	                value: '',
 60144  	                lineNumber: this.lineNumber,
 60145  	                lineStart: this.lineStart,
 60146  	                start: this.index,
 60147  	                end: this.index
 60148  	            };
 60149  	        }
 60150  	        var cp = this.source.charCodeAt(this.index);
 60151  	        if (character_1.Character.isIdentifierStart(cp)) {
 60152  	            return this.scanIdentifier();
 60153  	        }
 60154  	        // Very common: ( and ) and ;
 60155  	        if (cp === 0x28 || cp === 0x29 || cp === 0x3B) {
 60156  	            return this.scanPunctuator();
 60157  	        }
 60158  	        // String literal starts with single quote (U+0027) or double quote (U+0022).
 60159  	        if (cp === 0x27 || cp === 0x22) {
 60160  	            return this.scanStringLiteral();
 60161  	        }
 60162  	        // Dot (.) U+002E can also start a floating-point number, hence the need
 60163  	        // to check the next character.
 60164  	        if (cp === 0x2E) {
 60165  	            if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index + 1))) {
 60166  	                return this.scanNumericLiteral();
 60167  	            }
 60168  	            return this.scanPunctuator();
 60169  	        }
 60170  	        if (character_1.Character.isDecimalDigit(cp)) {
 60171  	            return this.scanNumericLiteral();
 60172  	        }
 60173  	        // Template literals start with ` (U+0060) for template head
 60174  	        // or } (U+007D) for template middle or template tail.
 60175  	        if (cp === 0x60 || (cp === 0x7D && this.curlyStack[this.curlyStack.length - 1] === '${')) {
 60176  	            return this.scanTemplate();
 60177  	        }
 60178  	        // Possible identifier start in a surrogate pair.
 60179  	        if (cp >= 0xD800 && cp < 0xDFFF) {
 60180  	            if (character_1.Character.isIdentifierStart(this.codePointAt(this.index))) {
 60181  	                return this.scanIdentifier();
 60182  	            }
 60183  	        }
 60184  	        return this.scanPunctuator();
 60185  	    };
 60186  	    return Scanner;
 60187  	}());
 60188  	exports.Scanner = Scanner;
 60189  
 60190  
 60191  /***/ },
 60192  /* 13 */
 60193  /***/ function(module, exports) {
 60194  
 60195  	"use strict";
 60196  	Object.defineProperty(exports, "__esModule", { value: true });
 60197  	exports.TokenName = {};
 60198  	exports.TokenName[1 /* BooleanLiteral */] = 'Boolean';
 60199  	exports.TokenName[2 /* EOF */] = '<end>';
 60200  	exports.TokenName[3 /* Identifier */] = 'Identifier';
 60201  	exports.TokenName[4 /* Keyword */] = 'Keyword';
 60202  	exports.TokenName[5 /* NullLiteral */] = 'Null';
 60203  	exports.TokenName[6 /* NumericLiteral */] = 'Numeric';
 60204  	exports.TokenName[7 /* Punctuator */] = 'Punctuator';
 60205  	exports.TokenName[8 /* StringLiteral */] = 'String';
 60206  	exports.TokenName[9 /* RegularExpression */] = 'RegularExpression';
 60207  	exports.TokenName[10 /* Template */] = 'Template';
 60208  
 60209  
 60210  /***/ },
 60211  /* 14 */
 60212  /***/ function(module, exports) {
 60213  
 60214  	"use strict";
 60215  	// Generated by generate-xhtml-entities.js. DO NOT MODIFY!
 60216  	Object.defineProperty(exports, "__esModule", { value: true });
 60217  	exports.XHTMLEntities = {
 60218  	    quot: '\u0022',
 60219  	    amp: '\u0026',
 60220  	    apos: '\u0027',
 60221  	    gt: '\u003E',
 60222  	    nbsp: '\u00A0',
 60223  	    iexcl: '\u00A1',
 60224  	    cent: '\u00A2',
 60225  	    pound: '\u00A3',
 60226  	    curren: '\u00A4',
 60227  	    yen: '\u00A5',
 60228  	    brvbar: '\u00A6',
 60229  	    sect: '\u00A7',
 60230  	    uml: '\u00A8',
 60231  	    copy: '\u00A9',
 60232  	    ordf: '\u00AA',
 60233  	    laquo: '\u00AB',
 60234  	    not: '\u00AC',
 60235  	    shy: '\u00AD',
 60236  	    reg: '\u00AE',
 60237  	    macr: '\u00AF',
 60238  	    deg: '\u00B0',
 60239  	    plusmn: '\u00B1',
 60240  	    sup2: '\u00B2',
 60241  	    sup3: '\u00B3',
 60242  	    acute: '\u00B4',
 60243  	    micro: '\u00B5',
 60244  	    para: '\u00B6',
 60245  	    middot: '\u00B7',
 60246  	    cedil: '\u00B8',
 60247  	    sup1: '\u00B9',
 60248  	    ordm: '\u00BA',
 60249  	    raquo: '\u00BB',
 60250  	    frac14: '\u00BC',
 60251  	    frac12: '\u00BD',
 60252  	    frac34: '\u00BE',
 60253  	    iquest: '\u00BF',
 60254  	    Agrave: '\u00C0',
 60255  	    Aacute: '\u00C1',
 60256  	    Acirc: '\u00C2',
 60257  	    Atilde: '\u00C3',
 60258  	    Auml: '\u00C4',
 60259  	    Aring: '\u00C5',
 60260  	    AElig: '\u00C6',
 60261  	    Ccedil: '\u00C7',
 60262  	    Egrave: '\u00C8',
 60263  	    Eacute: '\u00C9',
 60264  	    Ecirc: '\u00CA',
 60265  	    Euml: '\u00CB',
 60266  	    Igrave: '\u00CC',
 60267  	    Iacute: '\u00CD',
 60268  	    Icirc: '\u00CE',
 60269  	    Iuml: '\u00CF',
 60270  	    ETH: '\u00D0',
 60271  	    Ntilde: '\u00D1',
 60272  	    Ograve: '\u00D2',
 60273  	    Oacute: '\u00D3',
 60274  	    Ocirc: '\u00D4',
 60275  	    Otilde: '\u00D5',
 60276  	    Ouml: '\u00D6',
 60277  	    times: '\u00D7',
 60278  	    Oslash: '\u00D8',
 60279  	    Ugrave: '\u00D9',
 60280  	    Uacute: '\u00DA',
 60281  	    Ucirc: '\u00DB',
 60282  	    Uuml: '\u00DC',
 60283  	    Yacute: '\u00DD',
 60284  	    THORN: '\u00DE',
 60285  	    szlig: '\u00DF',
 60286  	    agrave: '\u00E0',
 60287  	    aacute: '\u00E1',
 60288  	    acirc: '\u00E2',
 60289  	    atilde: '\u00E3',
 60290  	    auml: '\u00E4',
 60291  	    aring: '\u00E5',
 60292  	    aelig: '\u00E6',
 60293  	    ccedil: '\u00E7',
 60294  	    egrave: '\u00E8',
 60295  	    eacute: '\u00E9',
 60296  	    ecirc: '\u00EA',
 60297  	    euml: '\u00EB',
 60298  	    igrave: '\u00EC',
 60299  	    iacute: '\u00ED',
 60300  	    icirc: '\u00EE',
 60301  	    iuml: '\u00EF',
 60302  	    eth: '\u00F0',
 60303  	    ntilde: '\u00F1',
 60304  	    ograve: '\u00F2',
 60305  	    oacute: '\u00F3',
 60306  	    ocirc: '\u00F4',
 60307  	    otilde: '\u00F5',
 60308  	    ouml: '\u00F6',
 60309  	    divide: '\u00F7',
 60310  	    oslash: '\u00F8',
 60311  	    ugrave: '\u00F9',
 60312  	    uacute: '\u00FA',
 60313  	    ucirc: '\u00FB',
 60314  	    uuml: '\u00FC',
 60315  	    yacute: '\u00FD',
 60316  	    thorn: '\u00FE',
 60317  	    yuml: '\u00FF',
 60318  	    OElig: '\u0152',
 60319  	    oelig: '\u0153',
 60320  	    Scaron: '\u0160',
 60321  	    scaron: '\u0161',
 60322  	    Yuml: '\u0178',
 60323  	    fnof: '\u0192',
 60324  	    circ: '\u02C6',
 60325  	    tilde: '\u02DC',
 60326  	    Alpha: '\u0391',
 60327  	    Beta: '\u0392',
 60328  	    Gamma: '\u0393',
 60329  	    Delta: '\u0394',
 60330  	    Epsilon: '\u0395',
 60331  	    Zeta: '\u0396',
 60332  	    Eta: '\u0397',
 60333  	    Theta: '\u0398',
 60334  	    Iota: '\u0399',
 60335  	    Kappa: '\u039A',
 60336  	    Lambda: '\u039B',
 60337  	    Mu: '\u039C',
 60338  	    Nu: '\u039D',
 60339  	    Xi: '\u039E',
 60340  	    Omicron: '\u039F',
 60341  	    Pi: '\u03A0',
 60342  	    Rho: '\u03A1',
 60343  	    Sigma: '\u03A3',
 60344  	    Tau: '\u03A4',
 60345  	    Upsilon: '\u03A5',
 60346  	    Phi: '\u03A6',
 60347  	    Chi: '\u03A7',
 60348  	    Psi: '\u03A8',
 60349  	    Omega: '\u03A9',
 60350  	    alpha: '\u03B1',
 60351  	    beta: '\u03B2',
 60352  	    gamma: '\u03B3',
 60353  	    delta: '\u03B4',
 60354  	    epsilon: '\u03B5',
 60355  	    zeta: '\u03B6',
 60356  	    eta: '\u03B7',
 60357  	    theta: '\u03B8',
 60358  	    iota: '\u03B9',
 60359  	    kappa: '\u03BA',
 60360  	    lambda: '\u03BB',
 60361  	    mu: '\u03BC',
 60362  	    nu: '\u03BD',
 60363  	    xi: '\u03BE',
 60364  	    omicron: '\u03BF',
 60365  	    pi: '\u03C0',
 60366  	    rho: '\u03C1',
 60367  	    sigmaf: '\u03C2',
 60368  	    sigma: '\u03C3',
 60369  	    tau: '\u03C4',
 60370  	    upsilon: '\u03C5',
 60371  	    phi: '\u03C6',
 60372  	    chi: '\u03C7',
 60373  	    psi: '\u03C8',
 60374  	    omega: '\u03C9',
 60375  	    thetasym: '\u03D1',
 60376  	    upsih: '\u03D2',
 60377  	    piv: '\u03D6',
 60378  	    ensp: '\u2002',
 60379  	    emsp: '\u2003',
 60380  	    thinsp: '\u2009',
 60381  	    zwnj: '\u200C',
 60382  	    zwj: '\u200D',
 60383  	    lrm: '\u200E',
 60384  	    rlm: '\u200F',
 60385  	    ndash: '\u2013',
 60386  	    mdash: '\u2014',
 60387  	    lsquo: '\u2018',
 60388  	    rsquo: '\u2019',
 60389  	    sbquo: '\u201A',
 60390  	    ldquo: '\u201C',
 60391  	    rdquo: '\u201D',
 60392  	    bdquo: '\u201E',
 60393  	    dagger: '\u2020',
 60394  	    Dagger: '\u2021',
 60395  	    bull: '\u2022',
 60396  	    hellip: '\u2026',
 60397  	    permil: '\u2030',
 60398  	    prime: '\u2032',
 60399  	    Prime: '\u2033',
 60400  	    lsaquo: '\u2039',
 60401  	    rsaquo: '\u203A',
 60402  	    oline: '\u203E',
 60403  	    frasl: '\u2044',
 60404  	    euro: '\u20AC',
 60405  	    image: '\u2111',
 60406  	    weierp: '\u2118',
 60407  	    real: '\u211C',
 60408  	    trade: '\u2122',
 60409  	    alefsym: '\u2135',
 60410  	    larr: '\u2190',
 60411  	    uarr: '\u2191',
 60412  	    rarr: '\u2192',
 60413  	    darr: '\u2193',
 60414  	    harr: '\u2194',
 60415  	    crarr: '\u21B5',
 60416  	    lArr: '\u21D0',
 60417  	    uArr: '\u21D1',
 60418  	    rArr: '\u21D2',
 60419  	    dArr: '\u21D3',
 60420  	    hArr: '\u21D4',
 60421  	    forall: '\u2200',
 60422  	    part: '\u2202',
 60423  	    exist: '\u2203',
 60424  	    empty: '\u2205',
 60425  	    nabla: '\u2207',
 60426  	    isin: '\u2208',
 60427  	    notin: '\u2209',
 60428  	    ni: '\u220B',
 60429  	    prod: '\u220F',
 60430  	    sum: '\u2211',
 60431  	    minus: '\u2212',
 60432  	    lowast: '\u2217',
 60433  	    radic: '\u221A',
 60434  	    prop: '\u221D',
 60435  	    infin: '\u221E',
 60436  	    ang: '\u2220',
 60437  	    and: '\u2227',
 60438  	    or: '\u2228',
 60439  	    cap: '\u2229',
 60440  	    cup: '\u222A',
 60441  	    int: '\u222B',
 60442  	    there4: '\u2234',
 60443  	    sim: '\u223C',
 60444  	    cong: '\u2245',
 60445  	    asymp: '\u2248',
 60446  	    ne: '\u2260',
 60447  	    equiv: '\u2261',
 60448  	    le: '\u2264',
 60449  	    ge: '\u2265',
 60450  	    sub: '\u2282',
 60451  	    sup: '\u2283',
 60452  	    nsub: '\u2284',
 60453  	    sube: '\u2286',
 60454  	    supe: '\u2287',
 60455  	    oplus: '\u2295',
 60456  	    otimes: '\u2297',
 60457  	    perp: '\u22A5',
 60458  	    sdot: '\u22C5',
 60459  	    lceil: '\u2308',
 60460  	    rceil: '\u2309',
 60461  	    lfloor: '\u230A',
 60462  	    rfloor: '\u230B',
 60463  	    loz: '\u25CA',
 60464  	    spades: '\u2660',
 60465  	    clubs: '\u2663',
 60466  	    hearts: '\u2665',
 60467  	    diams: '\u2666',
 60468  	    lang: '\u27E8',
 60469  	    rang: '\u27E9'
 60470  	};
 60471  
 60472  
 60473  /***/ },
 60474  /* 15 */
 60475  /***/ function(module, exports, __webpack_require__) {
 60476  
 60477  	"use strict";
 60478  	Object.defineProperty(exports, "__esModule", { value: true });
 60479  	var error_handler_1 = __webpack_require__(10);
 60480  	var scanner_1 = __webpack_require__(12);
 60481  	var token_1 = __webpack_require__(13);
 60482  	var Reader = (function () {
 60483  	    function Reader() {
 60484  	        this.values = [];
 60485  	        this.curly = this.paren = -1;
 60486  	    }
 60487  	    // A function following one of those tokens is an expression.
 60488  	    Reader.prototype.beforeFunctionExpression = function (t) {
 60489  	        return ['(', '{', '[', 'in', 'typeof', 'instanceof', 'new',
 60490  	            'return', 'case', 'delete', 'throw', 'void',
 60491  	            // assignment operators
 60492  	            '=', '+=', '-=', '*=', '**=', '/=', '%=', '<<=', '>>=', '>>>=',
 60493  	            '&=', '|=', '^=', ',',
 60494  	            // binary/unary operators
 60495  	            '+', '-', '*', '**', '/', '%', '++', '--', '<<', '>>', '>>>', '&',
 60496  	            '|', '^', '!', '~', '&&', '||', '?', ':', '===', '==', '>=',
 60497  	            '<=', '<', '>', '!=', '!=='].indexOf(t) >= 0;
 60498  	    };
 60499  	    // Determine if forward slash (/) is an operator or part of a regular expression
 60500  	    // https://github.com/mozilla/sweet.js/wiki/design
 60501  	    Reader.prototype.isRegexStart = function () {
 60502  	        var previous = this.values[this.values.length - 1];
 60503  	        var regex = (previous !== null);
 60504  	        switch (previous) {
 60505  	            case 'this':
 60506  	            case ']':
 60507  	                regex = false;
 60508  	                break;
 60509  	            case ')':
 60510  	                var keyword = this.values[this.paren - 1];
 60511  	                regex = (keyword === 'if' || keyword === 'while' || keyword === 'for' || keyword === 'with');
 60512  	                break;
 60513  	            case '}':
 60514  	                // Dividing a function by anything makes little sense,
 60515  	                // but we have to check for that.
 60516  	                regex = false;
 60517  	                if (this.values[this.curly - 3] === 'function') {
 60518  	                    // Anonymous function, e.g. function(){} /42
 60519  	                    var check = this.values[this.curly - 4];
 60520  	                    regex = check ? !this.beforeFunctionExpression(check) : false;
 60521  	                }
 60522  	                else if (this.values[this.curly - 4] === 'function') {
 60523  	                    // Named function, e.g. function f(){} /42/
 60524  	                    var check = this.values[this.curly - 5];
 60525  	                    regex = check ? !this.beforeFunctionExpression(check) : true;
 60526  	                }
 60527  	                break;
 60528  	            default:
 60529  	                break;
 60530  	        }
 60531  	        return regex;
 60532  	    };
 60533  	    Reader.prototype.push = function (token) {
 60534  	        if (token.type === 7 /* Punctuator */ || token.type === 4 /* Keyword */) {
 60535  	            if (token.value === '{') {
 60536  	                this.curly = this.values.length;
 60537  	            }
 60538  	            else if (token.value === '(') {
 60539  	                this.paren = this.values.length;
 60540  	            }
 60541  	            this.values.push(token.value);
 60542  	        }
 60543  	        else {
 60544  	            this.values.push(null);
 60545  	        }
 60546  	    };
 60547  	    return Reader;
 60548  	}());
 60549  	var Tokenizer = (function () {
 60550  	    function Tokenizer(code, config) {
 60551  	        this.errorHandler = new error_handler_1.ErrorHandler();
 60552  	        this.errorHandler.tolerant = config ? (typeof config.tolerant === 'boolean' && config.tolerant) : false;
 60553  	        this.scanner = new scanner_1.Scanner(code, this.errorHandler);
 60554  	        this.scanner.trackComment = config ? (typeof config.comment === 'boolean' && config.comment) : false;
 60555  	        this.trackRange = config ? (typeof config.range === 'boolean' && config.range) : false;
 60556  	        this.trackLoc = config ? (typeof config.loc === 'boolean' && config.loc) : false;
 60557  	        this.buffer = [];
 60558  	        this.reader = new Reader();
 60559  	    }
 60560  	    Tokenizer.prototype.errors = function () {
 60561  	        return this.errorHandler.errors;
 60562  	    };
 60563  	    Tokenizer.prototype.getNextToken = function () {
 60564  	        if (this.buffer.length === 0) {
 60565  	            var comments = this.scanner.scanComments();
 60566  	            if (this.scanner.trackComment) {
 60567  	                for (var i = 0; i < comments.length; ++i) {
 60568  	                    var e = comments[i];
 60569  	                    var value = this.scanner.source.slice(e.slice[0], e.slice[1]);
 60570  	                    var comment = {
 60571  	                        type: e.multiLine ? 'BlockComment' : 'LineComment',
 60572  	                        value: value
 60573  	                    };
 60574  	                    if (this.trackRange) {
 60575  	                        comment.range = e.range;
 60576  	                    }
 60577  	                    if (this.trackLoc) {
 60578  	                        comment.loc = e.loc;
 60579  	                    }
 60580  	                    this.buffer.push(comment);
 60581  	                }
 60582  	            }
 60583  	            if (!this.scanner.eof()) {
 60584  	                var loc = void 0;
 60585  	                if (this.trackLoc) {
 60586  	                    loc = {
 60587  	                        start: {
 60588  	                            line: this.scanner.lineNumber,
 60589  	                            column: this.scanner.index - this.scanner.lineStart
 60590  	                        },
 60591  	                        end: {}
 60592  	                    };
 60593  	                }
 60594  	                var startRegex = (this.scanner.source[this.scanner.index] === '/') && this.reader.isRegexStart();
 60595  	                var token = startRegex ? this.scanner.scanRegExp() : this.scanner.lex();
 60596  	                this.reader.push(token);
 60597  	                var entry = {
 60598  	                    type: token_1.TokenName[token.type],
 60599  	                    value: this.scanner.source.slice(token.start, token.end)
 60600  	                };
 60601  	                if (this.trackRange) {
 60602  	                    entry.range = [token.start, token.end];
 60603  	                }
 60604  	                if (this.trackLoc) {
 60605  	                    loc.end = {
 60606  	                        line: this.scanner.lineNumber,
 60607  	                        column: this.scanner.index - this.scanner.lineStart
 60608  	                    };
 60609  	                    entry.loc = loc;
 60610  	                }
 60611  	                if (token.type === 9 /* RegularExpression */) {
 60612  	                    var pattern = token.pattern;
 60613  	                    var flags = token.flags;
 60614  	                    entry.regex = { pattern: pattern, flags: flags };
 60615  	                }
 60616  	                this.buffer.push(entry);
 60617  	            }
 60618  	        }
 60619  	        return this.buffer.shift();
 60620  	    };
 60621  	    return Tokenizer;
 60622  	}());
 60623  	exports.Tokenizer = Tokenizer;
 60624  
 60625  
 60626  /***/ }
 60627  /******/ ])
 60628  });
 60629  ;
 60630  
 60631  /***/ }),
 60632  /* 266 */
 60633  /***/ (function(module, exports, __webpack_require__) {
 60634  
 60635  "use strict";
 60636  
 60637  
 60638  var hasOwn = Object.prototype.hasOwnProperty;
 60639  var toStr = Object.prototype.toString;
 60640  var defineProperty = Object.defineProperty;
 60641  var gOPD = Object.getOwnPropertyDescriptor;
 60642  
 60643  var isArray = function isArray(arr) {
 60644  	if (typeof Array.isArray === 'function') {
 60645  		return Array.isArray(arr);
 60646  	}
 60647  
 60648  	return toStr.call(arr) === '[object Array]';
 60649  };
 60650  
 60651  var isPlainObject = function isPlainObject(obj) {
 60652  	if (!obj || toStr.call(obj) !== '[object Object]') {
 60653  		return false;
 60654  	}
 60655  
 60656  	var hasOwnConstructor = hasOwn.call(obj, 'constructor');
 60657  	var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');
 60658  	// Not own constructor property must be Object
 60659  	if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {
 60660  		return false;
 60661  	}
 60662  
 60663  	// Own properties are enumerated firstly, so to speed up,
 60664  	// if last one is own, then all properties are own.
 60665  	var key;
 60666  	for (key in obj) { /**/ }
 60667  
 60668  	return typeof key === 'undefined' || hasOwn.call(obj, key);
 60669  };
 60670  
 60671  // If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target
 60672  var setProperty = function setProperty(target, options) {
 60673  	if (defineProperty && options.name === '__proto__') {
 60674  		defineProperty(target, options.name, {
 60675  			enumerable: true,
 60676  			configurable: true,
 60677  			value: options.newValue,
 60678  			writable: true
 60679  		});
 60680  	} else {
 60681  		target[options.name] = options.newValue;
 60682  	}
 60683  };
 60684  
 60685  // Return undefined instead of __proto__ if '__proto__' is not an own property
 60686  var getProperty = function getProperty(obj, name) {
 60687  	if (name === '__proto__') {
 60688  		if (!hasOwn.call(obj, name)) {
 60689  			return void 0;
 60690  		} else if (gOPD) {
 60691  			// In early versions of node, obj['__proto__'] is buggy when obj has
 60692  			// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.
 60693  			return gOPD(obj, name).value;
 60694  		}
 60695  	}
 60696  
 60697  	return obj[name];
 60698  };
 60699  
 60700  module.exports = function extend() {
 60701  	var options, name, src, copy, copyIsArray, clone;
 60702  	var target = arguments[0];
 60703  	var i = 1;
 60704  	var length = arguments.length;
 60705  	var deep = false;
 60706  
 60707  	// Handle a deep copy situation
 60708  	if (typeof target === 'boolean') {
 60709  		deep = target;
 60710  		target = arguments[1] || {};
 60711  		// skip the boolean and the target
 60712  		i = 2;
 60713  	}
 60714  	if (target == null || (typeof target !== 'object' && typeof target !== 'function')) {
 60715  		target = {};
 60716  	}
 60717  
 60718  	for (; i < length; ++i) {
 60719  		options = arguments[i];
 60720  		// Only deal with non-null/undefined values
 60721  		if (options != null) {
 60722  			// Extend the base object
 60723  			for (name in options) {
 60724  				src = getProperty(target, name);
 60725  				copy = getProperty(options, name);
 60726  
 60727  				// Prevent never-ending loop
 60728  				if (target !== copy) {
 60729  					// Recurse if we're merging plain objects or arrays
 60730  					if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {
 60731  						if (copyIsArray) {
 60732  							copyIsArray = false;
 60733  							clone = src && isArray(src) ? src : [];
 60734  						} else {
 60735  							clone = src && isPlainObject(src) ? src : {};
 60736  						}
 60737  
 60738  						// Never move original objects, clone them
 60739  						setProperty(target, { name: name, newValue: extend(deep, clone, copy) });
 60740  
 60741  					// Don't bring in undefined values
 60742  					} else if (typeof copy !== 'undefined') {
 60743  						setProperty(target, { name: name, newValue: copy });
 60744  					}
 60745  				}
 60746  			}
 60747  		}
 60748  	}
 60749  
 60750  	// Return the modified object
 60751  	return target;
 60752  };
 60753  
 60754  
 60755  /***/ }),
 60756  /* 267 */
 60757  /***/ (function(module, exports, __webpack_require__) {
 60758  
 60759  "use strict";
 60760  
 60761  const escapeStringRegexp = __webpack_require__(382);
 60762  
 60763  const platform = process.platform;
 60764  
 60765  const main = {
 60766  	tick: '✔',
 60767  	cross: '✖',
 60768  	star: '★',
 60769  	square: '▇',
 60770  	squareSmall: '◻',
 60771  	squareSmallFilled: '◼',
 60772  	play: '▶',
 60773  	circle: '◯',
 60774  	circleFilled: '◉',
 60775  	circleDotted: '◌',
 60776  	circleDouble: '◎',
 60777  	circleCircle: 'ⓞ',
 60778  	circleCross: 'ⓧ',
 60779  	circlePipe: 'Ⓘ',
 60780  	circleQuestionMark: '?⃝',
 60781  	bullet: '●',
 60782  	dot: '․',
 60783  	line: '─',
 60784  	ellipsis: '…',
 60785  	pointer: '❯',
 60786  	pointerSmall: '›',
 60787  	info: 'ℹ',
 60788  	warning: '⚠',
 60789  	hamburger: '☰',
 60790  	smiley: '㋡',
 60791  	mustache: '෴',
 60792  	heart: '♥',
 60793  	arrowUp: '↑',
 60794  	arrowDown: '↓',
 60795  	arrowLeft: '←',
 60796  	arrowRight: '→',
 60797  	radioOn: '◉',
 60798  	radioOff: '◯',
 60799  	checkboxOn: '☒',
 60800  	checkboxOff: '☐',
 60801  	checkboxCircleOn: 'ⓧ',
 60802  	checkboxCircleOff: 'Ⓘ',
 60803  	questionMarkPrefix: '?⃝',
 60804  	oneHalf: '½',
 60805  	oneThird: '⅓',
 60806  	oneQuarter: '¼',
 60807  	oneFifth: '⅕',
 60808  	oneSixth: '⅙',
 60809  	oneSeventh: '⅐',
 60810  	oneEighth: '⅛',
 60811  	oneNinth: '⅑',
 60812  	oneTenth: '⅒',
 60813  	twoThirds: '⅔',
 60814  	twoFifths: '⅖',
 60815  	threeQuarters: '¾',
 60816  	threeFifths: '⅗',
 60817  	threeEighths: '⅜',
 60818  	fourFifths: '⅘',
 60819  	fiveSixths: '⅚',
 60820  	fiveEighths: '⅝',
 60821  	sevenEighths: '⅞'
 60822  };
 60823  
 60824  const win = {
 60825  	tick: '√',
 60826  	cross: '×',
 60827  	star: '*',
 60828  	square: '█',
 60829  	squareSmall: '[ ]',
 60830  	squareSmallFilled: '[█]',
 60831  	play: '►',
 60832  	circle: '( )',
 60833  	circleFilled: '(*)',
 60834  	circleDotted: '( )',
 60835  	circleDouble: '( )',
 60836  	circleCircle: '(○)',
 60837  	circleCross: '(×)',
 60838  	circlePipe: '(│)',
 60839  	circleQuestionMark: '(?)',
 60840  	bullet: '*',
 60841  	dot: '.',
 60842  	line: '─',
 60843  	ellipsis: '...',
 60844  	pointer: '>',
 60845  	pointerSmall: '»',
 60846  	info: 'i',
 60847  	warning: '‼',
 60848  	hamburger: '≡',
 60849  	smiley: '☺',
 60850  	mustache: '┌─┐',
 60851  	heart: main.heart,
 60852  	arrowUp: main.arrowUp,
 60853  	arrowDown: main.arrowDown,
 60854  	arrowLeft: main.arrowLeft,
 60855  	arrowRight: main.arrowRight,
 60856  	radioOn: '(*)',
 60857  	radioOff: '( )',
 60858  	checkboxOn: '[×]',
 60859  	checkboxOff: '[ ]',
 60860  	checkboxCircleOn: '(×)',
 60861  	checkboxCircleOff: '( )',
 60862  	questionMarkPrefix: '?',
 60863  	oneHalf: '1/2',
 60864  	oneThird: '1/3',
 60865  	oneQuarter: '1/4',
 60866  	oneFifth: '1/5',
 60867  	oneSixth: '1/6',
 60868  	oneSeventh: '1/7',
 60869  	oneEighth: '1/8',
 60870  	oneNinth: '1/9',
 60871  	oneTenth: '1/10',
 60872  	twoThirds: '2/3',
 60873  	twoFifths: '2/5',
 60874  	threeQuarters: '3/4',
 60875  	threeFifths: '3/5',
 60876  	threeEighths: '3/8',
 60877  	fourFifths: '4/5',
 60878  	fiveSixths: '5/6',
 60879  	fiveEighths: '5/8',
 60880  	sevenEighths: '7/8'
 60881  };
 60882  
 60883  if (platform === 'linux') {
 60884  	// the main one doesn't look that good on Ubuntu
 60885  	main.questionMarkPrefix = '?';
 60886  }
 60887  
 60888  const figures = platform === 'win32' ? win : main;
 60889  
 60890  const fn = str => {
 60891  	if (figures === main) {
 60892  		return str;
 60893  	}
 60894  
 60895  	Object.keys(main).forEach(key => {
 60896  		if (main[key] === figures[key]) {
 60897  			return;
 60898  		}
 60899  
 60900  		str = str.replace(new RegExp(escapeStringRegexp(main[key]), 'g'), figures[key]);
 60901  	});
 60902  
 60903  	return str;
 60904  };
 60905  
 60906  module.exports = Object.assign(fn, figures);
 60907  
 60908  
 60909  /***/ }),
 60910  /* 268 */
 60911  /***/ (function(module, exports, __webpack_require__) {
 60912  
 60913  // Copyright Joyent, Inc. and other Node contributors.
 60914  //
 60915  // Permission is hereby granted, free of charge, to any person obtaining a
 60916  // copy of this software and associated documentation files (the
 60917  // "Software"), to deal in the Software without restriction, including
 60918  // without limitation the rights to use, copy, modify, merge, publish,
 60919  // distribute, sublicense, and/or sell copies of the Software, and to permit
 60920  // persons to whom the Software is furnished to do so, subject to the
 60921  // following conditions:
 60922  //
 60923  // The above copyright notice and this permission notice shall be included
 60924  // in all copies or substantial portions of the Software.
 60925  //
 60926  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 60927  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 60928  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 60929  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 60930  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 60931  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 60932  // USE OR OTHER DEALINGS IN THE SOFTWARE.
 60933  
 60934  var pathModule = __webpack_require__(0);
 60935  var isWindows = process.platform === 'win32';
 60936  var fs = __webpack_require__(4);
 60937  
 60938  // JavaScript implementation of realpath, ported from node pre-v6
 60939  
 60940  var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);
 60941  
 60942  function rethrow() {
 60943    // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and
 60944    // is fairly slow to generate.
 60945    var callback;
 60946    if (DEBUG) {
 60947      var backtrace = new Error;
 60948      callback = debugCallback;
 60949    } else
 60950      callback = missingCallback;
 60951  
 60952    return callback;
 60953  
 60954    function debugCallback(err) {
 60955      if (err) {
 60956        backtrace.message = err.message;
 60957        err = backtrace;
 60958        missingCallback(err);
 60959      }
 60960    }
 60961  
 60962    function missingCallback(err) {
 60963      if (err) {
 60964        if (process.throwDeprecation)
 60965          throw err;  // Forgot a callback but don't know where? Use NODE_DEBUG=fs
 60966        else if (!process.noDeprecation) {
 60967          var msg = 'fs: missing callback ' + (err.stack || err.message);
 60968          if (process.traceDeprecation)
 60969            console.trace(msg);
 60970          else
 60971            console.error(msg);
 60972        }
 60973      }
 60974    }
 60975  }
 60976  
 60977  function maybeCallback(cb) {
 60978    return typeof cb === 'function' ? cb : rethrow();
 60979  }
 60980  
 60981  var normalize = pathModule.normalize;
 60982  
 60983  // Regexp that finds the next partion of a (partial) path
 60984  // result is [base_with_slash, base], e.g. ['somedir/', 'somedir']
 60985  if (isWindows) {
 60986    var nextPartRe = /(.*?)(?:[\/\\]+|$)/g;
 60987  } else {
 60988    var nextPartRe = /(.*?)(?:[\/]+|$)/g;
 60989  }
 60990  
 60991  // Regex to find the device root, including trailing slash. E.g. 'c:\\'.
 60992  if (isWindows) {
 60993    var splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/;
 60994  } else {
 60995    var splitRootRe = /^[\/]*/;
 60996  }
 60997  
 60998  exports.realpathSync = function realpathSync(p, cache) {
 60999    // make p is absolute
 61000    p = pathModule.resolve(p);
 61001  
 61002    if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
 61003      return cache[p];
 61004    }
 61005  
 61006    var original = p,
 61007        seenLinks = {},
 61008        knownHard = {};
 61009  
 61010    // current character position in p
 61011    var pos;
 61012    // the partial path so far, including a trailing slash if any
 61013    var current;
 61014    // the partial path without a trailing slash (except when pointing at a root)
 61015    var base;
 61016    // the partial path scanned in the previous round, with slash
 61017    var previous;
 61018  
 61019    start();
 61020  
 61021    function start() {
 61022      // Skip over roots
 61023      var m = splitRootRe.exec(p);
 61024      pos = m[0].length;
 61025      current = m[0];
 61026      base = m[0];
 61027      previous = '';
 61028  
 61029      // On windows, check that the root exists. On unix there is no need.
 61030      if (isWindows && !knownHard[base]) {
 61031        fs.lstatSync(base);
 61032        knownHard[base] = true;
 61033      }
 61034    }
 61035  
 61036    // walk down the path, swapping out linked pathparts for their real
 61037    // values
 61038    // NB: p.length changes.
 61039    while (pos < p.length) {
 61040      // find the next part
 61041      nextPartRe.lastIndex = pos;
 61042      var result = nextPartRe.exec(p);
 61043      previous = current;
 61044      current += result[0];
 61045      base = previous + result[1];
 61046      pos = nextPartRe.lastIndex;
 61047  
 61048      // continue if not a symlink
 61049      if (knownHard[base] || (cache && cache[base] === base)) {
 61050        continue;
 61051      }
 61052  
 61053      var resolvedLink;
 61054      if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
 61055        // some known symbolic link.  no need to stat again.
 61056        resolvedLink = cache[base];
 61057      } else {
 61058        var stat = fs.lstatSync(base);
 61059        if (!stat.isSymbolicLink()) {
 61060          knownHard[base] = true;
 61061          if (cache) cache[base] = base;
 61062          continue;
 61063        }
 61064  
 61065        // read the link if it wasn't read before
 61066        // dev/ino always return 0 on windows, so skip the check.
 61067        var linkTarget = null;
 61068        if (!isWindows) {
 61069          var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);
 61070          if (seenLinks.hasOwnProperty(id)) {
 61071            linkTarget = seenLinks[id];
 61072          }
 61073        }
 61074        if (linkTarget === null) {
 61075          fs.statSync(base);
 61076          linkTarget = fs.readlinkSync(base);
 61077        }
 61078        resolvedLink = pathModule.resolve(previous, linkTarget);
 61079        // track this, if given a cache.
 61080        if (cache) cache[base] = resolvedLink;
 61081        if (!isWindows) seenLinks[id] = linkTarget;
 61082      }
 61083  
 61084      // resolve the link, then start over
 61085      p = pathModule.resolve(resolvedLink, p.slice(pos));
 61086      start();
 61087    }
 61088  
 61089    if (cache) cache[original] = p;
 61090  
 61091    return p;
 61092  };
 61093  
 61094  
 61095  exports.realpath = function realpath(p, cache, cb) {
 61096    if (typeof cb !== 'function') {
 61097      cb = maybeCallback(cache);
 61098      cache = null;
 61099    }
 61100  
 61101    // make p is absolute
 61102    p = pathModule.resolve(p);
 61103  
 61104    if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
 61105      return process.nextTick(cb.bind(null, null, cache[p]));
 61106    }
 61107  
 61108    var original = p,
 61109        seenLinks = {},
 61110        knownHard = {};
 61111  
 61112    // current character position in p
 61113    var pos;
 61114    // the partial path so far, including a trailing slash if any
 61115    var current;
 61116    // the partial path without a trailing slash (except when pointing at a root)
 61117    var base;
 61118    // the partial path scanned in the previous round, with slash
 61119    var previous;
 61120  
 61121    start();
 61122  
 61123    function start() {
 61124      // Skip over roots
 61125      var m = splitRootRe.exec(p);
 61126      pos = m[0].length;
 61127      current = m[0];
 61128      base = m[0];
 61129      previous = '';
 61130  
 61131      // On windows, check that the root exists. On unix there is no need.
 61132      if (isWindows && !knownHard[base]) {
 61133        fs.lstat(base, function(err) {
 61134          if (err) return cb(err);
 61135          knownHard[base] = true;
 61136          LOOP();
 61137        });
 61138      } else {
 61139        process.nextTick(LOOP);
 61140      }
 61141    }
 61142  
 61143    // walk down the path, swapping out linked pathparts for their real
 61144    // values
 61145    function LOOP() {
 61146      // stop if scanned past end of path
 61147      if (pos >= p.length) {
 61148        if (cache) cache[original] = p;
 61149        return cb(null, p);
 61150      }
 61151  
 61152      // find the next part
 61153      nextPartRe.lastIndex = pos;
 61154      var result = nextPartRe.exec(p);
 61155      previous = current;
 61156      current += result[0];
 61157      base = previous + result[1];
 61158      pos = nextPartRe.lastIndex;
 61159  
 61160      // continue if not a symlink
 61161      if (knownHard[base] || (cache && cache[base] === base)) {
 61162        return process.nextTick(LOOP);
 61163      }
 61164  
 61165      if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
 61166        // known symbolic link.  no need to stat again.
 61167        return gotResolvedLink(cache[base]);
 61168      }
 61169  
 61170      return fs.lstat(base, gotStat);
 61171    }
 61172  
 61173    function gotStat(err, stat) {
 61174      if (err) return cb(err);
 61175  
 61176      // if not a symlink, skip to the next path part
 61177      if (!stat.isSymbolicLink()) {
 61178        knownHard[base] = true;
 61179        if (cache) cache[base] = base;
 61180        return process.nextTick(LOOP);
 61181      }
 61182  
 61183      // stat & read the link if not read before
 61184      // call gotTarget as soon as the link target is known
 61185      // dev/ino always return 0 on windows, so skip the check.
 61186      if (!isWindows) {
 61187        var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);
 61188        if (seenLinks.hasOwnProperty(id)) {
 61189          return gotTarget(null, seenLinks[id], base);
 61190        }
 61191      }
 61192      fs.stat(base, function(err) {
 61193        if (err) return cb(err);
 61194  
 61195        fs.readlink(base, function(err, target) {
 61196          if (!isWindows) seenLinks[id] = target;
 61197          gotTarget(err, target);
 61198        });
 61199      });
 61200    }
 61201  
 61202    function gotTarget(err, target, base) {
 61203      if (err) return cb(err);
 61204  
 61205      var resolvedLink = pathModule.resolve(previous, target);
 61206      if (cache) cache[base] = resolvedLink;
 61207      gotResolvedLink(resolvedLink);
 61208    }
 61209  
 61210    function gotResolvedLink(resolvedLink) {
 61211      // resolve the link, then start over
 61212      p = pathModule.resolve(resolvedLink, p.slice(pos));
 61213      start();
 61214    }
 61215  };
 61216  
 61217  
 61218  /***/ }),
 61219  /* 269 */
 61220  /***/ (function(module, exports, __webpack_require__) {
 61221  
 61222  module.exports = globSync
 61223  globSync.GlobSync = GlobSync
 61224  
 61225  var fs = __webpack_require__(4)
 61226  var rp = __webpack_require__(140)
 61227  var minimatch = __webpack_require__(82)
 61228  var Minimatch = minimatch.Minimatch
 61229  var Glob = __webpack_require__(99).Glob
 61230  var util = __webpack_require__(3)
 61231  var path = __webpack_require__(0)
 61232  var assert = __webpack_require__(28)
 61233  var isAbsolute = __webpack_require__(101)
 61234  var common = __webpack_require__(141)
 61235  var alphasort = common.alphasort
 61236  var alphasorti = common.alphasorti
 61237  var setopts = common.setopts
 61238  var ownProp = common.ownProp
 61239  var childrenIgnored = common.childrenIgnored
 61240  var isIgnored = common.isIgnored
 61241  
 61242  function globSync (pattern, options) {
 61243    if (typeof options === 'function' || arguments.length === 3)
 61244      throw new TypeError('callback provided to sync glob\n'+
 61245                          'See: https://github.com/isaacs/node-glob/issues/167')
 61246  
 61247    return new GlobSync(pattern, options).found
 61248  }
 61249  
 61250  function GlobSync (pattern, options) {
 61251    if (!pattern)
 61252      throw new Error('must provide pattern')
 61253  
 61254    if (typeof options === 'function' || arguments.length === 3)
 61255      throw new TypeError('callback provided to sync glob\n'+
 61256                          'See: https://github.com/isaacs/node-glob/issues/167')
 61257  
 61258    if (!(this instanceof GlobSync))
 61259      return new GlobSync(pattern, options)
 61260  
 61261    setopts(this, pattern, options)
 61262  
 61263    if (this.noprocess)
 61264      return this
 61265  
 61266    var n = this.minimatch.set.length
 61267    this.matches = new Array(n)
 61268    for (var i = 0; i < n; i ++) {
 61269      this._process(this.minimatch.set[i], i, false)
 61270    }
 61271    this._finish()
 61272  }
 61273  
 61274  GlobSync.prototype._finish = function () {
 61275    assert(this instanceof GlobSync)
 61276    if (this.realpath) {
 61277      var self = this
 61278      this.matches.forEach(function (matchset, index) {
 61279        var set = self.matches[index] = Object.create(null)
 61280        for (var p in matchset) {
 61281          try {
 61282            p = self._makeAbs(p)
 61283            var real = rp.realpathSync(p, self.realpathCache)
 61284            set[real] = true
 61285          } catch (er) {
 61286            if (er.syscall === 'stat')
 61287              set[self._makeAbs(p)] = true
 61288            else
 61289              throw er
 61290          }
 61291        }
 61292      })
 61293    }
 61294    common.finish(this)
 61295  }
 61296  
 61297  
 61298  GlobSync.prototype._process = function (pattern, index, inGlobStar) {
 61299    assert(this instanceof GlobSync)
 61300  
 61301    // Get the first [n] parts of pattern that are all strings.
 61302    var n = 0
 61303    while (typeof pattern[n] === 'string') {
 61304      n ++
 61305    }
 61306    // now n is the index of the first one that is *not* a string.
 61307  
 61308    // See if there's anything else
 61309    var prefix
 61310    switch (n) {
 61311      // if not, then this is rather simple
 61312      case pattern.length:
 61313        this._processSimple(pattern.join('/'), index)
 61314        return
 61315  
 61316      case 0:
 61317        // pattern *starts* with some non-trivial item.
 61318        // going to readdir(cwd), but not include the prefix in matches.
 61319        prefix = null
 61320        break
 61321  
 61322      default:
 61323        // pattern has some string bits in the front.
 61324        // whatever it starts with, whether that's 'absolute' like /foo/bar,
 61325        // or 'relative' like '../baz'
 61326        prefix = pattern.slice(0, n).join('/')
 61327        break
 61328    }
 61329  
 61330    var remain = pattern.slice(n)
 61331  
 61332    // get the list of entries.
 61333    var read
 61334    if (prefix === null)
 61335      read = '.'
 61336    else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {
 61337      if (!prefix || !isAbsolute(prefix))
 61338        prefix = '/' + prefix
 61339      read = prefix
 61340    } else
 61341      read = prefix
 61342  
 61343    var abs = this._makeAbs(read)
 61344  
 61345    //if ignored, skip processing
 61346    if (childrenIgnored(this, read))
 61347      return
 61348  
 61349    var isGlobStar = remain[0] === minimatch.GLOBSTAR
 61350    if (isGlobStar)
 61351      this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)
 61352    else
 61353      this._processReaddir(prefix, read, abs, remain, index, inGlobStar)
 61354  }
 61355  
 61356  
 61357  GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {
 61358    var entries = this._readdir(abs, inGlobStar)
 61359  
 61360    // if the abs isn't a dir, then nothing can match!
 61361    if (!entries)
 61362      return
 61363  
 61364    // It will only match dot entries if it starts with a dot, or if
 61365    // dot is set.  Stuff like @(.foo|.bar) isn't allowed.
 61366    var pn = remain[0]
 61367    var negate = !!this.minimatch.negate
 61368    var rawGlob = pn._glob
 61369    var dotOk = this.dot || rawGlob.charAt(0) === '.'
 61370  
 61371    var matchedEntries = []
 61372    for (var i = 0; i < entries.length; i++) {
 61373      var e = entries[i]
 61374      if (e.charAt(0) !== '.' || dotOk) {
 61375        var m
 61376        if (negate && !prefix) {
 61377          m = !e.match(pn)
 61378        } else {
 61379          m = e.match(pn)
 61380        }
 61381        if (m)
 61382          matchedEntries.push(e)
 61383      }
 61384    }
 61385  
 61386    var len = matchedEntries.length
 61387    // If there are no matched entries, then nothing matches.
 61388    if (len === 0)
 61389      return
 61390  
 61391    // if this is the last remaining pattern bit, then no need for
 61392    // an additional stat *unless* the user has specified mark or
 61393    // stat explicitly.  We know they exist, since readdir returned
 61394    // them.
 61395  
 61396    if (remain.length === 1 && !this.mark && !this.stat) {
 61397      if (!this.matches[index])
 61398        this.matches[index] = Object.create(null)
 61399  
 61400      for (var i = 0; i < len; i ++) {
 61401        var e = matchedEntries[i]
 61402        if (prefix) {
 61403          if (prefix.slice(-1) !== '/')
 61404            e = prefix + '/' + e
 61405          else
 61406            e = prefix + e
 61407        }
 61408  
 61409        if (e.charAt(0) === '/' && !this.nomount) {
 61410          e = path.join(this.root, e)
 61411        }
 61412        this._emitMatch(index, e)
 61413      }
 61414      // This was the last one, and no stats were needed
 61415      return
 61416    }
 61417  
 61418    // now test all matched entries as stand-ins for that part
 61419    // of the pattern.
 61420    remain.shift()
 61421    for (var i = 0; i < len; i ++) {
 61422      var e = matchedEntries[i]
 61423      var newPattern
 61424      if (prefix)
 61425        newPattern = [prefix, e]
 61426      else
 61427        newPattern = [e]
 61428      this._process(newPattern.concat(remain), index, inGlobStar)
 61429    }
 61430  }
 61431  
 61432  
 61433  GlobSync.prototype._emitMatch = function (index, e) {
 61434    if (isIgnored(this, e))
 61435      return
 61436  
 61437    var abs = this._makeAbs(e)
 61438  
 61439    if (this.mark)
 61440      e = this._mark(e)
 61441  
 61442    if (this.absolute) {
 61443      e = abs
 61444    }
 61445  
 61446    if (this.matches[index][e])
 61447      return
 61448  
 61449    if (this.nodir) {
 61450      var c = this.cache[abs]
 61451      if (c === 'DIR' || Array.isArray(c))
 61452        return
 61453    }
 61454  
 61455    this.matches[index][e] = true
 61456  
 61457    if (this.stat)
 61458      this._stat(e)
 61459  }
 61460  
 61461  
 61462  GlobSync.prototype._readdirInGlobStar = function (abs) {
 61463    // follow all symlinked directories forever
 61464    // just proceed as if this is a non-globstar situation
 61465    if (this.follow)
 61466      return this._readdir(abs, false)
 61467  
 61468    var entries
 61469    var lstat
 61470    var stat
 61471    try {
 61472      lstat = fs.lstatSync(abs)
 61473    } catch (er) {
 61474      if (er.code === 'ENOENT') {
 61475        // lstat failed, doesn't exist
 61476        return null
 61477      }
 61478    }
 61479  
 61480    var isSym = lstat && lstat.isSymbolicLink()
 61481    this.symlinks[abs] = isSym
 61482  
 61483    // If it's not a symlink or a dir, then it's definitely a regular file.
 61484    // don't bother doing a readdir in that case.
 61485    if (!isSym && lstat && !lstat.isDirectory())
 61486      this.cache[abs] = 'FILE'
 61487    else
 61488      entries = this._readdir(abs, false)
 61489  
 61490    return entries
 61491  }
 61492  
 61493  GlobSync.prototype._readdir = function (abs, inGlobStar) {
 61494    var entries
 61495  
 61496    if (inGlobStar && !ownProp(this.symlinks, abs))
 61497      return this._readdirInGlobStar(abs)
 61498  
 61499    if (ownProp(this.cache, abs)) {
 61500      var c = this.cache[abs]
 61501      if (!c || c === 'FILE')
 61502        return null
 61503  
 61504      if (Array.isArray(c))
 61505        return c
 61506    }
 61507  
 61508    try {
 61509      return this._readdirEntries(abs, fs.readdirSync(abs))
 61510    } catch (er) {
 61511      this._readdirError(abs, er)
 61512      return null
 61513    }
 61514  }
 61515  
 61516  GlobSync.prototype._readdirEntries = function (abs, entries) {
 61517    // if we haven't asked to stat everything, then just
 61518    // assume that everything in there exists, so we can avoid
 61519    // having to stat it a second time.
 61520    if (!this.mark && !this.stat) {
 61521      for (var i = 0; i < entries.length; i ++) {
 61522        var e = entries[i]
 61523        if (abs === '/')
 61524          e = abs + e
 61525        else
 61526          e = abs + '/' + e
 61527        this.cache[e] = true
 61528      }
 61529    }
 61530  
 61531    this.cache[abs] = entries
 61532  
 61533    // mark and cache dir-ness
 61534    return entries
 61535  }
 61536  
 61537  GlobSync.prototype._readdirError = function (f, er) {
 61538    // handle errors, and cache the information
 61539    switch (er.code) {
 61540      case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205
 61541      case 'ENOTDIR': // totally normal. means it *does* exist.
 61542        var abs = this._makeAbs(f)
 61543        this.cache[abs] = 'FILE'
 61544        if (abs === this.cwdAbs) {
 61545          var error = new Error(er.code + ' invalid cwd ' + this.cwd)
 61546          error.path = this.cwd
 61547          error.code = er.code
 61548          throw error
 61549        }
 61550        break
 61551  
 61552      case 'ENOENT': // not terribly unusual
 61553      case 'ELOOP':
 61554      case 'ENAMETOOLONG':
 61555      case 'UNKNOWN':
 61556        this.cache[this._makeAbs(f)] = false
 61557        break
 61558  
 61559      default: // some unusual error.  Treat as failure.
 61560        this.cache[this._makeAbs(f)] = false
 61561        if (this.strict)
 61562          throw er
 61563        if (!this.silent)
 61564          console.error('glob error', er)
 61565        break
 61566    }
 61567  }
 61568  
 61569  GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {
 61570  
 61571    var entries = this._readdir(abs, inGlobStar)
 61572  
 61573    // no entries means not a dir, so it can never have matches
 61574    // foo.txt/** doesn't match foo.txt
 61575    if (!entries)
 61576      return
 61577  
 61578    // test without the globstar, and with every child both below
 61579    // and replacing the globstar.
 61580    var remainWithoutGlobStar = remain.slice(1)
 61581    var gspref = prefix ? [ prefix ] : []
 61582    var noGlobStar = gspref.concat(remainWithoutGlobStar)
 61583  
 61584    // the noGlobStar pattern exits the inGlobStar state
 61585    this._process(noGlobStar, index, false)
 61586  
 61587    var len = entries.length
 61588    var isSym = this.symlinks[abs]
 61589  
 61590    // If it's a symlink, and we're in a globstar, then stop
 61591    if (isSym && inGlobStar)
 61592      return
 61593  
 61594    for (var i = 0; i < len; i++) {
 61595      var e = entries[i]
 61596      if (e.charAt(0) === '.' && !this.dot)
 61597        continue
 61598  
 61599      // these two cases enter the inGlobStar state
 61600      var instead = gspref.concat(entries[i], remainWithoutGlobStar)
 61601      this._process(instead, index, true)
 61602  
 61603      var below = gspref.concat(entries[i], remain)
 61604      this._process(below, index, true)
 61605    }
 61606  }
 61607  
 61608  GlobSync.prototype._processSimple = function (prefix, index) {
 61609    // XXX review this.  Shouldn't it be doing the mounting etc
 61610    // before doing stat?  kinda weird?
 61611    var exists = this._stat(prefix)
 61612  
 61613    if (!this.matches[index])
 61614      this.matches[index] = Object.create(null)
 61615  
 61616    // If it doesn't exist, then just mark the lack of results
 61617    if (!exists)
 61618      return
 61619  
 61620    if (prefix && isAbsolute(prefix) && !this.nomount) {
 61621      var trail = /[\/\\]$/.test(prefix)
 61622      if (prefix.charAt(0) === '/') {
 61623        prefix = path.join(this.root, prefix)
 61624      } else {
 61625        prefix = path.resolve(this.root, prefix)
 61626        if (trail)
 61627          prefix += '/'
 61628      }
 61629    }
 61630  
 61631    if (process.platform === 'win32')
 61632      prefix = prefix.replace(/\\/g, '/')
 61633  
 61634    // Mark this as a match
 61635    this._emitMatch(index, prefix)
 61636  }
 61637  
 61638  // Returns either 'DIR', 'FILE', or false
 61639  GlobSync.prototype._stat = function (f) {
 61640    var abs = this._makeAbs(f)
 61641    var needDir = f.slice(-1) === '/'
 61642  
 61643    if (f.length > this.maxLength)
 61644      return false
 61645  
 61646    if (!this.stat && ownProp(this.cache, abs)) {
 61647      var c = this.cache[abs]
 61648  
 61649      if (Array.isArray(c))
 61650        c = 'DIR'
 61651  
 61652      // It exists, but maybe not how we need it
 61653      if (!needDir || c === 'DIR')
 61654        return c
 61655  
 61656      if (needDir && c === 'FILE')
 61657        return false
 61658  
 61659      // otherwise we have to stat, because maybe c=true
 61660      // if we know it exists, but not what it is.
 61661    }
 61662  
 61663    var exists
 61664    var stat = this.statCache[abs]
 61665    if (!stat) {
 61666      var lstat
 61667      try {
 61668        lstat = fs.lstatSync(abs)
 61669      } catch (er) {
 61670        if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {
 61671          this.statCache[abs] = false
 61672          return false
 61673        }
 61674      }
 61675  
 61676      if (lstat && lstat.isSymbolicLink()) {
 61677        try {
 61678          stat = fs.statSync(abs)
 61679        } catch (er) {
 61680          stat = lstat
 61681        }
 61682      } else {
 61683        stat = lstat
 61684      }
 61685    }
 61686  
 61687    this.statCache[abs] = stat
 61688  
 61689    var c = true
 61690    if (stat)
 61691      c = stat.isDirectory() ? 'DIR' : 'FILE'
 61692  
 61693    this.cache[abs] = this.cache[abs] || c
 61694  
 61695    if (needDir && c === 'FILE')
 61696      return false
 61697  
 61698    return c
 61699  }
 61700  
 61701  GlobSync.prototype._mark = function (p) {
 61702    return common.mark(this, p)
 61703  }
 61704  
 61705  GlobSync.prototype._makeAbs = function (f) {
 61706    return common.makeAbs(this, f)
 61707  }
 61708  
 61709  
 61710  /***/ }),
 61711  /* 270 */
 61712  /***/ (function(module, exports, __webpack_require__) {
 61713  
 61714  "use strict";
 61715  
 61716  
 61717  var resolve = __webpack_require__(271);
 61718  
 61719  module.exports = {
 61720    Validation: errorSubclass(ValidationError),
 61721    MissingRef: errorSubclass(MissingRefError)
 61722  };
 61723  
 61724  
 61725  function ValidationError(errors) {
 61726    this.message = 'validation failed';
 61727    this.errors = errors;
 61728    this.ajv = this.validation = true;
 61729  }
 61730  
 61731  
 61732  MissingRefError.message = function (baseId, ref) {
 61733    return 'can\'t resolve reference ' + ref + ' from id ' + baseId;
 61734  };
 61735  
 61736  
 61737  function MissingRefError(baseId, ref, message) {
 61738    this.message = message || MissingRefError.message(baseId, ref);
 61739    this.missingRef = resolve.url(baseId, ref);
 61740    this.missingSchema = resolve.normalizeId(resolve.fullPath(this.missingRef));
 61741  }
 61742  
 61743  
 61744  function errorSubclass(Subclass) {
 61745    Subclass.prototype = Object.create(Error.prototype);
 61746    Subclass.prototype.constructor = Subclass;
 61747    return Subclass;
 61748  }
 61749  
 61750  
 61751  /***/ }),
 61752  /* 271 */
 61753  /***/ (function(module, exports, __webpack_require__) {
 61754  
 61755  "use strict";
 61756  
 61757  
 61758  var url = __webpack_require__(24)
 61759    , equal = __webpack_require__(272)
 61760    , util = __webpack_require__(114)
 61761    , SchemaObject = __webpack_require__(386)
 61762    , traverse = __webpack_require__(677);
 61763  
 61764  module.exports = resolve;
 61765  
 61766  resolve.normalizeId = normalizeId;
 61767  resolve.fullPath = getFullPath;
 61768  resolve.url = resolveUrl;
 61769  resolve.ids = resolveIds;
 61770  resolve.inlineRef = inlineRef;
 61771  resolve.schema = resolveSchema;
 61772  
 61773  /**
 61774   * [resolve and compile the references ($ref)]
 61775   * @this   Ajv
 61776   * @param  {Function} compile reference to schema compilation funciton (localCompile)
 61777   * @param  {Object} root object with information about the root schema for the current schema
 61778   * @param  {String} ref reference to resolve
 61779   * @return {Object|Function} schema object (if the schema can be inlined) or validation function
 61780   */
 61781  function resolve(compile, root, ref) {
 61782    /* jshint validthis: true */
 61783    var refVal = this._refs[ref];
 61784    if (typeof refVal == 'string') {
 61785      if (this._refs[refVal]) refVal = this._refs[refVal];
 61786      else return resolve.call(this, compile, root, refVal);
 61787    }
 61788  
 61789    refVal = refVal || this._schemas[ref];
 61790    if (refVal instanceof SchemaObject) {
 61791      return inlineRef(refVal.schema, this._opts.inlineRefs)
 61792              ? refVal.schema
 61793              : refVal.validate || this._compile(refVal);
 61794    }
 61795  
 61796    var res = resolveSchema.call(this, root, ref);
 61797    var schema, v, baseId;
 61798    if (res) {
 61799      schema = res.schema;
 61800      root = res.root;
 61801      baseId = res.baseId;
 61802    }
 61803  
 61804    if (schema instanceof SchemaObject) {
 61805      v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId);
 61806    } else if (schema !== undefined) {
 61807      v = inlineRef(schema, this._opts.inlineRefs)
 61808          ? schema
 61809          : compile.call(this, schema, root, undefined, baseId);
 61810    }
 61811  
 61812    return v;
 61813  }
 61814  
 61815  
 61816  /**
 61817   * Resolve schema, its root and baseId
 61818   * @this Ajv
 61819   * @param  {Object} root root object with properties schema, refVal, refs
 61820   * @param  {String} ref  reference to resolve
 61821   * @return {Object} object with properties schema, root, baseId
 61822   */
 61823  function resolveSchema(root, ref) {
 61824    /* jshint validthis: true */
 61825    var p = url.parse(ref, false, true)
 61826      , refPath = _getFullPath(p)
 61827      , baseId = getFullPath(this._getId(root.schema));
 61828    if (refPath !== baseId) {
 61829      var id = normalizeId(refPath);
 61830      var refVal = this._refs[id];
 61831      if (typeof refVal == 'string') {
 61832        return resolveRecursive.call(this, root, refVal, p);
 61833      } else if (refVal instanceof SchemaObject) {
 61834        if (!refVal.validate) this._compile(refVal);
 61835        root = refVal;
 61836      } else {
 61837        refVal = this._schemas[id];
 61838        if (refVal instanceof SchemaObject) {
 61839          if (!refVal.validate) this._compile(refVal);
 61840          if (id == normalizeId(ref))
 61841            return { schema: refVal, root: root, baseId: baseId };
 61842          root = refVal;
 61843        } else {
 61844          return;
 61845        }
 61846      }
 61847      if (!root.schema) return;
 61848      baseId = getFullPath(this._getId(root.schema));
 61849    }
 61850    return getJsonPointer.call(this, p, baseId, root.schema, root);
 61851  }
 61852  
 61853  
 61854  /* @this Ajv */
 61855  function resolveRecursive(root, ref, parsedRef) {
 61856    /* jshint validthis: true */
 61857    var res = resolveSchema.call(this, root, ref);
 61858    if (res) {
 61859      var schema = res.schema;
 61860      var baseId = res.baseId;
 61861      root = res.root;
 61862      var id = this._getId(schema);
 61863      if (id) baseId = resolveUrl(baseId, id);
 61864      return getJsonPointer.call(this, parsedRef, baseId, schema, root);
 61865    }
 61866  }
 61867  
 61868  
 61869  var PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']);
 61870  /* @this Ajv */
 61871  function getJsonPointer(parsedRef, baseId, schema, root) {
 61872    /* jshint validthis: true */
 61873    parsedRef.hash = parsedRef.hash || '';
 61874    if (parsedRef.hash.slice(0,2) != '#/') return;
 61875    var parts = parsedRef.hash.split('/');
 61876  
 61877    for (var i = 1; i < parts.length; i++) {
 61878      var part = parts[i];
 61879      if (part) {
 61880        part = util.unescapeFragment(part);
 61881        schema = schema[part];
 61882        if (schema === undefined) break;
 61883        var id;
 61884        if (!PREVENT_SCOPE_CHANGE[part]) {
 61885          id = this._getId(schema);
 61886          if (id) baseId = resolveUrl(baseId, id);
 61887          if (schema.$ref) {
 61888            var $ref = resolveUrl(baseId, schema.$ref);
 61889            var res = resolveSchema.call(this, root, $ref);
 61890            if (res) {
 61891              schema = res.schema;
 61892              root = res.root;
 61893              baseId = res.baseId;
 61894            }
 61895          }
 61896        }
 61897      }
 61898    }
 61899    if (schema !== undefined && schema !== root.schema)
 61900      return { schema: schema, root: root, baseId: baseId };
 61901  }
 61902  
 61903  
 61904  var SIMPLE_INLINED = util.toHash([
 61905    'type', 'format', 'pattern',
 61906    'maxLength', 'minLength',
 61907    'maxProperties', 'minProperties',
 61908    'maxItems', 'minItems',
 61909    'maximum', 'minimum',
 61910    'uniqueItems', 'multipleOf',
 61911    'required', 'enum'
 61912  ]);
 61913  function inlineRef(schema, limit) {
 61914    if (limit === false) return false;
 61915    if (limit === undefined || limit === true) return checkNoRef(schema);
 61916    else if (limit) return countKeys(schema) <= limit;
 61917  }
 61918  
 61919  
 61920  function checkNoRef(schema) {
 61921    var item;
 61922    if (Array.isArray(schema)) {
 61923      for (var i=0; i<schema.length; i++) {
 61924        item = schema[i];
 61925        if (typeof item == 'object' && !checkNoRef(item)) return false;
 61926      }
 61927    } else {
 61928      for (var key in schema) {
 61929        if (key == '$ref') return false;
 61930        item = schema[key];
 61931        if (typeof item == 'object' && !checkNoRef(item)) return false;
 61932      }
 61933    }
 61934    return true;
 61935  }
 61936  
 61937  
 61938  function countKeys(schema) {
 61939    var count = 0, item;
 61940    if (Array.isArray(schema)) {
 61941      for (var i=0; i<schema.length; i++) {
 61942        item = schema[i];
 61943        if (typeof item == 'object') count += countKeys(item);
 61944        if (count == Infinity) return Infinity;
 61945      }
 61946    } else {
 61947      for (var key in schema) {
 61948        if (key == '$ref') return Infinity;
 61949        if (SIMPLE_INLINED[key]) {
 61950          count++;
 61951        } else {
 61952          item = schema[key];
 61953          if (typeof item == 'object') count += countKeys(item) + 1;
 61954          if (count == Infinity) return Infinity;
 61955        }
 61956      }
 61957    }
 61958    return count;
 61959  }
 61960  
 61961  
 61962  function getFullPath(id, normalize) {
 61963    if (normalize !== false) id = normalizeId(id);
 61964    var p = url.parse(id, false, true);
 61965    return _getFullPath(p);
 61966  }
 61967  
 61968  
 61969  function _getFullPath(p) {
 61970    var protocolSeparator = p.protocol || p.href.slice(0,2) == '//' ? '//' : '';
 61971    return (p.protocol||'') + protocolSeparator + (p.host||'') + (p.path||'')  + '#';
 61972  }
 61973  
 61974  
 61975  var TRAILING_SLASH_HASH = /#\/?$/;
 61976  function normalizeId(id) {
 61977    return id ? id.replace(TRAILING_SLASH_HASH, '') : '';
 61978  }
 61979  
 61980  
 61981  function resolveUrl(baseId, id) {
 61982    id = normalizeId(id);
 61983    return url.resolve(baseId, id);
 61984  }
 61985  
 61986  
 61987  /* @this Ajv */
 61988  function resolveIds(schema) {
 61989    var schemaId = normalizeId(this._getId(schema));
 61990    var baseIds = {'': schemaId};
 61991    var fullPaths = {'': getFullPath(schemaId, false)};
 61992    var localRefs = {};
 61993    var self = this;
 61994  
 61995    traverse(schema, {allKeys: true}, function(sch, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {
 61996      if (jsonPtr === '') return;
 61997      var id = self._getId(sch);
 61998      var baseId = baseIds[parentJsonPtr];
 61999      var fullPath = fullPaths[parentJsonPtr] + '/' + parentKeyword;
 62000      if (keyIndex !== undefined)
 62001        fullPath += '/' + (typeof keyIndex == 'number' ? keyIndex : util.escapeFragment(keyIndex));
 62002  
 62003      if (typeof id == 'string') {
 62004        id = baseId = normalizeId(baseId ? url.resolve(baseId, id) : id);
 62005  
 62006        var refVal = self._refs[id];
 62007        if (typeof refVal == 'string') refVal = self._refs[refVal];
 62008        if (refVal && refVal.schema) {
 62009          if (!equal(sch, refVal.schema))
 62010            throw new Error('id "' + id + '" resolves to more than one schema');
 62011        } else if (id != normalizeId(fullPath)) {
 62012          if (id[0] == '#') {
 62013            if (localRefs[id] && !equal(sch, localRefs[id]))
 62014              throw new Error('id "' + id + '" resolves to more than one schema');
 62015            localRefs[id] = sch;
 62016          } else {
 62017            self._refs[id] = fullPath;
 62018          }
 62019        }
 62020      }
 62021      baseIds[jsonPtr] = baseId;
 62022      fullPaths[jsonPtr] = fullPath;
 62023    });
 62024  
 62025    return localRefs;
 62026  }
 62027  
 62028  
 62029  /***/ }),
 62030  /* 272 */
 62031  /***/ (function(module, exports, __webpack_require__) {
 62032  
 62033  "use strict";
 62034  
 62035  
 62036  var isArray = Array.isArray;
 62037  var keyList = Object.keys;
 62038  var hasProp = Object.prototype.hasOwnProperty;
 62039  
 62040  module.exports = function equal(a, b) {
 62041    if (a === b) return true;
 62042  
 62043    var arrA = isArray(a)
 62044      , arrB = isArray(b)
 62045      , i
 62046      , length
 62047      , key;
 62048  
 62049    if (arrA && arrB) {
 62050      length = a.length;
 62051      if (length != b.length) return false;
 62052      for (i = 0; i < length; i++)
 62053        if (!equal(a[i], b[i])) return false;
 62054      return true;
 62055    }
 62056  
 62057    if (arrA != arrB) return false;
 62058  
 62059    var dateA = a instanceof Date
 62060      , dateB = b instanceof Date;
 62061    if (dateA != dateB) return false;
 62062    if (dateA && dateB) return a.getTime() == b.getTime();
 62063  
 62064    var regexpA = a instanceof RegExp
 62065      , regexpB = b instanceof RegExp;
 62066    if (regexpA != regexpB) return false;
 62067    if (regexpA && regexpB) return a.toString() == b.toString();
 62068  
 62069    if (a instanceof Object && b instanceof Object) {
 62070      var keys = keyList(a);
 62071      length = keys.length;
 62072  
 62073      if (length !== keyList(b).length)
 62074        return false;
 62075  
 62076      for (i = 0; i < length; i++)
 62077        if (!hasProp.call(b, keys[i])) return false;
 62078  
 62079      for (i = 0; i < length; i++) {
 62080        key = keys[i];
 62081        if (!equal(a[key], b[key])) return false;
 62082      }
 62083  
 62084      return true;
 62085    }
 62086  
 62087    return false;
 62088  };
 62089  
 62090  
 62091  /***/ }),
 62092  /* 273 */
 62093  /***/ (function(module, exports, __webpack_require__) {
 62094  
 62095  "use strict";
 62096  
 62097  module.exports = function (flag, argv) {
 62098  	argv = argv || process.argv;
 62099  
 62100  	var terminatorPos = argv.indexOf('--');
 62101  	var prefix = /^--/.test(flag) ? '' : '--';
 62102  	var pos = argv.indexOf(prefix + flag);
 62103  
 62104  	return pos !== -1 && (terminatorPos !== -1 ? pos < terminatorPos : true);
 62105  };
 62106  
 62107  
 62108  /***/ }),
 62109  /* 274 */
 62110  /***/ (function(module, exports, __webpack_require__) {
 62111  
 62112  var wrappy = __webpack_require__(161)
 62113  var reqs = Object.create(null)
 62114  var once = __webpack_require__(83)
 62115  
 62116  module.exports = wrappy(inflight)
 62117  
 62118  function inflight (key, cb) {
 62119    if (reqs[key]) {
 62120      reqs[key].push(cb)
 62121      return null
 62122    } else {
 62123      reqs[key] = [cb]
 62124      return makeres(key)
 62125    }
 62126  }
 62127  
 62128  function makeres (key) {
 62129    return once(function RES () {
 62130      var cbs = reqs[key]
 62131      var len = cbs.length
 62132      var args = slice(arguments)
 62133  
 62134      // XXX It's somewhat ambiguous whether a new callback added in this
 62135      // pass should be queued for later execution if something in the
 62136      // list of callbacks throws, or if it should just be discarded.
 62137      // However, it's such an edge case that it hardly matters, and either
 62138      // choice is likely as surprising as the other.
 62139      // As it happens, we do go ahead and schedule it for later execution.
 62140      try {
 62141        for (var i = 0; i < len; i++) {
 62142          cbs[i].apply(null, args)
 62143        }
 62144      } finally {
 62145        if (cbs.length > len) {
 62146          // added more in the interim.
 62147          // de-zalgo, just in case, but don't call again.
 62148          cbs.splice(0, len)
 62149          process.nextTick(function () {
 62150            RES.apply(null, args)
 62151          })
 62152        } else {
 62153          delete reqs[key]
 62154        }
 62155      }
 62156    })
 62157  }
 62158  
 62159  function slice (args) {
 62160    var length = args.length
 62161    var array = []
 62162  
 62163    for (var i = 0; i < length; i++) array[i] = args[i]
 62164    return array
 62165  }
 62166  
 62167  
 62168  /***/ }),
 62169  /* 275 */
 62170  /***/ (function(module, exports) {
 62171  
 62172  if (typeof Object.create === 'function') {
 62173    // implementation from standard node.js 'util' module
 62174    module.exports = function inherits(ctor, superCtor) {
 62175      ctor.super_ = superCtor
 62176      ctor.prototype = Object.create(superCtor.prototype, {
 62177        constructor: {
 62178          value: ctor,
 62179          enumerable: false,
 62180          writable: true,
 62181          configurable: true
 62182        }
 62183      });
 62184    };
 62185  } else {
 62186    // old school shim for old browsers
 62187    module.exports = function inherits(ctor, superCtor) {
 62188      ctor.super_ = superCtor
 62189      var TempCtor = function () {}
 62190      TempCtor.prototype = superCtor.prototype
 62191      ctor.prototype = new TempCtor()
 62192      ctor.prototype.constructor = ctor
 62193    }
 62194  }
 62195  
 62196  
 62197  /***/ }),
 62198  /* 276 */
 62199  /***/ (function(module, exports, __webpack_require__) {
 62200  
 62201  "use strict";
 62202  
 62203  /**
 62204   * Inquirer.js
 62205   * A collection of common interactive command line user interfaces.
 62206   */
 62207  
 62208  var inquirer = module.exports;
 62209  
 62210  /**
 62211   * Client interfaces
 62212   */
 62213  
 62214  inquirer.prompts = {};
 62215  
 62216  inquirer.Separator = __webpack_require__(176);
 62217  
 62218  inquirer.ui = {
 62219    BottomBar: __webpack_require__(695),
 62220    Prompt: __webpack_require__(696)
 62221  };
 62222  
 62223  /**
 62224   * Create a new self-contained prompt module.
 62225   */
 62226  inquirer.createPromptModule = function(opt) {
 62227    var promptModule = function(questions) {
 62228      var ui = new inquirer.ui.Prompt(promptModule.prompts, opt);
 62229      var promise = ui.run(questions);
 62230  
 62231      // Monkey patch the UI on the promise object so
 62232      // that it remains publicly accessible.
 62233      promise.ui = ui;
 62234  
 62235      return promise;
 62236    };
 62237    promptModule.prompts = {};
 62238  
 62239    /**
 62240     * Register a prompt type
 62241     * @param {String} name     Prompt type name
 62242     * @param {Function} prompt Prompt constructor
 62243     * @return {inquirer}
 62244     */
 62245  
 62246    promptModule.registerPrompt = function(name, prompt) {
 62247      promptModule.prompts[name] = prompt;
 62248      return this;
 62249    };
 62250  
 62251    /**
 62252     * Register the defaults provider prompts
 62253     */
 62254  
 62255    promptModule.restoreDefaultPrompts = function() {
 62256      this.registerPrompt('list', __webpack_require__(691));
 62257      this.registerPrompt('input', __webpack_require__(392));
 62258      this.registerPrompt('number', __webpack_require__(692));
 62259      this.registerPrompt('confirm', __webpack_require__(688));
 62260      this.registerPrompt('rawlist', __webpack_require__(694));
 62261      this.registerPrompt('expand', __webpack_require__(690));
 62262      this.registerPrompt('checkbox', __webpack_require__(687));
 62263      this.registerPrompt('password', __webpack_require__(693));
 62264      this.registerPrompt('editor', __webpack_require__(689));
 62265    };
 62266  
 62267    promptModule.restoreDefaultPrompts();
 62268  
 62269    return promptModule;
 62270  };
 62271  
 62272  /**
 62273   * Public CLI helper interface
 62274   * @param  {Array|Object|Rx.Observable} questions - Questions settings array
 62275   * @param  {Function} cb - Callback being passed the user answers
 62276   * @return {inquirer.ui.Prompt}
 62277   */
 62278  
 62279  inquirer.prompt = inquirer.createPromptModule();
 62280  
 62281  // Expose helper functions on the top level for easiest usage by common users
 62282  inquirer.registerPrompt = function(name, prompt) {
 62283    inquirer.prompt.registerPrompt(name, prompt);
 62284  };
 62285  inquirer.restoreDefaultPrompts = function() {
 62286    inquirer.prompt.restoreDefaultPrompts();
 62287  };
 62288  
 62289  
 62290  /***/ }),
 62291  /* 277 */
 62292  /***/ (function(module, exports) {
 62293  
 62294  module.exports = [["0","\u0000",127,"€"],["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"],["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"],["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11],["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"],["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"],["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5],["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"],["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"],["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"],["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"],["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"],["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"],["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4],["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6],["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"],["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7],["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"],["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"],["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"],["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5],["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"],["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6],["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"],["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4],["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4],["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"],["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"],["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6],["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"],["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"],["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"],["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6],["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"],["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"],["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"],["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"],["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"],["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"],["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8],["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"],["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"],["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"],["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"],["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5],["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"],["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"],["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"],["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"],["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5],["9980","檧檨檪檭",114,"欥欦欨",6],["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"],["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"],["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"],["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"],["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"],["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5],["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"],["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"],["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6],["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"],["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"],["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4],["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19],["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"],["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"],["a2a1","ⅰ",9],["a2b1","⒈",19,"⑴",19,"①",9],["a2e5","㈠",9],["a2f1","Ⅰ",11],["a3a1","!"#¥%",88," ̄"],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"],["a6ee","︻︼︷︸︱"],["a6f4","︳︴"],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6],["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"],["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"],["a8bd","ńň"],["a8c0","ɡ"],["a8c5","ㄅ",36],["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"],["a959","℡㈱"],["a95c","‐"],["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8],["a980","﹢",4,"﹨﹩﹪﹫"],["a996","〇"],["a9a4","─",75],["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8],["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"],["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4],["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4],["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11],["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"],["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12],["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"],["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"],["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"],["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"],["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"],["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"],["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"],["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"],["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"],["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4],["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"],["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"],["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"],["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9],["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"],["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"],["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"],["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"],["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"],["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16],["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"],["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"],["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"],["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"],["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"],["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"],["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"],["bb40","籃",9,"籎",36,"籵",5,"籾",9],["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"],["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5],["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"],["bd40","紷",54,"絯",7],["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"],["be40","継",12,"綧",6,"綯",42],["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"],["bf40","緻",62],["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"],["c040","繞",35,"纃",23,"纜纝纞"],["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"],["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"],["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"],["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"],["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"],["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"],["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"],["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"],["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"],["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"],["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"],["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"],["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"],["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"],["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"],["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"],["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"],["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"],["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"],["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10],["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"],["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"],["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"],["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"],["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"],["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"],["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"],["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"],["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"],["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9],["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"],["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"],["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"],["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5],["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"],["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"],["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"],["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6],["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"],["d440","訞",31,"訿",8,"詉",21],["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"],["d540","誁",7,"誋",7,"誔",46],["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"],["d640","諤",34,"謈",27],["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"],["d740","譆",31,"譧",4,"譭",25],["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"],["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"],["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"],["d940","貮",62],["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"],["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"],["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"],["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"],["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"],["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7],["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"],["dd40","軥",62],["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"],["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"],["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"],["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"],["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"],["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"],["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"],["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"],["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"],["e240","釦",62],["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"],["e340","鉆",45,"鉵",16],["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"],["e440","銨",5,"銯",24,"鋉",31],["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"],["e540","錊",51,"錿",10],["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"],["e640","鍬",34,"鎐",27],["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"],["e740","鏎",7,"鏗",54],["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"],["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"],["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"],["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42],["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"],["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"],["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"],["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"],["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"],["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7],["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"],["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46],["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"],["ee40","頏",62],["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"],["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4],["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"],["f040","餈",4,"餎餏餑",28,"餯",26],["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"],["f140","馌馎馚",10,"馦馧馩",47],["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"],["f240","駺",62],["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"],["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"],["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"],["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5],["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"],["f540","魼",62],["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"],["f640","鯜",62],["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"],["f740","鰼",62],["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"],["f840","鳣",62],["f880","鴢",32],["f940","鵃",62],["f980","鶂",32],["fa40","鶣",62],["fa80","鷢",32],["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"],["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"],["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6],["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"],["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38],["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"],["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"]]
 62295  
 62296  /***/ }),
 62297  /* 278 */
 62298  /***/ (function(module, exports, __webpack_require__) {
 62299  
 62300  // @flow
 62301  
 62302  /*::
 62303  declare var __webpack_require__: mixed;
 62304  */
 62305  
 62306  module.exports = typeof __webpack_require__ !== "undefined";
 62307  
 62308  
 62309  /***/ }),
 62310  /* 279 */
 62311  /***/ (function(module, exports, __webpack_require__) {
 62312  
 62313  "use strict";
 62314  
 62315  
 62316  
 62317  var yaml = __webpack_require__(280);
 62318  
 62319  
 62320  module.exports = yaml;
 62321  
 62322  
 62323  /***/ }),
 62324  /* 280 */
 62325  /***/ (function(module, exports, __webpack_require__) {
 62326  
 62327  "use strict";
 62328  
 62329  
 62330  
 62331  var loader = __webpack_require__(282);
 62332  var dumper = __webpack_require__(281);
 62333  
 62334  
 62335  function deprecated(name) {
 62336    return function () {
 62337      throw new Error('Function ' + name + ' is deprecated and cannot be used.');
 62338    };
 62339  }
 62340  
 62341  
 62342  module.exports.Type                = __webpack_require__(10);
 62343  module.exports.Schema              = __webpack_require__(44);
 62344  module.exports.FAILSAFE_SCHEMA     = __webpack_require__(100);
 62345  module.exports.JSON_SCHEMA         = __webpack_require__(144);
 62346  module.exports.CORE_SCHEMA         = __webpack_require__(143);
 62347  module.exports.DEFAULT_SAFE_SCHEMA = __webpack_require__(56);
 62348  module.exports.DEFAULT_FULL_SCHEMA = __webpack_require__(73);
 62349  module.exports.load                = loader.load;
 62350  module.exports.loadAll             = loader.loadAll;
 62351  module.exports.safeLoad            = loader.safeLoad;
 62352  module.exports.safeLoadAll         = loader.safeLoadAll;
 62353  module.exports.dump                = dumper.dump;
 62354  module.exports.safeDump            = dumper.safeDump;
 62355  module.exports.YAMLException       = __webpack_require__(55);
 62356  
 62357  // Deprecated schema names from JS-YAML 2.0.x
 62358  module.exports.MINIMAL_SCHEMA = __webpack_require__(100);
 62359  module.exports.SAFE_SCHEMA    = __webpack_require__(56);
 62360  module.exports.DEFAULT_SCHEMA = __webpack_require__(73);
 62361  
 62362  // Deprecated functions from JS-YAML 1.x.x
 62363  module.exports.scan           = deprecated('scan');
 62364  module.exports.parse          = deprecated('parse');
 62365  module.exports.compose        = deprecated('compose');
 62366  module.exports.addConstructor = deprecated('addConstructor');
 62367  
 62368  
 62369  /***/ }),
 62370  /* 281 */
 62371  /***/ (function(module, exports, __webpack_require__) {
 62372  
 62373  "use strict";
 62374  
 62375  
 62376  /*eslint-disable no-use-before-define*/
 62377  
 62378  var common              = __webpack_require__(43);
 62379  var YAMLException       = __webpack_require__(55);
 62380  var DEFAULT_FULL_SCHEMA = __webpack_require__(73);
 62381  var DEFAULT_SAFE_SCHEMA = __webpack_require__(56);
 62382  
 62383  var _toString       = Object.prototype.toString;
 62384  var _hasOwnProperty = Object.prototype.hasOwnProperty;
 62385  
 62386  var CHAR_TAB                  = 0x09; /* Tab */
 62387  var CHAR_LINE_FEED            = 0x0A; /* LF */
 62388  var CHAR_SPACE                = 0x20; /* Space */
 62389  var CHAR_EXCLAMATION          = 0x21; /* ! */
 62390  var CHAR_DOUBLE_QUOTE         = 0x22; /* " */
 62391  var CHAR_SHARP                = 0x23; /* # */
 62392  var CHAR_PERCENT              = 0x25; /* % */
 62393  var CHAR_AMPERSAND            = 0x26; /* & */
 62394  var CHAR_SINGLE_QUOTE         = 0x27; /* ' */
 62395  var CHAR_ASTERISK             = 0x2A; /* * */
 62396  var CHAR_COMMA                = 0x2C; /* , */
 62397  var CHAR_MINUS                = 0x2D; /* - */
 62398  var CHAR_COLON                = 0x3A; /* : */
 62399  var CHAR_GREATER_THAN         = 0x3E; /* > */
 62400  var CHAR_QUESTION             = 0x3F; /* ? */
 62401  var CHAR_COMMERCIAL_AT        = 0x40; /* @ */
 62402  var CHAR_LEFT_SQUARE_BRACKET  = 0x5B; /* [ */
 62403  var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */
 62404  var CHAR_GRAVE_ACCENT         = 0x60; /* ` */
 62405  var CHAR_LEFT_CURLY_BRACKET   = 0x7B; /* { */
 62406  var CHAR_VERTICAL_LINE        = 0x7C; /* | */
 62407  var CHAR_RIGHT_CURLY_BRACKET  = 0x7D; /* } */
 62408  
 62409  var ESCAPE_SEQUENCES = {};
 62410  
 62411  ESCAPE_SEQUENCES[0x00]   = '\\0';
 62412  ESCAPE_SEQUENCES[0x07]   = '\\a';
 62413  ESCAPE_SEQUENCES[0x08]   = '\\b';
 62414  ESCAPE_SEQUENCES[0x09]   = '\\t';
 62415  ESCAPE_SEQUENCES[0x0A]   = '\\n';
 62416  ESCAPE_SEQUENCES[0x0B]   = '\\v';
 62417  ESCAPE_SEQUENCES[0x0C]   = '\\f';
 62418  ESCAPE_SEQUENCES[0x0D]   = '\\r';
 62419  ESCAPE_SEQUENCES[0x1B]   = '\\e';
 62420  ESCAPE_SEQUENCES[0x22]   = '\\"';
 62421  ESCAPE_SEQUENCES[0x5C]   = '\\\\';
 62422  ESCAPE_SEQUENCES[0x85]   = '\\N';
 62423  ESCAPE_SEQUENCES[0xA0]   = '\\_';
 62424  ESCAPE_SEQUENCES[0x2028] = '\\L';
 62425  ESCAPE_SEQUENCES[0x2029] = '\\P';
 62426  
 62427  var DEPRECATED_BOOLEANS_SYNTAX = [
 62428    'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',
 62429    'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'
 62430  ];
 62431  
 62432  function compileStyleMap(schema, map) {
 62433    var result, keys, index, length, tag, style, type;
 62434  
 62435    if (map === null) return {};
 62436  
 62437    result = {};
 62438    keys = Object.keys(map);
 62439  
 62440    for (index = 0, length = keys.length; index < length; index += 1) {
 62441      tag = keys[index];
 62442      style = String(map[tag]);
 62443  
 62444      if (tag.slice(0, 2) === '!!') {
 62445        tag = 'tag:yaml.org,2002:' + tag.slice(2);
 62446      }
 62447      type = schema.compiledTypeMap['fallback'][tag];
 62448  
 62449      if (type && _hasOwnProperty.call(type.styleAliases, style)) {
 62450        style = type.styleAliases[style];
 62451      }
 62452  
 62453      result[tag] = style;
 62454    }
 62455  
 62456    return result;
 62457  }
 62458  
 62459  function encodeHex(character) {
 62460    var string, handle, length;
 62461  
 62462    string = character.toString(16).toUpperCase();
 62463  
 62464    if (character <= 0xFF) {
 62465      handle = 'x';
 62466      length = 2;
 62467    } else if (character <= 0xFFFF) {
 62468      handle = 'u';
 62469      length = 4;
 62470    } else if (character <= 0xFFFFFFFF) {
 62471      handle = 'U';
 62472      length = 8;
 62473    } else {
 62474      throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');
 62475    }
 62476  
 62477    return '\\' + handle + common.repeat('0', length - string.length) + string;
 62478  }
 62479  
 62480  function State(options) {
 62481    this.schema        = options['schema'] || DEFAULT_FULL_SCHEMA;
 62482    this.indent        = Math.max(1, (options['indent'] || 2));
 62483    this.noArrayIndent = options['noArrayIndent'] || false;
 62484    this.skipInvalid   = options['skipInvalid'] || false;
 62485    this.flowLevel     = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);
 62486    this.styleMap      = compileStyleMap(this.schema, options['styles'] || null);
 62487    this.sortKeys      = options['sortKeys'] || false;
 62488    this.lineWidth     = options['lineWidth'] || 80;
 62489    this.noRefs        = options['noRefs'] || false;
 62490    this.noCompatMode  = options['noCompatMode'] || false;
 62491    this.condenseFlow  = options['condenseFlow'] || false;
 62492  
 62493    this.implicitTypes = this.schema.compiledImplicit;
 62494    this.explicitTypes = this.schema.compiledExplicit;
 62495  
 62496    this.tag = null;
 62497    this.result = '';
 62498  
 62499    this.duplicates = [];
 62500    this.usedDuplicates = null;
 62501  }
 62502  
 62503  // Indents every line in a string. Empty lines (\n only) are not indented.
 62504  function indentString(string, spaces) {
 62505    var ind = common.repeat(' ', spaces),
 62506        position = 0,
 62507        next = -1,
 62508        result = '',
 62509        line,
 62510        length = string.length;
 62511  
 62512    while (position < length) {
 62513      next = string.indexOf('\n', position);
 62514      if (next === -1) {
 62515        line = string.slice(position);
 62516        position = length;
 62517      } else {
 62518        line = string.slice(position, next + 1);
 62519        position = next + 1;
 62520      }
 62521  
 62522      if (line.length && line !== '\n') result += ind;
 62523  
 62524      result += line;
 62525    }
 62526  
 62527    return result;
 62528  }
 62529  
 62530  function generateNextLine(state, level) {
 62531    return '\n' + common.repeat(' ', state.indent * level);
 62532  }
 62533  
 62534  function testImplicitResolving(state, str) {
 62535    var index, length, type;
 62536  
 62537    for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {
 62538      type = state.implicitTypes[index];
 62539  
 62540      if (type.resolve(str)) {
 62541        return true;
 62542      }
 62543    }
 62544  
 62545    return false;
 62546  }
 62547  
 62548  // [33] s-white ::= s-space | s-tab
 62549  function isWhitespace(c) {
 62550    return c === CHAR_SPACE || c === CHAR_TAB;
 62551  }
 62552  
 62553  // Returns true if the character can be printed without escaping.
 62554  // From YAML 1.2: "any allowed characters known to be non-printable
 62555  // should also be escaped. [However,] This isn’t mandatory"
 62556  // Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029.
 62557  function isPrintable(c) {
 62558    return  (0x00020 <= c && c <= 0x00007E)
 62559        || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)
 62560        || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)
 62561        ||  (0x10000 <= c && c <= 0x10FFFF);
 62562  }
 62563  
 62564  // Simplified test for values allowed after the first character in plain style.
 62565  function isPlainSafe(c) {
 62566    // Uses a subset of nb-char - c-flow-indicator - ":" - "#"
 62567    // where nb-char ::= c-printable - b-char - c-byte-order-mark.
 62568    return isPrintable(c) && c !== 0xFEFF
 62569      // - c-flow-indicator
 62570      && c !== CHAR_COMMA
 62571      && c !== CHAR_LEFT_SQUARE_BRACKET
 62572      && c !== CHAR_RIGHT_SQUARE_BRACKET
 62573      && c !== CHAR_LEFT_CURLY_BRACKET
 62574      && c !== CHAR_RIGHT_CURLY_BRACKET
 62575      // - ":" - "#"
 62576      && c !== CHAR_COLON
 62577      && c !== CHAR_SHARP;
 62578  }
 62579  
 62580  // Simplified test for values allowed as the first character in plain style.
 62581  function isPlainSafeFirst(c) {
 62582    // Uses a subset of ns-char - c-indicator
 62583    // where ns-char = nb-char - s-white.
 62584    return isPrintable(c) && c !== 0xFEFF
 62585      && !isWhitespace(c) // - s-white
 62586      // - (c-indicator ::=
 62587      // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”
 62588      && c !== CHAR_MINUS
 62589      && c !== CHAR_QUESTION
 62590      && c !== CHAR_COLON
 62591      && c !== CHAR_COMMA
 62592      && c !== CHAR_LEFT_SQUARE_BRACKET
 62593      && c !== CHAR_RIGHT_SQUARE_BRACKET
 62594      && c !== CHAR_LEFT_CURLY_BRACKET
 62595      && c !== CHAR_RIGHT_CURLY_BRACKET
 62596      // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “"”
 62597      && c !== CHAR_SHARP
 62598      && c !== CHAR_AMPERSAND
 62599      && c !== CHAR_ASTERISK
 62600      && c !== CHAR_EXCLAMATION
 62601      && c !== CHAR_VERTICAL_LINE
 62602      && c !== CHAR_GREATER_THAN
 62603      && c !== CHAR_SINGLE_QUOTE
 62604      && c !== CHAR_DOUBLE_QUOTE
 62605      // | “%” | “@” | “`”)
 62606      && c !== CHAR_PERCENT
 62607      && c !== CHAR_COMMERCIAL_AT
 62608      && c !== CHAR_GRAVE_ACCENT;
 62609  }
 62610  
 62611  // Determines whether block indentation indicator is required.
 62612  function needIndentIndicator(string) {
 62613    var leadingSpaceRe = /^\n* /;
 62614    return leadingSpaceRe.test(string);
 62615  }
 62616  
 62617  var STYLE_PLAIN   = 1,
 62618      STYLE_SINGLE  = 2,
 62619      STYLE_LITERAL = 3,
 62620      STYLE_FOLDED  = 4,
 62621      STYLE_DOUBLE  = 5;
 62622  
 62623  // Determines which scalar styles are possible and returns the preferred style.
 62624  // lineWidth = -1 => no limit.
 62625  // Pre-conditions: str.length > 0.
 62626  // Post-conditions:
 62627  //    STYLE_PLAIN or STYLE_SINGLE => no \n are in the string.
 62628  //    STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).
 62629  //    STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).
 62630  function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {
 62631    var i;
 62632    var char;
 62633    var hasLineBreak = false;
 62634    var hasFoldableLine = false; // only checked if shouldTrackWidth
 62635    var shouldTrackWidth = lineWidth !== -1;
 62636    var previousLineBreak = -1; // count the first line correctly
 62637    var plain = isPlainSafeFirst(string.charCodeAt(0))
 62638            && !isWhitespace(string.charCodeAt(string.length - 1));
 62639  
 62640    if (singleLineOnly) {
 62641      // Case: no block styles.
 62642      // Check for disallowed characters to rule out plain and single.
 62643      for (i = 0; i < string.length; i++) {
 62644        char = string.charCodeAt(i);
 62645        if (!isPrintable(char)) {
 62646          return STYLE_DOUBLE;
 62647        }
 62648        plain = plain && isPlainSafe(char);
 62649      }
 62650    } else {
 62651      // Case: block styles permitted.
 62652      for (i = 0; i < string.length; i++) {
 62653        char = string.charCodeAt(i);
 62654        if (char === CHAR_LINE_FEED) {
 62655          hasLineBreak = true;
 62656          // Check if any line can be folded.
 62657          if (shouldTrackWidth) {
 62658            hasFoldableLine = hasFoldableLine ||
 62659              // Foldable line = too long, and not more-indented.
 62660              (i - previousLineBreak - 1 > lineWidth &&
 62661               string[previousLineBreak + 1] !== ' ');
 62662            previousLineBreak = i;
 62663          }
 62664        } else if (!isPrintable(char)) {
 62665          return STYLE_DOUBLE;
 62666        }
 62667        plain = plain && isPlainSafe(char);
 62668      }
 62669      // in case the end is missing a \n
 62670      hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&
 62671        (i - previousLineBreak - 1 > lineWidth &&
 62672         string[previousLineBreak + 1] !== ' '));
 62673    }
 62674    // Although every style can represent \n without escaping, prefer block styles
 62675    // for multiline, since they're more readable and they don't add empty lines.
 62676    // Also prefer folding a super-long line.
 62677    if (!hasLineBreak && !hasFoldableLine) {
 62678      // Strings interpretable as another type have to be quoted;
 62679      // e.g. the string 'true' vs. the boolean true.
 62680      return plain && !testAmbiguousType(string)
 62681        ? STYLE_PLAIN : STYLE_SINGLE;
 62682    }
 62683    // Edge case: block indentation indicator can only have one digit.
 62684    if (indentPerLevel > 9 && needIndentIndicator(string)) {
 62685      return STYLE_DOUBLE;
 62686    }
 62687    // At this point we know block styles are valid.
 62688    // Prefer literal style unless we want to fold.
 62689    return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;
 62690  }
 62691  
 62692  // Note: line breaking/folding is implemented for only the folded style.
 62693  // NB. We drop the last trailing newline (if any) of a returned block scalar
 62694  //  since the dumper adds its own newline. This always works:
 62695  //    • No ending newline => unaffected; already using strip "-" chomping.
 62696  //    • Ending newline    => removed then restored.
 62697  //  Importantly, this keeps the "+" chomp indicator from gaining an extra line.
 62698  function writeScalar(state, string, level, iskey) {
 62699    state.dump = (function () {
 62700      if (string.length === 0) {
 62701        return "''";
 62702      }
 62703      if (!state.noCompatMode &&
 62704          DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {
 62705        return "'" + string + "'";
 62706      }
 62707  
 62708      var indent = state.indent * Math.max(1, level); // no 0-indent scalars
 62709      // As indentation gets deeper, let the width decrease monotonically
 62710      // to the lower bound min(state.lineWidth, 40).
 62711      // Note that this implies
 62712      //  state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.
 62713      //  state.lineWidth > 40 + state.indent: width decreases until the lower bound.
 62714      // This behaves better than a constant minimum width which disallows narrower options,
 62715      // or an indent threshold which causes the width to suddenly increase.
 62716      var lineWidth = state.lineWidth === -1
 62717        ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);
 62718  
 62719      // Without knowing if keys are implicit/explicit, assume implicit for safety.
 62720      var singleLineOnly = iskey
 62721        // No block styles in flow mode.
 62722        || (state.flowLevel > -1 && level >= state.flowLevel);
 62723      function testAmbiguity(string) {
 62724        return testImplicitResolving(state, string);
 62725      }
 62726  
 62727      switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {
 62728        case STYLE_PLAIN:
 62729          return string;
 62730        case STYLE_SINGLE:
 62731          return "'" + string.replace(/'/g, "''") + "'";
 62732        case STYLE_LITERAL:
 62733          return '|' + blockHeader(string, state.indent)
 62734            + dropEndingNewline(indentString(string, indent));
 62735        case STYLE_FOLDED:
 62736          return '>' + blockHeader(string, state.indent)
 62737            + dropEndingNewline(indentString(foldString(string, lineWidth), indent));
 62738        case STYLE_DOUBLE:
 62739          return '"' + escapeString(string, lineWidth) + '"';
 62740        default:
 62741          throw new YAMLException('impossible error: invalid scalar style');
 62742      }
 62743    }());
 62744  }
 62745  
 62746  // Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.
 62747  function blockHeader(string, indentPerLevel) {
 62748    var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';
 62749  
 62750    // note the special case: the string '\n' counts as a "trailing" empty line.
 62751    var clip =          string[string.length - 1] === '\n';
 62752    var keep = clip && (string[string.length - 2] === '\n' || string === '\n');
 62753    var chomp = keep ? '+' : (clip ? '' : '-');
 62754  
 62755    return indentIndicator + chomp + '\n';
 62756  }
 62757  
 62758  // (See the note for writeScalar.)
 62759  function dropEndingNewline(string) {
 62760    return string[string.length - 1] === '\n' ? string.slice(0, -1) : string;
 62761  }
 62762  
 62763  // Note: a long line without a suitable break point will exceed the width limit.
 62764  // Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.
 62765  function foldString(string, width) {
 62766    // In folded style, $k$ consecutive newlines output as $k+1$ newlines—
 62767    // unless they're before or after a more-indented line, or at the very
 62768    // beginning or end, in which case $k$ maps to $k$.
 62769    // Therefore, parse each chunk as newline(s) followed by a content line.
 62770    var lineRe = /(\n+)([^\n]*)/g;
 62771  
 62772    // first line (possibly an empty line)
 62773    var result = (function () {
 62774      var nextLF = string.indexOf('\n');
 62775      nextLF = nextLF !== -1 ? nextLF : string.length;
 62776      lineRe.lastIndex = nextLF;
 62777      return foldLine(string.slice(0, nextLF), width);
 62778    }());
 62779    // If we haven't reached the first content line yet, don't add an extra \n.
 62780    var prevMoreIndented = string[0] === '\n' || string[0] === ' ';
 62781    var moreIndented;
 62782  
 62783    // rest of the lines
 62784    var match;
 62785    while ((match = lineRe.exec(string))) {
 62786      var prefix = match[1], line = match[2];
 62787      moreIndented = (line[0] === ' ');
 62788      result += prefix
 62789        + (!prevMoreIndented && !moreIndented && line !== ''
 62790          ? '\n' : '')
 62791        + foldLine(line, width);
 62792      prevMoreIndented = moreIndented;
 62793    }
 62794  
 62795    return result;
 62796  }
 62797  
 62798  // Greedy line breaking.
 62799  // Picks the longest line under the limit each time,
 62800  // otherwise settles for the shortest line over the limit.
 62801  // NB. More-indented lines *cannot* be folded, as that would add an extra \n.
 62802  function foldLine(line, width) {
 62803    if (line === '' || line[0] === ' ') return line;
 62804  
 62805    // Since a more-indented line adds a \n, breaks can't be followed by a space.
 62806    var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.
 62807    var match;
 62808    // start is an inclusive index. end, curr, and next are exclusive.
 62809    var start = 0, end, curr = 0, next = 0;
 62810    var result = '';
 62811  
 62812    // Invariants: 0 <= start <= length-1.
 62813    //   0 <= curr <= next <= max(0, length-2). curr - start <= width.
 62814    // Inside the loop:
 62815    //   A match implies length >= 2, so curr and next are <= length-2.
 62816    while ((match = breakRe.exec(line))) {
 62817      next = match.index;
 62818      // maintain invariant: curr - start <= width
 62819      if (next - start > width) {
 62820        end = (curr > start) ? curr : next; // derive end <= length-2
 62821        result += '\n' + line.slice(start, end);
 62822        // skip the space that was output as \n
 62823        start = end + 1;                    // derive start <= length-1
 62824      }
 62825      curr = next;
 62826    }
 62827  
 62828    // By the invariants, start <= length-1, so there is something left over.
 62829    // It is either the whole string or a part starting from non-whitespace.
 62830    result += '\n';
 62831    // Insert a break if the remainder is too long and there is a break available.
 62832    if (line.length - start > width && curr > start) {
 62833      result += line.slice(start, curr) + '\n' + line.slice(curr + 1);
 62834    } else {
 62835      result += line.slice(start);
 62836    }
 62837  
 62838    return result.slice(1); // drop extra \n joiner
 62839  }
 62840  
 62841  // Escapes a double-quoted string.
 62842  function escapeString(string) {
 62843    var result = '';
 62844    var char, nextChar;
 62845    var escapeSeq;
 62846  
 62847    for (var i = 0; i < string.length; i++) {
 62848      char = string.charCodeAt(i);
 62849      // Check for surrogate pairs (reference Unicode 3.0 section "3.7 Surrogates").
 62850      if (char >= 0xD800 && char <= 0xDBFF/* high surrogate */) {
 62851        nextChar = string.charCodeAt(i + 1);
 62852        if (nextChar >= 0xDC00 && nextChar <= 0xDFFF/* low surrogate */) {
 62853          // Combine the surrogate pair and store it escaped.
 62854          result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000);
 62855          // Advance index one extra since we already used that char here.
 62856          i++; continue;
 62857        }
 62858      }
 62859      escapeSeq = ESCAPE_SEQUENCES[char];
 62860      result += !escapeSeq && isPrintable(char)
 62861        ? string[i]
 62862        : escapeSeq || encodeHex(char);
 62863    }
 62864  
 62865    return result;
 62866  }
 62867  
 62868  function writeFlowSequence(state, level, object) {
 62869    var _result = '',
 62870        _tag    = state.tag,
 62871        index,
 62872        length;
 62873  
 62874    for (index = 0, length = object.length; index < length; index += 1) {
 62875      // Write only valid elements.
 62876      if (writeNode(state, level, object[index], false, false)) {
 62877        if (index !== 0) _result += ',' + (!state.condenseFlow ? ' ' : '');
 62878        _result += state.dump;
 62879      }
 62880    }
 62881  
 62882    state.tag = _tag;
 62883    state.dump = '[' + _result + ']';
 62884  }
 62885  
 62886  function writeBlockSequence(state, level, object, compact) {
 62887    var _result = '',
 62888        _tag    = state.tag,
 62889        index,
 62890        length;
 62891  
 62892    for (index = 0, length = object.length; index < length; index += 1) {
 62893      // Write only valid elements.
 62894      if (writeNode(state, level + 1, object[index], true, true)) {
 62895        if (!compact || index !== 0) {
 62896          _result += generateNextLine(state, level);
 62897        }
 62898  
 62899        if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
 62900          _result += '-';
 62901        } else {
 62902          _result += '- ';
 62903        }
 62904  
 62905        _result += state.dump;
 62906      }
 62907    }
 62908  
 62909    state.tag = _tag;
 62910    state.dump = _result || '[]'; // Empty sequence if no valid values.
 62911  }
 62912  
 62913  function writeFlowMapping(state, level, object) {
 62914    var _result       = '',
 62915        _tag          = state.tag,
 62916        objectKeyList = Object.keys(object),
 62917        index,
 62918        length,
 62919        objectKey,
 62920        objectValue,
 62921        pairBuffer;
 62922  
 62923    for (index = 0, length = objectKeyList.length; index < length; index += 1) {
 62924      pairBuffer = state.condenseFlow ? '"' : '';
 62925  
 62926      if (index !== 0) pairBuffer += ', ';
 62927  
 62928      objectKey = objectKeyList[index];
 62929      objectValue = object[objectKey];
 62930  
 62931      if (!writeNode(state, level, objectKey, false, false)) {
 62932        continue; // Skip this pair because of invalid key;
 62933      }
 62934  
 62935      if (state.dump.length > 1024) pairBuffer += '? ';
 62936  
 62937      pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' ');
 62938  
 62939      if (!writeNode(state, level, objectValue, false, false)) {
 62940        continue; // Skip this pair because of invalid value.
 62941      }
 62942  
 62943      pairBuffer += state.dump;
 62944  
 62945      // Both key and value are valid.
 62946      _result += pairBuffer;
 62947    }
 62948  
 62949    state.tag = _tag;
 62950    state.dump = '{' + _result + '}';
 62951  }
 62952  
 62953  function writeBlockMapping(state, level, object, compact) {
 62954    var _result       = '',
 62955        _tag          = state.tag,
 62956        objectKeyList = Object.keys(object),
 62957        index,
 62958        length,
 62959        objectKey,
 62960        objectValue,
 62961        explicitPair,
 62962        pairBuffer;
 62963  
 62964    // Allow sorting keys so that the output file is deterministic
 62965    if (state.sortKeys === true) {
 62966      // Default sorting
 62967      objectKeyList.sort();
 62968    } else if (typeof state.sortKeys === 'function') {
 62969      // Custom sort function
 62970      objectKeyList.sort(state.sortKeys);
 62971    } else if (state.sortKeys) {
 62972      // Something is wrong
 62973      throw new YAMLException('sortKeys must be a boolean or a function');
 62974    }
 62975  
 62976    for (index = 0, length = objectKeyList.length; index < length; index += 1) {
 62977      pairBuffer = '';
 62978  
 62979      if (!compact || index !== 0) {
 62980        pairBuffer += generateNextLine(state, level);
 62981      }
 62982  
 62983      objectKey = objectKeyList[index];
 62984      objectValue = object[objectKey];
 62985  
 62986      if (!writeNode(state, level + 1, objectKey, true, true, true)) {
 62987        continue; // Skip this pair because of invalid key.
 62988      }
 62989  
 62990      explicitPair = (state.tag !== null && state.tag !== '?') ||
 62991                     (state.dump && state.dump.length > 1024);
 62992  
 62993      if (explicitPair) {
 62994        if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
 62995          pairBuffer += '?';
 62996        } else {
 62997          pairBuffer += '? ';
 62998        }
 62999      }
 63000  
 63001      pairBuffer += state.dump;
 63002  
 63003      if (explicitPair) {
 63004        pairBuffer += generateNextLine(state, level);
 63005      }
 63006  
 63007      if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {
 63008        continue; // Skip this pair because of invalid value.
 63009      }
 63010  
 63011      if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
 63012        pairBuffer += ':';
 63013      } else {
 63014        pairBuffer += ': ';
 63015      }
 63016  
 63017      pairBuffer += state.dump;
 63018  
 63019      // Both key and value are valid.
 63020      _result += pairBuffer;
 63021    }
 63022  
 63023    state.tag = _tag;
 63024    state.dump = _result || '{}'; // Empty mapping if no valid pairs.
 63025  }
 63026  
 63027  function detectType(state, object, explicit) {
 63028    var _result, typeList, index, length, type, style;
 63029  
 63030    typeList = explicit ? state.explicitTypes : state.implicitTypes;
 63031  
 63032    for (index = 0, length = typeList.length; index < length; index += 1) {
 63033      type = typeList[index];
 63034  
 63035      if ((type.instanceOf  || type.predicate) &&
 63036          (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&
 63037          (!type.predicate  || type.predicate(object))) {
 63038  
 63039        state.tag = explicit ? type.tag : '?';
 63040  
 63041        if (type.represent) {
 63042          style = state.styleMap[type.tag] || type.defaultStyle;
 63043  
 63044          if (_toString.call(type.represent) === '[object Function]') {
 63045            _result = type.represent(object, style);
 63046          } else if (_hasOwnProperty.call(type.represent, style)) {
 63047            _result = type.represent[style](object, style);
 63048          } else {
 63049            throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style');
 63050          }
 63051  
 63052          state.dump = _result;
 63053        }
 63054  
 63055        return true;
 63056      }
 63057    }
 63058  
 63059    return false;
 63060  }
 63061  
 63062  // Serializes `object` and writes it to global `result`.
 63063  // Returns true on success, or false on invalid object.
 63064  //
 63065  function writeNode(state, level, object, block, compact, iskey) {
 63066    state.tag = null;
 63067    state.dump = object;
 63068  
 63069    if (!detectType(state, object, false)) {
 63070      detectType(state, object, true);
 63071    }
 63072  
 63073    var type = _toString.call(state.dump);
 63074  
 63075    if (block) {
 63076      block = (state.flowLevel < 0 || state.flowLevel > level);
 63077    }
 63078  
 63079    var objectOrArray = type === '[object Object]' || type === '[object Array]',
 63080        duplicateIndex,
 63081        duplicate;
 63082  
 63083    if (objectOrArray) {
 63084      duplicateIndex = state.duplicates.indexOf(object);
 63085      duplicate = duplicateIndex !== -1;
 63086    }
 63087  
 63088    if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {
 63089      compact = false;
 63090    }
 63091  
 63092    if (duplicate && state.usedDuplicates[duplicateIndex]) {
 63093      state.dump = '*ref_' + duplicateIndex;
 63094    } else {
 63095      if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {
 63096        state.usedDuplicates[duplicateIndex] = true;
 63097      }
 63098      if (type === '[object Object]') {
 63099        if (block && (Object.keys(state.dump).length !== 0)) {
 63100          writeBlockMapping(state, level, state.dump, compact);
 63101          if (duplicate) {
 63102            state.dump = '&ref_' + duplicateIndex + state.dump;
 63103          }
 63104        } else {
 63105          writeFlowMapping(state, level, state.dump);
 63106          if (duplicate) {
 63107            state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;
 63108          }
 63109        }
 63110      } else if (type === '[object Array]') {
 63111        var arrayLevel = (state.noArrayIndent && (level > 0)) ? level - 1 : level;
 63112        if (block && (state.dump.length !== 0)) {
 63113          writeBlockSequence(state, arrayLevel, state.dump, compact);
 63114          if (duplicate) {
 63115            state.dump = '&ref_' + duplicateIndex + state.dump;
 63116          }
 63117        } else {
 63118          writeFlowSequence(state, arrayLevel, state.dump);
 63119          if (duplicate) {
 63120            state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;
 63121          }
 63122        }
 63123      } else if (type === '[object String]') {
 63124        if (state.tag !== '?') {
 63125          writeScalar(state, state.dump, level, iskey);
 63126        }
 63127      } else {
 63128        if (state.skipInvalid) return false;
 63129        throw new YAMLException('unacceptable kind of an object to dump ' + type);
 63130      }
 63131  
 63132      if (state.tag !== null && state.tag !== '?') {
 63133        state.dump = '!<' + state.tag + '> ' + state.dump;
 63134      }
 63135    }
 63136  
 63137    return true;
 63138  }
 63139  
 63140  function getDuplicateReferences(object, state) {
 63141    var objects = [],
 63142        duplicatesIndexes = [],
 63143        index,
 63144        length;
 63145  
 63146    inspectNode(object, objects, duplicatesIndexes);
 63147  
 63148    for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {
 63149      state.duplicates.push(objects[duplicatesIndexes[index]]);
 63150    }
 63151    state.usedDuplicates = new Array(length);
 63152  }
 63153  
 63154  function inspectNode(object, objects, duplicatesIndexes) {
 63155    var objectKeyList,
 63156        index,
 63157        length;
 63158  
 63159    if (object !== null && typeof object === 'object') {
 63160      index = objects.indexOf(object);
 63161      if (index !== -1) {
 63162        if (duplicatesIndexes.indexOf(index) === -1) {
 63163          duplicatesIndexes.push(index);
 63164        }
 63165      } else {
 63166        objects.push(object);
 63167  
 63168        if (Array.isArray(object)) {
 63169          for (index = 0, length = object.length; index < length; index += 1) {
 63170            inspectNode(object[index], objects, duplicatesIndexes);
 63171          }
 63172        } else {
 63173          objectKeyList = Object.keys(object);
 63174  
 63175          for (index = 0, length = objectKeyList.length; index < length; index += 1) {
 63176            inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);
 63177          }
 63178        }
 63179      }
 63180    }
 63181  }
 63182  
 63183  function dump(input, options) {
 63184    options = options || {};
 63185  
 63186    var state = new State(options);
 63187  
 63188    if (!state.noRefs) getDuplicateReferences(input, state);
 63189  
 63190    if (writeNode(state, 0, input, true, true)) return state.dump + '\n';
 63191  
 63192    return '';
 63193  }
 63194  
 63195  function safeDump(input, options) {
 63196    return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
 63197  }
 63198  
 63199  module.exports.dump     = dump;
 63200  module.exports.safeDump = safeDump;
 63201  
 63202  
 63203  /***/ }),
 63204  /* 282 */
 63205  /***/ (function(module, exports, __webpack_require__) {
 63206  
 63207  "use strict";
 63208  
 63209  
 63210  /*eslint-disable max-len,no-use-before-define*/
 63211  
 63212  var common              = __webpack_require__(43);
 63213  var YAMLException       = __webpack_require__(55);
 63214  var Mark                = __webpack_require__(283);
 63215  var DEFAULT_SAFE_SCHEMA = __webpack_require__(56);
 63216  var DEFAULT_FULL_SCHEMA = __webpack_require__(73);
 63217  
 63218  
 63219  var _hasOwnProperty = Object.prototype.hasOwnProperty;
 63220  
 63221  
 63222  var CONTEXT_FLOW_IN   = 1;
 63223  var CONTEXT_FLOW_OUT  = 2;
 63224  var CONTEXT_BLOCK_IN  = 3;
 63225  var CONTEXT_BLOCK_OUT = 4;
 63226  
 63227  
 63228  var CHOMPING_CLIP  = 1;
 63229  var CHOMPING_STRIP = 2;
 63230  var CHOMPING_KEEP  = 3;
 63231  
 63232  
 63233  var PATTERN_NON_PRINTABLE         = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
 63234  var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/;
 63235  var PATTERN_FLOW_INDICATORS       = /[,\[\]\{\}]/;
 63236  var PATTERN_TAG_HANDLE            = /^(?:!|!!|![a-z\-]+!)$/i;
 63237  var PATTERN_TAG_URI               = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;
 63238  
 63239  
 63240  function _class(obj) { return Object.prototype.toString.call(obj); }
 63241  
 63242  function is_EOL(c) {
 63243    return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);
 63244  }
 63245  
 63246  function is_WHITE_SPACE(c) {
 63247    return (c === 0x09/* Tab */) || (c === 0x20/* Space */);
 63248  }
 63249  
 63250  function is_WS_OR_EOL(c) {
 63251    return (c === 0x09/* Tab */) ||
 63252           (c === 0x20/* Space */) ||
 63253           (c === 0x0A/* LF */) ||
 63254           (c === 0x0D/* CR */);
 63255  }
 63256  
 63257  function is_FLOW_INDICATOR(c) {
 63258    return c === 0x2C/* , */ ||
 63259           c === 0x5B/* [ */ ||
 63260           c === 0x5D/* ] */ ||
 63261           c === 0x7B/* { */ ||
 63262           c === 0x7D/* } */;
 63263  }
 63264  
 63265  function fromHexCode(c) {
 63266    var lc;
 63267  
 63268    if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {
 63269      return c - 0x30;
 63270    }
 63271  
 63272    /*eslint-disable no-bitwise*/
 63273    lc = c | 0x20;
 63274  
 63275    if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {
 63276      return lc - 0x61 + 10;
 63277    }
 63278  
 63279    return -1;
 63280  }
 63281  
 63282  function escapedHexLen(c) {
 63283    if (c === 0x78/* x */) { return 2; }
 63284    if (c === 0x75/* u */) { return 4; }
 63285    if (c === 0x55/* U */) { return 8; }
 63286    return 0;
 63287  }
 63288  
 63289  function fromDecimalCode(c) {
 63290    if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {
 63291      return c - 0x30;
 63292    }
 63293  
 63294    return -1;
 63295  }
 63296  
 63297  function simpleEscapeSequence(c) {
 63298    /* eslint-disable indent */
 63299    return (c === 0x30/* 0 */) ? '\x00' :
 63300          (c === 0x61/* a */) ? '\x07' :
 63301          (c === 0x62/* b */) ? '\x08' :
 63302          (c === 0x74/* t */) ? '\x09' :
 63303          (c === 0x09/* Tab */) ? '\x09' :
 63304          (c === 0x6E/* n */) ? '\x0A' :
 63305          (c === 0x76/* v */) ? '\x0B' :
 63306          (c === 0x66/* f */) ? '\x0C' :
 63307          (c === 0x72/* r */) ? '\x0D' :
 63308          (c === 0x65/* e */) ? '\x1B' :
 63309          (c === 0x20/* Space */) ? ' ' :
 63310          (c === 0x22/* " */) ? '\x22' :
 63311          (c === 0x2F/* / */) ? '/' :
 63312          (c === 0x5C/* \ */) ? '\x5C' :
 63313          (c === 0x4E/* N */) ? '\x85' :
 63314          (c === 0x5F/* _ */) ? '\xA0' :
 63315          (c === 0x4C/* L */) ? '\u2028' :
 63316          (c === 0x50/* P */) ? '\u2029' : '';
 63317  }
 63318  
 63319  function charFromCodepoint(c) {
 63320    if (c <= 0xFFFF) {
 63321      return String.fromCharCode(c);
 63322    }
 63323    // Encode UTF-16 surrogate pair
 63324    // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF
 63325    return String.fromCharCode(
 63326      ((c - 0x010000) >> 10) + 0xD800,
 63327      ((c - 0x010000) & 0x03FF) + 0xDC00
 63328    );
 63329  }
 63330  
 63331  var simpleEscapeCheck = new Array(256); // integer, for fast access
 63332  var simpleEscapeMap = new Array(256);
 63333  for (var i = 0; i < 256; i++) {
 63334    simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;
 63335    simpleEscapeMap[i] = simpleEscapeSequence(i);
 63336  }
 63337  
 63338  
 63339  function State(input, options) {
 63340    this.input = input;
 63341  
 63342    this.filename  = options['filename']  || null;
 63343    this.schema    = options['schema']    || DEFAULT_FULL_SCHEMA;
 63344    this.onWarning = options['onWarning'] || null;
 63345    this.legacy    = options['legacy']    || false;
 63346    this.json      = options['json']      || false;
 63347    this.listener  = options['listener']  || null;
 63348  
 63349    this.implicitTypes = this.schema.compiledImplicit;
 63350    this.typeMap       = this.schema.compiledTypeMap;
 63351  
 63352    this.length     = input.length;
 63353    this.position   = 0;
 63354    this.line       = 0;
 63355    this.lineStart  = 0;
 63356    this.lineIndent = 0;
 63357  
 63358    this.documents = [];
 63359  
 63360    /*
 63361    this.version;
 63362    this.checkLineBreaks;
 63363    this.tagMap;
 63364    this.anchorMap;
 63365    this.tag;
 63366    this.anchor;
 63367    this.kind;
 63368    this.result;*/
 63369  
 63370  }
 63371  
 63372  
 63373  function generateError(state, message) {
 63374    return new YAMLException(
 63375      message,
 63376      new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));
 63377  }
 63378  
 63379  function throwError(state, message) {
 63380    throw generateError(state, message);
 63381  }
 63382  
 63383  function throwWarning(state, message) {
 63384    if (state.onWarning) {
 63385      state.onWarning.call(null, generateError(state, message));
 63386    }
 63387  }
 63388  
 63389  
 63390  var directiveHandlers = {
 63391  
 63392    YAML: function handleYamlDirective(state, name, args) {
 63393  
 63394      var match, major, minor;
 63395  
 63396      if (state.version !== null) {
 63397        throwError(state, 'duplication of %YAML directive');
 63398      }
 63399  
 63400      if (args.length !== 1) {
 63401        throwError(state, 'YAML directive accepts exactly one argument');
 63402      }
 63403  
 63404      match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]);
 63405  
 63406      if (match === null) {
 63407        throwError(state, 'ill-formed argument of the YAML directive');
 63408      }
 63409  
 63410      major = parseInt(match[1], 10);
 63411      minor = parseInt(match[2], 10);
 63412  
 63413      if (major !== 1) {
 63414        throwError(state, 'unacceptable YAML version of the document');
 63415      }
 63416  
 63417      state.version = args[0];
 63418      state.checkLineBreaks = (minor < 2);
 63419  
 63420      if (minor !== 1 && minor !== 2) {
 63421        throwWarning(state, 'unsupported YAML version of the document');
 63422      }
 63423    },
 63424  
 63425    TAG: function handleTagDirective(state, name, args) {
 63426  
 63427      var handle, prefix;
 63428  
 63429      if (args.length !== 2) {
 63430        throwError(state, 'TAG directive accepts exactly two arguments');
 63431      }
 63432  
 63433      handle = args[0];
 63434      prefix = args[1];
 63435  
 63436      if (!PATTERN_TAG_HANDLE.test(handle)) {
 63437        throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');
 63438      }
 63439  
 63440      if (_hasOwnProperty.call(state.tagMap, handle)) {
 63441        throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle');
 63442      }
 63443  
 63444      if (!PATTERN_TAG_URI.test(prefix)) {
 63445        throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');
 63446      }
 63447  
 63448      state.tagMap[handle] = prefix;
 63449    }
 63450  };
 63451  
 63452  
 63453  function captureSegment(state, start, end, checkJson) {
 63454    var _position, _length, _character, _result;
 63455  
 63456    if (start < end) {
 63457      _result = state.input.slice(start, end);
 63458  
 63459      if (checkJson) {
 63460        for (_position = 0, _length = _result.length; _position < _length; _position += 1) {
 63461          _character = _result.charCodeAt(_position);
 63462          if (!(_character === 0x09 ||
 63463                (0x20 <= _character && _character <= 0x10FFFF))) {
 63464            throwError(state, 'expected valid JSON character');
 63465          }
 63466        }
 63467      } else if (PATTERN_NON_PRINTABLE.test(_result)) {
 63468        throwError(state, 'the stream contains non-printable characters');
 63469      }
 63470  
 63471      state.result += _result;
 63472    }
 63473  }
 63474  
 63475  function mergeMappings(state, destination, source, overridableKeys) {
 63476    var sourceKeys, key, index, quantity;
 63477  
 63478    if (!common.isObject(source)) {
 63479      throwError(state, 'cannot merge mappings; the provided source object is unacceptable');
 63480    }
 63481  
 63482    sourceKeys = Object.keys(source);
 63483  
 63484    for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {
 63485      key = sourceKeys[index];
 63486  
 63487      if (!_hasOwnProperty.call(destination, key)) {
 63488        destination[key] = source[key];
 63489        overridableKeys[key] = true;
 63490      }
 63491    }
 63492  }
 63493  
 63494  function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) {
 63495    var index, quantity;
 63496  
 63497    // The output is a plain object here, so keys can only be strings.
 63498    // We need to convert keyNode to a string, but doing so can hang the process
 63499    // (deeply nested arrays that explode exponentially using aliases).
 63500    if (Array.isArray(keyNode)) {
 63501      keyNode = Array.prototype.slice.call(keyNode);
 63502  
 63503      for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {
 63504        if (Array.isArray(keyNode[index])) {
 63505          throwError(state, 'nested arrays are not supported inside keys');
 63506        }
 63507  
 63508        if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {
 63509          keyNode[index] = '[object Object]';
 63510        }
 63511      }
 63512    }
 63513  
 63514    // Avoid code execution in load() via toString property
 63515    // (still use its own toString for arrays, timestamps,
 63516    // and whatever user schema extensions happen to have @@toStringTag)
 63517    if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {
 63518      keyNode = '[object Object]';
 63519    }
 63520  
 63521  
 63522    keyNode = String(keyNode);
 63523  
 63524    if (_result === null) {
 63525      _result = {};
 63526    }
 63527  
 63528    if (keyTag === 'tag:yaml.org,2002:merge') {
 63529      if (Array.isArray(valueNode)) {
 63530        for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {
 63531          mergeMappings(state, _result, valueNode[index], overridableKeys);
 63532        }
 63533      } else {
 63534        mergeMappings(state, _result, valueNode, overridableKeys);
 63535      }
 63536    } else {
 63537      if (!state.json &&
 63538          !_hasOwnProperty.call(overridableKeys, keyNode) &&
 63539          _hasOwnProperty.call(_result, keyNode)) {
 63540        state.line = startLine || state.line;
 63541        state.position = startPos || state.position;
 63542        throwError(state, 'duplicated mapping key');
 63543      }
 63544      _result[keyNode] = valueNode;
 63545      delete overridableKeys[keyNode];
 63546    }
 63547  
 63548    return _result;
 63549  }
 63550  
 63551  function readLineBreak(state) {
 63552    var ch;
 63553  
 63554    ch = state.input.charCodeAt(state.position);
 63555  
 63556    if (ch === 0x0A/* LF */) {
 63557      state.position++;
 63558    } else if (ch === 0x0D/* CR */) {
 63559      state.position++;
 63560      if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {
 63561        state.position++;
 63562      }
 63563    } else {
 63564      throwError(state, 'a line break is expected');
 63565    }
 63566  
 63567    state.line += 1;
 63568    state.lineStart = state.position;
 63569  }
 63570  
 63571  function skipSeparationSpace(state, allowComments, checkIndent) {
 63572    var lineBreaks = 0,
 63573        ch = state.input.charCodeAt(state.position);
 63574  
 63575    while (ch !== 0) {
 63576      while (is_WHITE_SPACE(ch)) {
 63577        ch = state.input.charCodeAt(++state.position);
 63578      }
 63579  
 63580      if (allowComments && ch === 0x23/* # */) {
 63581        do {
 63582          ch = state.input.charCodeAt(++state.position);
 63583        } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);
 63584      }
 63585  
 63586      if (is_EOL(ch)) {
 63587        readLineBreak(state);
 63588  
 63589        ch = state.input.charCodeAt(state.position);
 63590        lineBreaks++;
 63591        state.lineIndent = 0;
 63592  
 63593        while (ch === 0x20/* Space */) {
 63594          state.lineIndent++;
 63595          ch = state.input.charCodeAt(++state.position);
 63596        }
 63597      } else {
 63598        break;
 63599      }
 63600    }
 63601  
 63602    if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {
 63603      throwWarning(state, 'deficient indentation');
 63604    }
 63605  
 63606    return lineBreaks;
 63607  }
 63608  
 63609  function testDocumentSeparator(state) {
 63610    var _position = state.position,
 63611        ch;
 63612  
 63613    ch = state.input.charCodeAt(_position);
 63614  
 63615    // Condition state.position === state.lineStart is tested
 63616    // in parent on each call, for efficiency. No needs to test here again.
 63617    if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&
 63618        ch === state.input.charCodeAt(_position + 1) &&
 63619        ch === state.input.charCodeAt(_position + 2)) {
 63620  
 63621      _position += 3;
 63622  
 63623      ch = state.input.charCodeAt(_position);
 63624  
 63625      if (ch === 0 || is_WS_OR_EOL(ch)) {
 63626        return true;
 63627      }
 63628    }
 63629  
 63630    return false;
 63631  }
 63632  
 63633  function writeFoldedLines(state, count) {
 63634    if (count === 1) {
 63635      state.result += ' ';
 63636    } else if (count > 1) {
 63637      state.result += common.repeat('\n', count - 1);
 63638    }
 63639  }
 63640  
 63641  
 63642  function readPlainScalar(state, nodeIndent, withinFlowCollection) {
 63643    var preceding,
 63644        following,
 63645        captureStart,
 63646        captureEnd,
 63647        hasPendingContent,
 63648        _line,
 63649        _lineStart,
 63650        _lineIndent,
 63651        _kind = state.kind,
 63652        _result = state.result,
 63653        ch;
 63654  
 63655    ch = state.input.charCodeAt(state.position);
 63656  
 63657    if (is_WS_OR_EOL(ch)      ||
 63658        is_FLOW_INDICATOR(ch) ||
 63659        ch === 0x23/* # */    ||
 63660        ch === 0x26/* & */    ||
 63661        ch === 0x2A/* * */    ||
 63662        ch === 0x21/* ! */    ||
 63663        ch === 0x7C/* | */    ||
 63664        ch === 0x3E/* > */    ||
 63665        ch === 0x27/* ' */    ||
 63666        ch === 0x22/* " */    ||
 63667        ch === 0x25/* % */    ||
 63668        ch === 0x40/* @ */    ||
 63669        ch === 0x60/* ` */) {
 63670      return false;
 63671    }
 63672  
 63673    if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {
 63674      following = state.input.charCodeAt(state.position + 1);
 63675  
 63676      if (is_WS_OR_EOL(following) ||
 63677          withinFlowCollection && is_FLOW_INDICATOR(following)) {
 63678        return false;
 63679      }
 63680    }
 63681  
 63682    state.kind = 'scalar';
 63683    state.result = '';
 63684    captureStart = captureEnd = state.position;
 63685    hasPendingContent = false;
 63686  
 63687    while (ch !== 0) {
 63688      if (ch === 0x3A/* : */) {
 63689        following = state.input.charCodeAt(state.position + 1);
 63690  
 63691        if (is_WS_OR_EOL(following) ||
 63692            withinFlowCollection && is_FLOW_INDICATOR(following)) {
 63693          break;
 63694        }
 63695  
 63696      } else if (ch === 0x23/* # */) {
 63697        preceding = state.input.charCodeAt(state.position - 1);
 63698  
 63699        if (is_WS_OR_EOL(preceding)) {
 63700          break;
 63701        }
 63702  
 63703      } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||
 63704                 withinFlowCollection && is_FLOW_INDICATOR(ch)) {
 63705        break;
 63706  
 63707      } else if (is_EOL(ch)) {
 63708        _line = state.line;
 63709        _lineStart = state.lineStart;
 63710        _lineIndent = state.lineIndent;
 63711        skipSeparationSpace(state, false, -1);
 63712  
 63713        if (state.lineIndent >= nodeIndent) {
 63714          hasPendingContent = true;
 63715          ch = state.input.charCodeAt(state.position);
 63716          continue;
 63717        } else {
 63718          state.position = captureEnd;
 63719          state.line = _line;
 63720          state.lineStart = _lineStart;
 63721          state.lineIndent = _lineIndent;
 63722          break;
 63723        }
 63724      }
 63725  
 63726      if (hasPendingContent) {
 63727        captureSegment(state, captureStart, captureEnd, false);
 63728        writeFoldedLines(state, state.line - _line);
 63729        captureStart = captureEnd = state.position;
 63730        hasPendingContent = false;
 63731      }
 63732  
 63733      if (!is_WHITE_SPACE(ch)) {
 63734        captureEnd = state.position + 1;
 63735      }
 63736  
 63737      ch = state.input.charCodeAt(++state.position);
 63738    }
 63739  
 63740    captureSegment(state, captureStart, captureEnd, false);
 63741  
 63742    if (state.result) {
 63743      return true;
 63744    }
 63745  
 63746    state.kind = _kind;
 63747    state.result = _result;
 63748    return false;
 63749  }
 63750  
 63751  function readSingleQuotedScalar(state, nodeIndent) {
 63752    var ch,
 63753        captureStart, captureEnd;
 63754  
 63755    ch = state.input.charCodeAt(state.position);
 63756  
 63757    if (ch !== 0x27/* ' */) {
 63758      return false;
 63759    }
 63760  
 63761    state.kind = 'scalar';
 63762    state.result = '';
 63763    state.position++;
 63764    captureStart = captureEnd = state.position;
 63765  
 63766    while ((ch = state.input.charCodeAt(state.position)) !== 0) {
 63767      if (ch === 0x27/* ' */) {
 63768        captureSegment(state, captureStart, state.position, true);
 63769        ch = state.input.charCodeAt(++state.position);
 63770  
 63771        if (ch === 0x27/* ' */) {
 63772          captureStart = state.position;
 63773          state.position++;
 63774          captureEnd = state.position;
 63775        } else {
 63776          return true;
 63777        }
 63778  
 63779      } else if (is_EOL(ch)) {
 63780        captureSegment(state, captureStart, captureEnd, true);
 63781        writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
 63782        captureStart = captureEnd = state.position;
 63783  
 63784      } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
 63785        throwError(state, 'unexpected end of the document within a single quoted scalar');
 63786  
 63787      } else {
 63788        state.position++;
 63789        captureEnd = state.position;
 63790      }
 63791    }
 63792  
 63793    throwError(state, 'unexpected end of the stream within a single quoted scalar');
 63794  }
 63795  
 63796  function readDoubleQuotedScalar(state, nodeIndent) {
 63797    var captureStart,
 63798        captureEnd,
 63799        hexLength,
 63800        hexResult,
 63801        tmp,
 63802        ch;
 63803  
 63804    ch = state.input.charCodeAt(state.position);
 63805  
 63806    if (ch !== 0x22/* " */) {
 63807      return false;
 63808    }
 63809  
 63810    state.kind = 'scalar';
 63811    state.result = '';
 63812    state.position++;
 63813    captureStart = captureEnd = state.position;
 63814  
 63815    while ((ch = state.input.charCodeAt(state.position)) !== 0) {
 63816      if (ch === 0x22/* " */) {
 63817        captureSegment(state, captureStart, state.position, true);
 63818        state.position++;
 63819        return true;
 63820  
 63821      } else if (ch === 0x5C/* \ */) {
 63822        captureSegment(state, captureStart, state.position, true);
 63823        ch = state.input.charCodeAt(++state.position);
 63824  
 63825        if (is_EOL(ch)) {
 63826          skipSeparationSpace(state, false, nodeIndent);
 63827  
 63828          // TODO: rework to inline fn with no type cast?
 63829        } else if (ch < 256 && simpleEscapeCheck[ch]) {
 63830          state.result += simpleEscapeMap[ch];
 63831          state.position++;
 63832  
 63833        } else if ((tmp = escapedHexLen(ch)) > 0) {
 63834          hexLength = tmp;
 63835          hexResult = 0;
 63836  
 63837          for (; hexLength > 0; hexLength--) {
 63838            ch = state.input.charCodeAt(++state.position);
 63839  
 63840            if ((tmp = fromHexCode(ch)) >= 0) {
 63841              hexResult = (hexResult << 4) + tmp;
 63842  
 63843            } else {
 63844              throwError(state, 'expected hexadecimal character');
 63845            }
 63846          }
 63847  
 63848          state.result += charFromCodepoint(hexResult);
 63849  
 63850          state.position++;
 63851  
 63852        } else {
 63853          throwError(state, 'unknown escape sequence');
 63854        }
 63855  
 63856        captureStart = captureEnd = state.position;
 63857  
 63858      } else if (is_EOL(ch)) {
 63859        captureSegment(state, captureStart, captureEnd, true);
 63860        writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
 63861        captureStart = captureEnd = state.position;
 63862  
 63863      } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
 63864        throwError(state, 'unexpected end of the document within a double quoted scalar');
 63865  
 63866      } else {
 63867        state.position++;
 63868        captureEnd = state.position;
 63869      }
 63870    }
 63871  
 63872    throwError(state, 'unexpected end of the stream within a double quoted scalar');
 63873  }
 63874  
 63875  function readFlowCollection(state, nodeIndent) {
 63876    var readNext = true,
 63877        _line,
 63878        _tag     = state.tag,
 63879        _result,
 63880        _anchor  = state.anchor,
 63881        following,
 63882        terminator,
 63883        isPair,
 63884        isExplicitPair,
 63885        isMapping,
 63886        overridableKeys = {},
 63887        keyNode,
 63888        keyTag,
 63889        valueNode,
 63890        ch;
 63891  
 63892    ch = state.input.charCodeAt(state.position);
 63893  
 63894    if (ch === 0x5B/* [ */) {
 63895      terminator = 0x5D;/* ] */
 63896      isMapping = false;
 63897      _result = [];
 63898    } else if (ch === 0x7B/* { */) {
 63899      terminator = 0x7D;/* } */
 63900      isMapping = true;
 63901      _result = {};
 63902    } else {
 63903      return false;
 63904    }
 63905  
 63906    if (state.anchor !== null) {
 63907      state.anchorMap[state.anchor] = _result;
 63908    }
 63909  
 63910    ch = state.input.charCodeAt(++state.position);
 63911  
 63912    while (ch !== 0) {
 63913      skipSeparationSpace(state, true, nodeIndent);
 63914  
 63915      ch = state.input.charCodeAt(state.position);
 63916  
 63917      if (ch === terminator) {
 63918        state.position++;
 63919        state.tag = _tag;
 63920        state.anchor = _anchor;
 63921        state.kind = isMapping ? 'mapping' : 'sequence';
 63922        state.result = _result;
 63923        return true;
 63924      } else if (!readNext) {
 63925        throwError(state, 'missed comma between flow collection entries');
 63926      }
 63927  
 63928      keyTag = keyNode = valueNode = null;
 63929      isPair = isExplicitPair = false;
 63930  
 63931      if (ch === 0x3F/* ? */) {
 63932        following = state.input.charCodeAt(state.position + 1);
 63933  
 63934        if (is_WS_OR_EOL(following)) {
 63935          isPair = isExplicitPair = true;
 63936          state.position++;
 63937          skipSeparationSpace(state, true, nodeIndent);
 63938        }
 63939      }
 63940  
 63941      _line = state.line;
 63942      composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
 63943      keyTag = state.tag;
 63944      keyNode = state.result;
 63945      skipSeparationSpace(state, true, nodeIndent);
 63946  
 63947      ch = state.input.charCodeAt(state.position);
 63948  
 63949      if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {
 63950        isPair = true;
 63951        ch = state.input.charCodeAt(++state.position);
 63952        skipSeparationSpace(state, true, nodeIndent);
 63953        composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
 63954        valueNode = state.result;
 63955      }
 63956  
 63957      if (isMapping) {
 63958        storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);
 63959      } else if (isPair) {
 63960        _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));
 63961      } else {
 63962        _result.push(keyNode);
 63963      }
 63964  
 63965      skipSeparationSpace(state, true, nodeIndent);
 63966  
 63967      ch = state.input.charCodeAt(state.position);
 63968  
 63969      if (ch === 0x2C/* , */) {
 63970        readNext = true;
 63971        ch = state.input.charCodeAt(++state.position);
 63972      } else {
 63973        readNext = false;
 63974      }
 63975    }
 63976  
 63977    throwError(state, 'unexpected end of the stream within a flow collection');
 63978  }
 63979  
 63980  function readBlockScalar(state, nodeIndent) {
 63981    var captureStart,
 63982        folding,
 63983        chomping       = CHOMPING_CLIP,
 63984        didReadContent = false,
 63985        detectedIndent = false,
 63986        textIndent     = nodeIndent,
 63987        emptyLines     = 0,
 63988        atMoreIndented = false,
 63989        tmp,
 63990        ch;
 63991  
 63992    ch = state.input.charCodeAt(state.position);
 63993  
 63994    if (ch === 0x7C/* | */) {
 63995      folding = false;
 63996    } else if (ch === 0x3E/* > */) {
 63997      folding = true;
 63998    } else {
 63999      return false;
 64000    }
 64001  
 64002    state.kind = 'scalar';
 64003    state.result = '';
 64004  
 64005    while (ch !== 0) {
 64006      ch = state.input.charCodeAt(++state.position);
 64007  
 64008      if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {
 64009        if (CHOMPING_CLIP === chomping) {
 64010          chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;
 64011        } else {
 64012          throwError(state, 'repeat of a chomping mode identifier');
 64013        }
 64014  
 64015      } else if ((tmp = fromDecimalCode(ch)) >= 0) {
 64016        if (tmp === 0) {
 64017          throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');
 64018        } else if (!detectedIndent) {
 64019          textIndent = nodeIndent + tmp - 1;
 64020          detectedIndent = true;
 64021        } else {
 64022          throwError(state, 'repeat of an indentation width identifier');
 64023        }
 64024  
 64025      } else {
 64026        break;
 64027      }
 64028    }
 64029  
 64030    if (is_WHITE_SPACE(ch)) {
 64031      do { ch = state.input.charCodeAt(++state.position); }
 64032      while (is_WHITE_SPACE(ch));
 64033  
 64034      if (ch === 0x23/* # */) {
 64035        do { ch = state.input.charCodeAt(++state.position); }
 64036        while (!is_EOL(ch) && (ch !== 0));
 64037      }
 64038    }
 64039  
 64040    while (ch !== 0) {
 64041      readLineBreak(state);
 64042      state.lineIndent = 0;
 64043  
 64044      ch = state.input.charCodeAt(state.position);
 64045  
 64046      while ((!detectedIndent || state.lineIndent < textIndent) &&
 64047             (ch === 0x20/* Space */)) {
 64048        state.lineIndent++;
 64049        ch = state.input.charCodeAt(++state.position);
 64050      }
 64051  
 64052      if (!detectedIndent && state.lineIndent > textIndent) {
 64053        textIndent = state.lineIndent;
 64054      }
 64055  
 64056      if (is_EOL(ch)) {
 64057        emptyLines++;
 64058        continue;
 64059      }
 64060  
 64061      // End of the scalar.
 64062      if (state.lineIndent < textIndent) {
 64063  
 64064        // Perform the chomping.
 64065        if (chomping === CHOMPING_KEEP) {
 64066          state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines);
 64067        } else if (chomping === CHOMPING_CLIP) {
 64068          if (didReadContent) { // i.e. only if the scalar is not empty.
 64069            state.result += '\n';
 64070          }
 64071        }
 64072  
 64073        // Break this `while` cycle and go to the funciton's epilogue.
 64074        break;
 64075      }
 64076  
 64077      // Folded style: use fancy rules to handle line breaks.
 64078      if (folding) {
 64079  
 64080        // Lines starting with white space characters (more-indented lines) are not folded.
 64081        if (is_WHITE_SPACE(ch)) {
 64082          atMoreIndented = true;
 64083          // except for the first content line (cf. Example 8.1)
 64084          state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines);
 64085  
 64086        // End of more-indented block.
 64087        } else if (atMoreIndented) {
 64088          atMoreIndented = false;
 64089          state.result += common.repeat('\n', emptyLines + 1);
 64090  
 64091        // Just one line break - perceive as the same line.
 64092        } else if (emptyLines === 0) {
 64093          if (didReadContent) { // i.e. only if we have already read some scalar content.
 64094            state.result += ' ';
 64095          }
 64096  
 64097        // Several line breaks - perceive as different lines.
 64098        } else {
 64099          state.result += common.repeat('\n', emptyLines);
 64100        }
 64101  
 64102      // Literal style: just add exact number of line breaks between content lines.
 64103      } else {
 64104        // Keep all line breaks except the header line break.
 64105        state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines);
 64106      }
 64107  
 64108      didReadContent = true;
 64109      detectedIndent = true;
 64110      emptyLines = 0;
 64111      captureStart = state.position;
 64112  
 64113      while (!is_EOL(ch) && (ch !== 0)) {
 64114        ch = state.input.charCodeAt(++state.position);
 64115      }
 64116  
 64117      captureSegment(state, captureStart, state.position, false);
 64118    }
 64119  
 64120    return true;
 64121  }
 64122  
 64123  function readBlockSequence(state, nodeIndent) {
 64124    var _line,
 64125        _tag      = state.tag,
 64126        _anchor   = state.anchor,
 64127        _result   = [],
 64128        following,
 64129        detected  = false,
 64130        ch;
 64131  
 64132    if (state.anchor !== null) {
 64133      state.anchorMap[state.anchor] = _result;
 64134    }
 64135  
 64136    ch = state.input.charCodeAt(state.position);
 64137  
 64138    while (ch !== 0) {
 64139  
 64140      if (ch !== 0x2D/* - */) {
 64141        break;
 64142      }
 64143  
 64144      following = state.input.charCodeAt(state.position + 1);
 64145  
 64146      if (!is_WS_OR_EOL(following)) {
 64147        break;
 64148      }
 64149  
 64150      detected = true;
 64151      state.position++;
 64152  
 64153      if (skipSeparationSpace(state, true, -1)) {
 64154        if (state.lineIndent <= nodeIndent) {
 64155          _result.push(null);
 64156          ch = state.input.charCodeAt(state.position);
 64157          continue;
 64158        }
 64159      }
 64160  
 64161      _line = state.line;
 64162      composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);
 64163      _result.push(state.result);
 64164      skipSeparationSpace(state, true, -1);
 64165  
 64166      ch = state.input.charCodeAt(state.position);
 64167  
 64168      if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {
 64169        throwError(state, 'bad indentation of a sequence entry');
 64170      } else if (state.lineIndent < nodeIndent) {
 64171        break;
 64172      }
 64173    }
 64174  
 64175    if (detected) {
 64176      state.tag = _tag;
 64177      state.anchor = _anchor;
 64178      state.kind = 'sequence';
 64179      state.result = _result;
 64180      return true;
 64181    }
 64182    return false;
 64183  }
 64184  
 64185  function readBlockMapping(state, nodeIndent, flowIndent) {
 64186    var following,
 64187        allowCompact,
 64188        _line,
 64189        _pos,
 64190        _tag          = state.tag,
 64191        _anchor       = state.anchor,
 64192        _result       = {},
 64193        overridableKeys = {},
 64194        keyTag        = null,
 64195        keyNode       = null,
 64196        valueNode     = null,
 64197        atExplicitKey = false,
 64198        detected      = false,
 64199        ch;
 64200  
 64201    if (state.anchor !== null) {
 64202      state.anchorMap[state.anchor] = _result;
 64203    }
 64204  
 64205    ch = state.input.charCodeAt(state.position);
 64206  
 64207    while (ch !== 0) {
 64208      following = state.input.charCodeAt(state.position + 1);
 64209      _line = state.line; // Save the current line.
 64210      _pos = state.position;
 64211  
 64212      //
 64213      // Explicit notation case. There are two separate blocks:
 64214      // first for the key (denoted by "?") and second for the value (denoted by ":")
 64215      //
 64216      if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {
 64217  
 64218        if (ch === 0x3F/* ? */) {
 64219          if (atExplicitKey) {
 64220            storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);
 64221            keyTag = keyNode = valueNode = null;
 64222          }
 64223  
 64224          detected = true;
 64225          atExplicitKey = true;
 64226          allowCompact = true;
 64227  
 64228        } else if (atExplicitKey) {
 64229          // i.e. 0x3A/* : */ === character after the explicit key.
 64230          atExplicitKey = false;
 64231          allowCompact = true;
 64232  
 64233        } else {
 64234          throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');
 64235        }
 64236  
 64237        state.position += 1;
 64238        ch = following;
 64239  
 64240      //
 64241      // Implicit notation case. Flow-style node as the key first, then ":", and the value.
 64242      //
 64243      } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {
 64244  
 64245        if (state.line === _line) {
 64246          ch = state.input.charCodeAt(state.position);
 64247  
 64248          while (is_WHITE_SPACE(ch)) {
 64249            ch = state.input.charCodeAt(++state.position);
 64250          }
 64251  
 64252          if (ch === 0x3A/* : */) {
 64253            ch = state.input.charCodeAt(++state.position);
 64254  
 64255            if (!is_WS_OR_EOL(ch)) {
 64256              throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');
 64257            }
 64258  
 64259            if (atExplicitKey) {
 64260              storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);
 64261              keyTag = keyNode = valueNode = null;
 64262            }
 64263  
 64264            detected = true;
 64265            atExplicitKey = false;
 64266            allowCompact = false;
 64267            keyTag = state.tag;
 64268            keyNode = state.result;
 64269  
 64270          } else if (detected) {
 64271            throwError(state, 'can not read an implicit mapping pair; a colon is missed');
 64272  
 64273          } else {
 64274            state.tag = _tag;
 64275            state.anchor = _anchor;
 64276            return true; // Keep the result of `composeNode`.
 64277          }
 64278  
 64279        } else if (detected) {
 64280          throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');
 64281  
 64282        } else {
 64283          state.tag = _tag;
 64284          state.anchor = _anchor;
 64285          return true; // Keep the result of `composeNode`.
 64286        }
 64287  
 64288      } else {
 64289        break; // Reading is done. Go to the epilogue.
 64290      }
 64291  
 64292      //
 64293      // Common reading code for both explicit and implicit notations.
 64294      //
 64295      if (state.line === _line || state.lineIndent > nodeIndent) {
 64296        if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {
 64297          if (atExplicitKey) {
 64298            keyNode = state.result;
 64299          } else {
 64300            valueNode = state.result;
 64301          }
 64302        }
 64303  
 64304        if (!atExplicitKey) {
 64305          storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos);
 64306          keyTag = keyNode = valueNode = null;
 64307        }
 64308  
 64309        skipSeparationSpace(state, true, -1);
 64310        ch = state.input.charCodeAt(state.position);
 64311      }
 64312  
 64313      if (state.lineIndent > nodeIndent && (ch !== 0)) {
 64314        throwError(state, 'bad indentation of a mapping entry');
 64315      } else if (state.lineIndent < nodeIndent) {
 64316        break;
 64317      }
 64318    }
 64319  
 64320    //
 64321    // Epilogue.
 64322    //
 64323  
 64324    // Special case: last mapping's node contains only the key in explicit notation.
 64325    if (atExplicitKey) {
 64326      storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);
 64327    }
 64328  
 64329    // Expose the resulting mapping.
 64330    if (detected) {
 64331      state.tag = _tag;
 64332      state.anchor = _anchor;
 64333      state.kind = 'mapping';
 64334      state.result = _result;
 64335    }
 64336  
 64337    return detected;
 64338  }
 64339  
 64340  function readTagProperty(state) {
 64341    var _position,
 64342        isVerbatim = false,
 64343        isNamed    = false,
 64344        tagHandle,
 64345        tagName,
 64346        ch;
 64347  
 64348    ch = state.input.charCodeAt(state.position);
 64349  
 64350    if (ch !== 0x21/* ! */) return false;
 64351  
 64352    if (state.tag !== null) {
 64353      throwError(state, 'duplication of a tag property');
 64354    }
 64355  
 64356    ch = state.input.charCodeAt(++state.position);
 64357  
 64358    if (ch === 0x3C/* < */) {
 64359      isVerbatim = true;
 64360      ch = state.input.charCodeAt(++state.position);
 64361  
 64362    } else if (ch === 0x21/* ! */) {
 64363      isNamed = true;
 64364      tagHandle = '!!';
 64365      ch = state.input.charCodeAt(++state.position);
 64366  
 64367    } else {
 64368      tagHandle = '!';
 64369    }
 64370  
 64371    _position = state.position;
 64372  
 64373    if (isVerbatim) {
 64374      do { ch = state.input.charCodeAt(++state.position); }
 64375      while (ch !== 0 && ch !== 0x3E/* > */);
 64376  
 64377      if (state.position < state.length) {
 64378        tagName = state.input.slice(_position, state.position);
 64379        ch = state.input.charCodeAt(++state.position);
 64380      } else {
 64381        throwError(state, 'unexpected end of the stream within a verbatim tag');
 64382      }
 64383    } else {
 64384      while (ch !== 0 && !is_WS_OR_EOL(ch)) {
 64385  
 64386        if (ch === 0x21/* ! */) {
 64387          if (!isNamed) {
 64388            tagHandle = state.input.slice(_position - 1, state.position + 1);
 64389  
 64390            if (!PATTERN_TAG_HANDLE.test(tagHandle)) {
 64391              throwError(state, 'named tag handle cannot contain such characters');
 64392            }
 64393  
 64394            isNamed = true;
 64395            _position = state.position + 1;
 64396          } else {
 64397            throwError(state, 'tag suffix cannot contain exclamation marks');
 64398          }
 64399        }
 64400  
 64401        ch = state.input.charCodeAt(++state.position);
 64402      }
 64403  
 64404      tagName = state.input.slice(_position, state.position);
 64405  
 64406      if (PATTERN_FLOW_INDICATORS.test(tagName)) {
 64407        throwError(state, 'tag suffix cannot contain flow indicator characters');
 64408      }
 64409    }
 64410  
 64411    if (tagName && !PATTERN_TAG_URI.test(tagName)) {
 64412      throwError(state, 'tag name cannot contain such characters: ' + tagName);
 64413    }
 64414  
 64415    if (isVerbatim) {
 64416      state.tag = tagName;
 64417  
 64418    } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {
 64419      state.tag = state.tagMap[tagHandle] + tagName;
 64420  
 64421    } else if (tagHandle === '!') {
 64422      state.tag = '!' + tagName;
 64423  
 64424    } else if (tagHandle === '!!') {
 64425      state.tag = 'tag:yaml.org,2002:' + tagName;
 64426  
 64427    } else {
 64428      throwError(state, 'undeclared tag handle "' + tagHandle + '"');
 64429    }
 64430  
 64431    return true;
 64432  }
 64433  
 64434  function readAnchorProperty(state) {
 64435    var _position,
 64436        ch;
 64437  
 64438    ch = state.input.charCodeAt(state.position);
 64439  
 64440    if (ch !== 0x26/* & */) return false;
 64441  
 64442    if (state.anchor !== null) {
 64443      throwError(state, 'duplication of an anchor property');
 64444    }
 64445  
 64446    ch = state.input.charCodeAt(++state.position);
 64447    _position = state.position;
 64448  
 64449    while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {
 64450      ch = state.input.charCodeAt(++state.position);
 64451    }
 64452  
 64453    if (state.position === _position) {
 64454      throwError(state, 'name of an anchor node must contain at least one character');
 64455    }
 64456  
 64457    state.anchor = state.input.slice(_position, state.position);
 64458    return true;
 64459  }
 64460  
 64461  function readAlias(state) {
 64462    var _position, alias,
 64463        ch;
 64464  
 64465    ch = state.input.charCodeAt(state.position);
 64466  
 64467    if (ch !== 0x2A/* * */) return false;
 64468  
 64469    ch = state.input.charCodeAt(++state.position);
 64470    _position = state.position;
 64471  
 64472    while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {
 64473      ch = state.input.charCodeAt(++state.position);
 64474    }
 64475  
 64476    if (state.position === _position) {
 64477      throwError(state, 'name of an alias node must contain at least one character');
 64478    }
 64479  
 64480    alias = state.input.slice(_position, state.position);
 64481  
 64482    if (!state.anchorMap.hasOwnProperty(alias)) {
 64483      throwError(state, 'unidentified alias "' + alias + '"');
 64484    }
 64485  
 64486    state.result = state.anchorMap[alias];
 64487    skipSeparationSpace(state, true, -1);
 64488    return true;
 64489  }
 64490  
 64491  function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {
 64492    var allowBlockStyles,
 64493        allowBlockScalars,
 64494        allowBlockCollections,
 64495        indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent
 64496        atNewLine  = false,
 64497        hasContent = false,
 64498        typeIndex,
 64499        typeQuantity,
 64500        type,
 64501        flowIndent,
 64502        blockIndent;
 64503  
 64504    if (state.listener !== null) {
 64505      state.listener('open', state);
 64506    }
 64507  
 64508    state.tag    = null;
 64509    state.anchor = null;
 64510    state.kind   = null;
 64511    state.result = null;
 64512  
 64513    allowBlockStyles = allowBlockScalars = allowBlockCollections =
 64514      CONTEXT_BLOCK_OUT === nodeContext ||
 64515      CONTEXT_BLOCK_IN  === nodeContext;
 64516  
 64517    if (allowToSeek) {
 64518      if (skipSeparationSpace(state, true, -1)) {
 64519        atNewLine = true;
 64520  
 64521        if (state.lineIndent > parentIndent) {
 64522          indentStatus = 1;
 64523        } else if (state.lineIndent === parentIndent) {
 64524          indentStatus = 0;
 64525        } else if (state.lineIndent < parentIndent) {
 64526          indentStatus = -1;
 64527        }
 64528      }
 64529    }
 64530  
 64531    if (indentStatus === 1) {
 64532      while (readTagProperty(state) || readAnchorProperty(state)) {
 64533        if (skipSeparationSpace(state, true, -1)) {
 64534          atNewLine = true;
 64535          allowBlockCollections = allowBlockStyles;
 64536  
 64537          if (state.lineIndent > parentIndent) {
 64538            indentStatus = 1;
 64539          } else if (state.lineIndent === parentIndent) {
 64540            indentStatus = 0;
 64541          } else if (state.lineIndent < parentIndent) {
 64542            indentStatus = -1;
 64543          }
 64544        } else {
 64545          allowBlockCollections = false;
 64546        }
 64547      }
 64548    }
 64549  
 64550    if (allowBlockCollections) {
 64551      allowBlockCollections = atNewLine || allowCompact;
 64552    }
 64553  
 64554    if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {
 64555      if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {
 64556        flowIndent = parentIndent;
 64557      } else {
 64558        flowIndent = parentIndent + 1;
 64559      }
 64560  
 64561      blockIndent = state.position - state.lineStart;
 64562  
 64563      if (indentStatus === 1) {
 64564        if (allowBlockCollections &&
 64565            (readBlockSequence(state, blockIndent) ||
 64566             readBlockMapping(state, blockIndent, flowIndent)) ||
 64567            readFlowCollection(state, flowIndent)) {
 64568          hasContent = true;
 64569        } else {
 64570          if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||
 64571              readSingleQuotedScalar(state, flowIndent) ||
 64572              readDoubleQuotedScalar(state, flowIndent)) {
 64573            hasContent = true;
 64574  
 64575          } else if (readAlias(state)) {
 64576            hasContent = true;
 64577  
 64578            if (state.tag !== null || state.anchor !== null) {
 64579              throwError(state, 'alias node should not have any properties');
 64580            }
 64581  
 64582          } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {
 64583            hasContent = true;
 64584  
 64585            if (state.tag === null) {
 64586              state.tag = '?';
 64587            }
 64588          }
 64589  
 64590          if (state.anchor !== null) {
 64591            state.anchorMap[state.anchor] = state.result;
 64592          }
 64593        }
 64594      } else if (indentStatus === 0) {
 64595        // Special case: block sequences are allowed to have same indentation level as the parent.
 64596        // http://www.yaml.org/spec/1.2/spec.html#id2799784
 64597        hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);
 64598      }
 64599    }
 64600  
 64601    if (state.tag !== null && state.tag !== '!') {
 64602      if (state.tag === '?') {
 64603        for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {
 64604          type = state.implicitTypes[typeIndex];
 64605  
 64606          // Implicit resolving is not allowed for non-scalar types, and '?'
 64607          // non-specific tag is only assigned to plain scalars. So, it isn't
 64608          // needed to check for 'kind' conformity.
 64609  
 64610          if (type.resolve(state.result)) { // `state.result` updated in resolver if matched
 64611            state.result = type.construct(state.result);
 64612            state.tag = type.tag;
 64613            if (state.anchor !== null) {
 64614              state.anchorMap[state.anchor] = state.result;
 64615            }
 64616            break;
 64617          }
 64618        }
 64619      } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {
 64620        type = state.typeMap[state.kind || 'fallback'][state.tag];
 64621  
 64622        if (state.result !== null && type.kind !== state.kind) {
 64623          throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"');
 64624        }
 64625  
 64626        if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched
 64627          throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');
 64628        } else {
 64629          state.result = type.construct(state.result);
 64630          if (state.anchor !== null) {
 64631            state.anchorMap[state.anchor] = state.result;
 64632          }
 64633        }
 64634      } else {
 64635        throwError(state, 'unknown tag !<' + state.tag + '>');
 64636      }
 64637    }
 64638  
 64639    if (state.listener !== null) {
 64640      state.listener('close', state);
 64641    }
 64642    return state.tag !== null ||  state.anchor !== null || hasContent;
 64643  }
 64644  
 64645  function readDocument(state) {
 64646    var documentStart = state.position,
 64647        _position,
 64648        directiveName,
 64649        directiveArgs,
 64650        hasDirectives = false,
 64651        ch;
 64652  
 64653    state.version = null;
 64654    state.checkLineBreaks = state.legacy;
 64655    state.tagMap = {};
 64656    state.anchorMap = {};
 64657  
 64658    while ((ch = state.input.charCodeAt(state.position)) !== 0) {
 64659      skipSeparationSpace(state, true, -1);
 64660  
 64661      ch = state.input.charCodeAt(state.position);
 64662  
 64663      if (state.lineIndent > 0 || ch !== 0x25/* % */) {
 64664        break;
 64665      }
 64666  
 64667      hasDirectives = true;
 64668      ch = state.input.charCodeAt(++state.position);
 64669      _position = state.position;
 64670  
 64671      while (ch !== 0 && !is_WS_OR_EOL(ch)) {
 64672        ch = state.input.charCodeAt(++state.position);
 64673      }
 64674  
 64675      directiveName = state.input.slice(_position, state.position);
 64676      directiveArgs = [];
 64677  
 64678      if (directiveName.length < 1) {
 64679        throwError(state, 'directive name must not be less than one character in length');
 64680      }
 64681  
 64682      while (ch !== 0) {
 64683        while (is_WHITE_SPACE(ch)) {
 64684          ch = state.input.charCodeAt(++state.position);
 64685        }
 64686  
 64687        if (ch === 0x23/* # */) {
 64688          do { ch = state.input.charCodeAt(++state.position); }
 64689          while (ch !== 0 && !is_EOL(ch));
 64690          break;
 64691        }
 64692  
 64693        if (is_EOL(ch)) break;
 64694  
 64695        _position = state.position;
 64696  
 64697        while (ch !== 0 && !is_WS_OR_EOL(ch)) {
 64698          ch = state.input.charCodeAt(++state.position);
 64699        }
 64700  
 64701        directiveArgs.push(state.input.slice(_position, state.position));
 64702      }
 64703  
 64704      if (ch !== 0) readLineBreak(state);
 64705  
 64706      if (_hasOwnProperty.call(directiveHandlers, directiveName)) {
 64707        directiveHandlers[directiveName](state, directiveName, directiveArgs);
 64708      } else {
 64709        throwWarning(state, 'unknown document directive "' + directiveName + '"');
 64710      }
 64711    }
 64712  
 64713    skipSeparationSpace(state, true, -1);
 64714  
 64715    if (state.lineIndent === 0 &&
 64716        state.input.charCodeAt(state.position)     === 0x2D/* - */ &&
 64717        state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&
 64718        state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {
 64719      state.position += 3;
 64720      skipSeparationSpace(state, true, -1);
 64721  
 64722    } else if (hasDirectives) {
 64723      throwError(state, 'directives end mark is expected');
 64724    }
 64725  
 64726    composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);
 64727    skipSeparationSpace(state, true, -1);
 64728  
 64729    if (state.checkLineBreaks &&
 64730        PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {
 64731      throwWarning(state, 'non-ASCII line breaks are interpreted as content');
 64732    }
 64733  
 64734    state.documents.push(state.result);
 64735  
 64736    if (state.position === state.lineStart && testDocumentSeparator(state)) {
 64737  
 64738      if (state.input.charCodeAt(state.position) === 0x2E/* . */) {
 64739        state.position += 3;
 64740        skipSeparationSpace(state, true, -1);
 64741      }
 64742      return;
 64743    }
 64744  
 64745    if (state.position < (state.length - 1)) {
 64746      throwError(state, 'end of the stream or a document separator is expected');
 64747    } else {
 64748      return;
 64749    }
 64750  }
 64751  
 64752  
 64753  function loadDocuments(input, options) {
 64754    input = String(input);
 64755    options = options || {};
 64756  
 64757    if (input.length !== 0) {
 64758  
 64759      // Add tailing `\n` if not exists
 64760      if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&
 64761          input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {
 64762        input += '\n';
 64763      }
 64764  
 64765      // Strip BOM
 64766      if (input.charCodeAt(0) === 0xFEFF) {
 64767        input = input.slice(1);
 64768      }
 64769    }
 64770  
 64771    var state = new State(input, options);
 64772  
 64773    // Use 0 as string terminator. That significantly simplifies bounds check.
 64774    state.input += '\0';
 64775  
 64776    while (state.input.charCodeAt(state.position) === 0x20/* Space */) {
 64777      state.lineIndent += 1;
 64778      state.position += 1;
 64779    }
 64780  
 64781    while (state.position < (state.length - 1)) {
 64782      readDocument(state);
 64783    }
 64784  
 64785    return state.documents;
 64786  }
 64787  
 64788  
 64789  function loadAll(input, iterator, options) {
 64790    var documents = loadDocuments(input, options), index, length;
 64791  
 64792    if (typeof iterator !== 'function') {
 64793      return documents;
 64794    }
 64795  
 64796    for (index = 0, length = documents.length; index < length; index += 1) {
 64797      iterator(documents[index]);
 64798    }
 64799  }
 64800  
 64801  
 64802  function load(input, options) {
 64803    var documents = loadDocuments(input, options);
 64804  
 64805    if (documents.length === 0) {
 64806      /*eslint-disable no-undefined*/
 64807      return undefined;
 64808    } else if (documents.length === 1) {
 64809      return documents[0];
 64810    }
 64811    throw new YAMLException('expected a single document in the stream, but found more');
 64812  }
 64813  
 64814  
 64815  function safeLoadAll(input, output, options) {
 64816    if (typeof output === 'function') {
 64817      loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
 64818    } else {
 64819      return loadAll(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
 64820    }
 64821  }
 64822  
 64823  
 64824  function safeLoad(input, options) {
 64825    return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
 64826  }
 64827  
 64828  
 64829  module.exports.loadAll     = loadAll;
 64830  module.exports.load        = load;
 64831  module.exports.safeLoadAll = safeLoadAll;
 64832  module.exports.safeLoad    = safeLoad;
 64833  
 64834  
 64835  /***/ }),
 64836  /* 283 */
 64837  /***/ (function(module, exports, __webpack_require__) {
 64838  
 64839  "use strict";
 64840  
 64841  
 64842  
 64843  var common = __webpack_require__(43);
 64844  
 64845  
 64846  function Mark(name, buffer, position, line, column) {
 64847    this.name     = name;
 64848    this.buffer   = buffer;
 64849    this.position = position;
 64850    this.line     = line;
 64851    this.column   = column;
 64852  }
 64853  
 64854  
 64855  Mark.prototype.getSnippet = function getSnippet(indent, maxLength) {
 64856    var head, start, tail, end, snippet;
 64857  
 64858    if (!this.buffer) return null;
 64859  
 64860    indent = indent || 4;
 64861    maxLength = maxLength || 75;
 64862  
 64863    head = '';
 64864    start = this.position;
 64865  
 64866    while (start > 0 && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {
 64867      start -= 1;
 64868      if (this.position - start > (maxLength / 2 - 1)) {
 64869        head = ' ... ';
 64870        start += 5;
 64871        break;
 64872      }
 64873    }
 64874  
 64875    tail = '';
 64876    end = this.position;
 64877  
 64878    while (end < this.buffer.length && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(end)) === -1) {
 64879      end += 1;
 64880      if (end - this.position > (maxLength / 2 - 1)) {
 64881        tail = ' ... ';
 64882        end -= 5;
 64883        break;
 64884      }
 64885    }
 64886  
 64887    snippet = this.buffer.slice(start, end);
 64888  
 64889    return common.repeat(' ', indent) + head + snippet + tail + '\n' +
 64890           common.repeat(' ', indent + this.position - start + head.length) + '^';
 64891  };
 64892  
 64893  
 64894  Mark.prototype.toString = function toString(compact) {
 64895    var snippet, where = '';
 64896  
 64897    if (this.name) {
 64898      where += 'in "' + this.name + '" ';
 64899    }
 64900  
 64901    where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);
 64902  
 64903    if (!compact) {
 64904      snippet = this.getSnippet();
 64905  
 64906      if (snippet) {
 64907        where += ':\n' + snippet;
 64908      }
 64909    }
 64910  
 64911    return where;
 64912  };
 64913  
 64914  
 64915  module.exports = Mark;
 64916  
 64917  
 64918  /***/ }),
 64919  /* 284 */
 64920  /***/ (function(module, exports, __webpack_require__) {
 64921  
 64922  "use strict";
 64923  var require;
 64924  
 64925  /*eslint-disable no-bitwise*/
 64926  
 64927  var NodeBuffer;
 64928  
 64929  try {
 64930    // A trick for browserified version, to not include `Buffer` shim
 64931    var _require = require;
 64932    NodeBuffer = __webpack_require__(64).Buffer;
 64933  } catch (__) {}
 64934  
 64935  var Type       = __webpack_require__(10);
 64936  
 64937  
 64938  // [ 64, 65, 66 ] -> [ padding, CR, LF ]
 64939  var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r';
 64940  
 64941  
 64942  function resolveYamlBinary(data) {
 64943    if (data === null) return false;
 64944  
 64945    var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;
 64946  
 64947    // Convert one by one.
 64948    for (idx = 0; idx < max; idx++) {
 64949      code = map.indexOf(data.charAt(idx));
 64950  
 64951      // Skip CR/LF
 64952      if (code > 64) continue;
 64953  
 64954      // Fail on illegal characters
 64955      if (code < 0) return false;
 64956  
 64957      bitlen += 6;
 64958    }
 64959  
 64960    // If there are any bits left, source was corrupted
 64961    return (bitlen % 8) === 0;
 64962  }
 64963  
 64964  function constructYamlBinary(data) {
 64965    var idx, tailbits,
 64966        input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan
 64967        max = input.length,
 64968        map = BASE64_MAP,
 64969        bits = 0,
 64970        result = [];
 64971  
 64972    // Collect by 6*4 bits (3 bytes)
 64973  
 64974    for (idx = 0; idx < max; idx++) {
 64975      if ((idx % 4 === 0) && idx) {
 64976        result.push((bits >> 16) & 0xFF);
 64977        result.push((bits >> 8) & 0xFF);
 64978        result.push(bits & 0xFF);
 64979      }
 64980  
 64981      bits = (bits << 6) | map.indexOf(input.charAt(idx));
 64982    }
 64983  
 64984    // Dump tail
 64985  
 64986    tailbits = (max % 4) * 6;
 64987  
 64988    if (tailbits === 0) {
 64989      result.push((bits >> 16) & 0xFF);
 64990      result.push((bits >> 8) & 0xFF);
 64991      result.push(bits & 0xFF);
 64992    } else if (tailbits === 18) {
 64993      result.push((bits >> 10) & 0xFF);
 64994      result.push((bits >> 2) & 0xFF);
 64995    } else if (tailbits === 12) {
 64996      result.push((bits >> 4) & 0xFF);
 64997    }
 64998  
 64999    // Wrap into Buffer for NodeJS and leave Array for browser
 65000    if (NodeBuffer) {
 65001      // Support node 6.+ Buffer API when available
 65002      return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result);
 65003    }
 65004  
 65005    return result;
 65006  }
 65007  
 65008  function representYamlBinary(object /*, style*/) {
 65009    var result = '', bits = 0, idx, tail,
 65010        max = object.length,
 65011        map = BASE64_MAP;
 65012  
 65013    // Convert every three bytes to 4 ASCII characters.
 65014  
 65015    for (idx = 0; idx < max; idx++) {
 65016      if ((idx % 3 === 0) && idx) {
 65017        result += map[(bits >> 18) & 0x3F];
 65018        result += map[(bits >> 12) & 0x3F];
 65019        result += map[(bits >> 6) & 0x3F];
 65020        result += map[bits & 0x3F];
 65021      }
 65022  
 65023      bits = (bits << 8) + object[idx];
 65024    }
 65025  
 65026    // Dump tail
 65027  
 65028    tail = max % 3;
 65029  
 65030    if (tail === 0) {
 65031      result += map[(bits >> 18) & 0x3F];
 65032      result += map[(bits >> 12) & 0x3F];
 65033      result += map[(bits >> 6) & 0x3F];
 65034      result += map[bits & 0x3F];
 65035    } else if (tail === 2) {
 65036      result += map[(bits >> 10) & 0x3F];
 65037      result += map[(bits >> 4) & 0x3F];
 65038      result += map[(bits << 2) & 0x3F];
 65039      result += map[64];
 65040    } else if (tail === 1) {
 65041      result += map[(bits >> 2) & 0x3F];
 65042      result += map[(bits << 4) & 0x3F];
 65043      result += map[64];
 65044      result += map[64];
 65045    }
 65046  
 65047    return result;
 65048  }
 65049  
 65050  function isBinary(object) {
 65051    return NodeBuffer && NodeBuffer.isBuffer(object);
 65052  }
 65053  
 65054  module.exports = new Type('tag:yaml.org,2002:binary', {
 65055    kind: 'scalar',
 65056    resolve: resolveYamlBinary,
 65057    construct: constructYamlBinary,
 65058    predicate: isBinary,
 65059    represent: representYamlBinary
 65060  });
 65061  
 65062  
 65063  /***/ }),
 65064  /* 285 */
 65065  /***/ (function(module, exports, __webpack_require__) {
 65066  
 65067  "use strict";
 65068  
 65069  
 65070  var Type = __webpack_require__(10);
 65071  
 65072  function resolveYamlBoolean(data) {
 65073    if (data === null) return false;
 65074  
 65075    var max = data.length;
 65076  
 65077    return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||
 65078           (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));
 65079  }
 65080  
 65081  function constructYamlBoolean(data) {
 65082    return data === 'true' ||
 65083           data === 'True' ||
 65084           data === 'TRUE';
 65085  }
 65086  
 65087  function isBoolean(object) {
 65088    return Object.prototype.toString.call(object) === '[object Boolean]';
 65089  }
 65090  
 65091  module.exports = new Type('tag:yaml.org,2002:bool', {
 65092    kind: 'scalar',
 65093    resolve: resolveYamlBoolean,
 65094    construct: constructYamlBoolean,
 65095    predicate: isBoolean,
 65096    represent: {
 65097      lowercase: function (object) { return object ? 'true' : 'false'; },
 65098      uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },
 65099      camelcase: function (object) { return object ? 'True' : 'False'; }
 65100    },
 65101    defaultStyle: 'lowercase'
 65102  });
 65103  
 65104  
 65105  /***/ }),
 65106  /* 286 */
 65107  /***/ (function(module, exports, __webpack_require__) {
 65108  
 65109  "use strict";
 65110  
 65111  
 65112  var common = __webpack_require__(43);
 65113  var Type   = __webpack_require__(10);
 65114  
 65115  var YAML_FLOAT_PATTERN = new RegExp(
 65116    // 2.5e4, 2.5 and integers
 65117    '^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +
 65118    // .2e4, .2
 65119    // special case, seems not from spec
 65120    '|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +
 65121    // 20:59
 65122    '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*' +
 65123    // .inf
 65124    '|[-+]?\\.(?:inf|Inf|INF)' +
 65125    // .nan
 65126    '|\\.(?:nan|NaN|NAN))$');
 65127  
 65128  function resolveYamlFloat(data) {
 65129    if (data === null) return false;
 65130  
 65131    if (!YAML_FLOAT_PATTERN.test(data) ||
 65132        // Quick hack to not allow integers end with `_`
 65133        // Probably should update regexp & check speed
 65134        data[data.length - 1] === '_') {
 65135      return false;
 65136    }
 65137  
 65138    return true;
 65139  }
 65140  
 65141  function constructYamlFloat(data) {
 65142    var value, sign, base, digits;
 65143  
 65144    value  = data.replace(/_/g, '').toLowerCase();
 65145    sign   = value[0] === '-' ? -1 : 1;
 65146    digits = [];
 65147  
 65148    if ('+-'.indexOf(value[0]) >= 0) {
 65149      value = value.slice(1);
 65150    }
 65151  
 65152    if (value === '.inf') {
 65153      return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;
 65154  
 65155    } else if (value === '.nan') {
 65156      return NaN;
 65157  
 65158    } else if (value.indexOf(':') >= 0) {
 65159      value.split(':').forEach(function (v) {
 65160        digits.unshift(parseFloat(v, 10));
 65161      });
 65162  
 65163      value = 0.0;
 65164      base = 1;
 65165  
 65166      digits.forEach(function (d) {
 65167        value += d * base;
 65168        base *= 60;
 65169      });
 65170  
 65171      return sign * value;
 65172  
 65173    }
 65174    return sign * parseFloat(value, 10);
 65175  }
 65176  
 65177  
 65178  var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;
 65179  
 65180  function representYamlFloat(object, style) {
 65181    var res;
 65182  
 65183    if (isNaN(object)) {
 65184      switch (style) {
 65185        case 'lowercase': return '.nan';
 65186        case 'uppercase': return '.NAN';
 65187        case 'camelcase': return '.NaN';
 65188      }
 65189    } else if (Number.POSITIVE_INFINITY === object) {
 65190      switch (style) {
 65191        case 'lowercase': return '.inf';
 65192        case 'uppercase': return '.INF';
 65193        case 'camelcase': return '.Inf';
 65194      }
 65195    } else if (Number.NEGATIVE_INFINITY === object) {
 65196      switch (style) {
 65197        case 'lowercase': return '-.inf';
 65198        case 'uppercase': return '-.INF';
 65199        case 'camelcase': return '-.Inf';
 65200      }
 65201    } else if (common.isNegativeZero(object)) {
 65202      return '-0.0';
 65203    }
 65204  
 65205    res = object.toString(10);
 65206  
 65207    // JS stringifier can build scientific format without dots: 5e-100,
 65208    // while YAML requres dot: 5.e-100. Fix it with simple hack
 65209  
 65210    return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;
 65211  }
 65212  
 65213  function isFloat(object) {
 65214    return (Object.prototype.toString.call(object) === '[object Number]') &&
 65215           (object % 1 !== 0 || common.isNegativeZero(object));
 65216  }
 65217  
 65218  module.exports = new Type('tag:yaml.org,2002:float', {
 65219    kind: 'scalar',
 65220    resolve: resolveYamlFloat,
 65221    construct: constructYamlFloat,
 65222    predicate: isFloat,
 65223    represent: representYamlFloat,
 65224    defaultStyle: 'lowercase'
 65225  });
 65226  
 65227  
 65228  /***/ }),
 65229  /* 287 */
 65230  /***/ (function(module, exports, __webpack_require__) {
 65231  
 65232  "use strict";
 65233  
 65234  
 65235  var common = __webpack_require__(43);
 65236  var Type   = __webpack_require__(10);
 65237  
 65238  function isHexCode(c) {
 65239    return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||
 65240           ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||
 65241           ((0x61/* a */ <= c) && (c <= 0x66/* f */));
 65242  }
 65243  
 65244  function isOctCode(c) {
 65245    return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));
 65246  }
 65247  
 65248  function isDecCode(c) {
 65249    return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));
 65250  }
 65251  
 65252  function resolveYamlInteger(data) {
 65253    if (data === null) return false;
 65254  
 65255    var max = data.length,
 65256        index = 0,
 65257        hasDigits = false,
 65258        ch;
 65259  
 65260    if (!max) return false;
 65261  
 65262    ch = data[index];
 65263  
 65264    // sign
 65265    if (ch === '-' || ch === '+') {
 65266      ch = data[++index];
 65267    }
 65268  
 65269    if (ch === '0') {
 65270      // 0
 65271      if (index + 1 === max) return true;
 65272      ch = data[++index];
 65273  
 65274      // base 2, base 8, base 16
 65275  
 65276      if (ch === 'b') {
 65277        // base 2
 65278        index++;
 65279  
 65280        for (; index < max; index++) {
 65281          ch = data[index];
 65282          if (ch === '_') continue;
 65283          if (ch !== '0' && ch !== '1') return false;
 65284          hasDigits = true;
 65285        }
 65286        return hasDigits && ch !== '_';
 65287      }
 65288  
 65289  
 65290      if (ch === 'x') {
 65291        // base 16
 65292        index++;
 65293  
 65294        for (; index < max; index++) {
 65295          ch = data[index];
 65296          if (ch === '_') continue;
 65297          if (!isHexCode(data.charCodeAt(index))) return false;
 65298          hasDigits = true;
 65299        }
 65300        return hasDigits && ch !== '_';
 65301      }
 65302  
 65303      // base 8
 65304      for (; index < max; index++) {
 65305        ch = data[index];
 65306        if (ch === '_') continue;
 65307        if (!isOctCode(data.charCodeAt(index))) return false;
 65308        hasDigits = true;
 65309      }
 65310      return hasDigits && ch !== '_';
 65311    }
 65312  
 65313    // base 10 (except 0) or base 60
 65314  
 65315    // value should not start with `_`;
 65316    if (ch === '_') return false;
 65317  
 65318    for (; index < max; index++) {
 65319      ch = data[index];
 65320      if (ch === '_') continue;
 65321      if (ch === ':') break;
 65322      if (!isDecCode(data.charCodeAt(index))) {
 65323        return false;
 65324      }
 65325      hasDigits = true;
 65326    }
 65327  
 65328    // Should have digits and should not end with `_`
 65329    if (!hasDigits || ch === '_') return false;
 65330  
 65331    // if !base60 - done;
 65332    if (ch !== ':') return true;
 65333  
 65334    // base60 almost not used, no needs to optimize
 65335    return /^(:[0-5]?[0-9])+$/.test(data.slice(index));
 65336  }
 65337  
 65338  function constructYamlInteger(data) {
 65339    var value = data, sign = 1, ch, base, digits = [];
 65340  
 65341    if (value.indexOf('_') !== -1) {
 65342      value = value.replace(/_/g, '');
 65343    }
 65344  
 65345    ch = value[0];
 65346  
 65347    if (ch === '-' || ch === '+') {
 65348      if (ch === '-') sign = -1;
 65349      value = value.slice(1);
 65350      ch = value[0];
 65351    }
 65352  
 65353    if (value === '0') return 0;
 65354  
 65355    if (ch === '0') {
 65356      if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);
 65357      if (value[1] === 'x') return sign * parseInt(value, 16);
 65358      return sign * parseInt(value, 8);
 65359    }
 65360  
 65361    if (value.indexOf(':') !== -1) {
 65362      value.split(':').forEach(function (v) {
 65363        digits.unshift(parseInt(v, 10));
 65364      });
 65365  
 65366      value = 0;
 65367      base = 1;
 65368  
 65369      digits.forEach(function (d) {
 65370        value += (d * base);
 65371        base *= 60;
 65372      });
 65373  
 65374      return sign * value;
 65375  
 65376    }
 65377  
 65378    return sign * parseInt(value, 10);
 65379  }
 65380  
 65381  function isInteger(object) {
 65382    return (Object.prototype.toString.call(object)) === '[object Number]' &&
 65383           (object % 1 === 0 && !common.isNegativeZero(object));
 65384  }
 65385  
 65386  module.exports = new Type('tag:yaml.org,2002:int', {
 65387    kind: 'scalar',
 65388    resolve: resolveYamlInteger,
 65389    construct: constructYamlInteger,
 65390    predicate: isInteger,
 65391    represent: {
 65392      binary:      function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },
 65393      octal:       function (obj) { return obj >= 0 ? '0'  + obj.toString(8) : '-0'  + obj.toString(8).slice(1); },
 65394      decimal:     function (obj) { return obj.toString(10); },
 65395      /* eslint-disable max-len */
 65396      hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() :  '-0x' + obj.toString(16).toUpperCase().slice(1); }
 65397    },
 65398    defaultStyle: 'decimal',
 65399    styleAliases: {
 65400      binary:      [ 2,  'bin' ],
 65401      octal:       [ 8,  'oct' ],
 65402      decimal:     [ 10, 'dec' ],
 65403      hexadecimal: [ 16, 'hex' ]
 65404    }
 65405  });
 65406  
 65407  
 65408  /***/ }),
 65409  /* 288 */
 65410  /***/ (function(module, exports, __webpack_require__) {
 65411  
 65412  "use strict";
 65413  var require;
 65414  
 65415  var esprima;
 65416  
 65417  // Browserified version does not have esprima
 65418  //
 65419  // 1. For node.js just require module as deps
 65420  // 2. For browser try to require mudule via external AMD system.
 65421  //    If not found - try to fallback to window.esprima. If not
 65422  //    found too - then fail to parse.
 65423  //
 65424  try {
 65425    // workaround to exclude package from browserify list.
 65426    var _require = require;
 65427    esprima = __webpack_require__(265);
 65428  } catch (_) {
 65429    /*global window */
 65430    if (typeof window !== 'undefined') esprima = window.esprima;
 65431  }
 65432  
 65433  var Type = __webpack_require__(10);
 65434  
 65435  function resolveJavascriptFunction(data) {
 65436    if (data === null) return false;
 65437  
 65438    try {
 65439      var source = '(' + data + ')',
 65440          ast    = esprima.parse(source, { range: true });
 65441  
 65442      if (ast.type                    !== 'Program'             ||
 65443          ast.body.length             !== 1                     ||
 65444          ast.body[0].type            !== 'ExpressionStatement' ||
 65445          (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&
 65446            ast.body[0].expression.type !== 'FunctionExpression')) {
 65447        return false;
 65448      }
 65449  
 65450      return true;
 65451    } catch (err) {
 65452      return false;
 65453    }
 65454  }
 65455  
 65456  function constructJavascriptFunction(data) {
 65457    /*jslint evil:true*/
 65458  
 65459    var source = '(' + data + ')',
 65460        ast    = esprima.parse(source, { range: true }),
 65461        params = [],
 65462        body;
 65463  
 65464    if (ast.type                    !== 'Program'             ||
 65465        ast.body.length             !== 1                     ||
 65466        ast.body[0].type            !== 'ExpressionStatement' ||
 65467        (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&
 65468          ast.body[0].expression.type !== 'FunctionExpression')) {
 65469      throw new Error('Failed to resolve function');
 65470    }
 65471  
 65472    ast.body[0].expression.params.forEach(function (param) {
 65473      params.push(param.name);
 65474    });
 65475  
 65476    body = ast.body[0].expression.body.range;
 65477  
 65478    // Esprima's ranges include the first '{' and the last '}' characters on
 65479    // function expressions. So cut them out.
 65480    if (ast.body[0].expression.body.type === 'BlockStatement') {
 65481      /*eslint-disable no-new-func*/
 65482      return new Function(params, source.slice(body[0] + 1, body[1] - 1));
 65483    }
 65484    // ES6 arrow functions can omit the BlockStatement. In that case, just return
 65485    // the body.
 65486    /*eslint-disable no-new-func*/
 65487    return new Function(params, 'return ' + source.slice(body[0], body[1]));
 65488  }
 65489  
 65490  function representJavascriptFunction(object /*, style*/) {
 65491    return object.toString();
 65492  }
 65493  
 65494  function isFunction(object) {
 65495    return Object.prototype.toString.call(object) === '[object Function]';
 65496  }
 65497  
 65498  module.exports = new Type('tag:yaml.org,2002:js/function', {
 65499    kind: 'scalar',
 65500    resolve: resolveJavascriptFunction,
 65501    construct: constructJavascriptFunction,
 65502    predicate: isFunction,
 65503    represent: representJavascriptFunction
 65504  });
 65505  
 65506  
 65507  /***/ }),
 65508  /* 289 */
 65509  /***/ (function(module, exports, __webpack_require__) {
 65510  
 65511  "use strict";
 65512  
 65513  
 65514  var Type = __webpack_require__(10);
 65515  
 65516  function resolveJavascriptRegExp(data) {
 65517    if (data === null) return false;
 65518    if (data.length === 0) return false;
 65519  
 65520    var regexp = data,
 65521        tail   = /\/([gim]*)$/.exec(data),
 65522        modifiers = '';
 65523  
 65524    // if regexp starts with '/' it can have modifiers and must be properly closed
 65525    // `/foo/gim` - modifiers tail can be maximum 3 chars
 65526    if (regexp[0] === '/') {
 65527      if (tail) modifiers = tail[1];
 65528  
 65529      if (modifiers.length > 3) return false;
 65530      // if expression starts with /, is should be properly terminated
 65531      if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;
 65532    }
 65533  
 65534    return true;
 65535  }
 65536  
 65537  function constructJavascriptRegExp(data) {
 65538    var regexp = data,
 65539        tail   = /\/([gim]*)$/.exec(data),
 65540        modifiers = '';
 65541  
 65542    // `/foo/gim` - tail can be maximum 4 chars
 65543    if (regexp[0] === '/') {
 65544      if (tail) modifiers = tail[1];
 65545      regexp = regexp.slice(1, regexp.length - modifiers.length - 1);
 65546    }
 65547  
 65548    return new RegExp(regexp, modifiers);
 65549  }
 65550  
 65551  function representJavascriptRegExp(object /*, style*/) {
 65552    var result = '/' + object.source + '/';
 65553  
 65554    if (object.global) result += 'g';
 65555    if (object.multiline) result += 'm';
 65556    if (object.ignoreCase) result += 'i';
 65557  
 65558    return result;
 65559  }
 65560  
 65561  function isRegExp(object) {
 65562    return Object.prototype.toString.call(object) === '[object RegExp]';
 65563  }
 65564  
 65565  module.exports = new Type('tag:yaml.org,2002:js/regexp', {
 65566    kind: 'scalar',
 65567    resolve: resolveJavascriptRegExp,
 65568    construct: constructJavascriptRegExp,
 65569    predicate: isRegExp,
 65570    represent: representJavascriptRegExp
 65571  });
 65572  
 65573  
 65574  /***/ }),
 65575  /* 290 */
 65576  /***/ (function(module, exports, __webpack_require__) {
 65577  
 65578  "use strict";
 65579  
 65580  
 65581  var Type = __webpack_require__(10);
 65582  
 65583  function resolveJavascriptUndefined() {
 65584    return true;
 65585  }
 65586  
 65587  function constructJavascriptUndefined() {
 65588    /*eslint-disable no-undefined*/
 65589    return undefined;
 65590  }
 65591  
 65592  function representJavascriptUndefined() {
 65593    return '';
 65594  }
 65595  
 65596  function isUndefined(object) {
 65597    return typeof object === 'undefined';
 65598  }
 65599  
 65600  module.exports = new Type('tag:yaml.org,2002:js/undefined', {
 65601    kind: 'scalar',
 65602    resolve: resolveJavascriptUndefined,
 65603    construct: constructJavascriptUndefined,
 65604    predicate: isUndefined,
 65605    represent: representJavascriptUndefined
 65606  });
 65607  
 65608  
 65609  /***/ }),
 65610  /* 291 */
 65611  /***/ (function(module, exports, __webpack_require__) {
 65612  
 65613  "use strict";
 65614  
 65615  
 65616  var Type = __webpack_require__(10);
 65617  
 65618  module.exports = new Type('tag:yaml.org,2002:map', {
 65619    kind: 'mapping',
 65620    construct: function (data) { return data !== null ? data : {}; }
 65621  });
 65622  
 65623  
 65624  /***/ }),
 65625  /* 292 */
 65626  /***/ (function(module, exports, __webpack_require__) {
 65627  
 65628  "use strict";
 65629  
 65630  
 65631  var Type = __webpack_require__(10);
 65632  
 65633  function resolveYamlMerge(data) {
 65634    return data === '<<' || data === null;
 65635  }
 65636  
 65637  module.exports = new Type('tag:yaml.org,2002:merge', {
 65638    kind: 'scalar',
 65639    resolve: resolveYamlMerge
 65640  });
 65641  
 65642  
 65643  /***/ }),
 65644  /* 293 */
 65645  /***/ (function(module, exports, __webpack_require__) {
 65646  
 65647  "use strict";
 65648  
 65649  
 65650  var Type = __webpack_require__(10);
 65651  
 65652  function resolveYamlNull(data) {
 65653    if (data === null) return true;
 65654  
 65655    var max = data.length;
 65656  
 65657    return (max === 1 && data === '~') ||
 65658           (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));
 65659  }
 65660  
 65661  function constructYamlNull() {
 65662    return null;
 65663  }
 65664  
 65665  function isNull(object) {
 65666    return object === null;
 65667  }
 65668  
 65669  module.exports = new Type('tag:yaml.org,2002:null', {
 65670    kind: 'scalar',
 65671    resolve: resolveYamlNull,
 65672    construct: constructYamlNull,
 65673    predicate: isNull,
 65674    represent: {
 65675      canonical: function () { return '~';    },
 65676      lowercase: function () { return 'null'; },
 65677      uppercase: function () { return 'NULL'; },
 65678      camelcase: function () { return 'Null'; }
 65679    },
 65680    defaultStyle: 'lowercase'
 65681  });
 65682  
 65683  
 65684  /***/ }),
 65685  /* 294 */
 65686  /***/ (function(module, exports, __webpack_require__) {
 65687  
 65688  "use strict";
 65689  
 65690  
 65691  var Type = __webpack_require__(10);
 65692  
 65693  var _hasOwnProperty = Object.prototype.hasOwnProperty;
 65694  var _toString       = Object.prototype.toString;
 65695  
 65696  function resolveYamlOmap(data) {
 65697    if (data === null) return true;
 65698  
 65699    var objectKeys = [], index, length, pair, pairKey, pairHasKey,
 65700        object = data;
 65701  
 65702    for (index = 0, length = object.length; index < length; index += 1) {
 65703      pair = object[index];
 65704      pairHasKey = false;
 65705  
 65706      if (_toString.call(pair) !== '[object Object]') return false;
 65707  
 65708      for (pairKey in pair) {
 65709        if (_hasOwnProperty.call(pair, pairKey)) {
 65710          if (!pairHasKey) pairHasKey = true;
 65711          else return false;
 65712        }
 65713      }
 65714  
 65715      if (!pairHasKey) return false;
 65716  
 65717      if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);
 65718      else return false;
 65719    }
 65720  
 65721    return true;
 65722  }
 65723  
 65724  function constructYamlOmap(data) {
 65725    return data !== null ? data : [];
 65726  }
 65727  
 65728  module.exports = new Type('tag:yaml.org,2002:omap', {
 65729    kind: 'sequence',
 65730    resolve: resolveYamlOmap,
 65731    construct: constructYamlOmap
 65732  });
 65733  
 65734  
 65735  /***/ }),
 65736  /* 295 */
 65737  /***/ (function(module, exports, __webpack_require__) {
 65738  
 65739  "use strict";
 65740  
 65741  
 65742  var Type = __webpack_require__(10);
 65743  
 65744  var _toString = Object.prototype.toString;
 65745  
 65746  function resolveYamlPairs(data) {
 65747    if (data === null) return true;
 65748  
 65749    var index, length, pair, keys, result,
 65750        object = data;
 65751  
 65752    result = new Array(object.length);
 65753  
 65754    for (index = 0, length = object.length; index < length; index += 1) {
 65755      pair = object[index];
 65756  
 65757      if (_toString.call(pair) !== '[object Object]') return false;
 65758  
 65759      keys = Object.keys(pair);
 65760  
 65761      if (keys.length !== 1) return false;
 65762  
 65763      result[index] = [ keys[0], pair[keys[0]] ];
 65764    }
 65765  
 65766    return true;
 65767  }
 65768  
 65769  function constructYamlPairs(data) {
 65770    if (data === null) return [];
 65771  
 65772    var index, length, pair, keys, result,
 65773        object = data;
 65774  
 65775    result = new Array(object.length);
 65776  
 65777    for (index = 0, length = object.length; index < length; index += 1) {
 65778      pair = object[index];
 65779  
 65780      keys = Object.keys(pair);
 65781  
 65782      result[index] = [ keys[0], pair[keys[0]] ];
 65783    }
 65784  
 65785    return result;
 65786  }
 65787  
 65788  module.exports = new Type('tag:yaml.org,2002:pairs', {
 65789    kind: 'sequence',
 65790    resolve: resolveYamlPairs,
 65791    construct: constructYamlPairs
 65792  });
 65793  
 65794  
 65795  /***/ }),
 65796  /* 296 */
 65797  /***/ (function(module, exports, __webpack_require__) {
 65798  
 65799  "use strict";
 65800  
 65801  
 65802  var Type = __webpack_require__(10);
 65803  
 65804  module.exports = new Type('tag:yaml.org,2002:seq', {
 65805    kind: 'sequence',
 65806    construct: function (data) { return data !== null ? data : []; }
 65807  });
 65808  
 65809  
 65810  /***/ }),
 65811  /* 297 */
 65812  /***/ (function(module, exports, __webpack_require__) {
 65813  
 65814  "use strict";
 65815  
 65816  
 65817  var Type = __webpack_require__(10);
 65818  
 65819  var _hasOwnProperty = Object.prototype.hasOwnProperty;
 65820  
 65821  function resolveYamlSet(data) {
 65822    if (data === null) return true;
 65823  
 65824    var key, object = data;
 65825  
 65826    for (key in object) {
 65827      if (_hasOwnProperty.call(object, key)) {
 65828        if (object[key] !== null) return false;
 65829      }
 65830    }
 65831  
 65832    return true;
 65833  }
 65834  
 65835  function constructYamlSet(data) {
 65836    return data !== null ? data : {};
 65837  }
 65838  
 65839  module.exports = new Type('tag:yaml.org,2002:set', {
 65840    kind: 'mapping',
 65841    resolve: resolveYamlSet,
 65842    construct: constructYamlSet
 65843  });
 65844  
 65845  
 65846  /***/ }),
 65847  /* 298 */
 65848  /***/ (function(module, exports, __webpack_require__) {
 65849  
 65850  "use strict";
 65851  
 65852  
 65853  var Type = __webpack_require__(10);
 65854  
 65855  module.exports = new Type('tag:yaml.org,2002:str', {
 65856    kind: 'scalar',
 65857    construct: function (data) { return data !== null ? data : ''; }
 65858  });
 65859  
 65860  
 65861  /***/ }),
 65862  /* 299 */
 65863  /***/ (function(module, exports, __webpack_require__) {
 65864  
 65865  "use strict";
 65866  
 65867  
 65868  var Type = __webpack_require__(10);
 65869  
 65870  var YAML_DATE_REGEXP = new RegExp(
 65871    '^([0-9][0-9][0-9][0-9])'          + // [1] year
 65872    '-([0-9][0-9])'                    + // [2] month
 65873    '-([0-9][0-9])$');                   // [3] day
 65874  
 65875  var YAML_TIMESTAMP_REGEXP = new RegExp(
 65876    '^([0-9][0-9][0-9][0-9])'          + // [1] year
 65877    '-([0-9][0-9]?)'                   + // [2] month
 65878    '-([0-9][0-9]?)'                   + // [3] day
 65879    '(?:[Tt]|[ \\t]+)'                 + // ...
 65880    '([0-9][0-9]?)'                    + // [4] hour
 65881    ':([0-9][0-9])'                    + // [5] minute
 65882    ':([0-9][0-9])'                    + // [6] second
 65883    '(?:\\.([0-9]*))?'                 + // [7] fraction
 65884    '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour
 65885    '(?::([0-9][0-9]))?))?$');           // [11] tz_minute
 65886  
 65887  function resolveYamlTimestamp(data) {
 65888    if (data === null) return false;
 65889    if (YAML_DATE_REGEXP.exec(data) !== null) return true;
 65890    if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;
 65891    return false;
 65892  }
 65893  
 65894  function constructYamlTimestamp(data) {
 65895    var match, year, month, day, hour, minute, second, fraction = 0,
 65896        delta = null, tz_hour, tz_minute, date;
 65897  
 65898    match = YAML_DATE_REGEXP.exec(data);
 65899    if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);
 65900  
 65901    if (match === null) throw new Error('Date resolve error');
 65902  
 65903    // match: [1] year [2] month [3] day
 65904  
 65905    year = +(match[1]);
 65906    month = +(match[2]) - 1; // JS month starts with 0
 65907    day = +(match[3]);
 65908  
 65909    if (!match[4]) { // no hour
 65910      return new Date(Date.UTC(year, month, day));
 65911    }
 65912  
 65913    // match: [4] hour [5] minute [6] second [7] fraction
 65914  
 65915    hour = +(match[4]);
 65916    minute = +(match[5]);
 65917    second = +(match[6]);
 65918  
 65919    if (match[7]) {
 65920      fraction = match[7].slice(0, 3);
 65921      while (fraction.length < 3) { // milli-seconds
 65922        fraction += '0';
 65923      }
 65924      fraction = +fraction;
 65925    }
 65926  
 65927    // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute
 65928  
 65929    if (match[9]) {
 65930      tz_hour = +(match[10]);
 65931      tz_minute = +(match[11] || 0);
 65932      delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds
 65933      if (match[9] === '-') delta = -delta;
 65934    }
 65935  
 65936    date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));
 65937  
 65938    if (delta) date.setTime(date.getTime() - delta);
 65939  
 65940    return date;
 65941  }
 65942  
 65943  function representYamlTimestamp(object /*, style*/) {
 65944    return object.toISOString();
 65945  }
 65946  
 65947  module.exports = new Type('tag:yaml.org,2002:timestamp', {
 65948    kind: 'scalar',
 65949    resolve: resolveYamlTimestamp,
 65950    construct: constructYamlTimestamp,
 65951    instanceOf: Date,
 65952    represent: representYamlTimestamp
 65953  });
 65954  
 65955  
 65956  /***/ }),
 65957  /* 300 */
 65958  /***/ (function(module, exports, __webpack_require__) {
 65959  
 65960  "use strict";
 65961  
 65962  
 65963  var win32 = process && process.platform === 'win32';
 65964  var path = __webpack_require__(0);
 65965  var fileRe = __webpack_require__(614);
 65966  var utils = module.exports;
 65967  
 65968  /**
 65969   * Module dependencies
 65970   */
 65971  
 65972  utils.diff = __webpack_require__(755);
 65973  utils.unique = __webpack_require__(756);
 65974  utils.braces = __webpack_require__(757);
 65975  utils.brackets = __webpack_require__(607);
 65976  utils.extglob = __webpack_require__(612);
 65977  utils.isExtglob = __webpack_require__(178);
 65978  utils.isGlob = __webpack_require__(179);
 65979  utils.typeOf = __webpack_require__(180);
 65980  utils.normalize = __webpack_require__(765);
 65981  utils.omit = __webpack_require__(769);
 65982  utils.parseGlob = __webpack_require__(773);
 65983  utils.cache = __webpack_require__(795);
 65984  
 65985  /**
 65986   * Get the filename of a filepath
 65987   *
 65988   * @param {String} `string`
 65989   * @return {String}
 65990   */
 65991  
 65992  utils.filename = function filename(fp) {
 65993    var seg = fp.match(fileRe());
 65994    return seg && seg[0];
 65995  };
 65996  
 65997  /**
 65998   * Returns a function that returns true if the given
 65999   * pattern is the same as a given `filepath`
 66000   *
 66001   * @param {String} `pattern`
 66002   * @return {Function}
 66003   */
 66004  
 66005  utils.isPath = function isPath(pattern, opts) {
 66006    opts = opts || {};
 66007    return function(fp) {
 66008      var unixified = utils.unixify(fp, opts);
 66009      if(opts.nocase){
 66010        return pattern.toLowerCase() === unixified.toLowerCase();
 66011      }
 66012      return pattern === unixified;
 66013    };
 66014  };
 66015  
 66016  /**
 66017   * Returns a function that returns true if the given
 66018   * pattern contains a `filepath`
 66019   *
 66020   * @param {String} `pattern`
 66021   * @return {Function}
 66022   */
 66023  
 66024  utils.hasPath = function hasPath(pattern, opts) {
 66025    return function(fp) {
 66026      return utils.unixify(pattern, opts).indexOf(fp) !== -1;
 66027    };
 66028  };
 66029  
 66030  /**
 66031   * Returns a function that returns true if the given
 66032   * pattern matches or contains a `filepath`
 66033   *
 66034   * @param {String} `pattern`
 66035   * @return {Function}
 66036   */
 66037  
 66038  utils.matchPath = function matchPath(pattern, opts) {
 66039    var fn = (opts && opts.contains)
 66040      ? utils.hasPath(pattern, opts)
 66041      : utils.isPath(pattern, opts);
 66042    return fn;
 66043  };
 66044  
 66045  /**
 66046   * Returns a function that returns true if the given
 66047   * regex matches the `filename` of a file path.
 66048   *
 66049   * @param {RegExp} `re`
 66050   * @return {Boolean}
 66051   */
 66052  
 66053  utils.hasFilename = function hasFilename(re) {
 66054    return function(fp) {
 66055      var name = utils.filename(fp);
 66056      return name && re.test(name);
 66057    };
 66058  };
 66059  
 66060  /**
 66061   * Coerce `val` to an array
 66062   *
 66063   * @param  {*} val
 66064   * @return {Array}
 66065   */
 66066  
 66067  utils.arrayify = function arrayify(val) {
 66068    return !Array.isArray(val)
 66069      ? [val]
 66070      : val;
 66071  };
 66072  
 66073  /**
 66074   * Normalize all slashes in a file path or glob pattern to
 66075   * forward slashes.
 66076   */
 66077  
 66078  utils.unixify = function unixify(fp, opts) {
 66079    if (opts && opts.unixify === false) return fp;
 66080    if (opts && opts.unixify === true || win32 || path.sep === '\\') {
 66081      return utils.normalize(fp, false);
 66082    }
 66083    if (opts && opts.unescape === true) {
 66084      return fp ? fp.toString().replace(/\\(\w)/g, '$1') : '';
 66085    }
 66086    return fp;
 66087  };
 66088  
 66089  /**
 66090   * Escape/unescape utils
 66091   */
 66092  
 66093  utils.escapePath = function escapePath(fp) {
 66094    return fp.replace(/[\\.]/g, '\\$&');
 66095  };
 66096  
 66097  utils.unescapeGlob = function unescapeGlob(fp) {
 66098    return fp.replace(/[\\"']/g, '');
 66099  };
 66100  
 66101  utils.escapeRe = function escapeRe(str) {
 66102    return str.replace(/[-[\\$*+?.#^\s{}(|)\]]/g, '\\$&');
 66103  };
 66104  
 66105  /**
 66106   * Expose `utils`
 66107   */
 66108  
 66109  module.exports = utils;
 66110  
 66111  
 66112  /***/ }),
 66113  /* 301 */
 66114  /***/ (function(module, exports) {
 66115  
 66116  /**
 66117   * Helpers.
 66118   */
 66119  
 66120  var s = 1000;
 66121  var m = s * 60;
 66122  var h = m * 60;
 66123  var d = h * 24;
 66124  var y = d * 365.25;
 66125  
 66126  /**
 66127   * Parse or format the given `val`.
 66128   *
 66129   * Options:
 66130   *
 66131   *  - `long` verbose formatting [false]
 66132   *
 66133   * @param {String|Number} val
 66134   * @param {Object} [options]
 66135   * @throws {Error} throw an error if val is not a non-empty string or a number
 66136   * @return {String|Number}
 66137   * @api public
 66138   */
 66139  
 66140  module.exports = function(val, options) {
 66141    options = options || {};
 66142    var type = typeof val;
 66143    if (type === 'string' && val.length > 0) {
 66144      return parse(val);
 66145    } else if (type === 'number' && isNaN(val) === false) {
 66146      return options.long ? fmtLong(val) : fmtShort(val);
 66147    }
 66148    throw new Error(
 66149      'val is not a non-empty string or a valid number. val=' +
 66150        JSON.stringify(val)
 66151    );
 66152  };
 66153  
 66154  /**
 66155   * Parse the given `str` and return milliseconds.
 66156   *
 66157   * @param {String} str
 66158   * @return {Number}
 66159   * @api private
 66160   */
 66161  
 66162  function parse(str) {
 66163    str = String(str);
 66164    if (str.length > 100) {
 66165      return;
 66166    }
 66167    var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(
 66168      str
 66169    );
 66170    if (!match) {
 66171      return;
 66172    }
 66173    var n = parseFloat(match[1]);
 66174    var type = (match[2] || 'ms').toLowerCase();
 66175    switch (type) {
 66176      case 'years':
 66177      case 'year':
 66178      case 'yrs':
 66179      case 'yr':
 66180      case 'y':
 66181        return n * y;
 66182      case 'days':
 66183      case 'day':
 66184      case 'd':
 66185        return n * d;
 66186      case 'hours':
 66187      case 'hour':
 66188      case 'hrs':
 66189      case 'hr':
 66190      case 'h':
 66191        return n * h;
 66192      case 'minutes':
 66193      case 'minute':
 66194      case 'mins':
 66195      case 'min':
 66196      case 'm':
 66197        return n * m;
 66198      case 'seconds':
 66199      case 'second':
 66200      case 'secs':
 66201      case 'sec':
 66202      case 's':
 66203        return n * s;
 66204      case 'milliseconds':
 66205      case 'millisecond':
 66206      case 'msecs':
 66207      case 'msec':
 66208      case 'ms':
 66209        return n;
 66210      default:
 66211        return undefined;
 66212    }
 66213  }
 66214  
 66215  /**
 66216   * Short format for `ms`.
 66217   *
 66218   * @param {Number} ms
 66219   * @return {String}
 66220   * @api private
 66221   */
 66222  
 66223  function fmtShort(ms) {
 66224    if (ms >= d) {
 66225      return Math.round(ms / d) + 'd';
 66226    }
 66227    if (ms >= h) {
 66228      return Math.round(ms / h) + 'h';
 66229    }
 66230    if (ms >= m) {
 66231      return Math.round(ms / m) + 'm';
 66232    }
 66233    if (ms >= s) {
 66234      return Math.round(ms / s) + 's';
 66235    }
 66236    return ms + 'ms';
 66237  }
 66238  
 66239  /**
 66240   * Long format for `ms`.
 66241   *
 66242   * @param {Number} ms
 66243   * @return {String}
 66244   * @api private
 66245   */
 66246  
 66247  function fmtLong(ms) {
 66248    return plural(ms, d, 'day') ||
 66249      plural(ms, h, 'hour') ||
 66250      plural(ms, m, 'minute') ||
 66251      plural(ms, s, 'second') ||
 66252      ms + ' ms';
 66253  }
 66254  
 66255  /**
 66256   * Pluralization helper.
 66257   */
 66258  
 66259  function plural(ms, n, name) {
 66260    if (ms < n) {
 66261      return;
 66262    }
 66263    if (ms < n * 1.5) {
 66264      return Math.floor(ms / n) + ' ' + name;
 66265    }
 66266    return Math.ceil(ms / n) + ' ' + name + 's';
 66267  }
 66268  
 66269  
 66270  /***/ }),
 66271  /* 302 */
 66272  /***/ (function(module, exports, __webpack_require__) {
 66273  
 66274  module.exports = __webpack_require__(763);
 66275  
 66276  /***/ }),
 66277  /* 303 */
 66278  /***/ (function(module, exports, __webpack_require__) {
 66279  
 66280  "use strict";
 66281  /*
 66282  object-assign
 66283  (c) Sindre Sorhus
 66284  @license MIT
 66285  */
 66286  
 66287  
 66288  /* eslint-disable no-unused-vars */
 66289  var getOwnPropertySymbols = Object.getOwnPropertySymbols;
 66290  var hasOwnProperty = Object.prototype.hasOwnProperty;
 66291  var propIsEnumerable = Object.prototype.propertyIsEnumerable;
 66292  
 66293  function toObject(val) {
 66294  	if (val === null || val === undefined) {
 66295  		throw new TypeError('Object.assign cannot be called with null or undefined');
 66296  	}
 66297  
 66298  	return Object(val);
 66299  }
 66300  
 66301  function shouldUseNative() {
 66302  	try {
 66303  		if (!Object.assign) {
 66304  			return false;
 66305  		}
 66306  
 66307  		// Detect buggy property enumeration order in older V8 versions.
 66308  
 66309  		// https://bugs.chromium.org/p/v8/issues/detail?id=4118
 66310  		var test1 = new String('abc');  // eslint-disable-line no-new-wrappers
 66311  		test1[5] = 'de';
 66312  		if (Object.getOwnPropertyNames(test1)[0] === '5') {
 66313  			return false;
 66314  		}
 66315  
 66316  		// https://bugs.chromium.org/p/v8/issues/detail?id=3056
 66317  		var test2 = {};
 66318  		for (var i = 0; i < 10; i++) {
 66319  			test2['_' + String.fromCharCode(i)] = i;
 66320  		}
 66321  		var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
 66322  			return test2[n];
 66323  		});
 66324  		if (order2.join('') !== '0123456789') {
 66325  			return false;
 66326  		}
 66327  
 66328  		// https://bugs.chromium.org/p/v8/issues/detail?id=3056
 66329  		var test3 = {};
 66330  		'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
 66331  			test3[letter] = letter;
 66332  		});
 66333  		if (Object.keys(Object.assign({}, test3)).join('') !==
 66334  				'abcdefghijklmnopqrst') {
 66335  			return false;
 66336  		}
 66337  
 66338  		return true;
 66339  	} catch (err) {
 66340  		// We don't expect any of the above to throw, but better to be safe.
 66341  		return false;
 66342  	}
 66343  }
 66344  
 66345  module.exports = shouldUseNative() ? Object.assign : function (target, source) {
 66346  	var from;
 66347  	var to = toObject(target);
 66348  	var symbols;
 66349  
 66350  	for (var s = 1; s < arguments.length; s++) {
 66351  		from = Object(arguments[s]);
 66352  
 66353  		for (var key in from) {
 66354  			if (hasOwnProperty.call(from, key)) {
 66355  				to[key] = from[key];
 66356  			}
 66357  		}
 66358  
 66359  		if (getOwnPropertySymbols) {
 66360  			symbols = getOwnPropertySymbols(from);
 66361  			for (var i = 0; i < symbols.length; i++) {
 66362  				if (propIsEnumerable.call(from, symbols[i])) {
 66363  					to[symbols[i]] = from[symbols[i]];
 66364  				}
 66365  			}
 66366  		}
 66367  	}
 66368  
 66369  	return to;
 66370  };
 66371  
 66372  
 66373  /***/ }),
 66374  /* 304 */
 66375  /***/ (function(module, exports, __webpack_require__) {
 66376  
 66377  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (root, factory){
 66378    'use strict';
 66379  
 66380    /*istanbul ignore next:cant test*/
 66381    if (typeof module === 'object' && typeof module.exports === 'object') {
 66382      module.exports = factory();
 66383    } else if (true) {
 66384      // AMD. Register as an anonymous module.
 66385      !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
 66386  				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
 66387  				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
 66388  				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
 66389    } else {
 66390      // Browser globals
 66391      root.objectPath = factory();
 66392    }
 66393  })(this, function(){
 66394    'use strict';
 66395  
 66396    var toStr = Object.prototype.toString;
 66397    function hasOwnProperty(obj, prop) {
 66398      if(obj == null) {
 66399        return false
 66400      }
 66401      //to handle objects with null prototypes (too edge case?)
 66402      return Object.prototype.hasOwnProperty.call(obj, prop)
 66403    }
 66404  
 66405    function isEmpty(value){
 66406      if (!value) {
 66407        return true;
 66408      }
 66409      if (isArray(value) && value.length === 0) {
 66410          return true;
 66411      } else if (typeof value !== 'string') {
 66412          for (var i in value) {
 66413              if (hasOwnProperty(value, i)) {
 66414                  return false;
 66415              }
 66416          }
 66417          return true;
 66418      }
 66419      return false;
 66420    }
 66421  
 66422    function toString(type){
 66423      return toStr.call(type);
 66424    }
 66425  
 66426    function isObject(obj){
 66427      return typeof obj === 'object' && toString(obj) === "[object Object]";
 66428    }
 66429  
 66430    var isArray = Array.isArray || function(obj){
 66431      /*istanbul ignore next:cant test*/
 66432      return toStr.call(obj) === '[object Array]';
 66433    }
 66434  
 66435    function isBoolean(obj){
 66436      return typeof obj === 'boolean' || toString(obj) === '[object Boolean]';
 66437    }
 66438  
 66439    function getKey(key){
 66440      var intKey = parseInt(key);
 66441      if (intKey.toString() === key) {
 66442        return intKey;
 66443      }
 66444      return key;
 66445    }
 66446  
 66447    function factory(options) {
 66448      options = options || {}
 66449  
 66450      var objectPath = function(obj) {
 66451        return Object.keys(objectPath).reduce(function(proxy, prop) {
 66452          if(prop === 'create') {
 66453            return proxy;
 66454          }
 66455  
 66456          /*istanbul ignore else*/
 66457          if (typeof objectPath[prop] === 'function') {
 66458            proxy[prop] = objectPath[prop].bind(objectPath, obj);
 66459          }
 66460  
 66461          return proxy;
 66462        }, {});
 66463      };
 66464  
 66465      function hasShallowProperty(obj, prop) {
 66466        return (options.includeInheritedProps || (typeof prop === 'number' && Array.isArray(obj)) || hasOwnProperty(obj, prop))
 66467      }
 66468  
 66469      function getShallowProperty(obj, prop) {
 66470        if (hasShallowProperty(obj, prop)) {
 66471          return obj[prop];
 66472        }
 66473      }
 66474  
 66475      function set(obj, path, value, doNotReplace){
 66476        if (typeof path === 'number') {
 66477          path = [path];
 66478        }
 66479        if (!path || path.length === 0) {
 66480          return obj;
 66481        }
 66482        if (typeof path === 'string') {
 66483          return set(obj, path.split('.').map(getKey), value, doNotReplace);
 66484        }
 66485        var currentPath = path[0];
 66486        var currentValue = getShallowProperty(obj, currentPath);
 66487        if (path.length === 1) {
 66488          if (currentValue === void 0 || !doNotReplace) {
 66489            obj[currentPath] = value;
 66490          }
 66491          return currentValue;
 66492        }
 66493  
 66494        if (currentValue === void 0) {
 66495          //check if we assume an array
 66496          if(typeof path[1] === 'number') {
 66497            obj[currentPath] = [];
 66498          } else {
 66499            obj[currentPath] = {};
 66500          }
 66501        }
 66502  
 66503        return set(obj[currentPath], path.slice(1), value, doNotReplace);
 66504      }
 66505  
 66506      objectPath.has = function (obj, path) {
 66507        if (typeof path === 'number') {
 66508          path = [path];
 66509        } else if (typeof path === 'string') {
 66510          path = path.split('.');
 66511        }
 66512  
 66513        if (!path || path.length === 0) {
 66514          return !!obj;
 66515        }
 66516  
 66517        for (var i = 0; i < path.length; i++) {
 66518          var j = getKey(path[i]);
 66519  
 66520          if((typeof j === 'number' && isArray(obj) && j < obj.length) ||
 66521            (options.includeInheritedProps ? (j in Object(obj)) : hasOwnProperty(obj, j))) {
 66522            obj = obj[j];
 66523          } else {
 66524            return false;
 66525          }
 66526        }
 66527  
 66528        return true;
 66529      };
 66530  
 66531      objectPath.ensureExists = function (obj, path, value){
 66532        return set(obj, path, value, true);
 66533      };
 66534  
 66535      objectPath.set = function (obj, path, value, doNotReplace){
 66536        return set(obj, path, value, doNotReplace);
 66537      };
 66538  
 66539      objectPath.insert = function (obj, path, value, at){
 66540        var arr = objectPath.get(obj, path);
 66541        at = ~~at;
 66542        if (!isArray(arr)) {
 66543          arr = [];
 66544          objectPath.set(obj, path, arr);
 66545        }
 66546        arr.splice(at, 0, value);
 66547      };
 66548  
 66549      objectPath.empty = function(obj, path) {
 66550        if (isEmpty(path)) {
 66551          return void 0;
 66552        }
 66553        if (obj == null) {
 66554          return void 0;
 66555        }
 66556  
 66557        var value, i;
 66558        if (!(value = objectPath.get(obj, path))) {
 66559          return void 0;
 66560        }
 66561  
 66562        if (typeof value === 'string') {
 66563          return objectPath.set(obj, path, '');
 66564        } else if (isBoolean(value)) {
 66565          return objectPath.set(obj, path, false);
 66566        } else if (typeof value === 'number') {
 66567          return objectPath.set(obj, path, 0);
 66568        } else if (isArray(value)) {
 66569          value.length = 0;
 66570        } else if (isObject(value)) {
 66571          for (i in value) {
 66572            if (hasShallowProperty(value, i)) {
 66573              delete value[i];
 66574            }
 66575          }
 66576        } else {
 66577          return objectPath.set(obj, path, null);
 66578        }
 66579      };
 66580  
 66581      objectPath.push = function (obj, path /*, values */){
 66582        var arr = objectPath.get(obj, path);
 66583        if (!isArray(arr)) {
 66584          arr = [];
 66585          objectPath.set(obj, path, arr);
 66586        }
 66587  
 66588        arr.push.apply(arr, Array.prototype.slice.call(arguments, 2));
 66589      };
 66590  
 66591      objectPath.coalesce = function (obj, paths, defaultValue) {
 66592        var value;
 66593  
 66594        for (var i = 0, len = paths.length; i < len; i++) {
 66595          if ((value = objectPath.get(obj, paths[i])) !== void 0) {
 66596            return value;
 66597          }
 66598        }
 66599  
 66600        return defaultValue;
 66601      };
 66602  
 66603      objectPath.get = function (obj, path, defaultValue){
 66604        if (typeof path === 'number') {
 66605          path = [path];
 66606        }
 66607        if (!path || path.length === 0) {
 66608          return obj;
 66609        }
 66610        if (obj == null) {
 66611          return defaultValue;
 66612        }
 66613        if (typeof path === 'string') {
 66614          return objectPath.get(obj, path.split('.'), defaultValue);
 66615        }
 66616  
 66617        var currentPath = getKey(path[0]);
 66618        var nextObj = getShallowProperty(obj, currentPath)
 66619        if (nextObj === void 0) {
 66620          return defaultValue;
 66621        }
 66622  
 66623        if (path.length === 1) {
 66624          return nextObj;
 66625        }
 66626  
 66627        return objectPath.get(obj[currentPath], path.slice(1), defaultValue);
 66628      };
 66629  
 66630      objectPath.del = function del(obj, path) {
 66631        if (typeof path === 'number') {
 66632          path = [path];
 66633        }
 66634  
 66635        if (obj == null) {
 66636          return obj;
 66637        }
 66638  
 66639        if (isEmpty(path)) {
 66640          return obj;
 66641        }
 66642        if(typeof path === 'string') {
 66643          return objectPath.del(obj, path.split('.'));
 66644        }
 66645  
 66646        var currentPath = getKey(path[0]);
 66647        if (!hasShallowProperty(obj, currentPath)) {
 66648          return obj;
 66649        }
 66650  
 66651        if(path.length === 1) {
 66652          if (isArray(obj)) {
 66653            obj.splice(currentPath, 1);
 66654          } else {
 66655            delete obj[currentPath];
 66656          }
 66657        } else {
 66658          return objectPath.del(obj[currentPath], path.slice(1));
 66659        }
 66660  
 66661        return obj;
 66662      }
 66663  
 66664      return objectPath;
 66665    }
 66666  
 66667    var mod = factory();
 66668    mod.create = factory;
 66669    mod.withInheritedProps = factory({includeInheritedProps: true})
 66670    return mod;
 66671  });
 66672  
 66673  
 66674  /***/ }),
 66675  /* 305 */
 66676  /***/ (function(module, exports, __webpack_require__) {
 66677  
 66678  "use strict";
 66679  
 66680  
 66681  var jsonSafeStringify = __webpack_require__(745)
 66682  var crypto = __webpack_require__(11)
 66683  var Buffer = __webpack_require__(45).Buffer
 66684  
 66685  var defer = typeof setImmediate === 'undefined'
 66686    ? process.nextTick
 66687    : setImmediate
 66688  
 66689  function paramsHaveRequestBody (params) {
 66690    return (
 66691      params.body ||
 66692      params.requestBodyStream ||
 66693      (params.json && typeof params.json !== 'boolean') ||
 66694      params.multipart
 66695    )
 66696  }
 66697  
 66698  function safeStringify (obj, replacer) {
 66699    var ret
 66700    try {
 66701      ret = JSON.stringify(obj, replacer)
 66702    } catch (e) {
 66703      ret = jsonSafeStringify(obj, replacer)
 66704    }
 66705    return ret
 66706  }
 66707  
 66708  function md5 (str) {
 66709    return crypto.createHash('md5').update(str).digest('hex')
 66710  }
 66711  
 66712  function isReadStream (rs) {
 66713    return rs.readable && rs.path && rs.mode
 66714  }
 66715  
 66716  function toBase64 (str) {
 66717    return Buffer.from(str || '', 'utf8').toString('base64')
 66718  }
 66719  
 66720  function copy (obj) {
 66721    var o = {}
 66722    Object.keys(obj).forEach(function (i) {
 66723      o[i] = obj[i]
 66724    })
 66725    return o
 66726  }
 66727  
 66728  function version () {
 66729    var numbers = process.version.replace('v', '').split('.')
 66730    return {
 66731      major: parseInt(numbers[0], 10),
 66732      minor: parseInt(numbers[1], 10),
 66733      patch: parseInt(numbers[2], 10)
 66734    }
 66735  }
 66736  
 66737  exports.paramsHaveRequestBody = paramsHaveRequestBody
 66738  exports.safeStringify = safeStringify
 66739  exports.md5 = md5
 66740  exports.isReadStream = isReadStream
 66741  exports.toBase64 = toBase64
 66742  exports.copy = copy
 66743  exports.version = version
 66744  exports.defer = defer
 66745  
 66746  
 66747  /***/ }),
 66748  /* 306 */
 66749  /***/ (function(module, exports, __webpack_require__) {
 66750  
 66751  var current = (process.versions && process.versions.node && process.versions.node.split('.')) || [];
 66752  
 66753  function specifierIncluded(specifier) {
 66754      var parts = specifier.split(' ');
 66755      var op = parts.length > 1 ? parts[0] : '=';
 66756      var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.');
 66757  
 66758      for (var i = 0; i < 3; ++i) {
 66759          var cur = Number(current[i] || 0);
 66760          var ver = Number(versionParts[i] || 0);
 66761          if (cur === ver) {
 66762              continue; // eslint-disable-line no-restricted-syntax, no-continue
 66763          }
 66764          if (op === '<') {
 66765              return cur < ver;
 66766          } else if (op === '>=') {
 66767              return cur >= ver;
 66768          } else {
 66769              return false;
 66770          }
 66771      }
 66772      return op === '>=';
 66773  }
 66774  
 66775  function matchesRange(range) {
 66776      var specifiers = range.split(/ ?&& ?/);
 66777      if (specifiers.length === 0) { return false; }
 66778      for (var i = 0; i < specifiers.length; ++i) {
 66779          if (!specifierIncluded(specifiers[i])) { return false; }
 66780      }
 66781      return true;
 66782  }
 66783  
 66784  function versionIncluded(specifierValue) {
 66785      if (typeof specifierValue === 'boolean') { return specifierValue; }
 66786      if (specifierValue && typeof specifierValue === 'object') {
 66787          for (var i = 0; i < specifierValue.length; ++i) {
 66788              if (matchesRange(specifierValue[i])) { return true; }
 66789          }
 66790          return false;
 66791      }
 66792      return matchesRange(specifierValue);
 66793  }
 66794  
 66795  var data = __webpack_require__(816);
 66796  
 66797  var core = {};
 66798  for (var mod in data) { // eslint-disable-line no-restricted-syntax
 66799      if (Object.prototype.hasOwnProperty.call(data, mod)) {
 66800          core[mod] = versionIncluded(data[mod]);
 66801      }
 66802  }
 66803  module.exports = core;
 66804  
 66805  
 66806  /***/ }),
 66807  /* 307 */
 66808  /***/ (function(module, exports, __webpack_require__) {
 66809  
 66810  module.exports = rimraf
 66811  rimraf.sync = rimrafSync
 66812  
 66813  var assert = __webpack_require__(28)
 66814  var path = __webpack_require__(0)
 66815  var fs = __webpack_require__(4)
 66816  var glob = __webpack_require__(99)
 66817  var _0666 = parseInt('666', 8)
 66818  
 66819  var defaultGlobOpts = {
 66820    nosort: true,
 66821    silent: true
 66822  }
 66823  
 66824  // for EMFILE handling
 66825  var timeout = 0
 66826  
 66827  var isWindows = (process.platform === "win32")
 66828  
 66829  function defaults (options) {
 66830    var methods = [
 66831      'unlink',
 66832      'chmod',
 66833      'stat',
 66834      'lstat',
 66835      'rmdir',
 66836      'readdir'
 66837    ]
 66838    methods.forEach(function(m) {
 66839      options[m] = options[m] || fs[m]
 66840      m = m + 'Sync'
 66841      options[m] = options[m] || fs[m]
 66842    })
 66843  
 66844    options.maxBusyTries = options.maxBusyTries || 3
 66845    options.emfileWait = options.emfileWait || 1000
 66846    if (options.glob === false) {
 66847      options.disableGlob = true
 66848    }
 66849    options.disableGlob = options.disableGlob || false
 66850    options.glob = options.glob || defaultGlobOpts
 66851  }
 66852  
 66853  function rimraf (p, options, cb) {
 66854    if (typeof options === 'function') {
 66855      cb = options
 66856      options = {}
 66857    }
 66858  
 66859    assert(p, 'rimraf: missing path')
 66860    assert.equal(typeof p, 'string', 'rimraf: path should be a string')
 66861    assert.equal(typeof cb, 'function', 'rimraf: callback function required')
 66862    assert(options, 'rimraf: invalid options argument provided')
 66863    assert.equal(typeof options, 'object', 'rimraf: options should be object')
 66864  
 66865    defaults(options)
 66866  
 66867    var busyTries = 0
 66868    var errState = null
 66869    var n = 0
 66870  
 66871    if (options.disableGlob || !glob.hasMagic(p))
 66872      return afterGlob(null, [p])
 66873  
 66874    options.lstat(p, function (er, stat) {
 66875      if (!er)
 66876        return afterGlob(null, [p])
 66877  
 66878      glob(p, options.glob, afterGlob)
 66879    })
 66880  
 66881    function next (er) {
 66882      errState = errState || er
 66883      if (--n === 0)
 66884        cb(errState)
 66885    }
 66886  
 66887    function afterGlob (er, results) {
 66888      if (er)
 66889        return cb(er)
 66890  
 66891      n = results.length
 66892      if (n === 0)
 66893        return cb()
 66894  
 66895      results.forEach(function (p) {
 66896        rimraf_(p, options, function CB (er) {
 66897          if (er) {
 66898            if ((er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") &&
 66899                busyTries < options.maxBusyTries) {
 66900              busyTries ++
 66901              var time = busyTries * 100
 66902              // try again, with the same exact callback as this one.
 66903              return setTimeout(function () {
 66904                rimraf_(p, options, CB)
 66905              }, time)
 66906            }
 66907  
 66908            // this one won't happen if graceful-fs is used.
 66909            if (er.code === "EMFILE" && timeout < options.emfileWait) {
 66910              return setTimeout(function () {
 66911                rimraf_(p, options, CB)
 66912              }, timeout ++)
 66913            }
 66914  
 66915            // already gone
 66916            if (er.code === "ENOENT") er = null
 66917          }
 66918  
 66919          timeout = 0
 66920          next(er)
 66921        })
 66922      })
 66923    }
 66924  }
 66925  
 66926  // Two possible strategies.
 66927  // 1. Assume it's a file.  unlink it, then do the dir stuff on EPERM or EISDIR
 66928  // 2. Assume it's a directory.  readdir, then do the file stuff on ENOTDIR
 66929  //
 66930  // Both result in an extra syscall when you guess wrong.  However, there
 66931  // are likely far more normal files in the world than directories.  This
 66932  // is based on the assumption that a the average number of files per
 66933  // directory is >= 1.
 66934  //
 66935  // If anyone ever complains about this, then I guess the strategy could
 66936  // be made configurable somehow.  But until then, YAGNI.
 66937  function rimraf_ (p, options, cb) {
 66938    assert(p)
 66939    assert(options)
 66940    assert(typeof cb === 'function')
 66941  
 66942    // sunos lets the root user unlink directories, which is... weird.
 66943    // so we have to lstat here and make sure it's not a dir.
 66944    options.lstat(p, function (er, st) {
 66945      if (er && er.code === "ENOENT")
 66946        return cb(null)
 66947  
 66948      // Windows can EPERM on stat.  Life is suffering.
 66949      if (er && er.code === "EPERM" && isWindows)
 66950        fixWinEPERM(p, options, er, cb)
 66951  
 66952      if (st && st.isDirectory())
 66953        return rmdir(p, options, er, cb)
 66954  
 66955      options.unlink(p, function (er) {
 66956        if (er) {
 66957          if (er.code === "ENOENT")
 66958            return cb(null)
 66959          if (er.code === "EPERM")
 66960            return (isWindows)
 66961              ? fixWinEPERM(p, options, er, cb)
 66962              : rmdir(p, options, er, cb)
 66963          if (er.code === "EISDIR")
 66964            return rmdir(p, options, er, cb)
 66965        }
 66966        return cb(er)
 66967      })
 66968    })
 66969  }
 66970  
 66971  function fixWinEPERM (p, options, er, cb) {
 66972    assert(p)
 66973    assert(options)
 66974    assert(typeof cb === 'function')
 66975    if (er)
 66976      assert(er instanceof Error)
 66977  
 66978    options.chmod(p, _0666, function (er2) {
 66979      if (er2)
 66980        cb(er2.code === "ENOENT" ? null : er)
 66981      else
 66982        options.stat(p, function(er3, stats) {
 66983          if (er3)
 66984            cb(er3.code === "ENOENT" ? null : er)
 66985          else if (stats.isDirectory())
 66986            rmdir(p, options, er, cb)
 66987          else
 66988            options.unlink(p, cb)
 66989        })
 66990    })
 66991  }
 66992  
 66993  function fixWinEPERMSync (p, options, er) {
 66994    assert(p)
 66995    assert(options)
 66996    if (er)
 66997      assert(er instanceof Error)
 66998  
 66999    try {
 67000      options.chmodSync(p, _0666)
 67001    } catch (er2) {
 67002      if (er2.code === "ENOENT")
 67003        return
 67004      else
 67005        throw er
 67006    }
 67007  
 67008    try {
 67009      var stats = options.statSync(p)
 67010    } catch (er3) {
 67011      if (er3.code === "ENOENT")
 67012        return
 67013      else
 67014        throw er
 67015    }
 67016  
 67017    if (stats.isDirectory())
 67018      rmdirSync(p, options, er)
 67019    else
 67020      options.unlinkSync(p)
 67021  }
 67022  
 67023  function rmdir (p, options, originalEr, cb) {
 67024    assert(p)
 67025    assert(options)
 67026    if (originalEr)
 67027      assert(originalEr instanceof Error)
 67028    assert(typeof cb === 'function')
 67029  
 67030    // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)
 67031    // if we guessed wrong, and it's not a directory, then
 67032    // raise the original error.
 67033    options.rmdir(p, function (er) {
 67034      if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM"))
 67035        rmkids(p, options, cb)
 67036      else if (er && er.code === "ENOTDIR")
 67037        cb(originalEr)
 67038      else
 67039        cb(er)
 67040    })
 67041  }
 67042  
 67043  function rmkids(p, options, cb) {
 67044    assert(p)
 67045    assert(options)
 67046    assert(typeof cb === 'function')
 67047  
 67048    options.readdir(p, function (er, files) {
 67049      if (er)
 67050        return cb(er)
 67051      var n = files.length
 67052      if (n === 0)
 67053        return options.rmdir(p, cb)
 67054      var errState
 67055      files.forEach(function (f) {
 67056        rimraf(path.join(p, f), options, function (er) {
 67057          if (errState)
 67058            return
 67059          if (er)
 67060            return cb(errState = er)
 67061          if (--n === 0)
 67062            options.rmdir(p, cb)
 67063        })
 67064      })
 67065    })
 67066  }
 67067  
 67068  // this looks simpler, and is strictly *faster*, but will
 67069  // tie up the JavaScript thread and fail on excessively
 67070  // deep directory trees.
 67071  function rimrafSync (p, options) {
 67072    options = options || {}
 67073    defaults(options)
 67074  
 67075    assert(p, 'rimraf: missing path')
 67076    assert.equal(typeof p, 'string', 'rimraf: path should be a string')
 67077    assert(options, 'rimraf: missing options')
 67078    assert.equal(typeof options, 'object', 'rimraf: options should be object')
 67079  
 67080    var results
 67081  
 67082    if (options.disableGlob || !glob.hasMagic(p)) {
 67083      results = [p]
 67084    } else {
 67085      try {
 67086        options.lstatSync(p)
 67087        results = [p]
 67088      } catch (er) {
 67089        results = glob.sync(p, options.glob)
 67090      }
 67091    }
 67092  
 67093    if (!results.length)
 67094      return
 67095  
 67096    for (var i = 0; i < results.length; i++) {
 67097      var p = results[i]
 67098  
 67099      try {
 67100        var st = options.lstatSync(p)
 67101      } catch (er) {
 67102        if (er.code === "ENOENT")
 67103          return
 67104  
 67105        // Windows can EPERM on stat.  Life is suffering.
 67106        if (er.code === "EPERM" && isWindows)
 67107          fixWinEPERMSync(p, options, er)
 67108      }
 67109  
 67110      try {
 67111        // sunos lets the root user unlink directories, which is... weird.
 67112        if (st && st.isDirectory())
 67113          rmdirSync(p, options, null)
 67114        else
 67115          options.unlinkSync(p)
 67116      } catch (er) {
 67117        if (er.code === "ENOENT")
 67118          return
 67119        if (er.code === "EPERM")
 67120          return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)
 67121        if (er.code !== "EISDIR")
 67122          throw er
 67123  
 67124        rmdirSync(p, options, er)
 67125      }
 67126    }
 67127  }
 67128  
 67129  function rmdirSync (p, options, originalEr) {
 67130    assert(p)
 67131    assert(options)
 67132    if (originalEr)
 67133      assert(originalEr instanceof Error)
 67134  
 67135    try {
 67136      options.rmdirSync(p)
 67137    } catch (er) {
 67138      if (er.code === "ENOENT")
 67139        return
 67140      if (er.code === "ENOTDIR")
 67141        throw originalEr
 67142      if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")
 67143        rmkidsSync(p, options)
 67144    }
 67145  }
 67146  
 67147  function rmkidsSync (p, options) {
 67148    assert(p)
 67149    assert(options)
 67150    options.readdirSync(p).forEach(function (f) {
 67151      rimrafSync(path.join(p, f), options)
 67152    })
 67153  
 67154    // We only end up here once we got ENOTEMPTY at least once, and
 67155    // at this point, we are guaranteed to have removed all the kids.
 67156    // So, we know that it won't be ENOENT or ENOTDIR or anything else.
 67157    // try really hard to delete stuff on windows, because it has a
 67158    // PROFOUNDLY annoying habit of not closing handles promptly when
 67159    // files are deleted, resulting in spurious ENOTEMPTY errors.
 67160    var retries = isWindows ? 100 : 1
 67161    var i = 0
 67162    do {
 67163      var threw = true
 67164      try {
 67165        var ret = options.rmdirSync(p, options)
 67166        threw = false
 67167        return ret
 67168      } finally {
 67169        if (++i < retries && threw)
 67170          continue
 67171      }
 67172    } while (true)
 67173  }
 67174  
 67175  
 67176  /***/ }),
 67177  /* 308 */
 67178  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 67179  
 67180  "use strict";
 67181  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ReplaySubject; });
 67182  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 67183  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subject__ = __webpack_require__(36);
 67184  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__scheduler_queue__ = __webpack_require__(439);
 67185  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscription__ = __webpack_require__(25);
 67186  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__operators_observeOn__ = __webpack_require__(434);
 67187  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_ObjectUnsubscribedError__ = __webpack_require__(190);
 67188  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__SubjectSubscription__ = __webpack_require__(422);
 67189  /** PURE_IMPORTS_START tslib,_Subject,_scheduler_queue,_Subscription,_operators_observeOn,_util_ObjectUnsubscribedError,_SubjectSubscription PURE_IMPORTS_END */
 67190  
 67191  
 67192  
 67193  
 67194  
 67195  
 67196  
 67197  var ReplaySubject = /*@__PURE__*/ (function (_super) {
 67198      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](ReplaySubject, _super);
 67199      function ReplaySubject(bufferSize, windowTime, scheduler) {
 67200          if (bufferSize === void 0) {
 67201              bufferSize = Number.POSITIVE_INFINITY;
 67202          }
 67203          if (windowTime === void 0) {
 67204              windowTime = Number.POSITIVE_INFINITY;
 67205          }
 67206          var _this = _super.call(this) || this;
 67207          _this.scheduler = scheduler;
 67208          _this._events = [];
 67209          _this._infiniteTimeWindow = false;
 67210          _this._bufferSize = bufferSize < 1 ? 1 : bufferSize;
 67211          _this._windowTime = windowTime < 1 ? 1 : windowTime;
 67212          if (windowTime === Number.POSITIVE_INFINITY) {
 67213              _this._infiniteTimeWindow = true;
 67214              _this.next = _this.nextInfiniteTimeWindow;
 67215          }
 67216          else {
 67217              _this.next = _this.nextTimeWindow;
 67218          }
 67219          return _this;
 67220      }
 67221      ReplaySubject.prototype.nextInfiniteTimeWindow = function (value) {
 67222          var _events = this._events;
 67223          _events.push(value);
 67224          if (_events.length > this._bufferSize) {
 67225              _events.shift();
 67226          }
 67227          _super.prototype.next.call(this, value);
 67228      };
 67229      ReplaySubject.prototype.nextTimeWindow = function (value) {
 67230          this._events.push(new ReplayEvent(this._getNow(), value));
 67231          this._trimBufferThenGetEvents();
 67232          _super.prototype.next.call(this, value);
 67233      };
 67234      ReplaySubject.prototype._subscribe = function (subscriber) {
 67235          var _infiniteTimeWindow = this._infiniteTimeWindow;
 67236          var _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();
 67237          var scheduler = this.scheduler;
 67238          var len = _events.length;
 67239          var subscription;
 67240          if (this.closed) {
 67241              throw new __WEBPACK_IMPORTED_MODULE_5__util_ObjectUnsubscribedError__["a" /* ObjectUnsubscribedError */]();
 67242          }
 67243          else if (this.isStopped || this.hasError) {
 67244              subscription = __WEBPACK_IMPORTED_MODULE_3__Subscription__["a" /* Subscription */].EMPTY;
 67245          }
 67246          else {
 67247              this.observers.push(subscriber);
 67248              subscription = new __WEBPACK_IMPORTED_MODULE_6__SubjectSubscription__["a" /* SubjectSubscription */](this, subscriber);
 67249          }
 67250          if (scheduler) {
 67251              subscriber.add(subscriber = new __WEBPACK_IMPORTED_MODULE_4__operators_observeOn__["a" /* ObserveOnSubscriber */](subscriber, scheduler));
 67252          }
 67253          if (_infiniteTimeWindow) {
 67254              for (var i = 0; i < len && !subscriber.closed; i++) {
 67255                  subscriber.next(_events[i]);
 67256              }
 67257          }
 67258          else {
 67259              for (var i = 0; i < len && !subscriber.closed; i++) {
 67260                  subscriber.next(_events[i].value);
 67261              }
 67262          }
 67263          if (this.hasError) {
 67264              subscriber.error(this.thrownError);
 67265          }
 67266          else if (this.isStopped) {
 67267              subscriber.complete();
 67268          }
 67269          return subscription;
 67270      };
 67271      ReplaySubject.prototype._getNow = function () {
 67272          return (this.scheduler || __WEBPACK_IMPORTED_MODULE_2__scheduler_queue__["a" /* queue */]).now();
 67273      };
 67274      ReplaySubject.prototype._trimBufferThenGetEvents = function () {
 67275          var now = this._getNow();
 67276          var _bufferSize = this._bufferSize;
 67277          var _windowTime = this._windowTime;
 67278          var _events = this._events;
 67279          var eventsCount = _events.length;
 67280          var spliceCount = 0;
 67281          while (spliceCount < eventsCount) {
 67282              if ((now - _events[spliceCount].time) < _windowTime) {
 67283                  break;
 67284              }
 67285              spliceCount++;
 67286          }
 67287          if (eventsCount > _bufferSize) {
 67288              spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);
 67289          }
 67290          if (spliceCount > 0) {
 67291              _events.splice(0, spliceCount);
 67292          }
 67293          return _events;
 67294      };
 67295      return ReplaySubject;
 67296  }(__WEBPACK_IMPORTED_MODULE_1__Subject__["a" /* Subject */]));
 67297  
 67298  var ReplayEvent = /*@__PURE__*/ (function () {
 67299      function ReplayEvent(time, value) {
 67300          this.time = time;
 67301          this.value = value;
 67302      }
 67303      return ReplayEvent;
 67304  }());
 67305  //# sourceMappingURL=ReplaySubject.js.map
 67306  
 67307  
 67308  /***/ }),
 67309  /* 309 */
 67310  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 67311  
 67312  "use strict";
 67313  /* harmony export (immutable) */ __webpack_exports__["a"] = combineLatest;
 67314  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return CombineLatestOperator; });
 67315  /* unused harmony export CombineLatestSubscriber */
 67316  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 67317  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isScheduler__ = __webpack_require__(49);
 67318  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isArray__ = __webpack_require__(41);
 67319  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__OuterSubscriber__ = __webpack_require__(13);
 67320  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_subscribeToResult__ = __webpack_require__(14);
 67321  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__fromArray__ = __webpack_require__(85);
 67322  /** PURE_IMPORTS_START tslib,_util_isScheduler,_util_isArray,_OuterSubscriber,_util_subscribeToResult,_fromArray PURE_IMPORTS_END */
 67323  
 67324  
 67325  
 67326  
 67327  
 67328  
 67329  var NONE = {};
 67330  function combineLatest() {
 67331      var observables = [];
 67332      for (var _i = 0; _i < arguments.length; _i++) {
 67333          observables[_i] = arguments[_i];
 67334      }
 67335      var resultSelector = null;
 67336      var scheduler = null;
 67337      if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_isScheduler__["a" /* isScheduler */])(observables[observables.length - 1])) {
 67338          scheduler = observables.pop();
 67339      }
 67340      if (typeof observables[observables.length - 1] === 'function') {
 67341          resultSelector = observables.pop();
 67342      }
 67343      if (observables.length === 1 && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_isArray__["a" /* isArray */])(observables[0])) {
 67344          observables = observables[0];
 67345      }
 67346      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__fromArray__["a" /* fromArray */])(observables, scheduler).lift(new CombineLatestOperator(resultSelector));
 67347  }
 67348  var CombineLatestOperator = /*@__PURE__*/ (function () {
 67349      function CombineLatestOperator(resultSelector) {
 67350          this.resultSelector = resultSelector;
 67351      }
 67352      CombineLatestOperator.prototype.call = function (subscriber, source) {
 67353          return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));
 67354      };
 67355      return CombineLatestOperator;
 67356  }());
 67357  
 67358  var CombineLatestSubscriber = /*@__PURE__*/ (function (_super) {
 67359      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](CombineLatestSubscriber, _super);
 67360      function CombineLatestSubscriber(destination, resultSelector) {
 67361          var _this = _super.call(this, destination) || this;
 67362          _this.resultSelector = resultSelector;
 67363          _this.active = 0;
 67364          _this.values = [];
 67365          _this.observables = [];
 67366          return _this;
 67367      }
 67368      CombineLatestSubscriber.prototype._next = function (observable) {
 67369          this.values.push(NONE);
 67370          this.observables.push(observable);
 67371      };
 67372      CombineLatestSubscriber.prototype._complete = function () {
 67373          var observables = this.observables;
 67374          var len = observables.length;
 67375          if (len === 0) {
 67376              this.destination.complete();
 67377          }
 67378          else {
 67379              this.active = len;
 67380              this.toRespond = len;
 67381              for (var i = 0; i < len; i++) {
 67382                  var observable = observables[i];
 67383                  this.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util_subscribeToResult__["a" /* subscribeToResult */])(this, observable, observable, i));
 67384              }
 67385          }
 67386      };
 67387      CombineLatestSubscriber.prototype.notifyComplete = function (unused) {
 67388          if ((this.active -= 1) === 0) {
 67389              this.destination.complete();
 67390          }
 67391      };
 67392      CombineLatestSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
 67393          var values = this.values;
 67394          var oldVal = values[outerIndex];
 67395          var toRespond = !this.toRespond
 67396              ? 0
 67397              : oldVal === NONE ? --this.toRespond : this.toRespond;
 67398          values[outerIndex] = innerValue;
 67399          if (toRespond === 0) {
 67400              if (this.resultSelector) {
 67401                  this._tryResultSelector(values);
 67402              }
 67403              else {
 67404                  this.destination.next(values.slice());
 67405              }
 67406          }
 67407      };
 67408      CombineLatestSubscriber.prototype._tryResultSelector = function (values) {
 67409          var result;
 67410          try {
 67411              result = this.resultSelector.apply(this, values);
 67412          }
 67413          catch (err) {
 67414              this.destination.error(err);
 67415              return;
 67416          }
 67417          this.destination.next(result);
 67418      };
 67419      return CombineLatestSubscriber;
 67420  }(__WEBPACK_IMPORTED_MODULE_3__OuterSubscriber__["a" /* OuterSubscriber */]));
 67421  
 67422  //# sourceMappingURL=combineLatest.js.map
 67423  
 67424  
 67425  /***/ }),
 67426  /* 310 */
 67427  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 67428  
 67429  "use strict";
 67430  /* harmony export (immutable) */ __webpack_exports__["a"] = defer;
 67431  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
 67432  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__from__ = __webpack_require__(62);
 67433  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__empty__ = __webpack_require__(39);
 67434  /** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */
 67435  
 67436  
 67437  
 67438  function defer(observableFactory) {
 67439      return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) {
 67440          var input;
 67441          try {
 67442              input = observableFactory();
 67443          }
 67444          catch (err) {
 67445              subscriber.error(err);
 67446              return undefined;
 67447          }
 67448          var source = input ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__from__["a" /* from */])(input) : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__empty__["a" /* empty */])();
 67449          return source.subscribe(subscriber);
 67450      });
 67451  }
 67452  //# sourceMappingURL=defer.js.map
 67453  
 67454  
 67455  /***/ }),
 67456  /* 311 */
 67457  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 67458  
 67459  "use strict";
 67460  /* harmony export (immutable) */ __webpack_exports__["a"] = of;
 67461  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_isScheduler__ = __webpack_require__(49);
 67462  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__fromArray__ = __webpack_require__(85);
 67463  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__empty__ = __webpack_require__(39);
 67464  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__scalar__ = __webpack_require__(312);
 67465  /** PURE_IMPORTS_START _util_isScheduler,_fromArray,_empty,_scalar PURE_IMPORTS_END */
 67466  
 67467  
 67468  
 67469  
 67470  function of() {
 67471      var args = [];
 67472      for (var _i = 0; _i < arguments.length; _i++) {
 67473          args[_i] = arguments[_i];
 67474      }
 67475      var scheduler = args[args.length - 1];
 67476      if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util_isScheduler__["a" /* isScheduler */])(scheduler)) {
 67477          args.pop();
 67478      }
 67479      else {
 67480          scheduler = undefined;
 67481      }
 67482      switch (args.length) {
 67483          case 0:
 67484              return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__empty__["a" /* empty */])(scheduler);
 67485          case 1:
 67486              return scheduler ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__fromArray__["a" /* fromArray */])(args, scheduler) : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__scalar__["a" /* scalar */])(args[0]);
 67487          default:
 67488              return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__fromArray__["a" /* fromArray */])(args, scheduler);
 67489      }
 67490  }
 67491  //# sourceMappingURL=of.js.map
 67492  
 67493  
 67494  /***/ }),
 67495  /* 312 */
 67496  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 67497  
 67498  "use strict";
 67499  /* harmony export (immutable) */ __webpack_exports__["a"] = scalar;
 67500  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
 67501  /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */
 67502  
 67503  function scalar(value) {
 67504      var result = new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) {
 67505          subscriber.next(value);
 67506          subscriber.complete();
 67507      });
 67508      result._isScalar = true;
 67509      result.value = value;
 67510      return result;
 67511  }
 67512  //# sourceMappingURL=scalar.js.map
 67513  
 67514  
 67515  /***/ }),
 67516  /* 313 */
 67517  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 67518  
 67519  "use strict";
 67520  /* harmony export (immutable) */ __webpack_exports__["a"] = throwError;
 67521  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
 67522  /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */
 67523  
 67524  function throwError(error, scheduler) {
 67525      if (!scheduler) {
 67526          return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) { return subscriber.error(error); });
 67527      }
 67528      else {
 67529          return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) { return scheduler.schedule(dispatch, 0, { error: error, subscriber: subscriber }); });
 67530      }
 67531  }
 67532  function dispatch(_a) {
 67533      var error = _a.error, subscriber = _a.subscriber;
 67534      subscriber.error(error);
 67535  }
 67536  //# sourceMappingURL=throwError.js.map
 67537  
 67538  
 67539  /***/ }),
 67540  /* 314 */
 67541  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 67542  
 67543  "use strict";
 67544  /* harmony export (immutable) */ __webpack_exports__["a"] = zip;
 67545  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return ZipOperator; });
 67546  /* unused harmony export ZipSubscriber */
 67547  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 67548  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__fromArray__ = __webpack_require__(85);
 67549  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isArray__ = __webpack_require__(41);
 67550  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscriber__ = __webpack_require__(7);
 67551  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__OuterSubscriber__ = __webpack_require__(13);
 67552  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_subscribeToResult__ = __webpack_require__(14);
 67553  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__internal_symbol_iterator__ = __webpack_require__(151);
 67554  /** PURE_IMPORTS_START tslib,_fromArray,_util_isArray,_Subscriber,_OuterSubscriber,_util_subscribeToResult,_.._internal_symbol_iterator PURE_IMPORTS_END */
 67555  
 67556  
 67557  
 67558  
 67559  
 67560  
 67561  
 67562  function zip() {
 67563      var observables = [];
 67564      for (var _i = 0; _i < arguments.length; _i++) {
 67565          observables[_i] = arguments[_i];
 67566      }
 67567      var resultSelector = observables[observables.length - 1];
 67568      if (typeof resultSelector === 'function') {
 67569          observables.pop();
 67570      }
 67571      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__fromArray__["a" /* fromArray */])(observables, undefined).lift(new ZipOperator(resultSelector));
 67572  }
 67573  var ZipOperator = /*@__PURE__*/ (function () {
 67574      function ZipOperator(resultSelector) {
 67575          this.resultSelector = resultSelector;
 67576      }
 67577      ZipOperator.prototype.call = function (subscriber, source) {
 67578          return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector));
 67579      };
 67580      return ZipOperator;
 67581  }());
 67582  
 67583  var ZipSubscriber = /*@__PURE__*/ (function (_super) {
 67584      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](ZipSubscriber, _super);
 67585      function ZipSubscriber(destination, resultSelector, values) {
 67586          if (values === void 0) {
 67587              values = Object.create(null);
 67588          }
 67589          var _this = _super.call(this, destination) || this;
 67590          _this.iterators = [];
 67591          _this.active = 0;
 67592          _this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : null;
 67593          _this.values = values;
 67594          return _this;
 67595      }
 67596      ZipSubscriber.prototype._next = function (value) {
 67597          var iterators = this.iterators;
 67598          if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_isArray__["a" /* isArray */])(value)) {
 67599              iterators.push(new StaticArrayIterator(value));
 67600          }
 67601          else if (typeof value[__WEBPACK_IMPORTED_MODULE_6__internal_symbol_iterator__["a" /* iterator */]] === 'function') {
 67602              iterators.push(new StaticIterator(value[__WEBPACK_IMPORTED_MODULE_6__internal_symbol_iterator__["a" /* iterator */]]()));
 67603          }
 67604          else {
 67605              iterators.push(new ZipBufferIterator(this.destination, this, value));
 67606          }
 67607      };
 67608      ZipSubscriber.prototype._complete = function () {
 67609          var iterators = this.iterators;
 67610          var len = iterators.length;
 67611          this.unsubscribe();
 67612          if (len === 0) {
 67613              this.destination.complete();
 67614              return;
 67615          }
 67616          this.active = len;
 67617          for (var i = 0; i < len; i++) {
 67618              var iterator = iterators[i];
 67619              if (iterator.stillUnsubscribed) {
 67620                  var destination = this.destination;
 67621                  destination.add(iterator.subscribe(iterator, i));
 67622              }
 67623              else {
 67624                  this.active--;
 67625              }
 67626          }
 67627      };
 67628      ZipSubscriber.prototype.notifyInactive = function () {
 67629          this.active--;
 67630          if (this.active === 0) {
 67631              this.destination.complete();
 67632          }
 67633      };
 67634      ZipSubscriber.prototype.checkIterators = function () {
 67635          var iterators = this.iterators;
 67636          var len = iterators.length;
 67637          var destination = this.destination;
 67638          for (var i = 0; i < len; i++) {
 67639              var iterator = iterators[i];
 67640              if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {
 67641                  return;
 67642              }
 67643          }
 67644          var shouldComplete = false;
 67645          var args = [];
 67646          for (var i = 0; i < len; i++) {
 67647              var iterator = iterators[i];
 67648              var result = iterator.next();
 67649              if (iterator.hasCompleted()) {
 67650                  shouldComplete = true;
 67651              }
 67652              if (result.done) {
 67653                  destination.complete();
 67654                  return;
 67655              }
 67656              args.push(result.value);
 67657          }
 67658          if (this.resultSelector) {
 67659              this._tryresultSelector(args);
 67660          }
 67661          else {
 67662              destination.next(args);
 67663          }
 67664          if (shouldComplete) {
 67665              destination.complete();
 67666          }
 67667      };
 67668      ZipSubscriber.prototype._tryresultSelector = function (args) {
 67669          var result;
 67670          try {
 67671              result = this.resultSelector.apply(this, args);
 67672          }
 67673          catch (err) {
 67674              this.destination.error(err);
 67675              return;
 67676          }
 67677          this.destination.next(result);
 67678      };
 67679      return ZipSubscriber;
 67680  }(__WEBPACK_IMPORTED_MODULE_3__Subscriber__["a" /* Subscriber */]));
 67681  
 67682  var StaticIterator = /*@__PURE__*/ (function () {
 67683      function StaticIterator(iterator) {
 67684          this.iterator = iterator;
 67685          this.nextResult = iterator.next();
 67686      }
 67687      StaticIterator.prototype.hasValue = function () {
 67688          return true;
 67689      };
 67690      StaticIterator.prototype.next = function () {
 67691          var result = this.nextResult;
 67692          this.nextResult = this.iterator.next();
 67693          return result;
 67694      };
 67695      StaticIterator.prototype.hasCompleted = function () {
 67696          var nextResult = this.nextResult;
 67697          return nextResult && nextResult.done;
 67698      };
 67699      return StaticIterator;
 67700  }());
 67701  var StaticArrayIterator = /*@__PURE__*/ (function () {
 67702      function StaticArrayIterator(array) {
 67703          this.array = array;
 67704          this.index = 0;
 67705          this.length = 0;
 67706          this.length = array.length;
 67707      }
 67708      StaticArrayIterator.prototype[__WEBPACK_IMPORTED_MODULE_6__internal_symbol_iterator__["a" /* iterator */]] = function () {
 67709          return this;
 67710      };
 67711      StaticArrayIterator.prototype.next = function (value) {
 67712          var i = this.index++;
 67713          var array = this.array;
 67714          return i < this.length ? { value: array[i], done: false } : { value: null, done: true };
 67715      };
 67716      StaticArrayIterator.prototype.hasValue = function () {
 67717          return this.array.length > this.index;
 67718      };
 67719      StaticArrayIterator.prototype.hasCompleted = function () {
 67720          return this.array.length === this.index;
 67721      };
 67722      return StaticArrayIterator;
 67723  }());
 67724  var ZipBufferIterator = /*@__PURE__*/ (function (_super) {
 67725      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](ZipBufferIterator, _super);
 67726      function ZipBufferIterator(destination, parent, observable) {
 67727          var _this = _super.call(this, destination) || this;
 67728          _this.parent = parent;
 67729          _this.observable = observable;
 67730          _this.stillUnsubscribed = true;
 67731          _this.buffer = [];
 67732          _this.isComplete = false;
 67733          return _this;
 67734      }
 67735      ZipBufferIterator.prototype[__WEBPACK_IMPORTED_MODULE_6__internal_symbol_iterator__["a" /* iterator */]] = function () {
 67736          return this;
 67737      };
 67738      ZipBufferIterator.prototype.next = function () {
 67739          var buffer = this.buffer;
 67740          if (buffer.length === 0 && this.isComplete) {
 67741              return { value: null, done: true };
 67742          }
 67743          else {
 67744              return { value: buffer.shift(), done: false };
 67745          }
 67746      };
 67747      ZipBufferIterator.prototype.hasValue = function () {
 67748          return this.buffer.length > 0;
 67749      };
 67750      ZipBufferIterator.prototype.hasCompleted = function () {
 67751          return this.buffer.length === 0 && this.isComplete;
 67752      };
 67753      ZipBufferIterator.prototype.notifyComplete = function () {
 67754          if (this.buffer.length > 0) {
 67755              this.isComplete = true;
 67756              this.parent.notifyInactive();
 67757          }
 67758          else {
 67759              this.destination.complete();
 67760          }
 67761      };
 67762      ZipBufferIterator.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
 67763          this.buffer.push(innerValue);
 67764          this.parent.checkIterators();
 67765      };
 67766      ZipBufferIterator.prototype.subscribe = function (value, index) {
 67767          return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__util_subscribeToResult__["a" /* subscribeToResult */])(this, this.observable, this, index);
 67768      };
 67769      return ZipBufferIterator;
 67770  }(__WEBPACK_IMPORTED_MODULE_4__OuterSubscriber__["a" /* OuterSubscriber */]));
 67771  //# sourceMappingURL=zip.js.map
 67772  
 67773  
 67774  /***/ }),
 67775  /* 315 */
 67776  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 67777  
 67778  "use strict";
 67779  /* harmony export (immutable) */ __webpack_exports__["a"] = mergeAll;
 67780  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__mergeMap__ = __webpack_require__(148);
 67781  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_identity__ = __webpack_require__(119);
 67782  /** PURE_IMPORTS_START _mergeMap,_util_identity PURE_IMPORTS_END */
 67783  
 67784  
 67785  function mergeAll(concurrent) {
 67786      if (concurrent === void 0) {
 67787          concurrent = Number.POSITIVE_INFINITY;
 67788      }
 67789      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__mergeMap__["a" /* mergeMap */])(__WEBPACK_IMPORTED_MODULE_1__util_identity__["a" /* identity */], concurrent);
 67790  }
 67791  //# sourceMappingURL=mergeAll.js.map
 67792  
 67793  
 67794  /***/ }),
 67795  /* 316 */
 67796  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 67797  
 67798  "use strict";
 67799  /* harmony export (immutable) */ __webpack_exports__["a"] = refCount;
 67800  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 67801  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
 67802  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
 67803  
 67804  
 67805  function refCount() {
 67806      return function refCountOperatorFunction(source) {
 67807          return source.lift(new RefCountOperator(source));
 67808      };
 67809  }
 67810  var RefCountOperator = /*@__PURE__*/ (function () {
 67811      function RefCountOperator(connectable) {
 67812          this.connectable = connectable;
 67813      }
 67814      RefCountOperator.prototype.call = function (subscriber, source) {
 67815          var connectable = this.connectable;
 67816          connectable._refCount++;
 67817          var refCounter = new RefCountSubscriber(subscriber, connectable);
 67818          var subscription = source.subscribe(refCounter);
 67819          if (!refCounter.closed) {
 67820              refCounter.connection = connectable.connect();
 67821          }
 67822          return subscription;
 67823      };
 67824      return RefCountOperator;
 67825  }());
 67826  var RefCountSubscriber = /*@__PURE__*/ (function (_super) {
 67827      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](RefCountSubscriber, _super);
 67828      function RefCountSubscriber(destination, connectable) {
 67829          var _this = _super.call(this, destination) || this;
 67830          _this.connectable = connectable;
 67831          return _this;
 67832      }
 67833      RefCountSubscriber.prototype._unsubscribe = function () {
 67834          var connectable = this.connectable;
 67835          if (!connectable) {
 67836              this.connection = null;
 67837              return;
 67838          }
 67839          this.connectable = null;
 67840          var refCount = connectable._refCount;
 67841          if (refCount <= 0) {
 67842              this.connection = null;
 67843              return;
 67844          }
 67845          connectable._refCount = refCount - 1;
 67846          if (refCount > 1) {
 67847              this.connection = null;
 67848              return;
 67849          }
 67850          var connection = this.connection;
 67851          var sharedConnection = connectable._connection;
 67852          this.connection = null;
 67853          if (sharedConnection && (!connection || sharedConnection === connection)) {
 67854              sharedConnection.unsubscribe();
 67855          }
 67856      };
 67857      return RefCountSubscriber;
 67858  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
 67859  //# sourceMappingURL=refCount.js.map
 67860  
 67861  
 67862  /***/ }),
 67863  /* 317 */
 67864  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 67865  
 67866  "use strict";
 67867  /* harmony export (immutable) */ __webpack_exports__["a"] = scan;
 67868  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 67869  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
 67870  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
 67871  
 67872  
 67873  function scan(accumulator, seed) {
 67874      var hasSeed = false;
 67875      if (arguments.length >= 2) {
 67876          hasSeed = true;
 67877      }
 67878      return function scanOperatorFunction(source) {
 67879          return source.lift(new ScanOperator(accumulator, seed, hasSeed));
 67880      };
 67881  }
 67882  var ScanOperator = /*@__PURE__*/ (function () {
 67883      function ScanOperator(accumulator, seed, hasSeed) {
 67884          if (hasSeed === void 0) {
 67885              hasSeed = false;
 67886          }
 67887          this.accumulator = accumulator;
 67888          this.seed = seed;
 67889          this.hasSeed = hasSeed;
 67890      }
 67891      ScanOperator.prototype.call = function (subscriber, source) {
 67892          return source.subscribe(new ScanSubscriber(subscriber, this.accumulator, this.seed, this.hasSeed));
 67893      };
 67894      return ScanOperator;
 67895  }());
 67896  var ScanSubscriber = /*@__PURE__*/ (function (_super) {
 67897      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](ScanSubscriber, _super);
 67898      function ScanSubscriber(destination, accumulator, _seed, hasSeed) {
 67899          var _this = _super.call(this, destination) || this;
 67900          _this.accumulator = accumulator;
 67901          _this._seed = _seed;
 67902          _this.hasSeed = hasSeed;
 67903          _this.index = 0;
 67904          return _this;
 67905      }
 67906      Object.defineProperty(ScanSubscriber.prototype, "seed", {
 67907          get: function () {
 67908              return this._seed;
 67909          },
 67910          set: function (value) {
 67911              this.hasSeed = true;
 67912              this._seed = value;
 67913          },
 67914          enumerable: true,
 67915          configurable: true
 67916      });
 67917      ScanSubscriber.prototype._next = function (value) {
 67918          if (!this.hasSeed) {
 67919              this.seed = value;
 67920              this.destination.next(value);
 67921          }
 67922          else {
 67923              return this._tryNext(value);
 67924          }
 67925      };
 67926      ScanSubscriber.prototype._tryNext = function (value) {
 67927          var index = this.index++;
 67928          var result;
 67929          try {
 67930              result = this.accumulator(this.seed, value, index);
 67931          }
 67932          catch (err) {
 67933              this.destination.error(err);
 67934          }
 67935          this.seed = result;
 67936          this.destination.next(result);
 67937      };
 67938      return ScanSubscriber;
 67939  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
 67940  //# sourceMappingURL=scan.js.map
 67941  
 67942  
 67943  /***/ }),
 67944  /* 318 */
 67945  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 67946  
 67947  "use strict";
 67948  /* harmony export (immutable) */ __webpack_exports__["a"] = switchMap;
 67949  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 67950  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__ = __webpack_require__(13);
 67951  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__InnerSubscriber__ = __webpack_require__(84);
 67952  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_subscribeToResult__ = __webpack_require__(14);
 67953  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__map__ = __webpack_require__(47);
 67954  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__observable_from__ = __webpack_require__(62);
 67955  /** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult,_map,_observable_from PURE_IMPORTS_END */
 67956  
 67957  
 67958  
 67959  
 67960  
 67961  
 67962  function switchMap(project, resultSelector) {
 67963      if (typeof resultSelector === 'function') {
 67964          return function (source) { return source.pipe(switchMap(function (a, i) { return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__observable_from__["a" /* from */])(project(a, i)).pipe(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__map__["a" /* map */])(function (b, ii) { return resultSelector(a, b, i, ii); })); })); };
 67965      }
 67966      return function (source) { return source.lift(new SwitchMapOperator(project)); };
 67967  }
 67968  var SwitchMapOperator = /*@__PURE__*/ (function () {
 67969      function SwitchMapOperator(project) {
 67970          this.project = project;
 67971      }
 67972      SwitchMapOperator.prototype.call = function (subscriber, source) {
 67973          return source.subscribe(new SwitchMapSubscriber(subscriber, this.project));
 67974      };
 67975      return SwitchMapOperator;
 67976  }());
 67977  var SwitchMapSubscriber = /*@__PURE__*/ (function (_super) {
 67978      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SwitchMapSubscriber, _super);
 67979      function SwitchMapSubscriber(destination, project) {
 67980          var _this = _super.call(this, destination) || this;
 67981          _this.project = project;
 67982          _this.index = 0;
 67983          return _this;
 67984      }
 67985      SwitchMapSubscriber.prototype._next = function (value) {
 67986          var result;
 67987          var index = this.index++;
 67988          try {
 67989              result = this.project(value, index);
 67990          }
 67991          catch (error) {
 67992              this.destination.error(error);
 67993              return;
 67994          }
 67995          this._innerSub(result, value, index);
 67996      };
 67997      SwitchMapSubscriber.prototype._innerSub = function (result, value, index) {
 67998          var innerSubscription = this.innerSubscription;
 67999          if (innerSubscription) {
 68000              innerSubscription.unsubscribe();
 68001          }
 68002          var innerSubscriber = new __WEBPACK_IMPORTED_MODULE_2__InnerSubscriber__["a" /* InnerSubscriber */](this, undefined, undefined);
 68003          var destination = this.destination;
 68004          destination.add(innerSubscriber);
 68005          this.innerSubscription = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_subscribeToResult__["a" /* subscribeToResult */])(this, result, value, index, innerSubscriber);
 68006      };
 68007      SwitchMapSubscriber.prototype._complete = function () {
 68008          var innerSubscription = this.innerSubscription;
 68009          if (!innerSubscription || innerSubscription.closed) {
 68010              _super.prototype._complete.call(this);
 68011          }
 68012          this.unsubscribe();
 68013      };
 68014      SwitchMapSubscriber.prototype._unsubscribe = function () {
 68015          this.innerSubscription = null;
 68016      };
 68017      SwitchMapSubscriber.prototype.notifyComplete = function (innerSub) {
 68018          var destination = this.destination;
 68019          destination.remove(innerSub);
 68020          this.innerSubscription = null;
 68021          if (this.isStopped) {
 68022              _super.prototype._complete.call(this);
 68023          }
 68024      };
 68025      SwitchMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
 68026          this.destination.next(innerValue);
 68027      };
 68028      return SwitchMapSubscriber;
 68029  }(__WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__["a" /* OuterSubscriber */]));
 68030  //# sourceMappingURL=switchMap.js.map
 68031  
 68032  
 68033  /***/ }),
 68034  /* 319 */
 68035  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 68036  
 68037  "use strict";
 68038  /* harmony export (immutable) */ __webpack_exports__["a"] = take;
 68039  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 68040  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
 68041  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_ArgumentOutOfRangeError__ = __webpack_require__(152);
 68042  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__observable_empty__ = __webpack_require__(39);
 68043  /** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */
 68044  
 68045  
 68046  
 68047  
 68048  function take(count) {
 68049      return function (source) {
 68050          if (count === 0) {
 68051              return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__observable_empty__["a" /* empty */])();
 68052          }
 68053          else {
 68054              return source.lift(new TakeOperator(count));
 68055          }
 68056      };
 68057  }
 68058  var TakeOperator = /*@__PURE__*/ (function () {
 68059      function TakeOperator(total) {
 68060          this.total = total;
 68061          if (this.total < 0) {
 68062              throw new __WEBPACK_IMPORTED_MODULE_2__util_ArgumentOutOfRangeError__["a" /* ArgumentOutOfRangeError */];
 68063          }
 68064      }
 68065      TakeOperator.prototype.call = function (subscriber, source) {
 68066          return source.subscribe(new TakeSubscriber(subscriber, this.total));
 68067      };
 68068      return TakeOperator;
 68069  }());
 68070  var TakeSubscriber = /*@__PURE__*/ (function (_super) {
 68071      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](TakeSubscriber, _super);
 68072      function TakeSubscriber(destination, total) {
 68073          var _this = _super.call(this, destination) || this;
 68074          _this.total = total;
 68075          _this.count = 0;
 68076          return _this;
 68077      }
 68078      TakeSubscriber.prototype._next = function (value) {
 68079          var total = this.total;
 68080          var count = ++this.count;
 68081          if (count <= total) {
 68082              this.destination.next(value);
 68083              if (count === total) {
 68084                  this.destination.complete();
 68085                  this.unsubscribe();
 68086              }
 68087          }
 68088      };
 68089      return TakeSubscriber;
 68090  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
 68091  //# sourceMappingURL=take.js.map
 68092  
 68093  
 68094  /***/ }),
 68095  /* 320 */
 68096  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 68097  
 68098  "use strict";
 68099  /* harmony export (immutable) */ __webpack_exports__["a"] = takeLast;
 68100  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 68101  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
 68102  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_ArgumentOutOfRangeError__ = __webpack_require__(152);
 68103  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__observable_empty__ = __webpack_require__(39);
 68104  /** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */
 68105  
 68106  
 68107  
 68108  
 68109  function takeLast(count) {
 68110      return function takeLastOperatorFunction(source) {
 68111          if (count === 0) {
 68112              return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__observable_empty__["a" /* empty */])();
 68113          }
 68114          else {
 68115              return source.lift(new TakeLastOperator(count));
 68116          }
 68117      };
 68118  }
 68119  var TakeLastOperator = /*@__PURE__*/ (function () {
 68120      function TakeLastOperator(total) {
 68121          this.total = total;
 68122          if (this.total < 0) {
 68123              throw new __WEBPACK_IMPORTED_MODULE_2__util_ArgumentOutOfRangeError__["a" /* ArgumentOutOfRangeError */];
 68124          }
 68125      }
 68126      TakeLastOperator.prototype.call = function (subscriber, source) {
 68127          return source.subscribe(new TakeLastSubscriber(subscriber, this.total));
 68128      };
 68129      return TakeLastOperator;
 68130  }());
 68131  var TakeLastSubscriber = /*@__PURE__*/ (function (_super) {
 68132      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](TakeLastSubscriber, _super);
 68133      function TakeLastSubscriber(destination, total) {
 68134          var _this = _super.call(this, destination) || this;
 68135          _this.total = total;
 68136          _this.ring = new Array();
 68137          _this.count = 0;
 68138          return _this;
 68139      }
 68140      TakeLastSubscriber.prototype._next = function (value) {
 68141          var ring = this.ring;
 68142          var total = this.total;
 68143          var count = this.count++;
 68144          if (ring.length < total) {
 68145              ring.push(value);
 68146          }
 68147          else {
 68148              var index = count % total;
 68149              ring[index] = value;
 68150          }
 68151      };
 68152      TakeLastSubscriber.prototype._complete = function () {
 68153          var destination = this.destination;
 68154          var count = this.count;
 68155          if (count > 0) {
 68156              var total = this.count >= this.total ? this.total : this.count;
 68157              var ring = this.ring;
 68158              for (var i = 0; i < total; i++) {
 68159                  var idx = (count++) % total;
 68160                  destination.next(ring[idx]);
 68161              }
 68162          }
 68163          destination.complete();
 68164      };
 68165      return TakeLastSubscriber;
 68166  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
 68167  //# sourceMappingURL=takeLast.js.map
 68168  
 68169  
 68170  /***/ }),
 68171  /* 321 */
 68172  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 68173  
 68174  "use strict";
 68175  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return rxSubscriber; });
 68176  /* unused harmony export $$rxSubscriber */
 68177  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 68178  var rxSubscriber = typeof Symbol === 'function'
 68179      ? /*@__PURE__*/ Symbol('rxSubscriber')
 68180      : '@@rxSubscriber_' + /*@__PURE__*/ Math.random();
 68181  var $$rxSubscriber = rxSubscriber;
 68182  //# sourceMappingURL=rxSubscriber.js.map
 68183  
 68184  
 68185  /***/ }),
 68186  /* 322 */
 68187  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 68188  
 68189  "use strict";
 68190  /* harmony export (immutable) */ __webpack_exports__["a"] = canReportError;
 68191  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Subscriber__ = __webpack_require__(7);
 68192  /** PURE_IMPORTS_START _Subscriber PURE_IMPORTS_END */
 68193  
 68194  function canReportError(observer) {
 68195      while (observer) {
 68196          var _a = observer, closed_1 = _a.closed, destination = _a.destination, isStopped = _a.isStopped;
 68197          if (closed_1 || isStopped) {
 68198              return false;
 68199          }
 68200          else if (destination && destination instanceof __WEBPACK_IMPORTED_MODULE_0__Subscriber__["a" /* Subscriber */]) {
 68201              observer = destination;
 68202          }
 68203          else {
 68204              observer = null;
 68205          }
 68206      }
 68207      return true;
 68208  }
 68209  //# sourceMappingURL=canReportError.js.map
 68210  
 68211  
 68212  /***/ }),
 68213  /* 323 */
 68214  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 68215  
 68216  "use strict";
 68217  /* harmony export (immutable) */ __webpack_exports__["a"] = hostReportError;
 68218  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 68219  function hostReportError(err) {
 68220      setTimeout(function () { throw err; });
 68221  }
 68222  //# sourceMappingURL=hostReportError.js.map
 68223  
 68224  
 68225  /***/ }),
 68226  /* 324 */
 68227  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 68228  
 68229  "use strict";
 68230  /* harmony export (immutable) */ __webpack_exports__["a"] = pipe;
 68231  /* harmony export (immutable) */ __webpack_exports__["b"] = pipeFromArray;
 68232  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__noop__ = __webpack_require__(192);
 68233  /** PURE_IMPORTS_START _noop PURE_IMPORTS_END */
 68234  
 68235  function pipe() {
 68236      var fns = [];
 68237      for (var _i = 0; _i < arguments.length; _i++) {
 68238          fns[_i] = arguments[_i];
 68239      }
 68240      return pipeFromArray(fns);
 68241  }
 68242  function pipeFromArray(fns) {
 68243      if (!fns) {
 68244          return __WEBPACK_IMPORTED_MODULE_0__noop__["a" /* noop */];
 68245      }
 68246      if (fns.length === 1) {
 68247          return fns[0];
 68248      }
 68249      return function piped(input) {
 68250          return fns.reduce(function (prev, fn) { return fn(prev); }, input);
 68251      };
 68252  }
 68253  //# sourceMappingURL=pipe.js.map
 68254  
 68255  
 68256  /***/ }),
 68257  /* 325 */
 68258  /***/ (function(module, exports, __webpack_require__) {
 68259  
 68260  // Copyright 2017 Joyent, Inc.
 68261  
 68262  module.exports = {
 68263  	DiffieHellman: DiffieHellman,
 68264  	generateECDSA: generateECDSA,
 68265  	generateED25519: generateED25519
 68266  };
 68267  
 68268  var assert = __webpack_require__(16);
 68269  var crypto = __webpack_require__(11);
 68270  var Buffer = __webpack_require__(15).Buffer;
 68271  var algs = __webpack_require__(32);
 68272  var utils = __webpack_require__(26);
 68273  var nacl;
 68274  
 68275  var Key = __webpack_require__(27);
 68276  var PrivateKey = __webpack_require__(33);
 68277  
 68278  var CRYPTO_HAVE_ECDH = (crypto.createECDH !== undefined);
 68279  
 68280  var ecdh, ec, jsbn;
 68281  
 68282  function DiffieHellman(key) {
 68283  	utils.assertCompatible(key, Key, [1, 4], 'key');
 68284  	this._isPriv = PrivateKey.isPrivateKey(key, [1, 3]);
 68285  	this._algo = key.type;
 68286  	this._curve = key.curve;
 68287  	this._key = key;
 68288  	if (key.type === 'dsa') {
 68289  		if (!CRYPTO_HAVE_ECDH) {
 68290  			throw (new Error('Due to bugs in the node 0.10 ' +
 68291  			    'crypto API, node 0.12.x or later is required ' +
 68292  			    'to use DH'));
 68293  		}
 68294  		this._dh = crypto.createDiffieHellman(
 68295  		    key.part.p.data, undefined,
 68296  		    key.part.g.data, undefined);
 68297  		this._p = key.part.p;
 68298  		this._g = key.part.g;
 68299  		if (this._isPriv)
 68300  			this._dh.setPrivateKey(key.part.x.data);
 68301  		this._dh.setPublicKey(key.part.y.data);
 68302  
 68303  	} else if (key.type === 'ecdsa') {
 68304  		if (!CRYPTO_HAVE_ECDH) {
 68305  			if (ecdh === undefined)
 68306  				ecdh = __webpack_require__(381);
 68307  			if (ec === undefined)
 68308  				ec = __webpack_require__(139);
 68309  			if (jsbn === undefined)
 68310  				jsbn = __webpack_require__(81).BigInteger;
 68311  
 68312  			this._ecParams = new X9ECParameters(this._curve);
 68313  
 68314  			if (this._isPriv) {
 68315  				this._priv = new ECPrivate(
 68316  				    this._ecParams, key.part.d.data);
 68317  			}
 68318  			return;
 68319  		}
 68320  
 68321  		var curve = {
 68322  			'nistp256': 'prime256v1',
 68323  			'nistp384': 'secp384r1',
 68324  			'nistp521': 'secp521r1'
 68325  		}[key.curve];
 68326  		this._dh = crypto.createECDH(curve);
 68327  		if (typeof (this._dh) !== 'object' ||
 68328  		    typeof (this._dh.setPrivateKey) !== 'function') {
 68329  			CRYPTO_HAVE_ECDH = false;
 68330  			DiffieHellman.call(this, key);
 68331  			return;
 68332  		}
 68333  		if (this._isPriv)
 68334  			this._dh.setPrivateKey(key.part.d.data);
 68335  		this._dh.setPublicKey(key.part.Q.data);
 68336  
 68337  	} else if (key.type === 'curve25519') {
 68338  		if (nacl === undefined)
 68339  			nacl = __webpack_require__(76);
 68340  
 68341  		if (this._isPriv) {
 68342  			utils.assertCompatible(key, PrivateKey, [1, 5], 'key');
 68343  			this._priv = key.part.k.data;
 68344  		}
 68345  
 68346  	} else {
 68347  		throw (new Error('DH not supported for ' + key.type + ' keys'));
 68348  	}
 68349  }
 68350  
 68351  DiffieHellman.prototype.getPublicKey = function () {
 68352  	if (this._isPriv)
 68353  		return (this._key.toPublic());
 68354  	return (this._key);
 68355  };
 68356  
 68357  DiffieHellman.prototype.getPrivateKey = function () {
 68358  	if (this._isPriv)
 68359  		return (this._key);
 68360  	else
 68361  		return (undefined);
 68362  };
 68363  DiffieHellman.prototype.getKey = DiffieHellman.prototype.getPrivateKey;
 68364  
 68365  DiffieHellman.prototype._keyCheck = function (pk, isPub) {
 68366  	assert.object(pk, 'key');
 68367  	if (!isPub)
 68368  		utils.assertCompatible(pk, PrivateKey, [1, 3], 'key');
 68369  	utils.assertCompatible(pk, Key, [1, 4], 'key');
 68370  
 68371  	if (pk.type !== this._algo) {
 68372  		throw (new Error('A ' + pk.type + ' key cannot be used in ' +
 68373  		    this._algo + ' Diffie-Hellman'));
 68374  	}
 68375  
 68376  	if (pk.curve !== this._curve) {
 68377  		throw (new Error('A key from the ' + pk.curve + ' curve ' +
 68378  		    'cannot be used with a ' + this._curve +
 68379  		    ' Diffie-Hellman'));
 68380  	}
 68381  
 68382  	if (pk.type === 'dsa') {
 68383  		assert.deepEqual(pk.part.p, this._p,
 68384  		    'DSA key prime does not match');
 68385  		assert.deepEqual(pk.part.g, this._g,
 68386  		    'DSA key generator does not match');
 68387  	}
 68388  };
 68389  
 68390  DiffieHellman.prototype.setKey = function (pk) {
 68391  	this._keyCheck(pk);
 68392  
 68393  	if (pk.type === 'dsa') {
 68394  		this._dh.setPrivateKey(pk.part.x.data);
 68395  		this._dh.setPublicKey(pk.part.y.data);
 68396  
 68397  	} else if (pk.type === 'ecdsa') {
 68398  		if (CRYPTO_HAVE_ECDH) {
 68399  			this._dh.setPrivateKey(pk.part.d.data);
 68400  			this._dh.setPublicKey(pk.part.Q.data);
 68401  		} else {
 68402  			this._priv = new ECPrivate(
 68403  			    this._ecParams, pk.part.d.data);
 68404  		}
 68405  
 68406  	} else if (pk.type === 'curve25519') {
 68407  		var k = pk.part.k;
 68408  		if (!pk.part.k)
 68409  			k = pk.part.r;
 68410  		this._priv = k.data;
 68411  		if (this._priv[0] === 0x00)
 68412  			this._priv = this._priv.slice(1);
 68413  		this._priv = this._priv.slice(0, 32);
 68414  	}
 68415  	this._key = pk;
 68416  	this._isPriv = true;
 68417  };
 68418  DiffieHellman.prototype.setPrivateKey = DiffieHellman.prototype.setKey;
 68419  
 68420  DiffieHellman.prototype.computeSecret = function (otherpk) {
 68421  	this._keyCheck(otherpk, true);
 68422  	if (!this._isPriv)
 68423  		throw (new Error('DH exchange has not been initialized with ' +
 68424  		    'a private key yet'));
 68425  
 68426  	var pub;
 68427  	if (this._algo === 'dsa') {
 68428  		return (this._dh.computeSecret(
 68429  		    otherpk.part.y.data));
 68430  
 68431  	} else if (this._algo === 'ecdsa') {
 68432  		if (CRYPTO_HAVE_ECDH) {
 68433  			return (this._dh.computeSecret(
 68434  			    otherpk.part.Q.data));
 68435  		} else {
 68436  			pub = new ECPublic(
 68437  			    this._ecParams, otherpk.part.Q.data);
 68438  			return (this._priv.deriveSharedSecret(pub));
 68439  		}
 68440  
 68441  	} else if (this._algo === 'curve25519') {
 68442  		pub = otherpk.part.A.data;
 68443  		while (pub[0] === 0x00 && pub.length > 32)
 68444  			pub = pub.slice(1);
 68445  		var priv = this._priv;
 68446  		assert.strictEqual(pub.length, 32);
 68447  		assert.strictEqual(priv.length, 32);
 68448  
 68449  		var secret = nacl.box.before(new Uint8Array(pub),
 68450  		    new Uint8Array(priv));
 68451  
 68452  		return (Buffer.from(secret));
 68453  	}
 68454  
 68455  	throw (new Error('Invalid algorithm: ' + this._algo));
 68456  };
 68457  
 68458  DiffieHellman.prototype.generateKey = function () {
 68459  	var parts = [];
 68460  	var priv, pub;
 68461  	if (this._algo === 'dsa') {
 68462  		this._dh.generateKeys();
 68463  
 68464  		parts.push({name: 'p', data: this._p.data});
 68465  		parts.push({name: 'q', data: this._key.part.q.data});
 68466  		parts.push({name: 'g', data: this._g.data});
 68467  		parts.push({name: 'y', data: this._dh.getPublicKey()});
 68468  		parts.push({name: 'x', data: this._dh.getPrivateKey()});
 68469  		this._key = new PrivateKey({
 68470  			type: 'dsa',
 68471  			parts: parts
 68472  		});
 68473  		this._isPriv = true;
 68474  		return (this._key);
 68475  
 68476  	} else if (this._algo === 'ecdsa') {
 68477  		if (CRYPTO_HAVE_ECDH) {
 68478  			this._dh.generateKeys();
 68479  
 68480  			parts.push({name: 'curve',
 68481  			    data: Buffer.from(this._curve)});
 68482  			parts.push({name: 'Q', data: this._dh.getPublicKey()});
 68483  			parts.push({name: 'd', data: this._dh.getPrivateKey()});
 68484  			this._key = new PrivateKey({
 68485  				type: 'ecdsa',
 68486  				curve: this._curve,
 68487  				parts: parts
 68488  			});
 68489  			this._isPriv = true;
 68490  			return (this._key);
 68491  
 68492  		} else {
 68493  			var n = this._ecParams.getN();
 68494  			var r = new jsbn(crypto.randomBytes(n.bitLength()));
 68495  			var n1 = n.subtract(jsbn.ONE);
 68496  			priv = r.mod(n1).add(jsbn.ONE);
 68497  			pub = this._ecParams.getG().multiply(priv);
 68498  
 68499  			priv = Buffer.from(priv.toByteArray());
 68500  			pub = Buffer.from(this._ecParams.getCurve().
 68501  			    encodePointHex(pub), 'hex');
 68502  
 68503  			this._priv = new ECPrivate(this._ecParams, priv);
 68504  
 68505  			parts.push({name: 'curve',
 68506  			    data: Buffer.from(this._curve)});
 68507  			parts.push({name: 'Q', data: pub});
 68508  			parts.push({name: 'd', data: priv});
 68509  
 68510  			this._key = new PrivateKey({
 68511  				type: 'ecdsa',
 68512  				curve: this._curve,
 68513  				parts: parts
 68514  			});
 68515  			this._isPriv = true;
 68516  			return (this._key);
 68517  		}
 68518  
 68519  	} else if (this._algo === 'curve25519') {
 68520  		var pair = nacl.box.keyPair();
 68521  		priv = Buffer.from(pair.secretKey);
 68522  		pub = Buffer.from(pair.publicKey);
 68523  		priv = Buffer.concat([priv, pub]);
 68524  		assert.strictEqual(priv.length, 64);
 68525  		assert.strictEqual(pub.length, 32);
 68526  
 68527  		parts.push({name: 'A', data: pub});
 68528  		parts.push({name: 'k', data: priv});
 68529  		this._key = new PrivateKey({
 68530  			type: 'curve25519',
 68531  			parts: parts
 68532  		});
 68533  		this._isPriv = true;
 68534  		return (this._key);
 68535  	}
 68536  
 68537  	throw (new Error('Invalid algorithm: ' + this._algo));
 68538  };
 68539  DiffieHellman.prototype.generateKeys = DiffieHellman.prototype.generateKey;
 68540  
 68541  /* These are helpers for using ecc-jsbn (for node 0.10 compatibility). */
 68542  
 68543  function X9ECParameters(name) {
 68544  	var params = algs.curves[name];
 68545  	assert.object(params);
 68546  
 68547  	var p = new jsbn(params.p);
 68548  	var a = new jsbn(params.a);
 68549  	var b = new jsbn(params.b);
 68550  	var n = new jsbn(params.n);
 68551  	var h = jsbn.ONE;
 68552  	var curve = new ec.ECCurveFp(p, a, b);
 68553  	var G = curve.decodePointHex(params.G.toString('hex'));
 68554  
 68555  	this.curve = curve;
 68556  	this.g = G;
 68557  	this.n = n;
 68558  	this.h = h;
 68559  }
 68560  X9ECParameters.prototype.getCurve = function () { return (this.curve); };
 68561  X9ECParameters.prototype.getG = function () { return (this.g); };
 68562  X9ECParameters.prototype.getN = function () { return (this.n); };
 68563  X9ECParameters.prototype.getH = function () { return (this.h); };
 68564  
 68565  function ECPublic(params, buffer) {
 68566  	this._params = params;
 68567  	if (buffer[0] === 0x00)
 68568  		buffer = buffer.slice(1);
 68569  	this._pub = params.getCurve().decodePointHex(buffer.toString('hex'));
 68570  }
 68571  
 68572  function ECPrivate(params, buffer) {
 68573  	this._params = params;
 68574  	this._priv = new jsbn(utils.mpNormalize(buffer));
 68575  }
 68576  ECPrivate.prototype.deriveSharedSecret = function (pubKey) {
 68577  	assert.ok(pubKey instanceof ECPublic);
 68578  	var S = pubKey._pub.multiply(this._priv);
 68579  	return (Buffer.from(S.getX().toBigInteger().toByteArray()));
 68580  };
 68581  
 68582  function generateED25519() {
 68583  	if (nacl === undefined)
 68584  		nacl = __webpack_require__(76);
 68585  
 68586  	var pair = nacl.sign.keyPair();
 68587  	var priv = Buffer.from(pair.secretKey);
 68588  	var pub = Buffer.from(pair.publicKey);
 68589  	assert.strictEqual(priv.length, 64);
 68590  	assert.strictEqual(pub.length, 32);
 68591  
 68592  	var parts = [];
 68593  	parts.push({name: 'A', data: pub});
 68594  	parts.push({name: 'k', data: priv.slice(0, 32)});
 68595  	var key = new PrivateKey({
 68596  		type: 'ed25519',
 68597  		parts: parts
 68598  	});
 68599  	return (key);
 68600  }
 68601  
 68602  /* Generates a new ECDSA private key on a given curve. */
 68603  function generateECDSA(curve) {
 68604  	var parts = [];
 68605  	var key;
 68606  
 68607  	if (CRYPTO_HAVE_ECDH) {
 68608  		/*
 68609  		 * Node crypto doesn't expose key generation directly, but the
 68610  		 * ECDH instances can generate keys. It turns out this just
 68611  		 * calls into the OpenSSL generic key generator, and we can
 68612  		 * read its output happily without doing an actual DH. So we
 68613  		 * use that here.
 68614  		 */
 68615  		var osCurve = {
 68616  			'nistp256': 'prime256v1',
 68617  			'nistp384': 'secp384r1',
 68618  			'nistp521': 'secp521r1'
 68619  		}[curve];
 68620  
 68621  		var dh = crypto.createECDH(osCurve);
 68622  		dh.generateKeys();
 68623  
 68624  		parts.push({name: 'curve',
 68625  		    data: Buffer.from(curve)});
 68626  		parts.push({name: 'Q', data: dh.getPublicKey()});
 68627  		parts.push({name: 'd', data: dh.getPrivateKey()});
 68628  
 68629  		key = new PrivateKey({
 68630  			type: 'ecdsa',
 68631  			curve: curve,
 68632  			parts: parts
 68633  		});
 68634  		return (key);
 68635  	} else {
 68636  		if (ecdh === undefined)
 68637  			ecdh = __webpack_require__(381);
 68638  		if (ec === undefined)
 68639  			ec = __webpack_require__(139);
 68640  		if (jsbn === undefined)
 68641  			jsbn = __webpack_require__(81).BigInteger;
 68642  
 68643  		var ecParams = new X9ECParameters(curve);
 68644  
 68645  		/* This algorithm taken from FIPS PUB 186-4 (section B.4.1) */
 68646  		var n = ecParams.getN();
 68647  		/*
 68648  		 * The crypto.randomBytes() function can only give us whole
 68649  		 * bytes, so taking a nod from X9.62, we round up.
 68650  		 */
 68651  		var cByteLen = Math.ceil((n.bitLength() + 64) / 8);
 68652  		var c = new jsbn(crypto.randomBytes(cByteLen));
 68653  
 68654  		var n1 = n.subtract(jsbn.ONE);
 68655  		var priv = c.mod(n1).add(jsbn.ONE);
 68656  		var pub = ecParams.getG().multiply(priv);
 68657  
 68658  		priv = Buffer.from(priv.toByteArray());
 68659  		pub = Buffer.from(ecParams.getCurve().
 68660  		    encodePointHex(pub), 'hex');
 68661  
 68662  		parts.push({name: 'curve', data: Buffer.from(curve)});
 68663  		parts.push({name: 'Q', data: pub});
 68664  		parts.push({name: 'd', data: priv});
 68665  
 68666  		key = new PrivateKey({
 68667  			type: 'ecdsa',
 68668  			curve: curve,
 68669  			parts: parts
 68670  		});
 68671  		return (key);
 68672  	}
 68673  }
 68674  
 68675  
 68676  /***/ }),
 68677  /* 326 */
 68678  /***/ (function(module, exports, __webpack_require__) {
 68679  
 68680  // Copyright 2017 Joyent, Inc.
 68681  
 68682  module.exports = {
 68683  	read: read,
 68684  	write: write
 68685  };
 68686  
 68687  var assert = __webpack_require__(16);
 68688  var Buffer = __webpack_require__(15).Buffer;
 68689  var Key = __webpack_require__(27);
 68690  var PrivateKey = __webpack_require__(33);
 68691  var utils = __webpack_require__(26);
 68692  var SSHBuffer = __webpack_require__(159);
 68693  var Dhe = __webpack_require__(325);
 68694  
 68695  var supportedAlgos = {
 68696  	'rsa-sha1' : 5,
 68697  	'rsa-sha256' : 8,
 68698  	'rsa-sha512' : 10,
 68699  	'ecdsa-p256-sha256' : 13,
 68700  	'ecdsa-p384-sha384' : 14
 68701  	/*
 68702  	 * ed25519 is hypothetically supported with id 15
 68703  	 * but the common tools available don't appear to be
 68704  	 * capable of generating/using ed25519 keys
 68705  	 */
 68706  };
 68707  
 68708  var supportedAlgosById = {};
 68709  Object.keys(supportedAlgos).forEach(function (k) {
 68710  	supportedAlgosById[supportedAlgos[k]] = k.toUpperCase();
 68711  });
 68712  
 68713  function read(buf, options) {
 68714  	if (typeof (buf) !== 'string') {
 68715  		assert.buffer(buf, 'buf');
 68716  		buf = buf.toString('ascii');
 68717  	}
 68718  	var lines = buf.split('\n');
 68719  	if (lines[0].match(/^Private-key-format\: v1/)) {
 68720  		var algElems = lines[1].split(' ');
 68721  		var algoNum = parseInt(algElems[1], 10);
 68722  		var algoName = algElems[2];
 68723  		if (!supportedAlgosById[algoNum])
 68724  			throw (new Error('Unsupported algorithm: ' + algoName));
 68725  		return (readDNSSECPrivateKey(algoNum, lines.slice(2)));
 68726  	}
 68727  
 68728  	// skip any comment-lines
 68729  	var line = 0;
 68730  	/* JSSTYLED */
 68731  	while (lines[line].match(/^\;/))
 68732  		line++;
 68733  	// we should now have *one single* line left with our KEY on it.
 68734  	if ((lines[line].match(/\. IN KEY /) ||
 68735  	    lines[line].match(/\. IN DNSKEY /)) && lines[line+1].length === 0) {
 68736  		return (readRFC3110(lines[line]));
 68737  	}
 68738  	throw (new Error('Cannot parse dnssec key'));
 68739  }
 68740  
 68741  function readRFC3110(keyString) {
 68742  	var elems = keyString.split(' ');
 68743  	//unused var flags = parseInt(elems[3], 10);
 68744  	//unused var protocol = parseInt(elems[4], 10);
 68745  	var algorithm = parseInt(elems[5], 10);
 68746  	if (!supportedAlgosById[algorithm])
 68747  		throw (new Error('Unsupported algorithm: ' + algorithm));
 68748  	var base64key = elems.slice(6, elems.length).join();
 68749  	var keyBuffer = Buffer.from(base64key, 'base64');
 68750  	if (supportedAlgosById[algorithm].match(/^RSA-/)) {
 68751  		// join the rest of the body into a single base64-blob
 68752  		var publicExponentLen = keyBuffer.readUInt8(0);
 68753  		if (publicExponentLen != 3 && publicExponentLen != 1)
 68754  			throw (new Error('Cannot parse dnssec key: ' +
 68755  			    'unsupported exponent length'));
 68756  
 68757  		var publicExponent = keyBuffer.slice(1, publicExponentLen+1);
 68758  		publicExponent = utils.mpNormalize(publicExponent);
 68759  		var modulus = keyBuffer.slice(1+publicExponentLen);
 68760  		modulus = utils.mpNormalize(modulus);
 68761  		// now, make the key
 68762  		var rsaKey = {
 68763  			type: 'rsa',
 68764  			parts: []
 68765  		};
 68766  		rsaKey.parts.push({ name: 'e', data: publicExponent});
 68767  		rsaKey.parts.push({ name: 'n', data: modulus});
 68768  		return (new Key(rsaKey));
 68769  	}
 68770  	if (supportedAlgosById[algorithm] === 'ECDSA-P384-SHA384' ||
 68771  	    supportedAlgosById[algorithm] === 'ECDSA-P256-SHA256') {
 68772  		var curve = 'nistp384';
 68773  		var size = 384;
 68774  		if (supportedAlgosById[algorithm].match(/^ECDSA-P256-SHA256/)) {
 68775  			curve = 'nistp256';
 68776  			size = 256;
 68777  		}
 68778  
 68779  		var ecdsaKey = {
 68780  			type: 'ecdsa',
 68781  			curve: curve,
 68782  			size: size,
 68783  			parts: [
 68784  				{name: 'curve', data: Buffer.from(curve) },
 68785  				{name: 'Q', data: utils.ecNormalize(keyBuffer) }
 68786  			]
 68787  		};
 68788  		return (new Key(ecdsaKey));
 68789  	}
 68790  	throw (new Error('Unsupported algorithm: ' +
 68791  	    supportedAlgosById[algorithm]));
 68792  }
 68793  
 68794  function elementToBuf(e) {
 68795  	return (Buffer.from(e.split(' ')[1], 'base64'));
 68796  }
 68797  
 68798  function readDNSSECRSAPrivateKey(elements) {
 68799  	var rsaParams = {};
 68800  	elements.forEach(function (element) {
 68801  		if (element.split(' ')[0] === 'Modulus:')
 68802  			rsaParams['n'] = elementToBuf(element);
 68803  		else if (element.split(' ')[0] === 'PublicExponent:')
 68804  			rsaParams['e'] = elementToBuf(element);
 68805  		else if (element.split(' ')[0] === 'PrivateExponent:')
 68806  			rsaParams['d'] = elementToBuf(element);
 68807  		else if (element.split(' ')[0] === 'Prime1:')
 68808  			rsaParams['p'] = elementToBuf(element);
 68809  		else if (element.split(' ')[0] === 'Prime2:')
 68810  			rsaParams['q'] = elementToBuf(element);
 68811  		else if (element.split(' ')[0] === 'Exponent1:')
 68812  			rsaParams['dmodp'] = elementToBuf(element);
 68813  		else if (element.split(' ')[0] === 'Exponent2:')
 68814  			rsaParams['dmodq'] = elementToBuf(element);
 68815  		else if (element.split(' ')[0] === 'Coefficient:')
 68816  			rsaParams['iqmp'] = elementToBuf(element);
 68817  	});
 68818  	// now, make the key
 68819  	var key = {
 68820  		type: 'rsa',
 68821  		parts: [
 68822  			{ name: 'e', data: utils.mpNormalize(rsaParams['e'])},
 68823  			{ name: 'n', data: utils.mpNormalize(rsaParams['n'])},
 68824  			{ name: 'd', data: utils.mpNormalize(rsaParams['d'])},
 68825  			{ name: 'p', data: utils.mpNormalize(rsaParams['p'])},
 68826  			{ name: 'q', data: utils.mpNormalize(rsaParams['q'])},
 68827  			{ name: 'dmodp',
 68828  			    data: utils.mpNormalize(rsaParams['dmodp'])},
 68829  			{ name: 'dmodq',
 68830  			    data: utils.mpNormalize(rsaParams['dmodq'])},
 68831  			{ name: 'iqmp',
 68832  			    data: utils.mpNormalize(rsaParams['iqmp'])}
 68833  		]
 68834  	};
 68835  	return (new PrivateKey(key));
 68836  }
 68837  
 68838  function readDNSSECPrivateKey(alg, elements) {
 68839  	if (supportedAlgosById[alg].match(/^RSA-/)) {
 68840  		return (readDNSSECRSAPrivateKey(elements));
 68841  	}
 68842  	if (supportedAlgosById[alg] === 'ECDSA-P384-SHA384' ||
 68843  	    supportedAlgosById[alg] === 'ECDSA-P256-SHA256') {
 68844  		var d = Buffer.from(elements[0].split(' ')[1], 'base64');
 68845  		var curve = 'nistp384';
 68846  		var size = 384;
 68847  		if (supportedAlgosById[alg] === 'ECDSA-P256-SHA256') {
 68848  			curve = 'nistp256';
 68849  			size = 256;
 68850  		}
 68851  		// DNSSEC generates the public-key on the fly (go calculate it)
 68852  		var publicKey = utils.publicFromPrivateECDSA(curve, d);
 68853  		var Q = publicKey.part['Q'].data;
 68854  		var ecdsaKey = {
 68855  			type: 'ecdsa',
 68856  			curve: curve,
 68857  			size: size,
 68858  			parts: [
 68859  				{name: 'curve', data: Buffer.from(curve) },
 68860  				{name: 'd', data: d },
 68861  				{name: 'Q', data: Q }
 68862  			]
 68863  		};
 68864  		return (new PrivateKey(ecdsaKey));
 68865  	}
 68866  	throw (new Error('Unsupported algorithm: ' + supportedAlgosById[alg]));
 68867  }
 68868  
 68869  function dnssecTimestamp(date) {
 68870  	var year = date.getFullYear() + ''; //stringify
 68871  	var month = (date.getMonth() + 1);
 68872  	var timestampStr = year + month + date.getUTCDate();
 68873  	timestampStr += '' + date.getUTCHours() + date.getUTCMinutes();
 68874  	timestampStr += date.getUTCSeconds();
 68875  	return (timestampStr);
 68876  }
 68877  
 68878  function rsaAlgFromOptions(opts) {
 68879  	if (!opts || !opts.hashAlgo || opts.hashAlgo === 'sha1')
 68880  		return ('5 (RSASHA1)');
 68881  	else if (opts.hashAlgo === 'sha256')
 68882  		return ('8 (RSASHA256)');
 68883  	else if (opts.hashAlgo === 'sha512')
 68884  		return ('10 (RSASHA512)');
 68885  	else
 68886  		throw (new Error('Unknown or unsupported hash: ' +
 68887  		    opts.hashAlgo));
 68888  }
 68889  
 68890  function writeRSA(key, options) {
 68891  	// if we're missing parts, add them.
 68892  	if (!key.part.dmodp || !key.part.dmodq) {
 68893  		utils.addRSAMissing(key);
 68894  	}
 68895  
 68896  	var out = '';
 68897  	out += 'Private-key-format: v1.3\n';
 68898  	out += 'Algorithm: ' + rsaAlgFromOptions(options) + '\n';
 68899  	var n = utils.mpDenormalize(key.part['n'].data);
 68900  	out += 'Modulus: ' + n.toString('base64') + '\n';
 68901  	var e = utils.mpDenormalize(key.part['e'].data);
 68902  	out += 'PublicExponent: ' + e.toString('base64') + '\n';
 68903  	var d = utils.mpDenormalize(key.part['d'].data);
 68904  	out += 'PrivateExponent: ' + d.toString('base64') + '\n';
 68905  	var p = utils.mpDenormalize(key.part['p'].data);
 68906  	out += 'Prime1: ' + p.toString('base64') + '\n';
 68907  	var q = utils.mpDenormalize(key.part['q'].data);
 68908  	out += 'Prime2: ' + q.toString('base64') + '\n';
 68909  	var dmodp = utils.mpDenormalize(key.part['dmodp'].data);
 68910  	out += 'Exponent1: ' + dmodp.toString('base64') + '\n';
 68911  	var dmodq = utils.mpDenormalize(key.part['dmodq'].data);
 68912  	out += 'Exponent2: ' + dmodq.toString('base64') + '\n';
 68913  	var iqmp = utils.mpDenormalize(key.part['iqmp'].data);
 68914  	out += 'Coefficient: ' + iqmp.toString('base64') + '\n';
 68915  	// Assume that we're valid as-of now
 68916  	var timestamp = new Date();
 68917  	out += 'Created: ' + dnssecTimestamp(timestamp) + '\n';
 68918  	out += 'Publish: ' + dnssecTimestamp(timestamp) + '\n';
 68919  	out += 'Activate: ' + dnssecTimestamp(timestamp) + '\n';
 68920  	return (Buffer.from(out, 'ascii'));
 68921  }
 68922  
 68923  function writeECDSA(key, options) {
 68924  	var out = '';
 68925  	out += 'Private-key-format: v1.3\n';
 68926  
 68927  	if (key.curve === 'nistp256') {
 68928  		out += 'Algorithm: 13 (ECDSAP256SHA256)\n';
 68929  	} else if (key.curve === 'nistp384') {
 68930  		out += 'Algorithm: 14 (ECDSAP384SHA384)\n';
 68931  	} else {
 68932  		throw (new Error('Unsupported curve'));
 68933  	}
 68934  	var base64Key = key.part['d'].data.toString('base64');
 68935  	out += 'PrivateKey: ' + base64Key + '\n';
 68936  
 68937  	// Assume that we're valid as-of now
 68938  	var timestamp = new Date();
 68939  	out += 'Created: ' + dnssecTimestamp(timestamp) + '\n';
 68940  	out += 'Publish: ' + dnssecTimestamp(timestamp) + '\n';
 68941  	out += 'Activate: ' + dnssecTimestamp(timestamp) + '\n';
 68942  
 68943  	return (Buffer.from(out, 'ascii'));
 68944  }
 68945  
 68946  function write(key, options) {
 68947  	if (PrivateKey.isPrivateKey(key)) {
 68948  		if (key.type === 'rsa') {
 68949  			return (writeRSA(key, options));
 68950  		} else if (key.type === 'ecdsa') {
 68951  			return (writeECDSA(key, options));
 68952  		} else {
 68953  			throw (new Error('Unsupported algorithm: ' + key.type));
 68954  		}
 68955  	} else if (Key.isKey(key)) {
 68956  		/*
 68957  		 * RFC3110 requires a keyname, and a keytype, which we
 68958  		 * don't really have a mechanism for specifying such
 68959  		 * additional metadata.
 68960  		 */
 68961  		throw (new Error('Format "dnssec" only supports ' +
 68962  		    'writing private keys'));
 68963  	} else {
 68964  		throw (new Error('key is not a Key or PrivateKey'));
 68965  	}
 68966  }
 68967  
 68968  
 68969  /***/ }),
 68970  /* 327 */
 68971  /***/ (function(module, exports, __webpack_require__) {
 68972  
 68973  // Copyright 2015 Joyent, Inc.
 68974  
 68975  module.exports = {
 68976  	read: read,
 68977  	readPkcs1: readPkcs1,
 68978  	write: write,
 68979  	writePkcs1: writePkcs1
 68980  };
 68981  
 68982  var assert = __webpack_require__(16);
 68983  var asn1 = __webpack_require__(66);
 68984  var Buffer = __webpack_require__(15).Buffer;
 68985  var algs = __webpack_require__(32);
 68986  var utils = __webpack_require__(26);
 68987  
 68988  var Key = __webpack_require__(27);
 68989  var PrivateKey = __webpack_require__(33);
 68990  var pem = __webpack_require__(86);
 68991  
 68992  var pkcs8 = __webpack_require__(157);
 68993  var readECDSACurve = pkcs8.readECDSACurve;
 68994  
 68995  function read(buf, options) {
 68996  	return (pem.read(buf, options, 'pkcs1'));
 68997  }
 68998  
 68999  function write(key, options) {
 69000  	return (pem.write(key, options, 'pkcs1'));
 69001  }
 69002  
 69003  /* Helper to read in a single mpint */
 69004  function readMPInt(der, nm) {
 69005  	assert.strictEqual(der.peek(), asn1.Ber.Integer,
 69006  	    nm + ' is not an Integer');
 69007  	return (utils.mpNormalize(der.readString(asn1.Ber.Integer, true)));
 69008  }
 69009  
 69010  function readPkcs1(alg, type, der) {
 69011  	switch (alg) {
 69012  	case 'RSA':
 69013  		if (type === 'public')
 69014  			return (readPkcs1RSAPublic(der));
 69015  		else if (type === 'private')
 69016  			return (readPkcs1RSAPrivate(der));
 69017  		throw (new Error('Unknown key type: ' + type));
 69018  	case 'DSA':
 69019  		if (type === 'public')
 69020  			return (readPkcs1DSAPublic(der));
 69021  		else if (type === 'private')
 69022  			return (readPkcs1DSAPrivate(der));
 69023  		throw (new Error('Unknown key type: ' + type));
 69024  	case 'EC':
 69025  	case 'ECDSA':
 69026  		if (type === 'private')
 69027  			return (readPkcs1ECDSAPrivate(der));
 69028  		else if (type === 'public')
 69029  			return (readPkcs1ECDSAPublic(der));
 69030  		throw (new Error('Unknown key type: ' + type));
 69031  	case 'EDDSA':
 69032  	case 'EdDSA':
 69033  		if (type === 'private')
 69034  			return (readPkcs1EdDSAPrivate(der));
 69035  		throw (new Error(type + ' keys not supported with EdDSA'));
 69036  	default:
 69037  		throw (new Error('Unknown key algo: ' + alg));
 69038  	}
 69039  }
 69040  
 69041  function readPkcs1RSAPublic(der) {
 69042  	// modulus and exponent
 69043  	var n = readMPInt(der, 'modulus');
 69044  	var e = readMPInt(der, 'exponent');
 69045  
 69046  	// now, make the key
 69047  	var key = {
 69048  		type: 'rsa',
 69049  		parts: [
 69050  			{ name: 'e', data: e },
 69051  			{ name: 'n', data: n }
 69052  		]
 69053  	};
 69054  
 69055  	return (new Key(key));
 69056  }
 69057  
 69058  function readPkcs1RSAPrivate(der) {
 69059  	var version = readMPInt(der, 'version');
 69060  	assert.strictEqual(version[0], 0);
 69061  
 69062  	// modulus then public exponent
 69063  	var n = readMPInt(der, 'modulus');
 69064  	var e = readMPInt(der, 'public exponent');
 69065  	var d = readMPInt(der, 'private exponent');
 69066  	var p = readMPInt(der, 'prime1');
 69067  	var q = readMPInt(der, 'prime2');
 69068  	var dmodp = readMPInt(der, 'exponent1');
 69069  	var dmodq = readMPInt(der, 'exponent2');
 69070  	var iqmp = readMPInt(der, 'iqmp');
 69071  
 69072  	// now, make the key
 69073  	var key = {
 69074  		type: 'rsa',
 69075  		parts: [
 69076  			{ name: 'n', data: n },
 69077  			{ name: 'e', data: e },
 69078  			{ name: 'd', data: d },
 69079  			{ name: 'iqmp', data: iqmp },
 69080  			{ name: 'p', data: p },
 69081  			{ name: 'q', data: q },
 69082  			{ name: 'dmodp', data: dmodp },
 69083  			{ name: 'dmodq', data: dmodq }
 69084  		]
 69085  	};
 69086  
 69087  	return (new PrivateKey(key));
 69088  }
 69089  
 69090  function readPkcs1DSAPrivate(der) {
 69091  	var version = readMPInt(der, 'version');
 69092  	assert.strictEqual(version.readUInt8(0), 0);
 69093  
 69094  	var p = readMPInt(der, 'p');
 69095  	var q = readMPInt(der, 'q');
 69096  	var g = readMPInt(der, 'g');
 69097  	var y = readMPInt(der, 'y');
 69098  	var x = readMPInt(der, 'x');
 69099  
 69100  	// now, make the key
 69101  	var key = {
 69102  		type: 'dsa',
 69103  		parts: [
 69104  			{ name: 'p', data: p },
 69105  			{ name: 'q', data: q },
 69106  			{ name: 'g', data: g },
 69107  			{ name: 'y', data: y },
 69108  			{ name: 'x', data: x }
 69109  		]
 69110  	};
 69111  
 69112  	return (new PrivateKey(key));
 69113  }
 69114  
 69115  function readPkcs1EdDSAPrivate(der) {
 69116  	var version = readMPInt(der, 'version');
 69117  	assert.strictEqual(version.readUInt8(0), 1);
 69118  
 69119  	// private key
 69120  	var k = der.readString(asn1.Ber.OctetString, true);
 69121  
 69122  	der.readSequence(0xa0);
 69123  	var oid = der.readOID();
 69124  	assert.strictEqual(oid, '1.3.101.112', 'the ed25519 curve identifier');
 69125  
 69126  	der.readSequence(0xa1);
 69127  	var A = utils.readBitString(der);
 69128  
 69129  	var key = {
 69130  		type: 'ed25519',
 69131  		parts: [
 69132  			{ name: 'A', data: utils.zeroPadToLength(A, 32) },
 69133  			{ name: 'k', data: k }
 69134  		]
 69135  	};
 69136  
 69137  	return (new PrivateKey(key));
 69138  }
 69139  
 69140  function readPkcs1DSAPublic(der) {
 69141  	var y = readMPInt(der, 'y');
 69142  	var p = readMPInt(der, 'p');
 69143  	var q = readMPInt(der, 'q');
 69144  	var g = readMPInt(der, 'g');
 69145  
 69146  	var key = {
 69147  		type: 'dsa',
 69148  		parts: [
 69149  			{ name: 'y', data: y },
 69150  			{ name: 'p', data: p },
 69151  			{ name: 'q', data: q },
 69152  			{ name: 'g', data: g }
 69153  		]
 69154  	};
 69155  
 69156  	return (new Key(key));
 69157  }
 69158  
 69159  function readPkcs1ECDSAPublic(der) {
 69160  	der.readSequence();
 69161  
 69162  	var oid = der.readOID();
 69163  	assert.strictEqual(oid, '1.2.840.10045.2.1', 'must be ecPublicKey');
 69164  
 69165  	var curveOid = der.readOID();
 69166  
 69167  	var curve;
 69168  	var curves = Object.keys(algs.curves);
 69169  	for (var j = 0; j < curves.length; ++j) {
 69170  		var c = curves[j];
 69171  		var cd = algs.curves[c];
 69172  		if (cd.pkcs8oid === curveOid) {
 69173  			curve = c;
 69174  			break;
 69175  		}
 69176  	}
 69177  	assert.string(curve, 'a known ECDSA named curve');
 69178  
 69179  	var Q = der.readString(asn1.Ber.BitString, true);
 69180  	Q = utils.ecNormalize(Q);
 69181  
 69182  	var key = {
 69183  		type: 'ecdsa',
 69184  		parts: [
 69185  			{ name: 'curve', data: Buffer.from(curve) },
 69186  			{ name: 'Q', data: Q }
 69187  		]
 69188  	};
 69189  
 69190  	return (new Key(key));
 69191  }
 69192  
 69193  function readPkcs1ECDSAPrivate(der) {
 69194  	var version = readMPInt(der, 'version');
 69195  	assert.strictEqual(version.readUInt8(0), 1);
 69196  
 69197  	// private key
 69198  	var d = der.readString(asn1.Ber.OctetString, true);
 69199  
 69200  	der.readSequence(0xa0);
 69201  	var curve = readECDSACurve(der);
 69202  	assert.string(curve, 'a known elliptic curve');
 69203  
 69204  	der.readSequence(0xa1);
 69205  	var Q = der.readString(asn1.Ber.BitString, true);
 69206  	Q = utils.ecNormalize(Q);
 69207  
 69208  	var key = {
 69209  		type: 'ecdsa',
 69210  		parts: [
 69211  			{ name: 'curve', data: Buffer.from(curve) },
 69212  			{ name: 'Q', data: Q },
 69213  			{ name: 'd', data: d }
 69214  		]
 69215  	};
 69216  
 69217  	return (new PrivateKey(key));
 69218  }
 69219  
 69220  function writePkcs1(der, key) {
 69221  	der.startSequence();
 69222  
 69223  	switch (key.type) {
 69224  	case 'rsa':
 69225  		if (PrivateKey.isPrivateKey(key))
 69226  			writePkcs1RSAPrivate(der, key);
 69227  		else
 69228  			writePkcs1RSAPublic(der, key);
 69229  		break;
 69230  	case 'dsa':
 69231  		if (PrivateKey.isPrivateKey(key))
 69232  			writePkcs1DSAPrivate(der, key);
 69233  		else
 69234  			writePkcs1DSAPublic(der, key);
 69235  		break;
 69236  	case 'ecdsa':
 69237  		if (PrivateKey.isPrivateKey(key))
 69238  			writePkcs1ECDSAPrivate(der, key);
 69239  		else
 69240  			writePkcs1ECDSAPublic(der, key);
 69241  		break;
 69242  	case 'ed25519':
 69243  		if (PrivateKey.isPrivateKey(key))
 69244  			writePkcs1EdDSAPrivate(der, key);
 69245  		else
 69246  			writePkcs1EdDSAPublic(der, key);
 69247  		break;
 69248  	default:
 69249  		throw (new Error('Unknown key algo: ' + key.type));
 69250  	}
 69251  
 69252  	der.endSequence();
 69253  }
 69254  
 69255  function writePkcs1RSAPublic(der, key) {
 69256  	der.writeBuffer(key.part.n.data, asn1.Ber.Integer);
 69257  	der.writeBuffer(key.part.e.data, asn1.Ber.Integer);
 69258  }
 69259  
 69260  function writePkcs1RSAPrivate(der, key) {
 69261  	var ver = Buffer.from([0]);
 69262  	der.writeBuffer(ver, asn1.Ber.Integer);
 69263  
 69264  	der.writeBuffer(key.part.n.data, asn1.Ber.Integer);
 69265  	der.writeBuffer(key.part.e.data, asn1.Ber.Integer);
 69266  	der.writeBuffer(key.part.d.data, asn1.Ber.Integer);
 69267  	der.writeBuffer(key.part.p.data, asn1.Ber.Integer);
 69268  	der.writeBuffer(key.part.q.data, asn1.Ber.Integer);
 69269  	if (!key.part.dmodp || !key.part.dmodq)
 69270  		utils.addRSAMissing(key);
 69271  	der.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer);
 69272  	der.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer);
 69273  	der.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer);
 69274  }
 69275  
 69276  function writePkcs1DSAPrivate(der, key) {
 69277  	var ver = Buffer.from([0]);
 69278  	der.writeBuffer(ver, asn1.Ber.Integer);
 69279  
 69280  	der.writeBuffer(key.part.p.data, asn1.Ber.Integer);
 69281  	der.writeBuffer(key.part.q.data, asn1.Ber.Integer);
 69282  	der.writeBuffer(key.part.g.data, asn1.Ber.Integer);
 69283  	der.writeBuffer(key.part.y.data, asn1.Ber.Integer);
 69284  	der.writeBuffer(key.part.x.data, asn1.Ber.Integer);
 69285  }
 69286  
 69287  function writePkcs1DSAPublic(der, key) {
 69288  	der.writeBuffer(key.part.y.data, asn1.Ber.Integer);
 69289  	der.writeBuffer(key.part.p.data, asn1.Ber.Integer);
 69290  	der.writeBuffer(key.part.q.data, asn1.Ber.Integer);
 69291  	der.writeBuffer(key.part.g.data, asn1.Ber.Integer);
 69292  }
 69293  
 69294  function writePkcs1ECDSAPublic(der, key) {
 69295  	der.startSequence();
 69296  
 69297  	der.writeOID('1.2.840.10045.2.1'); /* ecPublicKey */
 69298  	var curve = key.part.curve.data.toString();
 69299  	var curveOid = algs.curves[curve].pkcs8oid;
 69300  	assert.string(curveOid, 'a known ECDSA named curve');
 69301  	der.writeOID(curveOid);
 69302  
 69303  	der.endSequence();
 69304  
 69305  	var Q = utils.ecNormalize(key.part.Q.data, true);
 69306  	der.writeBuffer(Q, asn1.Ber.BitString);
 69307  }
 69308  
 69309  function writePkcs1ECDSAPrivate(der, key) {
 69310  	var ver = Buffer.from([1]);
 69311  	der.writeBuffer(ver, asn1.Ber.Integer);
 69312  
 69313  	der.writeBuffer(key.part.d.data, asn1.Ber.OctetString);
 69314  
 69315  	der.startSequence(0xa0);
 69316  	var curve = key.part.curve.data.toString();
 69317  	var curveOid = algs.curves[curve].pkcs8oid;
 69318  	assert.string(curveOid, 'a known ECDSA named curve');
 69319  	der.writeOID(curveOid);
 69320  	der.endSequence();
 69321  
 69322  	der.startSequence(0xa1);
 69323  	var Q = utils.ecNormalize(key.part.Q.data, true);
 69324  	der.writeBuffer(Q, asn1.Ber.BitString);
 69325  	der.endSequence();
 69326  }
 69327  
 69328  function writePkcs1EdDSAPrivate(der, key) {
 69329  	var ver = Buffer.from([1]);
 69330  	der.writeBuffer(ver, asn1.Ber.Integer);
 69331  
 69332  	der.writeBuffer(key.part.k.data, asn1.Ber.OctetString);
 69333  
 69334  	der.startSequence(0xa0);
 69335  	der.writeOID('1.3.101.112');
 69336  	der.endSequence();
 69337  
 69338  	der.startSequence(0xa1);
 69339  	utils.writeBitString(der, key.part.A.data);
 69340  	der.endSequence();
 69341  }
 69342  
 69343  function writePkcs1EdDSAPublic(der, key) {
 69344  	throw (new Error('Public keys are not supported for EdDSA PKCS#1'));
 69345  }
 69346  
 69347  
 69348  /***/ }),
 69349  /* 328 */
 69350  /***/ (function(module, exports, __webpack_require__) {
 69351  
 69352  // Copyright 2015 Joyent, Inc.
 69353  
 69354  var Key = __webpack_require__(27);
 69355  var Fingerprint = __webpack_require__(156);
 69356  var Signature = __webpack_require__(75);
 69357  var PrivateKey = __webpack_require__(33);
 69358  var Certificate = __webpack_require__(155);
 69359  var Identity = __webpack_require__(158);
 69360  var errs = __webpack_require__(74);
 69361  
 69362  module.exports = {
 69363  	/* top-level classes */
 69364  	Key: Key,
 69365  	parseKey: Key.parse,
 69366  	Fingerprint: Fingerprint,
 69367  	parseFingerprint: Fingerprint.parse,
 69368  	Signature: Signature,
 69369  	parseSignature: Signature.parse,
 69370  	PrivateKey: PrivateKey,
 69371  	parsePrivateKey: PrivateKey.parse,
 69372  	generatePrivateKey: PrivateKey.generate,
 69373  	Certificate: Certificate,
 69374  	parseCertificate: Certificate.parse,
 69375  	createSelfSignedCertificate: Certificate.createSelfSigned,
 69376  	createCertificate: Certificate.create,
 69377  	Identity: Identity,
 69378  	identityFromDN: Identity.parseDN,
 69379  	identityForHost: Identity.forHost,
 69380  	identityForUser: Identity.forUser,
 69381  	identityForEmail: Identity.forEmail,
 69382  
 69383  	/* errors */
 69384  	FingerprintFormatError: errs.FingerprintFormatError,
 69385  	InvalidAlgorithmError: errs.InvalidAlgorithmError,
 69386  	KeyParseError: errs.KeyParseError,
 69387  	SignatureParseError: errs.SignatureParseError,
 69388  	KeyEncryptedError: errs.KeyEncryptedError,
 69389  	CertificateParseError: errs.CertificateParseError
 69390  };
 69391  
 69392  
 69393  /***/ }),
 69394  /* 329 */
 69395  /***/ (function(module, exports, __webpack_require__) {
 69396  
 69397  "use strict";
 69398  
 69399  const ansiRegex = __webpack_require__(948);
 69400  
 69401  module.exports = input => typeof input === 'string' ? input.replace(ansiRegex(), '') : input;
 69402  
 69403  
 69404  /***/ }),
 69405  /* 330 */
 69406  /***/ (function(module, exports, __webpack_require__) {
 69407  
 69408  "use strict";
 69409  
 69410  var hasFlag = __webpack_require__(273);
 69411  
 69412  var support = function (level) {
 69413  	if (level === 0) {
 69414  		return false;
 69415  	}
 69416  
 69417  	return {
 69418  		level: level,
 69419  		hasBasic: true,
 69420  		has256: level >= 2,
 69421  		has16m: level >= 3
 69422  	};
 69423  };
 69424  
 69425  var supportLevel = (function () {
 69426  	if (hasFlag('no-color') ||
 69427  		hasFlag('no-colors') ||
 69428  		hasFlag('color=false')) {
 69429  		return 0;
 69430  	}
 69431  
 69432  	if (hasFlag('color=16m') ||
 69433  		hasFlag('color=full') ||
 69434  		hasFlag('color=truecolor')) {
 69435  		return 3;
 69436  	}
 69437  
 69438  	if (hasFlag('color=256')) {
 69439  		return 2;
 69440  	}
 69441  
 69442  	if (hasFlag('color') ||
 69443  		hasFlag('colors') ||
 69444  		hasFlag('color=true') ||
 69445  		hasFlag('color=always')) {
 69446  		return 1;
 69447  	}
 69448  
 69449  	if (process.stdout && !process.stdout.isTTY) {
 69450  		return 0;
 69451  	}
 69452  
 69453  	if (process.platform === 'win32') {
 69454  		return 1;
 69455  	}
 69456  
 69457  	if ('CI' in process.env) {
 69458  		if ('TRAVIS' in process.env || process.env.CI === 'Travis') {
 69459  			return 1;
 69460  		}
 69461  
 69462  		return 0;
 69463  	}
 69464  
 69465  	if ('TEAMCITY_VERSION' in process.env) {
 69466  		return process.env.TEAMCITY_VERSION.match(/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/) === null ? 0 : 1;
 69467  	}
 69468  
 69469  	if (/^(screen|xterm)-256(?:color)?/.test(process.env.TERM)) {
 69470  		return 2;
 69471  	}
 69472  
 69473  	if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) {
 69474  		return 1;
 69475  	}
 69476  
 69477  	if ('COLORTERM' in process.env) {
 69478  		return 1;
 69479  	}
 69480  
 69481  	if (process.env.TERM === 'dumb') {
 69482  		return 0;
 69483  	}
 69484  
 69485  	return 0;
 69486  })();
 69487  
 69488  if (supportLevel === 0 && 'FORCE_COLOR' in process.env) {
 69489  	supportLevel = 1;
 69490  }
 69491  
 69492  module.exports = process && support(supportLevel);
 69493  
 69494  
 69495  /***/ }),
 69496  /* 331 */
 69497  /***/ (function(module, exports) {
 69498  
 69499  module.exports = require("child_process");
 69500  
 69501  /***/ }),
 69502  /* 332 */
 69503  /***/ (function(module, exports) {
 69504  
 69505  module.exports = require("punycode");
 69506  
 69507  /***/ }),
 69508  /* 333 */
 69509  /***/ (function(module, exports) {
 69510  
 69511  module.exports = require("string_decoder");
 69512  
 69513  /***/ }),
 69514  /* 334 */
 69515  /***/ (function(module, exports, __webpack_require__) {
 69516  
 69517  "use strict";
 69518  
 69519  
 69520  Object.defineProperty(exports, "__esModule", {
 69521    value: true
 69522  });
 69523  
 69524  var _constants;
 69525  
 69526  function _load_constants() {
 69527    return _constants = _interopRequireWildcard(__webpack_require__(8));
 69528  }
 69529  
 69530  var _access;
 69531  
 69532  function _load_access() {
 69533    return _access = _interopRequireWildcard(__webpack_require__(493));
 69534  }
 69535  
 69536  var _add;
 69537  
 69538  function _load_add() {
 69539    return _add = _interopRequireWildcard(__webpack_require__(165));
 69540  }
 69541  
 69542  var _audit;
 69543  
 69544  function _load_audit() {
 69545    return _audit = _interopRequireWildcard(__webpack_require__(347));
 69546  }
 69547  
 69548  var _autoclean;
 69549  
 69550  function _load_autoclean() {
 69551    return _autoclean = _interopRequireWildcard(__webpack_require__(348));
 69552  }
 69553  
 69554  var _bin;
 69555  
 69556  function _load_bin() {
 69557    return _bin = _interopRequireWildcard(__webpack_require__(494));
 69558  }
 69559  
 69560  var _cache;
 69561  
 69562  function _load_cache() {
 69563    return _cache = _interopRequireWildcard(__webpack_require__(349));
 69564  }
 69565  
 69566  var _check;
 69567  
 69568  function _load_check() {
 69569    return _check = _interopRequireWildcard(__webpack_require__(350));
 69570  }
 69571  
 69572  var _config;
 69573  
 69574  function _load_config() {
 69575    return _config = _interopRequireWildcard(__webpack_require__(495));
 69576  }
 69577  
 69578  var _create;
 69579  
 69580  function _load_create() {
 69581    return _create = _interopRequireWildcard(__webpack_require__(496));
 69582  }
 69583  
 69584  var _exec;
 69585  
 69586  function _load_exec() {
 69587    return _exec = _interopRequireWildcard(__webpack_require__(497));
 69588  }
 69589  
 69590  var _generateLockEntry;
 69591  
 69592  function _load_generateLockEntry() {
 69593    return _generateLockEntry = _interopRequireWildcard(__webpack_require__(498));
 69594  }
 69595  
 69596  var _global;
 69597  
 69598  function _load_global() {
 69599    return _global = _interopRequireWildcard(__webpack_require__(121));
 69600  }
 69601  
 69602  var _help;
 69603  
 69604  function _load_help() {
 69605    return _help = _interopRequireWildcard(__webpack_require__(499));
 69606  }
 69607  
 69608  var _import;
 69609  
 69610  function _load_import() {
 69611    return _import = _interopRequireWildcard(__webpack_require__(500));
 69612  }
 69613  
 69614  var _info;
 69615  
 69616  function _load_info() {
 69617    return _info = _interopRequireWildcard(__webpack_require__(501));
 69618  }
 69619  
 69620  var _init;
 69621  
 69622  function _load_init() {
 69623    return _init = _interopRequireWildcard(__webpack_require__(502));
 69624  }
 69625  
 69626  var _install;
 69627  
 69628  function _load_install() {
 69629    return _install = _interopRequireWildcard(__webpack_require__(34));
 69630  }
 69631  
 69632  var _licenses;
 69633  
 69634  function _load_licenses() {
 69635    return _licenses = _interopRequireWildcard(__webpack_require__(503));
 69636  }
 69637  
 69638  var _link;
 69639  
 69640  function _load_link() {
 69641    return _link = _interopRequireWildcard(__webpack_require__(351));
 69642  }
 69643  
 69644  var _login;
 69645  
 69646  function _load_login() {
 69647    return _login = _interopRequireWildcard(__webpack_require__(107));
 69648  }
 69649  
 69650  var _logout;
 69651  
 69652  function _load_logout() {
 69653    return _logout = _interopRequireWildcard(__webpack_require__(504));
 69654  }
 69655  
 69656  var _list;
 69657  
 69658  function _load_list() {
 69659    return _list = _interopRequireWildcard(__webpack_require__(352));
 69660  }
 69661  
 69662  var _node;
 69663  
 69664  function _load_node() {
 69665    return _node = _interopRequireWildcard(__webpack_require__(505));
 69666  }
 69667  
 69668  var _outdated;
 69669  
 69670  function _load_outdated() {
 69671    return _outdated = _interopRequireWildcard(__webpack_require__(506));
 69672  }
 69673  
 69674  var _owner;
 69675  
 69676  function _load_owner() {
 69677    return _owner = _interopRequireWildcard(__webpack_require__(507));
 69678  }
 69679  
 69680  var _pack;
 69681  
 69682  function _load_pack() {
 69683    return _pack = _interopRequireWildcard(__webpack_require__(166));
 69684  }
 69685  
 69686  var _policies;
 69687  
 69688  function _load_policies() {
 69689    return _policies = _interopRequireWildcard(__webpack_require__(508));
 69690  }
 69691  
 69692  var _publish;
 69693  
 69694  function _load_publish() {
 69695    return _publish = _interopRequireWildcard(__webpack_require__(509));
 69696  }
 69697  
 69698  var _remove;
 69699  
 69700  function _load_remove() {
 69701    return _remove = _interopRequireWildcard(__webpack_require__(353));
 69702  }
 69703  
 69704  var _run;
 69705  
 69706  function _load_run() {
 69707    return _run = _interopRequireWildcard(__webpack_require__(354));
 69708  }
 69709  
 69710  var _tag;
 69711  
 69712  function _load_tag() {
 69713    return _tag = _interopRequireWildcard(__webpack_require__(355));
 69714  }
 69715  
 69716  var _team;
 69717  
 69718  function _load_team() {
 69719    return _team = _interopRequireWildcard(__webpack_require__(510));
 69720  }
 69721  
 69722  var _unplug;
 69723  
 69724  function _load_unplug() {
 69725    return _unplug = _interopRequireWildcard(__webpack_require__(512));
 69726  }
 69727  
 69728  var _unlink;
 69729  
 69730  function _load_unlink() {
 69731    return _unlink = _interopRequireWildcard(__webpack_require__(511));
 69732  }
 69733  
 69734  var _upgrade;
 69735  
 69736  function _load_upgrade() {
 69737    return _upgrade = _interopRequireWildcard(__webpack_require__(205));
 69738  }
 69739  
 69740  var _version;
 69741  
 69742  function _load_version() {
 69743    return _version = _interopRequireWildcard(__webpack_require__(357));
 69744  }
 69745  
 69746  var _versions;
 69747  
 69748  function _load_versions() {
 69749    return _versions = _interopRequireWildcard(__webpack_require__(513));
 69750  }
 69751  
 69752  var _why;
 69753  
 69754  function _load_why() {
 69755    return _why = _interopRequireWildcard(__webpack_require__(514));
 69756  }
 69757  
 69758  var _workspaces;
 69759  
 69760  function _load_workspaces() {
 69761    return _workspaces = _interopRequireWildcard(__webpack_require__(516));
 69762  }
 69763  
 69764  var _workspace;
 69765  
 69766  function _load_workspace() {
 69767    return _workspace = _interopRequireWildcard(__webpack_require__(515));
 69768  }
 69769  
 69770  var _upgradeInteractive;
 69771  
 69772  function _load_upgradeInteractive() {
 69773    return _upgradeInteractive = _interopRequireWildcard(__webpack_require__(356));
 69774  }
 69775  
 69776  var _useless;
 69777  
 69778  function _load_useless() {
 69779    return _useless = _interopRequireDefault(__webpack_require__(492));
 69780  }
 69781  
 69782  var _aliases;
 69783  
 69784  function _load_aliases() {
 69785    return _aliases = _interopRequireDefault(__webpack_require__(346));
 69786  }
 69787  
 69788  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 69789  
 69790  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 69791  
 69792  const chalk = __webpack_require__(30);
 69793  
 69794  
 69795  const getDocsLink = name => `${(_constants || _load_constants()).YARN_DOCS}${name || ''}`;
 69796  const getDocsInfo = name => 'Visit ' + chalk.bold(getDocsLink(name)) + ' for documentation about this command.';
 69797  
 69798  const commands = {
 69799    access: _access || _load_access(),
 69800    add: _add || _load_add(),
 69801    audit: _audit || _load_audit(),
 69802    autoclean: _autoclean || _load_autoclean(),
 69803    bin: _bin || _load_bin(),
 69804    cache: _cache || _load_cache(),
 69805    check: _check || _load_check(),
 69806    config: _config || _load_config(),
 69807    create: _create || _load_create(),
 69808    dedupe: (0, (_useless || _load_useless()).default)("The dedupe command isn't necessary. `yarn install` will already dedupe."),
 69809    exec: _exec || _load_exec(),
 69810    generateLockEntry: _generateLockEntry || _load_generateLockEntry(),
 69811    global: _global || _load_global(),
 69812    help: _help || _load_help(),
 69813    import: _import || _load_import(),
 69814    info: _info || _load_info(),
 69815    init: _init || _load_init(),
 69816    install: _install || _load_install(),
 69817    licenses: _licenses || _load_licenses(),
 69818    link: _link || _load_link(),
 69819    lockfile: (0, (_useless || _load_useless()).default)("The lockfile command isn't necessary. `yarn install` will produce a lockfile."),
 69820    login: _login || _load_login(),
 69821    logout: _logout || _load_logout(),
 69822    list: _list || _load_list(),
 69823    node: _node || _load_node(),
 69824    outdated: _outdated || _load_outdated(),
 69825    owner: _owner || _load_owner(),
 69826    pack: _pack || _load_pack(),
 69827    policies: _policies || _load_policies(),
 69828    prune: (0, (_useless || _load_useless()).default)("The prune command isn't necessary. `yarn install` will prune extraneous packages."),
 69829    publish: _publish || _load_publish(),
 69830    remove: _remove || _load_remove(),
 69831    run: _run || _load_run(),
 69832    tag: _tag || _load_tag(),
 69833    team: _team || _load_team(),
 69834    unplug: _unplug || _load_unplug(),
 69835    unlink: _unlink || _load_unlink(),
 69836    upgrade: _upgrade || _load_upgrade(),
 69837    version: _version || _load_version(),
 69838    versions: _versions || _load_versions(),
 69839    why: _why || _load_why(),
 69840    workspaces: _workspaces || _load_workspaces(),
 69841    workspace: _workspace || _load_workspace(),
 69842    upgradeInteractive: _upgradeInteractive || _load_upgradeInteractive()
 69843  };
 69844  
 69845  for (const key in commands) {
 69846    commands[key].getDocsInfo = getDocsInfo(key);
 69847  }
 69848  
 69849  for (const key in (_aliases || _load_aliases()).default) {
 69850    commands[key] = commands[(_aliases || _load_aliases()).default[key]];
 69851    commands[key].getDocsInfo = getDocsInfo(key);
 69852  }
 69853  
 69854  exports.default = commands;
 69855  
 69856  /***/ }),
 69857  /* 335 */
 69858  /***/ (function(module, exports, __webpack_require__) {
 69859  
 69860  "use strict";
 69861  
 69862  
 69863  Object.defineProperty(exports, "__esModule", {
 69864    value: true
 69865  });
 69866  exports.getRcConfigForCwd = getRcConfigForCwd;
 69867  exports.getRcConfigForFolder = getRcConfigForFolder;
 69868  exports.getRcArgs = getRcArgs;
 69869  
 69870  var _fs;
 69871  
 69872  function _load_fs() {
 69873    return _fs = __webpack_require__(4);
 69874  }
 69875  
 69876  var _path;
 69877  
 69878  function _load_path() {
 69879    return _path = __webpack_require__(0);
 69880  }
 69881  
 69882  var _commander;
 69883  
 69884  function _load_commander() {
 69885    return _commander = _interopRequireDefault(__webpack_require__(338));
 69886  }
 69887  
 69888  var _lockfile;
 69889  
 69890  function _load_lockfile() {
 69891    return _lockfile = __webpack_require__(19);
 69892  }
 69893  
 69894  var _rc;
 69895  
 69896  function _load_rc() {
 69897    return _rc = _interopRequireWildcard(__webpack_require__(558));
 69898  }
 69899  
 69900  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 69901  
 69902  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 69903  
 69904  // Keys that will get resolved relative to the path of the rc file they belong to
 69905  const PATH_KEYS = new Set(['yarn-path', 'cache-folder', 'global-folder', 'modules-folder', 'cwd', 'offline-cache-folder']);
 69906  
 69907  // given a cwd, load all .yarnrc files relative to it
 69908  
 69909  
 69910  function getRcConfigForCwd(cwd, args) {
 69911    const config = {};
 69912  
 69913    if (args.indexOf('--no-default-rc') === -1) {
 69914      Object.assign(config, (_rc || _load_rc()).findRc('yarn', cwd, (fileText, filePath) => {
 69915        return loadRcFile(fileText, filePath);
 69916      }));
 69917    }
 69918  
 69919    for (let index = args.indexOf('--use-yarnrc'); index !== -1; index = args.indexOf('--use-yarnrc', index + 1)) {
 69920      const value = args[index + 1];
 69921  
 69922      if (value && value.charAt(0) !== '-') {
 69923        Object.assign(config, loadRcFile((0, (_fs || _load_fs()).readFileSync)(value, 'utf8'), value));
 69924      }
 69925    }
 69926  
 69927    return config;
 69928  }
 69929  
 69930  function getRcConfigForFolder(cwd) {
 69931    const filePath = (0, (_path || _load_path()).resolve)(cwd, '.yarnrc');
 69932    if (!(0, (_fs || _load_fs()).existsSync)(filePath)) {
 69933      return {};
 69934    }
 69935  
 69936    const fileText = (0, (_fs || _load_fs()).readFileSync)(filePath, 'utf8');
 69937    return loadRcFile(fileText, filePath);
 69938  }
 69939  
 69940  function loadRcFile(fileText, filePath) {
 69941    var _parse = (0, (_lockfile || _load_lockfile()).parse)(fileText, filePath);
 69942  
 69943    let values = _parse.object;
 69944  
 69945  
 69946    if (filePath.match(/\.yml$/) && typeof values.yarnPath === 'string') {
 69947      values = { 'yarn-path': values.yarnPath };
 69948    }
 69949  
 69950    // some keys reference directories so keep their relativity
 69951    for (const key in values) {
 69952      if (PATH_KEYS.has(key.replace(/^(--)?([^.]+\.)*/, ''))) {
 69953        values[key] = (0, (_path || _load_path()).resolve)((0, (_path || _load_path()).dirname)(filePath), values[key]);
 69954      }
 69955    }
 69956  
 69957    return values;
 69958  }
 69959  
 69960  // get the built of arguments of a .yarnrc chain of the passed cwd
 69961  function buildRcArgs(cwd, args) {
 69962    const config = getRcConfigForCwd(cwd, args);
 69963  
 69964    const argsForCommands = new Map();
 69965  
 69966    for (const key in config) {
 69967      // args can be prefixed with the command name they're meant for, eg.
 69968      // `--install.check-files true`
 69969      const keyMatch = key.match(/^--(?:([^.]+)\.)?(.*)$/);
 69970      if (!keyMatch) {
 69971        continue;
 69972      }
 69973  
 69974      const commandName = keyMatch[1] || '*';
 69975      const arg = keyMatch[2];
 69976      const value = config[key];
 69977  
 69978      // create args for this command name if we didn't previously have them
 69979      const args = argsForCommands.get(commandName) || [];
 69980      argsForCommands.set(commandName, args);
 69981  
 69982      // turn config value into appropriate cli flag
 69983      const option = (_commander || _load_commander()).default.optionFor(`--${arg}`);
 69984  
 69985      // If commander doesn't recognize the option or it takes a value after it
 69986      if (!option || option.optional || option.required) {
 69987        args.push(`--${arg}`, value);
 69988      } else if (value === true) {
 69989        // we can't force remove an arg from cli
 69990        args.push(`--${arg}`);
 69991      }
 69992    }
 69993  
 69994    return argsForCommands;
 69995  }
 69996  
 69997  // extract the value of a --cwd arg if present
 69998  function extractCwdArg(args) {
 69999    for (let i = 0, I = args.length; i < I; ++i) {
 70000      const arg = args[i];
 70001      if (arg === '--') {
 70002        return null;
 70003      } else if (arg === '--cwd') {
 70004        return args[i + 1];
 70005      }
 70006    }
 70007    return null;
 70008  }
 70009  
 70010  // get a list of arguments from .yarnrc that apply to this commandName
 70011  function getRcArgs(commandName, args, previousCwds = []) {
 70012    // for the cwd, use the --cwd arg if it was passed or else use process.cwd()
 70013    const origCwd = extractCwdArg(args) || process.cwd();
 70014  
 70015    // get a map of command names and their arguments
 70016    const argMap = buildRcArgs(origCwd, args);
 70017  
 70018    // concat wildcard arguments and arguments meant for this specific command
 70019    const newArgs = [...(argMap.get('*') || []), ...(argMap.get(commandName) || [])];
 70020  
 70021    // check if the .yarnrc args specified a cwd
 70022    const newCwd = extractCwdArg(newArgs);
 70023    if (newCwd && newCwd !== origCwd) {
 70024      // ensure that we don't enter into a loop
 70025      if (previousCwds.indexOf(newCwd) !== -1) {
 70026        throw new Error(`Recursive .yarnrc files specifying --cwd flags. Bailing out.`);
 70027      }
 70028  
 70029      //  if we have a new cwd then let's refetch the .yarnrc args relative to it
 70030      return getRcArgs(commandName, newArgs, previousCwds.concat(origCwd));
 70031    }
 70032  
 70033    return newArgs;
 70034  }
 70035  
 70036  /***/ }),
 70037  /* 336 */
 70038  /***/ (function(module, exports, __webpack_require__) {
 70039  
 70040  "use strict";
 70041  
 70042  
 70043  Object.defineProperty(exports, "__esModule", {
 70044    value: true
 70045  });
 70046  exports.boolify = boolify;
 70047  exports.boolifyWithDefault = boolifyWithDefault;
 70048  const FALSY_STRINGS = new Set(['0', 'false']);
 70049  
 70050  function boolify(val) {
 70051    return !FALSY_STRINGS.has(val.toString().toLowerCase());
 70052  }
 70053  
 70054  function boolifyWithDefault(val, defaultResult) {
 70055    return val === '' || val === null || val === undefined ? defaultResult : boolify(val);
 70056  }
 70057  
 70058  /***/ }),
 70059  /* 337 */
 70060  /***/ (function(module, exports, __webpack_require__) {
 70061  
 70062  "use strict";
 70063  
 70064  
 70065  Object.defineProperty(exports, "__esModule", {
 70066    value: true
 70067  });
 70068  exports.isOffline = isOffline;
 70069  const os = __webpack_require__(46);
 70070  
 70071  const IGNORE_INTERFACES = ['lo0', 'awdl0', 'bridge0'];
 70072  const LOCAL_IPS = ['127.0.0.1', '::1'];
 70073  
 70074  function isOffline() {
 70075    let interfaces;
 70076  
 70077    try {
 70078      interfaces = os.networkInterfaces();
 70079    } catch (e) {
 70080      // As of October 2016, Windows Subsystem for Linux (WSL) does not support
 70081      // the os.networkInterfaces() call and throws instead. For this platform,
 70082      // assume we are online.
 70083      if (e.syscall === 'uv_interface_addresses') {
 70084        return false;
 70085      } else {
 70086        throw e;
 70087      }
 70088    }
 70089  
 70090    for (const name in interfaces) {
 70091      if (IGNORE_INTERFACES.indexOf(name) >= 0) {
 70092        continue;
 70093      }
 70094  
 70095      const addrs = interfaces[name];
 70096      for (var _iterator = addrs, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 70097        var _ref;
 70098  
 70099        if (_isArray) {
 70100          if (_i >= _iterator.length) break;
 70101          _ref = _iterator[_i++];
 70102        } else {
 70103          _i = _iterator.next();
 70104          if (_i.done) break;
 70105          _ref = _i.value;
 70106        }
 70107  
 70108        const addr = _ref;
 70109  
 70110        if (LOCAL_IPS.indexOf(addr.address) < 0) {
 70111          // found a possible remote ip
 70112          return false;
 70113        }
 70114      }
 70115    }
 70116  
 70117    return true;
 70118  }
 70119  
 70120  /***/ }),
 70121  /* 338 */
 70122  /***/ (function(module, exports, __webpack_require__) {
 70123  
 70124  /**
 70125   * Module dependencies.
 70126   */
 70127  
 70128  var EventEmitter = __webpack_require__(77).EventEmitter;
 70129  var spawn = __webpack_require__(331).spawn;
 70130  var path = __webpack_require__(0);
 70131  var dirname = path.dirname;
 70132  var basename = path.basename;
 70133  var fs = __webpack_require__(4);
 70134  
 70135  /**
 70136   * Inherit `Command` from `EventEmitter.prototype`.
 70137   */
 70138  
 70139  __webpack_require__(3).inherits(Command, EventEmitter);
 70140  
 70141  /**
 70142   * Expose the root command.
 70143   */
 70144  
 70145  exports = module.exports = new Command();
 70146  
 70147  /**
 70148   * Expose `Command`.
 70149   */
 70150  
 70151  exports.Command = Command;
 70152  
 70153  /**
 70154   * Expose `Option`.
 70155   */
 70156  
 70157  exports.Option = Option;
 70158  
 70159  /**
 70160   * Initialize a new `Option` with the given `flags` and `description`.
 70161   *
 70162   * @param {String} flags
 70163   * @param {String} description
 70164   * @api public
 70165   */
 70166  
 70167  function Option(flags, description) {
 70168    this.flags = flags;
 70169    this.required = flags.indexOf('<') >= 0;
 70170    this.optional = flags.indexOf('[') >= 0;
 70171    this.bool = flags.indexOf('-no-') === -1;
 70172    flags = flags.split(/[ ,|]+/);
 70173    if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift();
 70174    this.long = flags.shift();
 70175    this.description = description || '';
 70176  }
 70177  
 70178  /**
 70179   * Return option name.
 70180   *
 70181   * @return {String}
 70182   * @api private
 70183   */
 70184  
 70185  Option.prototype.name = function() {
 70186    return this.long
 70187      .replace('--', '')
 70188      .replace('no-', '');
 70189  };
 70190  
 70191  /**
 70192   * Return option name, in a camelcase format that can be used
 70193   * as a object attribute key.
 70194   *
 70195   * @return {String}
 70196   * @api private
 70197   */
 70198  
 70199  Option.prototype.attributeName = function() {
 70200    return camelcase(this.name());
 70201  };
 70202  
 70203  /**
 70204   * Check if `arg` matches the short or long flag.
 70205   *
 70206   * @param {String} arg
 70207   * @return {Boolean}
 70208   * @api private
 70209   */
 70210  
 70211  Option.prototype.is = function(arg) {
 70212    return this.short === arg || this.long === arg;
 70213  };
 70214  
 70215  /**
 70216   * Initialize a new `Command`.
 70217   *
 70218   * @param {String} name
 70219   * @api public
 70220   */
 70221  
 70222  function Command(name) {
 70223    this.commands = [];
 70224    this.options = [];
 70225    this._execs = {};
 70226    this._allowUnknownOption = false;
 70227    this._args = [];
 70228    this._name = name || '';
 70229  }
 70230  
 70231  /**
 70232   * Add command `name`.
 70233   *
 70234   * The `.action()` callback is invoked when the
 70235   * command `name` is specified via __ARGV__,
 70236   * and the remaining arguments are applied to the
 70237   * function for access.
 70238   *
 70239   * When the `name` is "*" an un-matched command
 70240   * will be passed as the first arg, followed by
 70241   * the rest of __ARGV__ remaining.
 70242   *
 70243   * Examples:
 70244   *
 70245   *      program
 70246   *        .version('0.0.1')
 70247   *        .option('-C, --chdir <path>', 'change the working directory')
 70248   *        .option('-c, --config <path>', 'set config path. defaults to ./deploy.conf')
 70249   *        .option('-T, --no-tests', 'ignore test hook')
 70250   *
 70251   *      program
 70252   *        .command('setup')
 70253   *        .description('run remote setup commands')
 70254   *        .action(function() {
 70255   *          console.log('setup');
 70256   *        });
 70257   *
 70258   *      program
 70259   *        .command('exec <cmd>')
 70260   *        .description('run the given remote command')
 70261   *        .action(function(cmd) {
 70262   *          console.log('exec "%s"', cmd);
 70263   *        });
 70264   *
 70265   *      program
 70266   *        .command('teardown <dir> [otherDirs...]')
 70267   *        .description('run teardown commands')
 70268   *        .action(function(dir, otherDirs) {
 70269   *          console.log('dir "%s"', dir);
 70270   *          if (otherDirs) {
 70271   *            otherDirs.forEach(function (oDir) {
 70272   *              console.log('dir "%s"', oDir);
 70273   *            });
 70274   *          }
 70275   *        });
 70276   *
 70277   *      program
 70278   *        .command('*')
 70279   *        .description('deploy the given env')
 70280   *        .action(function(env) {
 70281   *          console.log('deploying "%s"', env);
 70282   *        });
 70283   *
 70284   *      program.parse(process.argv);
 70285    *
 70286   * @param {String} name
 70287   * @param {String} [desc] for git-style sub-commands
 70288   * @return {Command} the new command
 70289   * @api public
 70290   */
 70291  
 70292  Command.prototype.command = function(name, desc, opts) {
 70293    if (typeof desc === 'object' && desc !== null) {
 70294      opts = desc;
 70295      desc = null;
 70296    }
 70297    opts = opts || {};
 70298    var args = name.split(/ +/);
 70299    var cmd = new Command(args.shift());
 70300  
 70301    if (desc) {
 70302      cmd.description(desc);
 70303      this.executables = true;
 70304      this._execs[cmd._name] = true;
 70305      if (opts.isDefault) this.defaultExecutable = cmd._name;
 70306    }
 70307    cmd._noHelp = !!opts.noHelp;
 70308    this.commands.push(cmd);
 70309    cmd.parseExpectedArgs(args);
 70310    cmd.parent = this;
 70311  
 70312    if (desc) return this;
 70313    return cmd;
 70314  };
 70315  
 70316  /**
 70317   * Define argument syntax for the top-level command.
 70318   *
 70319   * @api public
 70320   */
 70321  
 70322  Command.prototype.arguments = function(desc) {
 70323    return this.parseExpectedArgs(desc.split(/ +/));
 70324  };
 70325  
 70326  /**
 70327   * Add an implicit `help [cmd]` subcommand
 70328   * which invokes `--help` for the given command.
 70329   *
 70330   * @api private
 70331   */
 70332  
 70333  Command.prototype.addImplicitHelpCommand = function() {
 70334    this.command('help [cmd]', 'display help for [cmd]');
 70335  };
 70336  
 70337  /**
 70338   * Parse expected `args`.
 70339   *
 70340   * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`.
 70341   *
 70342   * @param {Array} args
 70343   * @return {Command} for chaining
 70344   * @api public
 70345   */
 70346  
 70347  Command.prototype.parseExpectedArgs = function(args) {
 70348    if (!args.length) return;
 70349    var self = this;
 70350    args.forEach(function(arg) {
 70351      var argDetails = {
 70352        required: false,
 70353        name: '',
 70354        variadic: false
 70355      };
 70356  
 70357      switch (arg[0]) {
 70358        case '<':
 70359          argDetails.required = true;
 70360          argDetails.name = arg.slice(1, -1);
 70361          break;
 70362        case '[':
 70363          argDetails.name = arg.slice(1, -1);
 70364          break;
 70365      }
 70366  
 70367      if (argDetails.name.length > 3 && argDetails.name.slice(-3) === '...') {
 70368        argDetails.variadic = true;
 70369        argDetails.name = argDetails.name.slice(0, -3);
 70370      }
 70371      if (argDetails.name) {
 70372        self._args.push(argDetails);
 70373      }
 70374    });
 70375    return this;
 70376  };
 70377  
 70378  /**
 70379   * Register callback `fn` for the command.
 70380   *
 70381   * Examples:
 70382   *
 70383   *      program
 70384   *        .command('help')
 70385   *        .description('display verbose help')
 70386   *        .action(function() {
 70387   *           // output help here
 70388   *        });
 70389   *
 70390   * @param {Function} fn
 70391   * @return {Command} for chaining
 70392   * @api public
 70393   */
 70394  
 70395  Command.prototype.action = function(fn) {
 70396    var self = this;
 70397    var listener = function(args, unknown) {
 70398      // Parse any so-far unknown options
 70399      args = args || [];
 70400      unknown = unknown || [];
 70401  
 70402      var parsed = self.parseOptions(unknown);
 70403  
 70404      // Output help if necessary
 70405      outputHelpIfNecessary(self, parsed.unknown);
 70406  
 70407      // If there are still any unknown options, then we simply
 70408      // die, unless someone asked for help, in which case we give it
 70409      // to them, and then we die.
 70410      if (parsed.unknown.length > 0) {
 70411        self.unknownOption(parsed.unknown[0]);
 70412      }
 70413  
 70414      // Leftover arguments need to be pushed back. Fixes issue #56
 70415      if (parsed.args.length) args = parsed.args.concat(args);
 70416  
 70417      self._args.forEach(function(arg, i) {
 70418        if (arg.required && args[i] == null) {
 70419          self.missingArgument(arg.name);
 70420        } else if (arg.variadic) {
 70421          if (i !== self._args.length - 1) {
 70422            self.variadicArgNotLast(arg.name);
 70423          }
 70424  
 70425          args[i] = args.splice(i);
 70426        }
 70427      });
 70428  
 70429      // Always append ourselves to the end of the arguments,
 70430      // to make sure we match the number of arguments the user
 70431      // expects
 70432      if (self._args.length) {
 70433        args[self._args.length] = self;
 70434      } else {
 70435        args.push(self);
 70436      }
 70437  
 70438      fn.apply(self, args);
 70439    };
 70440    var parent = this.parent || this;
 70441    var name = parent === this ? '*' : this._name;
 70442    parent.on('command:' + name, listener);
 70443    if (this._alias) parent.on('command:' + this._alias, listener);
 70444    return this;
 70445  };
 70446  
 70447  /**
 70448   * Define option with `flags`, `description` and optional
 70449   * coercion `fn`.
 70450   *
 70451   * The `flags` string should contain both the short and long flags,
 70452   * separated by comma, a pipe or space. The following are all valid
 70453   * all will output this way when `--help` is used.
 70454   *
 70455   *    "-p, --pepper"
 70456   *    "-p|--pepper"
 70457   *    "-p --pepper"
 70458   *
 70459   * Examples:
 70460   *
 70461   *     // simple boolean defaulting to false
 70462   *     program.option('-p, --pepper', 'add pepper');
 70463   *
 70464   *     --pepper
 70465   *     program.pepper
 70466   *     // => Boolean
 70467   *
 70468   *     // simple boolean defaulting to true
 70469   *     program.option('-C, --no-cheese', 'remove cheese');
 70470   *
 70471   *     program.cheese
 70472   *     // => true
 70473   *
 70474   *     --no-cheese
 70475   *     program.cheese
 70476   *     // => false
 70477   *
 70478   *     // required argument
 70479   *     program.option('-C, --chdir <path>', 'change the working directory');
 70480   *
 70481   *     --chdir /tmp
 70482   *     program.chdir
 70483   *     // => "/tmp"
 70484   *
 70485   *     // optional argument
 70486   *     program.option('-c, --cheese [type]', 'add cheese [marble]');
 70487   *
 70488   * @param {String} flags
 70489   * @param {String} description
 70490   * @param {Function|*} [fn] or default
 70491   * @param {*} [defaultValue]
 70492   * @return {Command} for chaining
 70493   * @api public
 70494   */
 70495  
 70496  Command.prototype.option = function(flags, description, fn, defaultValue) {
 70497    var self = this,
 70498      option = new Option(flags, description),
 70499      oname = option.name(),
 70500      name = option.attributeName();
 70501  
 70502    // default as 3rd arg
 70503    if (typeof fn !== 'function') {
 70504      if (fn instanceof RegExp) {
 70505        var regex = fn;
 70506        fn = function(val, def) {
 70507          var m = regex.exec(val);
 70508          return m ? m[0] : def;
 70509        };
 70510      } else {
 70511        defaultValue = fn;
 70512        fn = null;
 70513      }
 70514    }
 70515  
 70516    // preassign default value only for --no-*, [optional], or <required>
 70517    if (!option.bool || option.optional || option.required) {
 70518      // when --no-* we make sure default is true
 70519      if (!option.bool) defaultValue = true;
 70520      // preassign only if we have a default
 70521      if (defaultValue !== undefined) {
 70522        self[name] = defaultValue;
 70523        option.defaultValue = defaultValue;
 70524      }
 70525    }
 70526  
 70527    // register the option
 70528    this.options.push(option);
 70529  
 70530    // when it's passed assign the value
 70531    // and conditionally invoke the callback
 70532    this.on('option:' + oname, function(val) {
 70533      // coercion
 70534      if (val !== null && fn) {
 70535        val = fn(val, self[name] === undefined ? defaultValue : self[name]);
 70536      }
 70537  
 70538      // unassigned or bool
 70539      if (typeof self[name] === 'boolean' || typeof self[name] === 'undefined') {
 70540        // if no value, bool true, and we have a default, then use it!
 70541        if (val == null) {
 70542          self[name] = option.bool
 70543            ? defaultValue || true
 70544            : false;
 70545        } else {
 70546          self[name] = val;
 70547        }
 70548      } else if (val !== null) {
 70549        // reassign
 70550        self[name] = val;
 70551      }
 70552    });
 70553  
 70554    return this;
 70555  };
 70556  
 70557  /**
 70558   * Allow unknown options on the command line.
 70559   *
 70560   * @param {Boolean} arg if `true` or omitted, no error will be thrown
 70561   * for unknown options.
 70562   * @api public
 70563   */
 70564  Command.prototype.allowUnknownOption = function(arg) {
 70565    this._allowUnknownOption = arguments.length === 0 || arg;
 70566    return this;
 70567  };
 70568  
 70569  /**
 70570   * Parse `argv`, settings options and invoking commands when defined.
 70571   *
 70572   * @param {Array} argv
 70573   * @return {Command} for chaining
 70574   * @api public
 70575   */
 70576  
 70577  Command.prototype.parse = function(argv) {
 70578    // implicit help
 70579    if (this.executables) this.addImplicitHelpCommand();
 70580  
 70581    // store raw args
 70582    this.rawArgs = argv;
 70583  
 70584    // guess name
 70585    this._name = this._name || basename(argv[1], '.js');
 70586  
 70587    // github-style sub-commands with no sub-command
 70588    if (this.executables && argv.length < 3 && !this.defaultExecutable) {
 70589      // this user needs help
 70590      argv.push('--help');
 70591    }
 70592  
 70593    // process argv
 70594    var parsed = this.parseOptions(this.normalize(argv.slice(2)));
 70595    var args = this.args = parsed.args;
 70596  
 70597    var result = this.parseArgs(this.args, parsed.unknown);
 70598  
 70599    // executable sub-commands
 70600    var name = result.args[0];
 70601  
 70602    var aliasCommand = null;
 70603    // check alias of sub commands
 70604    if (name) {
 70605      aliasCommand = this.commands.filter(function(command) {
 70606        return command.alias() === name;
 70607      })[0];
 70608    }
 70609  
 70610    if (this._execs[name] && typeof this._execs[name] !== 'function') {
 70611      return this.executeSubCommand(argv, args, parsed.unknown);
 70612    } else if (aliasCommand) {
 70613      // is alias of a subCommand
 70614      args[0] = aliasCommand._name;
 70615      return this.executeSubCommand(argv, args, parsed.unknown);
 70616    } else if (this.defaultExecutable) {
 70617      // use the default subcommand
 70618      args.unshift(this.defaultExecutable);
 70619      return this.executeSubCommand(argv, args, parsed.unknown);
 70620    }
 70621  
 70622    return result;
 70623  };
 70624  
 70625  /**
 70626   * Execute a sub-command executable.
 70627   *
 70628   * @param {Array} argv
 70629   * @param {Array} args
 70630   * @param {Array} unknown
 70631   * @api private
 70632   */
 70633  
 70634  Command.prototype.executeSubCommand = function(argv, args, unknown) {
 70635    args = args.concat(unknown);
 70636  
 70637    if (!args.length) this.help();
 70638    if (args[0] === 'help' && args.length === 1) this.help();
 70639  
 70640    // <cmd> --help
 70641    if (args[0] === 'help') {
 70642      args[0] = args[1];
 70643      args[1] = '--help';
 70644    }
 70645  
 70646    // executable
 70647    var f = argv[1];
 70648    // name of the subcommand, link `pm-install`
 70649    var bin = basename(f, '.js') + '-' + args[0];
 70650  
 70651    // In case of globally installed, get the base dir where executable
 70652    //  subcommand file should be located at
 70653    var baseDir,
 70654      link = fs.lstatSync(f).isSymbolicLink() ? fs.readlinkSync(f) : f;
 70655  
 70656    // when symbolink is relative path
 70657    if (link !== f && link.charAt(0) !== '/') {
 70658      link = path.join(dirname(f), link);
 70659    }
 70660    baseDir = dirname(link);
 70661  
 70662    // prefer local `./<bin>` to bin in the $PATH
 70663    var localBin = path.join(baseDir, bin);
 70664  
 70665    // whether bin file is a js script with explicit `.js` extension
 70666    var isExplicitJS = false;
 70667    if (exists(localBin + '.js')) {
 70668      bin = localBin + '.js';
 70669      isExplicitJS = true;
 70670    } else if (exists(localBin)) {
 70671      bin = localBin;
 70672    }
 70673  
 70674    args = args.slice(1);
 70675  
 70676    var proc;
 70677    if (process.platform !== 'win32') {
 70678      if (isExplicitJS) {
 70679        args.unshift(bin);
 70680        // add executable arguments to spawn
 70681        args = (process.execArgv || []).concat(args);
 70682  
 70683        proc = spawn(process.argv[0], args, { stdio: 'inherit', customFds: [0, 1, 2] });
 70684      } else {
 70685        proc = spawn(bin, args, { stdio: 'inherit', customFds: [0, 1, 2] });
 70686      }
 70687    } else {
 70688      args.unshift(bin);
 70689      proc = spawn(process.execPath, args, { stdio: 'inherit' });
 70690    }
 70691  
 70692    var signals = ['SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGINT', 'SIGHUP'];
 70693    signals.forEach(function(signal) {
 70694      process.on(signal, function() {
 70695        if (proc.killed === false && proc.exitCode === null) {
 70696          proc.kill(signal);
 70697        }
 70698      });
 70699    });
 70700    proc.on('close', process.exit.bind(process));
 70701    proc.on('error', function(err) {
 70702      if (err.code === 'ENOENT') {
 70703        console.error('\n  %s(1) does not exist, try --help\n', bin);
 70704      } else if (err.code === 'EACCES') {
 70705        console.error('\n  %s(1) not executable. try chmod or run with root\n', bin);
 70706      }
 70707      process.exit(1);
 70708    });
 70709  
 70710    // Store the reference to the child process
 70711    this.runningCommand = proc;
 70712  };
 70713  
 70714  /**
 70715   * Normalize `args`, splitting joined short flags. For example
 70716   * the arg "-abc" is equivalent to "-a -b -c".
 70717   * This also normalizes equal sign and splits "--abc=def" into "--abc def".
 70718   *
 70719   * @param {Array} args
 70720   * @return {Array}
 70721   * @api private
 70722   */
 70723  
 70724  Command.prototype.normalize = function(args) {
 70725    var ret = [],
 70726      arg,
 70727      lastOpt,
 70728      index;
 70729  
 70730    for (var i = 0, len = args.length; i < len; ++i) {
 70731      arg = args[i];
 70732      if (i > 0) {
 70733        lastOpt = this.optionFor(args[i - 1]);
 70734      }
 70735  
 70736      if (arg === '--') {
 70737        // Honor option terminator
 70738        ret = ret.concat(args.slice(i));
 70739        break;
 70740      } else if (lastOpt && lastOpt.required) {
 70741        ret.push(arg);
 70742      } else if (arg.length > 1 && arg[0] === '-' && arg[1] !== '-') {
 70743        arg.slice(1).split('').forEach(function(c) {
 70744          ret.push('-' + c);
 70745        });
 70746      } else if (/^--/.test(arg) && ~(index = arg.indexOf('='))) {
 70747        ret.push(arg.slice(0, index), arg.slice(index + 1));
 70748      } else {
 70749        ret.push(arg);
 70750      }
 70751    }
 70752  
 70753    return ret;
 70754  };
 70755  
 70756  /**
 70757   * Parse command `args`.
 70758   *
 70759   * When listener(s) are available those
 70760   * callbacks are invoked, otherwise the "*"
 70761   * event is emitted and those actions are invoked.
 70762   *
 70763   * @param {Array} args
 70764   * @return {Command} for chaining
 70765   * @api private
 70766   */
 70767  
 70768  Command.prototype.parseArgs = function(args, unknown) {
 70769    var name;
 70770  
 70771    if (args.length) {
 70772      name = args[0];
 70773      if (this.listeners('command:' + name).length) {
 70774        this.emit('command:' + args.shift(), args, unknown);
 70775      } else {
 70776        this.emit('command:*', args);
 70777      }
 70778    } else {
 70779      outputHelpIfNecessary(this, unknown);
 70780  
 70781      // If there were no args and we have unknown options,
 70782      // then they are extraneous and we need to error.
 70783      if (unknown.length > 0) {
 70784        this.unknownOption(unknown[0]);
 70785      }
 70786    }
 70787  
 70788    return this;
 70789  };
 70790  
 70791  /**
 70792   * Return an option matching `arg` if any.
 70793   *
 70794   * @param {String} arg
 70795   * @return {Option}
 70796   * @api private
 70797   */
 70798  
 70799  Command.prototype.optionFor = function(arg) {
 70800    for (var i = 0, len = this.options.length; i < len; ++i) {
 70801      if (this.options[i].is(arg)) {
 70802        return this.options[i];
 70803      }
 70804    }
 70805  };
 70806  
 70807  /**
 70808   * Parse options from `argv` returning `argv`
 70809   * void of these options.
 70810   *
 70811   * @param {Array} argv
 70812   * @return {Array}
 70813   * @api public
 70814   */
 70815  
 70816  Command.prototype.parseOptions = function(argv) {
 70817    var args = [],
 70818      len = argv.length,
 70819      literal,
 70820      option,
 70821      arg;
 70822  
 70823    var unknownOptions = [];
 70824  
 70825    // parse options
 70826    for (var i = 0; i < len; ++i) {
 70827      arg = argv[i];
 70828  
 70829      // literal args after --
 70830      if (literal) {
 70831        args.push(arg);
 70832        continue;
 70833      }
 70834  
 70835      if (arg === '--') {
 70836        literal = true;
 70837        continue;
 70838      }
 70839  
 70840      // find matching Option
 70841      option = this.optionFor(arg);
 70842  
 70843      // option is defined
 70844      if (option) {
 70845        // requires arg
 70846        if (option.required) {
 70847          arg = argv[++i];
 70848          if (arg == null) return this.optionMissingArgument(option);
 70849          this.emit('option:' + option.name(), arg);
 70850        // optional arg
 70851        } else if (option.optional) {
 70852          arg = argv[i + 1];
 70853          if (arg == null || (arg[0] === '-' && arg !== '-')) {
 70854            arg = null;
 70855          } else {
 70856            ++i;
 70857          }
 70858          this.emit('option:' + option.name(), arg);
 70859        // bool
 70860        } else {
 70861          this.emit('option:' + option.name());
 70862        }
 70863        continue;
 70864      }
 70865  
 70866      // looks like an option
 70867      if (arg.length > 1 && arg[0] === '-') {
 70868        unknownOptions.push(arg);
 70869  
 70870        // If the next argument looks like it might be
 70871        // an argument for this option, we pass it on.
 70872        // If it isn't, then it'll simply be ignored
 70873        if ((i + 1) < argv.length && argv[i + 1][0] !== '-') {
 70874          unknownOptions.push(argv[++i]);
 70875        }
 70876        continue;
 70877      }
 70878  
 70879      // arg
 70880      args.push(arg);
 70881    }
 70882  
 70883    return { args: args, unknown: unknownOptions };
 70884  };
 70885  
 70886  /**
 70887   * Return an object containing options as key-value pairs
 70888   *
 70889   * @return {Object}
 70890   * @api public
 70891   */
 70892  Command.prototype.opts = function() {
 70893    var result = {},
 70894      len = this.options.length;
 70895  
 70896    for (var i = 0; i < len; i++) {
 70897      var key = this.options[i].attributeName();
 70898      result[key] = key === this._versionOptionName ? this._version : this[key];
 70899    }
 70900    return result;
 70901  };
 70902  
 70903  /**
 70904   * Argument `name` is missing.
 70905   *
 70906   * @param {String} name
 70907   * @api private
 70908   */
 70909  
 70910  Command.prototype.missingArgument = function(name) {
 70911    console.error();
 70912    console.error("  error: missing required argument `%s'", name);
 70913    console.error();
 70914    process.exit(1);
 70915  };
 70916  
 70917  /**
 70918   * `Option` is missing an argument, but received `flag` or nothing.
 70919   *
 70920   * @param {String} option
 70921   * @param {String} flag
 70922   * @api private
 70923   */
 70924  
 70925  Command.prototype.optionMissingArgument = function(option, flag) {
 70926    console.error();
 70927    if (flag) {
 70928      console.error("  error: option `%s' argument missing, got `%s'", option.flags, flag);
 70929    } else {
 70930      console.error("  error: option `%s' argument missing", option.flags);
 70931    }
 70932    console.error();
 70933    process.exit(1);
 70934  };
 70935  
 70936  /**
 70937   * Unknown option `flag`.
 70938   *
 70939   * @param {String} flag
 70940   * @api private
 70941   */
 70942  
 70943  Command.prototype.unknownOption = function(flag) {
 70944    if (this._allowUnknownOption) return;
 70945    console.error();
 70946    console.error("  error: unknown option `%s'", flag);
 70947    console.error();
 70948    process.exit(1);
 70949  };
 70950  
 70951  /**
 70952   * Variadic argument with `name` is not the last argument as required.
 70953   *
 70954   * @param {String} name
 70955   * @api private
 70956   */
 70957  
 70958  Command.prototype.variadicArgNotLast = function(name) {
 70959    console.error();
 70960    console.error("  error: variadic arguments must be last `%s'", name);
 70961    console.error();
 70962    process.exit(1);
 70963  };
 70964  
 70965  /**
 70966   * Set the program version to `str`.
 70967   *
 70968   * This method auto-registers the "-V, --version" flag
 70969   * which will print the version number when passed.
 70970   *
 70971   * @param {String} str
 70972   * @param {String} [flags]
 70973   * @return {Command} for chaining
 70974   * @api public
 70975   */
 70976  
 70977  Command.prototype.version = function(str, flags) {
 70978    if (arguments.length === 0) return this._version;
 70979    this._version = str;
 70980    flags = flags || '-V, --version';
 70981    var versionOption = new Option(flags, 'output the version number');
 70982    this._versionOptionName = versionOption.long.substr(2) || 'version';
 70983    this.options.push(versionOption);
 70984    this.on('option:' + this._versionOptionName, function() {
 70985      process.stdout.write(str + '\n');
 70986      process.exit(0);
 70987    });
 70988    return this;
 70989  };
 70990  
 70991  /**
 70992   * Set the description to `str`.
 70993   *
 70994   * @param {String} str
 70995   * @param {Object} argsDescription
 70996   * @return {String|Command}
 70997   * @api public
 70998   */
 70999  
 71000  Command.prototype.description = function(str, argsDescription) {
 71001    if (arguments.length === 0) return this._description;
 71002    this._description = str;
 71003    this._argsDescription = argsDescription;
 71004    return this;
 71005  };
 71006  
 71007  /**
 71008   * Set an alias for the command
 71009   *
 71010   * @param {String} alias
 71011   * @return {String|Command}
 71012   * @api public
 71013   */
 71014  
 71015  Command.prototype.alias = function(alias) {
 71016    var command = this;
 71017    if (this.commands.length !== 0) {
 71018      command = this.commands[this.commands.length - 1];
 71019    }
 71020  
 71021    if (arguments.length === 0) return command._alias;
 71022  
 71023    if (alias === command._name) throw new Error('Command alias can\'t be the same as its name');
 71024  
 71025    command._alias = alias;
 71026    return this;
 71027  };
 71028  
 71029  /**
 71030   * Set / get the command usage `str`.
 71031   *
 71032   * @param {String} str
 71033   * @return {String|Command}
 71034   * @api public
 71035   */
 71036  
 71037  Command.prototype.usage = function(str) {
 71038    var args = this._args.map(function(arg) {
 71039      return humanReadableArgName(arg);
 71040    });
 71041  
 71042    var usage = '[options]' +
 71043      (this.commands.length ? ' [command]' : '') +
 71044      (this._args.length ? ' ' + args.join(' ') : '');
 71045  
 71046    if (arguments.length === 0) return this._usage || usage;
 71047    this._usage = str;
 71048  
 71049    return this;
 71050  };
 71051  
 71052  /**
 71053   * Get or set the name of the command
 71054   *
 71055   * @param {String} str
 71056   * @return {String|Command}
 71057   * @api public
 71058   */
 71059  
 71060  Command.prototype.name = function(str) {
 71061    if (arguments.length === 0) return this._name;
 71062    this._name = str;
 71063    return this;
 71064  };
 71065  
 71066  /**
 71067   * Return prepared commands.
 71068   *
 71069   * @return {Array}
 71070   * @api private
 71071   */
 71072  
 71073  Command.prototype.prepareCommands = function() {
 71074    return this.commands.filter(function(cmd) {
 71075      return !cmd._noHelp;
 71076    }).map(function(cmd) {
 71077      var args = cmd._args.map(function(arg) {
 71078        return humanReadableArgName(arg);
 71079      }).join(' ');
 71080  
 71081      return [
 71082        cmd._name +
 71083          (cmd._alias ? '|' + cmd._alias : '') +
 71084          (cmd.options.length ? ' [options]' : '') +
 71085          (args ? ' ' + args : ''),
 71086        cmd._description
 71087      ];
 71088    });
 71089  };
 71090  
 71091  /**
 71092   * Return the largest command length.
 71093   *
 71094   * @return {Number}
 71095   * @api private
 71096   */
 71097  
 71098  Command.prototype.largestCommandLength = function() {
 71099    var commands = this.prepareCommands();
 71100    return commands.reduce(function(max, command) {
 71101      return Math.max(max, command[0].length);
 71102    }, 0);
 71103  };
 71104  
 71105  /**
 71106   * Return the largest option length.
 71107   *
 71108   * @return {Number}
 71109   * @api private
 71110   */
 71111  
 71112  Command.prototype.largestOptionLength = function() {
 71113    var options = [].slice.call(this.options);
 71114    options.push({
 71115      flags: '-h, --help'
 71116    });
 71117    return options.reduce(function(max, option) {
 71118      return Math.max(max, option.flags.length);
 71119    }, 0);
 71120  };
 71121  
 71122  /**
 71123   * Return the largest arg length.
 71124   *
 71125   * @return {Number}
 71126   * @api private
 71127   */
 71128  
 71129  Command.prototype.largestArgLength = function() {
 71130    return this._args.reduce(function(max, arg) {
 71131      return Math.max(max, arg.name.length);
 71132    }, 0);
 71133  };
 71134  
 71135  /**
 71136   * Return the pad width.
 71137   *
 71138   * @return {Number}
 71139   * @api private
 71140   */
 71141  
 71142  Command.prototype.padWidth = function() {
 71143    var width = this.largestOptionLength();
 71144    if (this._argsDescription && this._args.length) {
 71145      if (this.largestArgLength() > width) {
 71146        width = this.largestArgLength();
 71147      }
 71148    }
 71149  
 71150    if (this.commands && this.commands.length) {
 71151      if (this.largestCommandLength() > width) {
 71152        width = this.largestCommandLength();
 71153      }
 71154    }
 71155  
 71156    return width;
 71157  };
 71158  
 71159  /**
 71160   * Return help for options.
 71161   *
 71162   * @return {String}
 71163   * @api private
 71164   */
 71165  
 71166  Command.prototype.optionHelp = function() {
 71167    var width = this.padWidth();
 71168  
 71169    // Append the help information
 71170    return this.options.map(function(option) {
 71171      return pad(option.flags, width) + '  ' + option.description +
 71172        ((option.bool && option.defaultValue !== undefined) ? ' (default: ' + option.defaultValue + ')' : '');
 71173    }).concat([pad('-h, --help', width) + '  ' + 'output usage information'])
 71174      .join('\n');
 71175  };
 71176  
 71177  /**
 71178   * Return command help documentation.
 71179   *
 71180   * @return {String}
 71181   * @api private
 71182   */
 71183  
 71184  Command.prototype.commandHelp = function() {
 71185    if (!this.commands.length) return '';
 71186  
 71187    var commands = this.prepareCommands();
 71188    var width = this.padWidth();
 71189  
 71190    return [
 71191      '  Commands:',
 71192      '',
 71193      commands.map(function(cmd) {
 71194        var desc = cmd[1] ? '  ' + cmd[1] : '';
 71195        return (desc ? pad(cmd[0], width) : cmd[0]) + desc;
 71196      }).join('\n').replace(/^/gm, '    '),
 71197      ''
 71198    ].join('\n');
 71199  };
 71200  
 71201  /**
 71202   * Return program help documentation.
 71203   *
 71204   * @return {String}
 71205   * @api private
 71206   */
 71207  
 71208  Command.prototype.helpInformation = function() {
 71209    var desc = [];
 71210    if (this._description) {
 71211      desc = [
 71212        '  ' + this._description,
 71213        ''
 71214      ];
 71215  
 71216      var argsDescription = this._argsDescription;
 71217      if (argsDescription && this._args.length) {
 71218        var width = this.padWidth();
 71219        desc.push('  Arguments:');
 71220        desc.push('');
 71221        this._args.forEach(function(arg) {
 71222          desc.push('    ' + pad(arg.name, width) + '  ' + argsDescription[arg.name]);
 71223        });
 71224        desc.push('');
 71225      }
 71226    }
 71227  
 71228    var cmdName = this._name;
 71229    if (this._alias) {
 71230      cmdName = cmdName + '|' + this._alias;
 71231    }
 71232    var usage = [
 71233      '',
 71234      '  Usage: ' + cmdName + ' ' + this.usage(),
 71235      ''
 71236    ];
 71237  
 71238    var cmds = [];
 71239    var commandHelp = this.commandHelp();
 71240    if (commandHelp) cmds = [commandHelp];
 71241  
 71242    var options = [
 71243      '  Options:',
 71244      '',
 71245      '' + this.optionHelp().replace(/^/gm, '    '),
 71246      ''
 71247    ];
 71248  
 71249    return usage
 71250      .concat(desc)
 71251      .concat(options)
 71252      .concat(cmds)
 71253      .join('\n');
 71254  };
 71255  
 71256  /**
 71257   * Output help information for this command
 71258   *
 71259   * @api public
 71260   */
 71261  
 71262  Command.prototype.outputHelp = function(cb) {
 71263    if (!cb) {
 71264      cb = function(passthru) {
 71265        return passthru;
 71266      };
 71267    }
 71268    process.stdout.write(cb(this.helpInformation()));
 71269    this.emit('--help');
 71270  };
 71271  
 71272  /**
 71273   * Output help information and exit.
 71274   *
 71275   * @api public
 71276   */
 71277  
 71278  Command.prototype.help = function(cb) {
 71279    this.outputHelp(cb);
 71280    process.exit();
 71281  };
 71282  
 71283  /**
 71284   * Camel-case the given `flag`
 71285   *
 71286   * @param {String} flag
 71287   * @return {String}
 71288   * @api private
 71289   */
 71290  
 71291  function camelcase(flag) {
 71292    return flag.split('-').reduce(function(str, word) {
 71293      return str + word[0].toUpperCase() + word.slice(1);
 71294    });
 71295  }
 71296  
 71297  /**
 71298   * Pad `str` to `width`.
 71299   *
 71300   * @param {String} str
 71301   * @param {Number} width
 71302   * @return {String}
 71303   * @api private
 71304   */
 71305  
 71306  function pad(str, width) {
 71307    var len = Math.max(0, width - str.length);
 71308    return str + Array(len + 1).join(' ');
 71309  }
 71310  
 71311  /**
 71312   * Output help information if necessary
 71313   *
 71314   * @param {Command} command to output help for
 71315   * @param {Array} array of options to search for -h or --help
 71316   * @api private
 71317   */
 71318  
 71319  function outputHelpIfNecessary(cmd, options) {
 71320    options = options || [];
 71321    for (var i = 0; i < options.length; i++) {
 71322      if (options[i] === '--help' || options[i] === '-h') {
 71323        cmd.outputHelp();
 71324        process.exit(0);
 71325      }
 71326    }
 71327  }
 71328  
 71329  /**
 71330   * Takes an argument an returns its human readable equivalent for help usage.
 71331   *
 71332   * @param {Object} arg
 71333   * @return {String}
 71334   * @api private
 71335   */
 71336  
 71337  function humanReadableArgName(arg) {
 71338    var nameOutput = arg.name + (arg.variadic === true ? '...' : '');
 71339  
 71340    return arg.required
 71341      ? '<' + nameOutput + '>'
 71342      : '[' + nameOutput + ']';
 71343  }
 71344  
 71345  // for versions before node v0.8 when there weren't `fs.existsSync`
 71346  function exists(file) {
 71347    try {
 71348      if (fs.statSync(file).isFile()) {
 71349        return true;
 71350      }
 71351    } catch (e) {
 71352      return false;
 71353    }
 71354  }
 71355  
 71356  
 71357  /***/ }),
 71358  /* 339 */
 71359  /***/ (function(module, exports, __webpack_require__) {
 71360  
 71361  module.exports = __webpack_require__(477)().Promise
 71362  
 71363  
 71364  /***/ }),
 71365  /* 340 */
 71366  /***/ (function(module, exports) {
 71367  
 71368  // API
 71369  module.exports = abort;
 71370  
 71371  /**
 71372   * Aborts leftover active jobs
 71373   *
 71374   * @param {object} state - current state object
 71375   */
 71376  function abort(state)
 71377  {
 71378    Object.keys(state.jobs).forEach(clean.bind(state));
 71379  
 71380    // reset leftover jobs
 71381    state.jobs = {};
 71382  }
 71383  
 71384  /**
 71385   * Cleans up leftover job by invoking abort function for the provided job id
 71386   *
 71387   * @this  state
 71388   * @param {string|number} key - job id to abort
 71389   */
 71390  function clean(key)
 71391  {
 71392    if (typeof this.jobs[key] == 'function')
 71393    {
 71394      this.jobs[key]();
 71395    }
 71396  }
 71397  
 71398  
 71399  /***/ }),
 71400  /* 341 */
 71401  /***/ (function(module, exports, __webpack_require__) {
 71402  
 71403  var defer = __webpack_require__(486);
 71404  
 71405  // API
 71406  module.exports = async;
 71407  
 71408  /**
 71409   * Runs provided callback asynchronously
 71410   * even if callback itself is not
 71411   *
 71412   * @param   {function} callback - callback to invoke
 71413   * @returns {function} - augmented callback
 71414   */
 71415  function async(callback)
 71416  {
 71417    var isAsync = false;
 71418  
 71419    // check if async happened
 71420    defer(function() { isAsync = true; });
 71421  
 71422    return function async_callback(err, result)
 71423    {
 71424      if (isAsync)
 71425      {
 71426        callback(err, result);
 71427      }
 71428      else
 71429      {
 71430        defer(function nextTick_callback()
 71431        {
 71432          callback(err, result);
 71433        });
 71434      }
 71435    };
 71436  }
 71437  
 71438  
 71439  /***/ }),
 71440  /* 342 */
 71441  /***/ (function(module, exports, __webpack_require__) {
 71442  
 71443  var async = __webpack_require__(341)
 71444    , abort = __webpack_require__(340)
 71445    ;
 71446  
 71447  // API
 71448  module.exports = iterate;
 71449  
 71450  /**
 71451   * Iterates over each job object
 71452   *
 71453   * @param {array|object} list - array or object (named list) to iterate over
 71454   * @param {function} iterator - iterator to run
 71455   * @param {object} state - current job status
 71456   * @param {function} callback - invoked when all elements processed
 71457   */
 71458  function iterate(list, iterator, state, callback)
 71459  {
 71460    // store current index
 71461    var key = state['keyedList'] ? state['keyedList'][state.index] : state.index;
 71462  
 71463    state.jobs[key] = runJob(iterator, key, list[key], function(error, output)
 71464    {
 71465      // don't repeat yourself
 71466      // skip secondary callbacks
 71467      if (!(key in state.jobs))
 71468      {
 71469        return;
 71470      }
 71471  
 71472      // clean up jobs
 71473      delete state.jobs[key];
 71474  
 71475      if (error)
 71476      {
 71477        // don't process rest of the results
 71478        // stop still active jobs
 71479        // and reset the list
 71480        abort(state);
 71481      }
 71482      else
 71483      {
 71484        state.results[key] = output;
 71485      }
 71486  
 71487      // return salvaged results
 71488      callback(error, state.results);
 71489    });
 71490  }
 71491  
 71492  /**
 71493   * Runs iterator over provided job element
 71494   *
 71495   * @param   {function} iterator - iterator to invoke
 71496   * @param   {string|number} key - key/index of the element in the list of jobs
 71497   * @param   {mixed} item - job description
 71498   * @param   {function} callback - invoked after iterator is done with the job
 71499   * @returns {function|mixed} - job abort function or something else
 71500   */
 71501  function runJob(iterator, key, item, callback)
 71502  {
 71503    var aborter;
 71504  
 71505    // allow shortcut if iterator expects only two arguments
 71506    if (iterator.length == 2)
 71507    {
 71508      aborter = iterator(item, async(callback));
 71509    }
 71510    // otherwise go with full three arguments
 71511    else
 71512    {
 71513      aborter = iterator(item, key, async(callback));
 71514    }
 71515  
 71516    return aborter;
 71517  }
 71518  
 71519  
 71520  /***/ }),
 71521  /* 343 */
 71522  /***/ (function(module, exports) {
 71523  
 71524  // API
 71525  module.exports = state;
 71526  
 71527  /**
 71528   * Creates initial state object
 71529   * for iteration over list
 71530   *
 71531   * @param   {array|object} list - list to iterate over
 71532   * @param   {function|null} sortMethod - function to use for keys sort,
 71533   *                                     or `null` to keep them as is
 71534   * @returns {object} - initial state object
 71535   */
 71536  function state(list, sortMethod)
 71537  {
 71538    var isNamedList = !Array.isArray(list)
 71539      , initState =
 71540      {
 71541        index    : 0,
 71542        keyedList: isNamedList || sortMethod ? Object.keys(list) : null,
 71543        jobs     : {},
 71544        results  : isNamedList ? {} : [],
 71545        size     : isNamedList ? Object.keys(list).length : list.length
 71546      }
 71547      ;
 71548  
 71549    if (sortMethod)
 71550    {
 71551      // sort array keys based on it's values
 71552      // sort object's keys just on own merit
 71553      initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)
 71554      {
 71555        return sortMethod(list[a], list[b]);
 71556      });
 71557    }
 71558  
 71559    return initState;
 71560  }
 71561  
 71562  
 71563  /***/ }),
 71564  /* 344 */
 71565  /***/ (function(module, exports, __webpack_require__) {
 71566  
 71567  var abort = __webpack_require__(340)
 71568    , async = __webpack_require__(341)
 71569    ;
 71570  
 71571  // API
 71572  module.exports = terminator;
 71573  
 71574  /**
 71575   * Terminates jobs in the attached state context
 71576   *
 71577   * @this  AsyncKitState#
 71578   * @param {function} callback - final callback to invoke after termination
 71579   */
 71580  function terminator(callback)
 71581  {
 71582    if (!Object.keys(this.jobs).length)
 71583    {
 71584      return;
 71585    }
 71586  
 71587    // fast forward iteration index
 71588    this.index = this.size;
 71589  
 71590    // abort jobs
 71591    abort(this);
 71592  
 71593    // send back results we have so far
 71594    async(callback)(null, this.results);
 71595  }
 71596  
 71597  
 71598  /***/ }),
 71599  /* 345 */
 71600  /***/ (function(module, exports, __webpack_require__) {
 71601  
 71602  var iterate    = __webpack_require__(342)
 71603    , initState  = __webpack_require__(343)
 71604    , terminator = __webpack_require__(344)
 71605    ;
 71606  
 71607  // Public API
 71608  module.exports = serialOrdered;
 71609  // sorting helpers
 71610  module.exports.ascending  = ascending;
 71611  module.exports.descending = descending;
 71612  
 71613  /**
 71614   * Runs iterator over provided sorted array elements in series
 71615   *
 71616   * @param   {array|object} list - array or object (named list) to iterate over
 71617   * @param   {function} iterator - iterator to run
 71618   * @param   {function} sortMethod - custom sort function
 71619   * @param   {function} callback - invoked when all elements processed
 71620   * @returns {function} - jobs terminator
 71621   */
 71622  function serialOrdered(list, iterator, sortMethod, callback)
 71623  {
 71624    var state = initState(list, sortMethod);
 71625  
 71626    iterate(list, iterator, state, function iteratorHandler(error, result)
 71627    {
 71628      if (error)
 71629      {
 71630        callback(error, result);
 71631        return;
 71632      }
 71633  
 71634      state.index++;
 71635  
 71636      // are we there yet?
 71637      if (state.index < (state['keyedList'] || list).length)
 71638      {
 71639        iterate(list, iterator, state, iteratorHandler);
 71640        return;
 71641      }
 71642  
 71643      // done here
 71644      callback(null, state.results);
 71645    });
 71646  
 71647    return terminator.bind(state, callback);
 71648  }
 71649  
 71650  /*
 71651   * -- Sort methods
 71652   */
 71653  
 71654  /**
 71655   * sort helper to sort array elements in ascending order
 71656   *
 71657   * @param   {mixed} a - an item to compare
 71658   * @param   {mixed} b - an item to compare
 71659   * @returns {number} - comparison result
 71660   */
 71661  function ascending(a, b)
 71662  {
 71663    return a < b ? -1 : a > b ? 1 : 0;
 71664  }
 71665  
 71666  /**
 71667   * sort helper to sort array elements in descending order
 71668   *
 71669   * @param   {mixed} a - an item to compare
 71670   * @param   {mixed} b - an item to compare
 71671   * @returns {number} - comparison result
 71672   */
 71673  function descending(a, b)
 71674  {
 71675    return -1 * ascending(a, b);
 71676  }
 71677  
 71678  
 71679  /***/ }),
 71680  /* 346 */
 71681  /***/ (function(module, exports, __webpack_require__) {
 71682  
 71683  "use strict";
 71684  
 71685  
 71686  Object.defineProperty(exports, "__esModule", {
 71687    value: true
 71688  });
 71689  exports.default = {
 71690    'upgrade-interactive': 'upgradeInteractive',
 71691    'generate-lock-entry': 'generateLockEntry'
 71692  };
 71693  
 71694  /***/ }),
 71695  /* 347 */
 71696  /***/ (function(module, exports, __webpack_require__) {
 71697  
 71698  "use strict";
 71699  
 71700  
 71701  Object.defineProperty(exports, "__esModule", {
 71702    value: true
 71703  });
 71704  exports.run = undefined;
 71705  
 71706  var _asyncToGenerator2;
 71707  
 71708  function _load_asyncToGenerator() {
 71709    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 71710  }
 71711  
 71712  let run = exports.run = (() => {
 71713    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 71714      const DEFAULT_LOG_LEVEL = 'info';
 71715      const audit = new Audit(config, reporter, {
 71716        groups: flags.groups || (_constants || _load_constants()).OWNED_DEPENDENCY_TYPES,
 71717        level: flags.level || DEFAULT_LOG_LEVEL
 71718      });
 71719      const lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.lockfileFolder, reporter);
 71720      const install = new (_install || _load_install()).Install({}, config, reporter, lockfile);
 71721  
 71722      var _ref2 = yield install.fetchRequestFromCwd();
 71723  
 71724      const manifest = _ref2.manifest,
 71725            requests = _ref2.requests,
 71726            patterns = _ref2.patterns,
 71727            workspaceLayout = _ref2.workspaceLayout;
 71728  
 71729      yield install.resolver.init(requests, {
 71730        workspaceLayout
 71731      });
 71732  
 71733      const vulnerabilities = yield audit.performAudit(manifest, lockfile, install.resolver, install.linker, patterns);
 71734  
 71735      const EXIT_INFO = 1;
 71736      const EXIT_LOW = 2;
 71737      const EXIT_MODERATE = 4;
 71738      const EXIT_HIGH = 8;
 71739      const EXIT_CRITICAL = 16;
 71740  
 71741      const exitCode = (vulnerabilities.info ? EXIT_INFO : 0) + (vulnerabilities.low ? EXIT_LOW : 0) + (vulnerabilities.moderate ? EXIT_MODERATE : 0) + (vulnerabilities.high ? EXIT_HIGH : 0) + (vulnerabilities.critical ? EXIT_CRITICAL : 0);
 71742  
 71743      if (flags.summary) {
 71744        audit.summary();
 71745      } else {
 71746        audit.report();
 71747      }
 71748  
 71749      return exitCode;
 71750    });
 71751  
 71752    return function run(_x, _x2, _x3, _x4) {
 71753      return _ref.apply(this, arguments);
 71754    };
 71755  })();
 71756  
 71757  exports.setFlags = setFlags;
 71758  exports.hasWrapper = hasWrapper;
 71759  
 71760  var _promise;
 71761  
 71762  function _load_promise() {
 71763    return _promise = __webpack_require__(51);
 71764  }
 71765  
 71766  var _hoistedTreeBuilder;
 71767  
 71768  function _load_hoistedTreeBuilder() {
 71769    return _hoistedTreeBuilder = __webpack_require__(522);
 71770  }
 71771  
 71772  var _getTransitiveDevDependencies;
 71773  
 71774  function _load_getTransitiveDevDependencies() {
 71775    return _getTransitiveDevDependencies = __webpack_require__(548);
 71776  }
 71777  
 71778  var _install;
 71779  
 71780  function _load_install() {
 71781    return _install = __webpack_require__(34);
 71782  }
 71783  
 71784  var _lockfile;
 71785  
 71786  function _load_lockfile() {
 71787    return _lockfile = _interopRequireDefault(__webpack_require__(19));
 71788  }
 71789  
 71790  var _constants;
 71791  
 71792  function _load_constants() {
 71793    return _constants = __webpack_require__(8);
 71794  }
 71795  
 71796  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 71797  
 71798  const zlib = __webpack_require__(199);
 71799  
 71800  const gzip = (0, (_promise || _load_promise()).promisify)(zlib.gzip);
 71801  
 71802  function setFlags(commander) {
 71803    commander.description('Checks for known security issues with the installed packages.');
 71804    commander.option('--summary', 'Only print the summary.');
 71805    commander.option('--groups <group_name> [<group_name> ...]', `Only audit dependencies from listed groups. Default: ${(_constants || _load_constants()).OWNED_DEPENDENCY_TYPES.join(', ')}`, groups => groups.split(' '), (_constants || _load_constants()).OWNED_DEPENDENCY_TYPES);
 71806    commander.option('--level <severity>', `Only print advisories with severity greater than or equal to one of the following: \
 71807      info|low|moderate|high|critical. Default: info`, 'info');
 71808  }
 71809  
 71810  function hasWrapper(commander, args) {
 71811    return true;
 71812  }
 71813  
 71814  class Audit {
 71815  
 71816    constructor(config, reporter, options) {
 71817      this.severityLevels = ['info', 'low', 'moderate', 'high', 'critical'];
 71818  
 71819      this.config = config;
 71820      this.reporter = reporter;
 71821      this.options = options;
 71822    }
 71823  
 71824    _mapHoistedNodes(auditNode, hoistedNodes, transitiveDevDeps) {
 71825      for (var _iterator = hoistedNodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 71826        var _ref3;
 71827  
 71828        if (_isArray) {
 71829          if (_i >= _iterator.length) break;
 71830          _ref3 = _iterator[_i++];
 71831        } else {
 71832          _i = _iterator.next();
 71833          if (_i.done) break;
 71834          _ref3 = _i.value;
 71835        }
 71836  
 71837        const node = _ref3;
 71838  
 71839        const pkg = node.manifest.pkg;
 71840        const requires = Object.assign({}, pkg.dependencies || {}, pkg.optionalDependencies || {});
 71841        for (var _iterator2 = Object.keys(requires), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 71842          var _ref4;
 71843  
 71844          if (_isArray2) {
 71845            if (_i2 >= _iterator2.length) break;
 71846            _ref4 = _iterator2[_i2++];
 71847          } else {
 71848            _i2 = _iterator2.next();
 71849            if (_i2.done) break;
 71850            _ref4 = _i2.value;
 71851          }
 71852  
 71853          const name = _ref4;
 71854  
 71855          if (!requires[name]) {
 71856            requires[name] = '*';
 71857          }
 71858        }
 71859        auditNode.dependencies[node.name] = {
 71860          version: node.version,
 71861          integrity: pkg._remote ? pkg._remote.integrity || '' : '',
 71862          requires,
 71863          dependencies: {},
 71864          dev: transitiveDevDeps.has(`${node.name}@${node.version}`)
 71865        };
 71866        if (node.children) {
 71867          this._mapHoistedNodes(auditNode.dependencies[node.name], node.children, transitiveDevDeps);
 71868        }
 71869      }
 71870    }
 71871  
 71872    _mapHoistedTreesToAuditTree(manifest, hoistedTrees, transitiveDevDeps) {
 71873      const requiresGroups = this.options.groups.map(function (group) {
 71874        return manifest[group] || {};
 71875      });
 71876  
 71877      const auditTree = {
 71878        name: manifest.name || undefined,
 71879        version: manifest.version || undefined,
 71880        install: [],
 71881        remove: [],
 71882        metadata: {
 71883          //TODO: What do we send here? npm sends npm version, node version, etc.
 71884        },
 71885        requires: Object.assign({}, ...requiresGroups),
 71886        integrity: undefined,
 71887        dependencies: {},
 71888        dev: false
 71889      };
 71890  
 71891      this._mapHoistedNodes(auditTree, hoistedTrees, transitiveDevDeps);
 71892      return auditTree;
 71893    }
 71894  
 71895    _fetchAudit(auditTree) {
 71896      var _this = this;
 71897  
 71898      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 71899        let responseJson;
 71900        const registry = (_constants || _load_constants()).YARN_REGISTRY;
 71901        _this.reporter.verbose(`Audit Request: ${JSON.stringify(auditTree, null, 2)}`);
 71902        const requestBody = yield gzip(JSON.stringify(auditTree));
 71903        const response = yield _this.config.requestManager.request({
 71904          url: `${registry}/-/npm/v1/security/audits`,
 71905          method: 'POST',
 71906          body: requestBody,
 71907          headers: {
 71908            'Content-Encoding': 'gzip',
 71909            'Content-Type': 'application/json',
 71910            Accept: 'application/json'
 71911          }
 71912        });
 71913  
 71914        try {
 71915          responseJson = JSON.parse(response);
 71916        } catch (ex) {
 71917          throw new Error(`Unexpected audit response (Invalid JSON): ${response}`);
 71918        }
 71919        if (!responseJson.metadata) {
 71920          throw new Error(`Unexpected audit response (Missing Metadata): ${JSON.stringify(responseJson, null, 2)}`);
 71921        }
 71922        _this.reporter.verbose(`Audit Response: ${JSON.stringify(responseJson, null, 2)}`);
 71923        return responseJson;
 71924      })();
 71925    }
 71926  
 71927    _insertWorkspacePackagesIntoManifest(manifest, resolver) {
 71928      if (resolver.workspaceLayout) {
 71929        const workspaceAggregatorName = resolver.workspaceLayout.virtualManifestName;
 71930        const workspaceManifest = resolver.workspaceLayout.workspaces[workspaceAggregatorName].manifest;
 71931  
 71932        manifest.dependencies = Object.assign(manifest.dependencies || {}, workspaceManifest.dependencies);
 71933        manifest.devDependencies = Object.assign(manifest.devDependencies || {}, workspaceManifest.devDependencies);
 71934        manifest.optionalDependencies = Object.assign(manifest.optionalDependencies || {}, workspaceManifest.optionalDependencies);
 71935      }
 71936    }
 71937  
 71938    performAudit(manifest, lockfile, resolver, linker, patterns) {
 71939      var _this2 = this;
 71940  
 71941      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 71942        _this2._insertWorkspacePackagesIntoManifest(manifest, resolver);
 71943        const transitiveDevDeps = (0, (_getTransitiveDevDependencies || _load_getTransitiveDevDependencies()).getTransitiveDevDependencies)(manifest, resolver.workspaceLayout, lockfile);
 71944        const hoistedTrees = yield (0, (_hoistedTreeBuilder || _load_hoistedTreeBuilder()).buildTree)(resolver, linker, patterns);
 71945        const auditTree = _this2._mapHoistedTreesToAuditTree(manifest, hoistedTrees, transitiveDevDeps);
 71946        _this2.auditData = yield _this2._fetchAudit(auditTree);
 71947        return _this2.auditData.metadata.vulnerabilities;
 71948      })();
 71949    }
 71950  
 71951    summary() {
 71952      if (!this.auditData) {
 71953        return;
 71954      }
 71955      this.reporter.auditSummary(this.auditData.metadata);
 71956    }
 71957  
 71958    report() {
 71959      if (!this.auditData) {
 71960        return;
 71961      }
 71962  
 71963      const startLoggingAt = Math.max(0, this.severityLevels.indexOf(this.options.level));
 71964  
 71965      const reportAdvisory = resolution => {
 71966        const advisory = this.auditData.advisories[resolution.id.toString()];
 71967  
 71968        if (this.severityLevels.indexOf(advisory.severity) >= startLoggingAt) {
 71969          this.reporter.auditAdvisory(resolution, advisory);
 71970        }
 71971      };
 71972  
 71973      if (Object.keys(this.auditData.advisories).length !== 0) {
 71974        // let printedManualReviewHeader = false;
 71975  
 71976        this.auditData.actions.forEach(action => {
 71977          action.resolves.forEach(reportAdvisory);
 71978  
 71979          /* The following block has been temporarily removed
 71980           * because the actions returned by npm are not valid for yarn.
 71981           * Removing this action reporting until we can come up with a way
 71982           * to correctly resolve issues.
 71983           */
 71984          // if (action.action === 'update' || action.action === 'install') {
 71985          //   // these advisories can be resolved automatically by running a yarn command
 71986          //   const recommendation: AuditActionRecommendation = {
 71987          //     cmd: `yarn upgrade ${action.module}@${action.target}`,
 71988          //     isBreaking: action.isMajor,
 71989          //     action,
 71990          //   };
 71991          //   this.reporter.auditAction(recommendation);
 71992          //   action.resolves.forEach(reportAdvisory);
 71993          // }
 71994  
 71995          // if (action.action === 'review') {
 71996          //   // these advisories cannot be resolved automatically and require manual review
 71997          //   if (!printedManualReviewHeader) {
 71998          //     this.reporter.auditManualReview();
 71999          //   }
 72000          //   printedManualReviewHeader = true;
 72001          //   action.resolves.forEach(reportAdvisory);
 72002          // }
 72003        });
 72004      }
 72005  
 72006      this.summary();
 72007    }
 72008  }
 72009  exports.default = Audit;
 72010  
 72011  /***/ }),
 72012  /* 348 */
 72013  /***/ (function(module, exports, __webpack_require__) {
 72014  
 72015  "use strict";
 72016  
 72017  
 72018  Object.defineProperty(exports, "__esModule", {
 72019    value: true
 72020  });
 72021  exports.run = exports.clean = exports.noArguments = exports.requireLockfile = undefined;
 72022  
 72023  var _asyncToGenerator2;
 72024  
 72025  function _load_asyncToGenerator() {
 72026    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 72027  }
 72028  
 72029  let clean = exports.clean = (() => {
 72030    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter) {
 72031      const loc = path.join(config.lockfileFolder, (_constants || _load_constants()).CLEAN_FILENAME);
 72032      const file = yield (_fs || _load_fs()).readFile(loc);
 72033      const lines = file.split('\n');
 72034      const filters = (0, (_filter || _load_filter()).ignoreLinesToRegex)(lines);
 72035  
 72036      let removedFiles = 0;
 72037      let removedSize = 0;
 72038  
 72039      // build list of possible module folders
 72040      const locs = new Set();
 72041      for (var _iterator = config.registryFolders, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 72042        var _ref2;
 72043  
 72044        if (_isArray) {
 72045          if (_i >= _iterator.length) break;
 72046          _ref2 = _iterator[_i++];
 72047        } else {
 72048          _i = _iterator.next();
 72049          if (_i.done) break;
 72050          _ref2 = _i.value;
 72051        }
 72052  
 72053        const registryFolder = _ref2;
 72054  
 72055        locs.add(path.resolve(config.lockfileFolder, registryFolder));
 72056      }
 72057  
 72058      const workspaceRootFolder = config.workspaceRootFolder;
 72059      if (workspaceRootFolder) {
 72060        const manifest = yield config.findManifest(workspaceRootFolder, false);
 72061        invariant(manifest && manifest.workspaces, 'We must find a manifest with a "workspaces" property');
 72062  
 72063        const workspaces = yield config.resolveWorkspaces(workspaceRootFolder, manifest);
 72064  
 72065        for (var _iterator2 = Object.keys(workspaces), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 72066          var _ref3;
 72067  
 72068          if (_isArray2) {
 72069            if (_i2 >= _iterator2.length) break;
 72070            _ref3 = _iterator2[_i2++];
 72071          } else {
 72072            _i2 = _iterator2.next();
 72073            if (_i2.done) break;
 72074            _ref3 = _i2.value;
 72075          }
 72076  
 72077          const workspaceName = _ref3;
 72078  
 72079          for (var _iterator3 = (_index || _load_index()).registryNames, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 72080            var _ref4;
 72081  
 72082            if (_isArray3) {
 72083              if (_i3 >= _iterator3.length) break;
 72084              _ref4 = _iterator3[_i3++];
 72085            } else {
 72086              _i3 = _iterator3.next();
 72087              if (_i3.done) break;
 72088              _ref4 = _i3.value;
 72089            }
 72090  
 72091            const name = _ref4;
 72092  
 72093            const registry = config.registries[name];
 72094            locs.add(path.join(workspaces[workspaceName].loc, registry.folder));
 72095          }
 72096        }
 72097      }
 72098  
 72099      for (var _iterator4 = locs, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 72100        var _ref5;
 72101  
 72102        if (_isArray4) {
 72103          if (_i4 >= _iterator4.length) break;
 72104          _ref5 = _iterator4[_i4++];
 72105        } else {
 72106          _i4 = _iterator4.next();
 72107          if (_i4.done) break;
 72108          _ref5 = _i4.value;
 72109        }
 72110  
 72111        const folder = _ref5;
 72112  
 72113        if (!(yield (_fs || _load_fs()).exists(folder))) {
 72114          continue;
 72115        }
 72116  
 72117        const spinner = reporter.activity();
 72118        const files = yield (_fs || _load_fs()).walk(folder);
 72119  
 72120        var _sortFilter = (0, (_filter || _load_filter()).sortFilter)(files, filters);
 72121  
 72122        const ignoreFiles = _sortFilter.ignoreFiles;
 72123  
 72124        spinner.end();
 72125  
 72126        const tick = reporter.progress(ignoreFiles.size);
 72127        // TODO make sure `main` field of all modules isn't ignored
 72128  
 72129        for (var _iterator5 = ignoreFiles, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
 72130          var _ref6;
 72131  
 72132          if (_isArray5) {
 72133            if (_i5 >= _iterator5.length) break;
 72134            _ref6 = _iterator5[_i5++];
 72135          } else {
 72136            _i5 = _iterator5.next();
 72137            if (_i5.done) break;
 72138            _ref6 = _i5.value;
 72139          }
 72140  
 72141          const file = _ref6;
 72142  
 72143          const loc = path.join(folder, file);
 72144          const stat = yield (_fs || _load_fs()).lstat(loc);
 72145          removedSize += stat.size;
 72146          removedFiles++;
 72147        }
 72148  
 72149        for (var _iterator6 = ignoreFiles, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
 72150          var _ref7;
 72151  
 72152          if (_isArray6) {
 72153            if (_i6 >= _iterator6.length) break;
 72154            _ref7 = _iterator6[_i6++];
 72155          } else {
 72156            _i6 = _iterator6.next();
 72157            if (_i6.done) break;
 72158            _ref7 = _i6.value;
 72159          }
 72160  
 72161          const file = _ref7;
 72162  
 72163          const loc = path.join(folder, file);
 72164          yield (_fs || _load_fs()).unlink(loc);
 72165          tick();
 72166        }
 72167      }
 72168  
 72169      return { removedFiles, removedSize };
 72170    });
 72171  
 72172    return function clean(_x, _x2) {
 72173      return _ref.apply(this, arguments);
 72174    };
 72175  })();
 72176  
 72177  let runInit = (() => {
 72178    var _ref8 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (cwd, reporter) {
 72179      reporter.step(1, 1, reporter.lang('cleanCreatingFile', (_constants || _load_constants()).CLEAN_FILENAME));
 72180      const cleanLoc = path.join(cwd, (_constants || _load_constants()).CLEAN_FILENAME);
 72181      yield (_fs || _load_fs()).writeFile(cleanLoc, `${DEFAULT_FILTER}\n`, { flag: 'wx' });
 72182      reporter.info(reporter.lang('cleanCreatedFile', (_constants || _load_constants()).CLEAN_FILENAME));
 72183    });
 72184  
 72185    return function runInit(_x3, _x4) {
 72186      return _ref8.apply(this, arguments);
 72187    };
 72188  })();
 72189  
 72190  let runAutoClean = (() => {
 72191    var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter) {
 72192      reporter.step(1, 1, reporter.lang('cleaning'));
 72193  
 72194      var _ref10 = yield clean(config, reporter);
 72195  
 72196      const removedFiles = _ref10.removedFiles,
 72197            removedSize = _ref10.removedSize;
 72198  
 72199      reporter.info(reporter.lang('cleanRemovedFiles', removedFiles));
 72200      reporter.info(reporter.lang('cleanSavedSize', Number((removedSize / 1024 / 1024).toFixed(2))));
 72201    });
 72202  
 72203    return function runAutoClean(_x5, _x6) {
 72204      return _ref9.apply(this, arguments);
 72205    };
 72206  })();
 72207  
 72208  let checkForCleanFile = (() => {
 72209    var _ref11 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (cwd) {
 72210      const cleanLoc = path.join(cwd, (_constants || _load_constants()).CLEAN_FILENAME);
 72211      const exists = yield (_fs || _load_fs()).exists(cleanLoc);
 72212      return exists;
 72213    });
 72214  
 72215    return function checkForCleanFile(_x7) {
 72216      return _ref11.apply(this, arguments);
 72217    };
 72218  })();
 72219  
 72220  let run = exports.run = (() => {
 72221    var _ref12 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 72222      const cleanFileExists = yield checkForCleanFile(config.cwd);
 72223  
 72224      if (flags.init && cleanFileExists) {
 72225        reporter.info(reporter.lang('cleanAlreadyExists', (_constants || _load_constants()).CLEAN_FILENAME));
 72226      } else if (flags.init) {
 72227        yield runInit(config.cwd, reporter);
 72228      } else if (flags.force && cleanFileExists) {
 72229        yield runAutoClean(config, reporter);
 72230      } else if (cleanFileExists) {
 72231        reporter.info(reporter.lang('cleanRequiresForce', (_constants || _load_constants()).CLEAN_FILENAME));
 72232      } else {
 72233        reporter.info(reporter.lang('cleanDoesNotExist', (_constants || _load_constants()).CLEAN_FILENAME));
 72234      }
 72235    });
 72236  
 72237    return function run(_x8, _x9, _x10, _x11) {
 72238      return _ref12.apply(this, arguments);
 72239    };
 72240  })();
 72241  
 72242  exports.setFlags = setFlags;
 72243  exports.hasWrapper = hasWrapper;
 72244  
 72245  var _index;
 72246  
 72247  function _load_index() {
 72248    return _index = __webpack_require__(58);
 72249  }
 72250  
 72251  var _filter;
 72252  
 72253  function _load_filter() {
 72254    return _filter = __webpack_require__(366);
 72255  }
 72256  
 72257  var _constants;
 72258  
 72259  function _load_constants() {
 72260    return _constants = __webpack_require__(8);
 72261  }
 72262  
 72263  var _fs;
 72264  
 72265  function _load_fs() {
 72266    return _fs = _interopRequireWildcard(__webpack_require__(5));
 72267  }
 72268  
 72269  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 72270  
 72271  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 72272  
 72273  const invariant = __webpack_require__(9);
 72274  const path = __webpack_require__(0);
 72275  
 72276  const requireLockfile = exports.requireLockfile = true;
 72277  const noArguments = exports.noArguments = true;
 72278  
 72279  const DEFAULT_FILTER = `
 72280  # test directories
 72281  __tests__
 72282  test
 72283  tests
 72284  powered-test
 72285  
 72286  # asset directories
 72287  docs
 72288  doc
 72289  website
 72290  images
 72291  assets
 72292  
 72293  # examples
 72294  example
 72295  examples
 72296  
 72297  # code coverage directories
 72298  coverage
 72299  .nyc_output
 72300  
 72301  # build scripts
 72302  Makefile
 72303  Gulpfile.js
 72304  Gruntfile.js
 72305  
 72306  # configs
 72307  appveyor.yml
 72308  circle.yml
 72309  codeship-services.yml
 72310  codeship-steps.yml
 72311  wercker.yml
 72312  .tern-project
 72313  .gitattributes
 72314  .editorconfig
 72315  .*ignore
 72316  .eslintrc
 72317  .jshintrc
 72318  .flowconfig
 72319  .documentup.json
 72320  .yarn-metadata.json
 72321  .travis.yml
 72322  
 72323  # misc
 72324  *.md
 72325  `.trim();
 72326  
 72327  function setFlags(commander) {
 72328    commander.description('Cleans and removes unnecessary files from package dependencies.');
 72329    commander.usage('autoclean [flags]');
 72330    commander.option('-I, --init', `Create "${(_constants || _load_constants()).CLEAN_FILENAME}" file with the default entries.`);
 72331    commander.option('-F, --force', `Run autoclean using the existing "${(_constants || _load_constants()).CLEAN_FILENAME}" file.`);
 72332  }
 72333  
 72334  function hasWrapper(commander) {
 72335    return true;
 72336  }
 72337  
 72338  /***/ }),
 72339  /* 349 */
 72340  /***/ (function(module, exports, __webpack_require__) {
 72341  
 72342  "use strict";
 72343  
 72344  
 72345  Object.defineProperty(exports, "__esModule", {
 72346    value: true
 72347  });
 72348  exports.examples = exports.run = exports.getCachedPackagesDirs = undefined;
 72349  
 72350  var _asyncToGenerator2;
 72351  
 72352  function _load_asyncToGenerator() {
 72353    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 72354  }
 72355  
 72356  let getCachedPackagesDirs = exports.getCachedPackagesDirs = (() => {
 72357    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, currentPath) {
 72358      const results = [];
 72359      const stat = yield (_fs || _load_fs()).lstat(currentPath);
 72360  
 72361      if (!stat.isDirectory()) {
 72362        return results;
 72363      }
 72364  
 72365      const folders = yield (_fs || _load_fs()).readdir(currentPath);
 72366      for (var _iterator = folders, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 72367        var _ref2;
 72368  
 72369        if (_isArray) {
 72370          if (_i >= _iterator.length) break;
 72371          _ref2 = _iterator[_i++];
 72372        } else {
 72373          _i = _iterator.next();
 72374          if (_i.done) break;
 72375          _ref2 = _i.value;
 72376        }
 72377  
 72378        const folder = _ref2;
 72379  
 72380        if (folder[0] === '.') {
 72381          continue;
 72382        }
 72383        const packageParentPath = path.join(currentPath, folder, 'node_modules');
 72384  
 72385        const candidates = yield (_fs || _load_fs()).readdir(packageParentPath);
 72386        invariant(candidates.length === 1, `There should only be one folder in a package cache (got ${candidates.join(',')} in ${packageParentPath})`);
 72387  
 72388        for (var _iterator2 = candidates, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 72389          var _ref3;
 72390  
 72391          if (_isArray2) {
 72392            if (_i2 >= _iterator2.length) break;
 72393            _ref3 = _iterator2[_i2++];
 72394          } else {
 72395            _i2 = _iterator2.next();
 72396            if (_i2.done) break;
 72397            _ref3 = _i2.value;
 72398          }
 72399  
 72400          const candidate = _ref3;
 72401  
 72402          const candidatePath = path.join(packageParentPath, candidate);
 72403          if (candidate.charAt(0) === '@') {
 72404            const subCandidates = yield (_fs || _load_fs()).readdir(candidatePath);
 72405            invariant(subCandidates.length === 1, `There should only be one folder in a package cache (got ${subCandidates.join(',')} in ${candidatePath})`);
 72406  
 72407            for (var _iterator3 = subCandidates, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 72408              var _ref4;
 72409  
 72410              if (_isArray3) {
 72411                if (_i3 >= _iterator3.length) break;
 72412                _ref4 = _iterator3[_i3++];
 72413              } else {
 72414                _i3 = _iterator3.next();
 72415                if (_i3.done) break;
 72416                _ref4 = _i3.value;
 72417              }
 72418  
 72419              const subCandidate = _ref4;
 72420  
 72421              const subCandidatePath = path.join(candidatePath, subCandidate);
 72422              results.push(subCandidatePath);
 72423            }
 72424          } else {
 72425            results.push(candidatePath);
 72426          }
 72427        }
 72428      }
 72429  
 72430      return results;
 72431    });
 72432  
 72433    return function getCachedPackagesDirs(_x, _x2) {
 72434      return _ref.apply(this, arguments);
 72435    };
 72436  })();
 72437  
 72438  let getCachedPackages = (() => {
 72439    var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config) {
 72440      const paths = yield getCachedPackagesDirs(config, config.cacheFolder);
 72441      return _getMetadataWithPath(config.readPackageMetadata.bind(config), paths).then(function (packages) {
 72442        return packages.filter(function (p) {
 72443          return !!p;
 72444        });
 72445      });
 72446    });
 72447  
 72448    return function getCachedPackages(_x3) {
 72449      return _ref5.apply(this, arguments);
 72450    };
 72451  })();
 72452  
 72453  let list = (() => {
 72454    var _ref6 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 72455      const filterOut = function filterOut({ registry, package: manifest, remote } = {}) {
 72456        if (flags.pattern && !micromatch.contains(manifest.name, flags.pattern)) {
 72457          return false;
 72458        }
 72459        return true;
 72460      };
 72461  
 72462      const forReport = function forReport({ registry, package: manifest, remote } = {}) {
 72463        return [manifest.name, manifest.version, registry, remote && remote.resolved || ''];
 72464      };
 72465  
 72466      const packages = yield getCachedPackages(config);
 72467      const body = packages.filter(filterOut).map(forReport);
 72468      reporter.table(['Name', 'Version', 'Registry', 'Resolved'], body);
 72469    });
 72470  
 72471    return function list(_x4, _x5, _x6, _x7) {
 72472      return _ref6.apply(this, arguments);
 72473    };
 72474  })();
 72475  
 72476  let clean = (() => {
 72477    var _ref7 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 72478      if (config.cacheFolder) {
 72479        const activity = reporter.activity();
 72480  
 72481        if (args.length > 0) {
 72482          // Clear named packages from cache
 72483          const packages = yield getCachedPackages(config);
 72484          const shouldDelete = function shouldDelete({ registry, package: manifest, remote } = {}) {
 72485            return args.indexOf(manifest.name) !== -1;
 72486          };
 72487          const packagesToDelete = packages.filter(shouldDelete);
 72488  
 72489          for (var _iterator4 = packagesToDelete, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 72490            var _ref8;
 72491  
 72492            if (_isArray4) {
 72493              if (_i4 >= _iterator4.length) break;
 72494              _ref8 = _iterator4[_i4++];
 72495            } else {
 72496              _i4 = _iterator4.next();
 72497              if (_i4.done) break;
 72498              _ref8 = _i4.value;
 72499            }
 72500  
 72501            const manifest = _ref8;
 72502  
 72503            let relativePath = path.relative(config.cacheFolder, manifest._path);
 72504            while (relativePath && relativePath !== '.') {
 72505              yield (_fs || _load_fs()).unlink(path.resolve(config.cacheFolder, relativePath));
 72506              relativePath = path.dirname(relativePath);
 72507            }
 72508          }
 72509  
 72510          activity.end();
 72511          reporter.success(reporter.lang('clearedPackageFromCache', args[0]));
 72512        } else {
 72513          // Clear all cache
 72514          yield (_fs || _load_fs()).unlink(config._cacheRootFolder);
 72515          yield (_fs || _load_fs()).mkdirp(config.cacheFolder);
 72516          activity.end();
 72517          reporter.success(reporter.lang('clearedCache'));
 72518        }
 72519      }
 72520    });
 72521  
 72522    return function clean(_x8, _x9, _x10, _x11) {
 72523      return _ref7.apply(this, arguments);
 72524    };
 72525  })();
 72526  
 72527  exports.hasWrapper = hasWrapper;
 72528  exports.setFlags = setFlags;
 72529  
 72530  var _buildSubCommands2;
 72531  
 72532  function _load_buildSubCommands() {
 72533    return _buildSubCommands2 = _interopRequireDefault(__webpack_require__(59));
 72534  }
 72535  
 72536  var _fs;
 72537  
 72538  function _load_fs() {
 72539    return _fs = _interopRequireWildcard(__webpack_require__(5));
 72540  }
 72541  
 72542  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 72543  
 72544  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 72545  
 72546  const invariant = __webpack_require__(9);
 72547  const path = __webpack_require__(0);
 72548  const micromatch = __webpack_require__(115);
 72549  
 72550  function hasWrapper(flags, args) {
 72551    return args[0] !== 'dir';
 72552  }
 72553  
 72554  function _getMetadataWithPath(getMetadataFn, paths) {
 72555    return Promise.all(paths.map(path => getMetadataFn(path).then(r => {
 72556      r._path = path;
 72557      return r;
 72558    }).catch(error => undefined)));
 72559  }
 72560  
 72561  var _buildSubCommands = (0, (_buildSubCommands2 || _load_buildSubCommands()).default)('cache', {
 72562    ls(config, reporter, flags, args) {
 72563      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 72564        reporter.warn(`\`yarn cache ls\` is deprecated. Please use \`yarn cache list\`.`);
 72565        yield list(config, reporter, flags, args);
 72566      })();
 72567    },
 72568    list,
 72569    clean,
 72570    dir(config, reporter) {
 72571      reporter.log(config.cacheFolder, { force: true });
 72572    }
 72573  });
 72574  
 72575  const run = _buildSubCommands.run,
 72576        _setFlags = _buildSubCommands.setFlags,
 72577        examples = _buildSubCommands.examples;
 72578  exports.run = run;
 72579  exports.examples = examples;
 72580  function setFlags(commander) {
 72581    _setFlags(commander);
 72582    commander.description('Yarn cache list will print out every cached package.');
 72583    commander.option('--pattern [pattern]', 'filter cached packages by pattern');
 72584  }
 72585  
 72586  /***/ }),
 72587  /* 350 */
 72588  /***/ (function(module, exports, __webpack_require__) {
 72589  
 72590  "use strict";
 72591  
 72592  
 72593  Object.defineProperty(exports, "__esModule", {
 72594    value: true
 72595  });
 72596  exports.run = exports.verifyTreeCheck = exports.noArguments = exports.requireLockfile = undefined;
 72597  
 72598  var _asyncToGenerator2;
 72599  
 72600  function _load_asyncToGenerator() {
 72601    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 72602  }
 72603  
 72604  let verifyTreeCheck = exports.verifyTreeCheck = (() => {
 72605    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 72606      let errCount = 0;
 72607      function reportError(msg, ...vars) {
 72608        reporter.error(reporter.lang(msg, ...vars));
 72609        errCount++;
 72610      }
 72611      // check all dependencies recursively without relying on internal resolver
 72612      const registryName = 'yarn';
 72613      const registryFolder = config.registryFolders[0];
 72614      const cwd = config.workspaceRootFolder ? config.lockfileFolder : config.cwd;
 72615      const rootManifest = yield config.readManifest(cwd, registryName);
 72616  
 72617      const dependenciesToCheckVersion = [];
 72618      if (rootManifest.dependencies) {
 72619        for (const name in rootManifest.dependencies) {
 72620          const version = rootManifest.dependencies[name];
 72621          // skip linked dependencies
 72622          const isLinkedDependency = /^link:/i.test(version) || /^file:/i.test(version) && config.linkFileDependencies;
 72623          if (isLinkedDependency) {
 72624            continue;
 72625          }
 72626          dependenciesToCheckVersion.push({
 72627            name,
 72628            originalKey: name,
 72629            parentCwd: cwd,
 72630            version
 72631          });
 72632        }
 72633      }
 72634      if (rootManifest.devDependencies && !config.production) {
 72635        for (const name in rootManifest.devDependencies) {
 72636          const version = rootManifest.devDependencies[name];
 72637          // skip linked dependencies
 72638          const isLinkedDependency = /^link:/i.test(version) || /^file:/i.test(version) && config.linkFileDependencies;
 72639          if (isLinkedDependency) {
 72640            continue;
 72641          }
 72642          dependenciesToCheckVersion.push({
 72643            name,
 72644            originalKey: name,
 72645            parentCwd: cwd,
 72646            version
 72647          });
 72648        }
 72649      }
 72650  
 72651      const locationsVisited = new Set();
 72652      while (dependenciesToCheckVersion.length) {
 72653        const dep = dependenciesToCheckVersion.shift();
 72654        const manifestLoc = path.resolve(dep.parentCwd, registryFolder, dep.name);
 72655        if (locationsVisited.has(manifestLoc + `@${dep.version}`)) {
 72656          continue;
 72657        }
 72658        locationsVisited.add(manifestLoc + `@${dep.version}`);
 72659        // When plugnplay is enabled, packages aren't copied to the node_modules folder, so this check doesn't make sense
 72660        // TODO: We ideally should check that the packages are located inside the cache instead
 72661        if (config.plugnplayEnabled) {
 72662          continue;
 72663        }
 72664        if (!(yield (_fs || _load_fs()).exists(manifestLoc))) {
 72665          reportError('packageNotInstalled', `${dep.originalKey}`);
 72666          continue;
 72667        }
 72668        if (!(yield (_fs || _load_fs()).exists(path.join(manifestLoc, 'package.json')))) {
 72669          continue;
 72670        }
 72671        const pkg = yield config.readManifest(manifestLoc, registryName);
 72672        if (semver.validRange(dep.version, config.looseSemver) && !semver.satisfies(pkg.version, dep.version, config.looseSemver)) {
 72673          reportError('packageWrongVersion', dep.originalKey, dep.version, pkg.version);
 72674          continue;
 72675        }
 72676        const dependencies = pkg.dependencies;
 72677        if (dependencies) {
 72678          for (const subdep in dependencies) {
 72679            const subDepPath = path.resolve(manifestLoc, registryFolder, subdep);
 72680            let found = false;
 72681            const relative = path.relative(cwd, subDepPath);
 72682            const locations = path.normalize(relative).split(registryFolder + path.sep).filter(function (dir) {
 72683              return !!dir;
 72684            });
 72685            locations.pop();
 72686            while (locations.length >= 0) {
 72687              let possiblePath;
 72688              if (locations.length > 0) {
 72689                possiblePath = path.join(cwd, registryFolder, locations.join(path.sep + registryFolder + path.sep));
 72690              } else {
 72691                possiblePath = cwd;
 72692              }
 72693              if (yield (_fs || _load_fs()).exists(path.resolve(possiblePath, registryFolder, subdep))) {
 72694                dependenciesToCheckVersion.push({
 72695                  name: subdep,
 72696                  originalKey: `${dep.originalKey}#${subdep}`,
 72697                  parentCwd: possiblePath,
 72698                  version: dependencies[subdep]
 72699                });
 72700                found = true;
 72701                break;
 72702              }
 72703              if (!locations.length) {
 72704                break;
 72705              }
 72706              locations.pop();
 72707            }
 72708            if (!found) {
 72709              reportError('packageNotInstalled', `${dep.originalKey}#${subdep}`);
 72710            }
 72711          }
 72712        }
 72713      }
 72714  
 72715      if (errCount > 0) {
 72716        throw new (_errors || _load_errors()).MessageError(reporter.lang('foundErrors', errCount));
 72717      } else {
 72718        reporter.success(reporter.lang('folderInSync'));
 72719      }
 72720    });
 72721  
 72722    return function verifyTreeCheck(_x, _x2, _x3, _x4) {
 72723      return _ref.apply(this, arguments);
 72724    };
 72725  })();
 72726  
 72727  let integrityHashCheck = (() => {
 72728    var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 72729      let errCount = 0;
 72730      function reportError(msg, ...vars) {
 72731        reporter.error(reporter.lang(msg, ...vars));
 72732        errCount++;
 72733      }
 72734      const integrityChecker = new (_integrityChecker || _load_integrityChecker()).default(config);
 72735  
 72736      const lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.cwd);
 72737      const install = new (_install || _load_install()).Install(flags, config, reporter, lockfile);
 72738  
 72739      // get patterns that are installed when running `yarn install`
 72740  
 72741      var _ref3 = yield install.fetchRequestFromCwd();
 72742  
 72743      const patterns = _ref3.patterns,
 72744            workspaceLayout = _ref3.workspaceLayout;
 72745  
 72746  
 72747      const match = yield integrityChecker.check(patterns, lockfile.cache, flags, workspaceLayout);
 72748      for (var _iterator = match.missingPatterns, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 72749        var _ref4;
 72750  
 72751        if (_isArray) {
 72752          if (_i >= _iterator.length) break;
 72753          _ref4 = _iterator[_i++];
 72754        } else {
 72755          _i = _iterator.next();
 72756          if (_i.done) break;
 72757          _ref4 = _i.value;
 72758        }
 72759  
 72760        const pattern = _ref4;
 72761  
 72762        reportError('lockfileNotContainPattern', pattern);
 72763      }
 72764      if (match.integrityFileMissing) {
 72765        reportError('noIntegrityFile');
 72766      }
 72767      if (match.integrityMatches === false) {
 72768        reporter.warn(reporter.lang((_integrityChecker2 || _load_integrityChecker2()).integrityErrors[match.integrityError]));
 72769        reportError('integrityCheckFailed');
 72770      }
 72771  
 72772      if (errCount > 0) {
 72773        throw new (_errors || _load_errors()).MessageError(reporter.lang('foundErrors', errCount));
 72774      } else {
 72775        reporter.success(reporter.lang('folderInSync'));
 72776      }
 72777    });
 72778  
 72779    return function integrityHashCheck(_x5, _x6, _x7, _x8) {
 72780      return _ref2.apply(this, arguments);
 72781    };
 72782  })();
 72783  
 72784  let run = exports.run = (() => {
 72785    var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 72786      if (flags.verifyTree) {
 72787        yield verifyTreeCheck(config, reporter, flags, args);
 72788        return;
 72789      } else if (flags.integrity) {
 72790        yield integrityHashCheck(config, reporter, flags, args);
 72791        return;
 72792      }
 72793  
 72794      const lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.cwd);
 72795      const install = new (_install || _load_install()).Install(flags, config, reporter, lockfile);
 72796  
 72797      function humaniseLocation(loc) {
 72798        const relative = path.relative(path.join(config.cwd, 'node_modules'), loc);
 72799        const normalized = path.normalize(relative).split(path.sep);
 72800        return normalized.filter(p => p !== 'node_modules').reduce((result, part) => {
 72801          const length = result.length;
 72802          if (length && result[length - 1].startsWith('@') && result[length - 1].indexOf(path.sep) === -1) {
 72803            result[length - 1] += path.sep + part;
 72804          } else {
 72805            result.push(part);
 72806          }
 72807          return result;
 72808        }, []);
 72809      }
 72810  
 72811      let warningCount = 0;
 72812      let errCount = 0;
 72813      function reportError(msg, ...vars) {
 72814        reporter.error(reporter.lang(msg, ...vars));
 72815        errCount++;
 72816      }
 72817  
 72818      // get patterns that are installed when running `yarn install`
 72819  
 72820      var _ref6 = yield install.hydrate();
 72821  
 72822      const rawPatterns = _ref6.patterns,
 72823            workspaceLayout = _ref6.workspaceLayout;
 72824  
 72825      const patterns = yield install.flatten(rawPatterns);
 72826  
 72827      // check if patterns exist in lockfile
 72828      for (var _iterator2 = patterns, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 72829        var _ref7;
 72830  
 72831        if (_isArray2) {
 72832          if (_i2 >= _iterator2.length) break;
 72833          _ref7 = _iterator2[_i2++];
 72834        } else {
 72835          _i2 = _iterator2.next();
 72836          if (_i2.done) break;
 72837          _ref7 = _i2.value;
 72838        }
 72839  
 72840        const pattern = _ref7;
 72841  
 72842        if (!lockfile.getLocked(pattern) && (!workspaceLayout || !workspaceLayout.getManifestByPattern(pattern))) {
 72843          reportError('lockfileNotContainPattern', pattern);
 72844        }
 72845      }
 72846  
 72847      const bundledDeps = {};
 72848      // check if any of the node_modules are out of sync
 72849      const res = yield install.linker.getFlatHoistedTree(patterns, workspaceLayout);
 72850      for (var _iterator3 = res, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 72851        var _ref9;
 72852  
 72853        if (_isArray3) {
 72854          if (_i3 >= _iterator3.length) break;
 72855          _ref9 = _iterator3[_i3++];
 72856        } else {
 72857          _i3 = _iterator3.next();
 72858          if (_i3.done) break;
 72859          _ref9 = _i3.value;
 72860        }
 72861  
 72862        const _ref8 = _ref9;
 72863        const loc = _ref8[0];
 72864        var _ref8$ = _ref8[1];
 72865        const originalKey = _ref8$.originalKey;
 72866        const pkg = _ref8$.pkg;
 72867        const ignore = _ref8$.ignore;
 72868  
 72869        if (ignore) {
 72870          continue;
 72871        }
 72872  
 72873        const parts = humaniseLocation(loc);
 72874  
 72875        // grey out hoisted portions of key
 72876        let human = originalKey;
 72877        const hoistedParts = parts.slice();
 72878        const hoistedKey = parts.join('#');
 72879        if (human !== hoistedKey) {
 72880          const humanParts = human.split('#');
 72881  
 72882          for (let i = 0; i < humanParts.length; i++) {
 72883            const humanPart = humanParts[i];
 72884  
 72885            if (hoistedParts[0] === humanPart) {
 72886              hoistedParts.shift();
 72887  
 72888              if (i < humanParts.length - 1) {
 72889                humanParts[i] += '#';
 72890              }
 72891            } else {
 72892              humanParts[i] = reporter.format.dim(`${humanPart}#`);
 72893            }
 72894          }
 72895  
 72896          human = humanParts.join('');
 72897        }
 72898  
 72899        // skip unnecessary checks for linked dependencies
 72900        const remoteType = pkg._reference.remote.type;
 72901        const isLinkedDependency = remoteType === 'link' || remoteType === 'workspace' || remoteType === 'file' && config.linkFileDependencies;
 72902        const isResolution = pkg._reference.hint === 'resolution';
 72903        if (isLinkedDependency || isResolution) {
 72904          continue;
 72905        }
 72906  
 72907        if (!(yield (_fs || _load_fs()).exists(loc))) {
 72908          if (pkg._reference.optional) {
 72909            reporter.warn(reporter.lang('optionalDepNotInstalled', human));
 72910          } else {
 72911            reportError('packageNotInstalled', human);
 72912          }
 72913          continue;
 72914        }
 72915  
 72916        const pkgLoc = path.join(loc, 'package.json');
 72917  
 72918        if (yield (_fs || _load_fs()).exists(pkgLoc)) {
 72919          const packageJson = yield config.readJson(pkgLoc);
 72920          packageJson.version = semver.clean(packageJson.version);
 72921  
 72922          if (pkg.version !== packageJson.version) {
 72923            // node_modules contains wrong version
 72924            reportError('packageWrongVersion', human, pkg.version, packageJson.version);
 72925          }
 72926  
 72927          const deps = Object.assign({}, packageJson.dependencies, packageJson.peerDependencies);
 72928          bundledDeps[packageJson.name] = packageJson.bundledDependencies || [];
 72929  
 72930          for (const name in deps) {
 72931            const range = deps[name];
 72932            if (!semver.validRange(range, config.looseSemver)) {
 72933              continue; // exotic
 72934            }
 72935  
 72936            const subHuman = `${human}#${name}@${range}`;
 72937  
 72938            // find the package that this will resolve to, factoring in hoisting
 72939            const possibles = [];
 72940            let depLoc;
 72941            for (let i = parts.length; i >= 0; i--) {
 72942              const myParts = parts.slice(0, i).concat(name);
 72943  
 72944              // build package.json location for this position
 72945              const myDepPkgLoc = path.join(config.cwd, 'node_modules', myParts.join(`${path.sep}node_modules${path.sep}`));
 72946  
 72947              possibles.push(myDepPkgLoc);
 72948            }
 72949            while (possibles.length) {
 72950              const myDepPkgLoc = possibles.shift();
 72951              if (yield (_fs || _load_fs()).exists(myDepPkgLoc)) {
 72952                depLoc = myDepPkgLoc;
 72953                break;
 72954              }
 72955            }
 72956            if (!depLoc) {
 72957              // we'll hit the module not install error above when this module is hit
 72958              continue;
 72959            }
 72960  
 72961            const depPkgLoc = path.join(depLoc, 'package.json');
 72962  
 72963            if (yield (_fs || _load_fs()).exists(depPkgLoc)) {
 72964              const depPkg = yield config.readJson(depPkgLoc);
 72965              const foundHuman = `${humaniseLocation(path.dirname(depPkgLoc)).join('#')}@${depPkg.version}`;
 72966              if (!semver.satisfies(depPkg.version, range, config.looseSemver)) {
 72967                // module isn't correct semver
 72968                const resPattern = install.resolutionMap.find(name, originalKey.split('#'));
 72969                if (resPattern) {
 72970                  const resHuman = `${human}#${resPattern}`;
 72971  
 72972                  var _normalizePattern = (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(resPattern);
 72973  
 72974                  const resRange = _normalizePattern.range;
 72975  
 72976  
 72977                  if (semver.satisfies(depPkg.version, resRange, config.looseSemver)) {
 72978                    reporter.warn(reporter.lang('incompatibleResolutionVersion', foundHuman, subHuman));
 72979                    warningCount++;
 72980                  } else {
 72981                    reportError('packageDontSatisfy', resHuman, foundHuman);
 72982                  }
 72983                } else {
 72984                  reportError('packageDontSatisfy', subHuman, foundHuman);
 72985                }
 72986  
 72987                continue;
 72988              }
 72989  
 72990              // check for modules above us that this could be deduped to
 72991              for (var _iterator4 = possibles, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 72992                var _ref10;
 72993  
 72994                if (_isArray4) {
 72995                  if (_i4 >= _iterator4.length) break;
 72996                  _ref10 = _iterator4[_i4++];
 72997                } else {
 72998                  _i4 = _iterator4.next();
 72999                  if (_i4.done) break;
 73000                  _ref10 = _i4.value;
 73001                }
 73002  
 73003                const loc = _ref10;
 73004  
 73005                const locPkg = path.join(loc, 'package.json');
 73006  
 73007                if (!(yield (_fs || _load_fs()).exists(locPkg))) {
 73008                  continue;
 73009                }
 73010  
 73011                const packageJson = yield config.readJson(locPkg);
 73012                const packagePath = originalKey.split('#');
 73013                const rootDep = packagePath[0];
 73014                const packageName = packagePath[1] || packageJson.name;
 73015  
 73016                const bundledDep = bundledDeps[rootDep] && bundledDeps[rootDep].indexOf(packageName) !== -1;
 73017                if (!bundledDep && (packageJson.version === depPkg.version || semver.satisfies(packageJson.version, range, config.looseSemver) && semver.gt(packageJson.version, depPkg.version, config.looseSemver))) {
 73018                  reporter.warn(reporter.lang('couldBeDeduped', subHuman, packageJson.version, `${humaniseLocation(path.dirname(locPkg)).join('#')}@${packageJson.version}`));
 73019                  warningCount++;
 73020                }
 73021                break;
 73022              }
 73023            }
 73024          }
 73025        }
 73026      }
 73027  
 73028      if (warningCount > 1) {
 73029        reporter.info(reporter.lang('foundWarnings', warningCount));
 73030      }
 73031  
 73032      if (errCount > 0) {
 73033        throw new (_errors || _load_errors()).MessageError(reporter.lang('foundErrors', errCount));
 73034      } else {
 73035        reporter.success(reporter.lang('folderInSync'));
 73036      }
 73037    });
 73038  
 73039    return function run(_x9, _x10, _x11, _x12) {
 73040      return _ref5.apply(this, arguments);
 73041    };
 73042  })();
 73043  
 73044  exports.hasWrapper = hasWrapper;
 73045  exports.setFlags = setFlags;
 73046  
 73047  var _errors;
 73048  
 73049  function _load_errors() {
 73050    return _errors = __webpack_require__(6);
 73051  }
 73052  
 73053  var _integrityChecker;
 73054  
 73055  function _load_integrityChecker() {
 73056    return _integrityChecker = _interopRequireDefault(__webpack_require__(206));
 73057  }
 73058  
 73059  var _integrityChecker2;
 73060  
 73061  function _load_integrityChecker2() {
 73062    return _integrityChecker2 = __webpack_require__(206);
 73063  }
 73064  
 73065  var _lockfile;
 73066  
 73067  function _load_lockfile() {
 73068    return _lockfile = _interopRequireDefault(__webpack_require__(19));
 73069  }
 73070  
 73071  var _fs;
 73072  
 73073  function _load_fs() {
 73074    return _fs = _interopRequireWildcard(__webpack_require__(5));
 73075  }
 73076  
 73077  var _install;
 73078  
 73079  function _load_install() {
 73080    return _install = __webpack_require__(34);
 73081  }
 73082  
 73083  var _normalizePattern2;
 73084  
 73085  function _load_normalizePattern() {
 73086    return _normalizePattern2 = __webpack_require__(37);
 73087  }
 73088  
 73089  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 73090  
 73091  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 73092  
 73093  const semver = __webpack_require__(22);
 73094  const path = __webpack_require__(0);
 73095  
 73096  const requireLockfile = exports.requireLockfile = false;
 73097  const noArguments = exports.noArguments = true;
 73098  
 73099  function hasWrapper(commander) {
 73100    return true;
 73101  }
 73102  
 73103  function setFlags(commander) {
 73104    commander.description('Verifies if versions in the current project’s package.json match that of yarn’s lock file.');
 73105    commander.option('--integrity');
 73106    commander.option('--verify-tree');
 73107  }
 73108  
 73109  /***/ }),
 73110  /* 351 */
 73111  /***/ (function(module, exports, __webpack_require__) {
 73112  
 73113  "use strict";
 73114  
 73115  
 73116  Object.defineProperty(exports, "__esModule", {
 73117    value: true
 73118  });
 73119  exports.run = exports.getRegistryFolder = undefined;
 73120  
 73121  var _asyncToGenerator2;
 73122  
 73123  function _load_asyncToGenerator() {
 73124    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 73125  }
 73126  
 73127  let getRegistryFolder = exports.getRegistryFolder = (() => {
 73128    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, name) {
 73129      if (config.modulesFolder) {
 73130        return config.modulesFolder;
 73131      }
 73132  
 73133      const src = path.join(config.linkFolder, name);
 73134  
 73135      var _ref2 = yield config.readManifest(src);
 73136  
 73137      const _registry = _ref2._registry;
 73138  
 73139      invariant(_registry, 'expected registry');
 73140  
 73141      const registryFolder = config.registries[_registry].folder;
 73142      return path.join(config.cwd, registryFolder);
 73143    });
 73144  
 73145    return function getRegistryFolder(_x, _x2) {
 73146      return _ref.apply(this, arguments);
 73147    };
 73148  })();
 73149  
 73150  let run = exports.run = (() => {
 73151    var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 73152      if (args.length) {
 73153        for (var _iterator = args, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 73154          var _ref4;
 73155  
 73156          if (_isArray) {
 73157            if (_i >= _iterator.length) break;
 73158            _ref4 = _iterator[_i++];
 73159          } else {
 73160            _i = _iterator.next();
 73161            if (_i.done) break;
 73162            _ref4 = _i.value;
 73163          }
 73164  
 73165          const name = _ref4;
 73166  
 73167          const src = path.join(config.linkFolder, name);
 73168  
 73169          if (yield (_fs || _load_fs()).exists(src)) {
 73170            const folder = yield getRegistryFolder(config, name);
 73171            const dest = path.join(folder, name);
 73172  
 73173            yield (_fs || _load_fs()).unlink(dest);
 73174            yield (_fs || _load_fs()).mkdirp(path.dirname(dest));
 73175            yield (_fs || _load_fs()).symlink(src, dest);
 73176            reporter.success(reporter.lang('linkUsing', name));
 73177          } else {
 73178            throw new (_errors || _load_errors()).MessageError(reporter.lang('linkMissing', name));
 73179          }
 73180        }
 73181      } else {
 73182        // add cwd module to the global registry
 73183        const manifest = yield config.readRootManifest();
 73184        const name = manifest.name;
 73185        if (!name) {
 73186          throw new (_errors || _load_errors()).MessageError(reporter.lang('unknownPackageName'));
 73187        }
 73188  
 73189        const linkLoc = path.join(config.linkFolder, name);
 73190        if (yield (_fs || _load_fs()).exists(linkLoc)) {
 73191          reporter.warn(reporter.lang('linkCollision', name));
 73192        } else {
 73193          yield (_fs || _load_fs()).mkdirp(path.dirname(linkLoc));
 73194          yield (_fs || _load_fs()).symlink(config.cwd, linkLoc);
 73195  
 73196          // If there is a `bin` defined in the package.json,
 73197          // link each bin to the global bin
 73198          if (manifest.bin) {
 73199            const globalBinFolder = yield (0, (_global || _load_global()).getBinFolder)(config, flags);
 73200            for (const binName in manifest.bin) {
 73201              const binSrc = manifest.bin[binName];
 73202              const binSrcLoc = path.join(linkLoc, binSrc);
 73203              const binDestLoc = path.join(globalBinFolder, binName);
 73204              if (yield (_fs || _load_fs()).exists(binDestLoc)) {
 73205                reporter.warn(reporter.lang('binLinkCollision', binName));
 73206              } else {
 73207                if (process.platform === 'win32') {
 73208                  yield cmdShim(binSrcLoc, binDestLoc, { createPwshFile: false });
 73209                } else {
 73210                  yield (_fs || _load_fs()).symlink(binSrcLoc, binDestLoc);
 73211                }
 73212              }
 73213            }
 73214          }
 73215  
 73216          reporter.success(reporter.lang('linkRegistered', name));
 73217          reporter.info(reporter.lang('linkRegisteredMessage', name));
 73218        }
 73219      }
 73220    });
 73221  
 73222    return function run(_x3, _x4, _x5, _x6) {
 73223      return _ref3.apply(this, arguments);
 73224    };
 73225  })();
 73226  
 73227  exports.hasWrapper = hasWrapper;
 73228  exports.setFlags = setFlags;
 73229  
 73230  var _errors;
 73231  
 73232  function _load_errors() {
 73233    return _errors = __webpack_require__(6);
 73234  }
 73235  
 73236  var _fs;
 73237  
 73238  function _load_fs() {
 73239    return _fs = _interopRequireWildcard(__webpack_require__(5));
 73240  }
 73241  
 73242  var _global;
 73243  
 73244  function _load_global() {
 73245    return _global = __webpack_require__(121);
 73246  }
 73247  
 73248  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 73249  
 73250  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 73251  
 73252  const invariant = __webpack_require__(9);
 73253  
 73254  const cmdShim = __webpack_require__(202);
 73255  const path = __webpack_require__(0);
 73256  
 73257  function hasWrapper(commander, args) {
 73258    return true;
 73259  }
 73260  
 73261  function setFlags(commander) {
 73262    commander.description('Symlink a package folder during development.');
 73263  }
 73264  
 73265  /***/ }),
 73266  /* 352 */
 73267  /***/ (function(module, exports, __webpack_require__) {
 73268  
 73269  "use strict";
 73270  
 73271  
 73272  Object.defineProperty(exports, "__esModule", {
 73273    value: true
 73274  });
 73275  exports.run = exports.buildTree = exports.requireLockfile = undefined;
 73276  
 73277  var _asyncToGenerator2;
 73278  
 73279  function _load_asyncToGenerator() {
 73280    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 73281  }
 73282  
 73283  let buildTree = exports.buildTree = (() => {
 73284    var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (resolver, linker, patterns, opts, onlyFresh, ignoreHoisted) {
 73285      const treesByKey = {};
 73286      const trees = [];
 73287      const flatTree = yield linker.getFlatHoistedTree(patterns);
 73288  
 73289      // If using workspaces, filter out the virtual manifest
 73290      const workspaceLayout = resolver.workspaceLayout;
 73291  
 73292      const hoisted = workspaceLayout && workspaceLayout.virtualManifestName ? flatTree.filter(function ([key]) {
 73293        return key.indexOf(workspaceLayout.virtualManifestName) === -1;
 73294      }) : flatTree;
 73295  
 73296      const hoistedByKey = {};
 73297      for (var _iterator2 = hoisted, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 73298        var _ref4;
 73299  
 73300        if (_isArray2) {
 73301          if (_i2 >= _iterator2.length) break;
 73302          _ref4 = _iterator2[_i2++];
 73303        } else {
 73304          _i2 = _iterator2.next();
 73305          if (_i2.done) break;
 73306          _ref4 = _i2.value;
 73307        }
 73308  
 73309        const _ref3 = _ref4;
 73310        const key = _ref3[0];
 73311        const info = _ref3[1];
 73312  
 73313        hoistedByKey[key] = info;
 73314      }
 73315  
 73316      // build initial trees
 73317      for (var _iterator3 = hoisted, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 73318        var _ref6;
 73319  
 73320        if (_isArray3) {
 73321          if (_i3 >= _iterator3.length) break;
 73322          _ref6 = _iterator3[_i3++];
 73323        } else {
 73324          _i3 = _iterator3.next();
 73325          if (_i3.done) break;
 73326          _ref6 = _i3.value;
 73327        }
 73328  
 73329        const _ref5 = _ref6;
 73330        const info = _ref5[1];
 73331  
 73332        const ref = info.pkg._reference;
 73333        const hint = null;
 73334        const parent = getParent(info.key, treesByKey);
 73335        const children = [];
 73336        let depth = 0;
 73337        let color = 'bold';
 73338        invariant(ref, 'expected reference');
 73339  
 73340        if (onlyFresh) {
 73341          let isFresh = false;
 73342          for (var _iterator5 = ref.patterns, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
 73343            var _ref9;
 73344  
 73345            if (_isArray5) {
 73346              if (_i5 >= _iterator5.length) break;
 73347              _ref9 = _iterator5[_i5++];
 73348            } else {
 73349              _i5 = _iterator5.next();
 73350              if (_i5.done) break;
 73351              _ref9 = _i5.value;
 73352            }
 73353  
 73354            const pattern = _ref9;
 73355  
 73356            if (resolver.isNewPattern(pattern)) {
 73357              isFresh = true;
 73358              break;
 73359            }
 73360          }
 73361          if (!isFresh) {
 73362            continue;
 73363          }
 73364        }
 73365  
 73366        if (info.originalKey !== info.key || opts.reqDepth === 0) {
 73367          // was hoisted
 73368          color = null;
 73369        }
 73370        // check parent to obtain next depth
 73371        if (parent && parent.depth > 0) {
 73372          depth = parent.depth + 1;
 73373        } else {
 73374          depth = 0;
 73375        }
 73376  
 73377        const topLevel = opts.reqDepth === 0 && !parent;
 73378        const showAll = opts.reqDepth === -1;
 73379        const nextDepthIsValid = depth + 1 <= Number(opts.reqDepth);
 73380  
 73381        if (topLevel || nextDepthIsValid || showAll) {
 73382          treesByKey[info.key] = {
 73383            name: `${info.pkg.name}@${info.pkg.version}`,
 73384            children,
 73385            hint,
 73386            color,
 73387            depth
 73388          };
 73389        }
 73390  
 73391        // add in dummy children for hoisted dependencies
 73392        const nextChildDepthIsValid = depth + 1 < Number(opts.reqDepth);
 73393        invariant(ref, 'expected reference');
 73394        if (!ignoreHoisted && nextDepthIsValid || showAll) {
 73395          for (var _iterator6 = resolver.dedupePatterns(ref.dependencies), _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
 73396            var _ref10;
 73397  
 73398            if (_isArray6) {
 73399              if (_i6 >= _iterator6.length) break;
 73400              _ref10 = _iterator6[_i6++];
 73401            } else {
 73402              _i6 = _iterator6.next();
 73403              if (_i6.done) break;
 73404              _ref10 = _i6.value;
 73405            }
 73406  
 73407            const pattern = _ref10;
 73408  
 73409            const pkg = resolver.getStrictResolvedPattern(pattern);
 73410  
 73411            if (!hoistedByKey[`${info.key}#${pkg.name}`] && (nextChildDepthIsValid || showAll)) {
 73412              children.push({
 73413                name: pattern,
 73414                color: 'dim',
 73415                shadow: true
 73416              });
 73417            }
 73418          }
 73419        }
 73420      }
 73421  
 73422      // add children
 73423      for (var _iterator4 = hoisted, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 73424        var _ref8;
 73425  
 73426        if (_isArray4) {
 73427          if (_i4 >= _iterator4.length) break;
 73428          _ref8 = _iterator4[_i4++];
 73429        } else {
 73430          _i4 = _iterator4.next();
 73431          if (_i4.done) break;
 73432          _ref8 = _i4.value;
 73433        }
 73434  
 73435        const _ref7 = _ref8;
 73436        const info = _ref7[1];
 73437  
 73438        const tree = treesByKey[info.key];
 73439        const parent = getParent(info.key, treesByKey);
 73440        if (!tree) {
 73441          continue;
 73442        }
 73443  
 73444        if (info.key.split('#').length === 1) {
 73445          trees.push(tree);
 73446          continue;
 73447        }
 73448  
 73449        if (parent) {
 73450          parent.children.push(tree);
 73451        }
 73452      }
 73453  
 73454      return { trees, count: buildCount(trees) };
 73455    });
 73456  
 73457    return function buildTree(_x, _x2, _x3, _x4, _x5, _x6) {
 73458      return _ref2.apply(this, arguments);
 73459    };
 73460  })();
 73461  
 73462  let run = exports.run = (() => {
 73463    var _ref11 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 73464      const lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.lockfileFolder, reporter);
 73465      const install = new (_install || _load_install()).Install(flags, config, reporter, lockfile);
 73466  
 73467      var _ref12 = yield install.fetchRequestFromCwd();
 73468  
 73469      const depRequests = _ref12.requests,
 73470            patterns = _ref12.patterns,
 73471            manifest = _ref12.manifest,
 73472            workspaceLayout = _ref12.workspaceLayout;
 73473  
 73474      yield install.resolver.init(depRequests, {
 73475        isFlat: install.flags.flat,
 73476        isFrozen: install.flags.frozenLockfile,
 73477        workspaceLayout
 73478      });
 73479  
 73480      let activePatterns = [];
 73481      if (config.production) {
 73482        const devDeps = getDevDeps(manifest);
 73483        activePatterns = patterns.filter(function (pattern) {
 73484          return !devDeps.has(pattern);
 73485        });
 73486      } else {
 73487        activePatterns = patterns;
 73488      }
 73489  
 73490      const opts = {
 73491        reqDepth: getReqDepth(flags.depth)
 73492      };
 73493  
 73494      var _ref13 = yield buildTree(install.resolver, install.linker, activePatterns, opts);
 73495  
 73496      let trees = _ref13.trees;
 73497  
 73498  
 73499      if (args.length) {
 73500        reporter.warn(reporter.lang('deprecatedListArgs'));
 73501      }
 73502      if (args.length || flags.pattern) {
 73503        trees = trees.filter(function (tree) {
 73504          return filterTree(tree, args, flags.pattern);
 73505        });
 73506      }
 73507  
 73508      reporter.tree('list', trees, { force: true });
 73509    });
 73510  
 73511    return function run(_x7, _x8, _x9, _x10) {
 73512      return _ref11.apply(this, arguments);
 73513    };
 73514  })();
 73515  
 73516  exports.getParent = getParent;
 73517  exports.hasWrapper = hasWrapper;
 73518  exports.setFlags = setFlags;
 73519  exports.getReqDepth = getReqDepth;
 73520  exports.filterTree = filterTree;
 73521  exports.getDevDeps = getDevDeps;
 73522  
 73523  var _install;
 73524  
 73525  function _load_install() {
 73526    return _install = __webpack_require__(34);
 73527  }
 73528  
 73529  var _lockfile;
 73530  
 73531  function _load_lockfile() {
 73532    return _lockfile = _interopRequireDefault(__webpack_require__(19));
 73533  }
 73534  
 73535  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 73536  
 73537  const invariant = __webpack_require__(9);
 73538  
 73539  const micromatch = __webpack_require__(115);
 73540  
 73541  const requireLockfile = exports.requireLockfile = true;
 73542  
 73543  function buildCount(trees) {
 73544    if (!trees || !trees.length) {
 73545      return 0;
 73546    }
 73547  
 73548    let count = 0;
 73549  
 73550    for (var _iterator = trees, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 73551      var _ref;
 73552  
 73553      if (_isArray) {
 73554        if (_i >= _iterator.length) break;
 73555        _ref = _iterator[_i++];
 73556      } else {
 73557        _i = _iterator.next();
 73558        if (_i.done) break;
 73559        _ref = _i.value;
 73560      }
 73561  
 73562      const tree = _ref;
 73563  
 73564      if (tree.shadow) {
 73565        continue;
 73566      }
 73567  
 73568      count++;
 73569      count += buildCount(tree.children);
 73570    }
 73571  
 73572    return count;
 73573  }
 73574  
 73575  function getParent(key, treesByKey) {
 73576    const parentKey = key.slice(0, key.lastIndexOf('#'));
 73577    return treesByKey[parentKey];
 73578  }
 73579  
 73580  function hasWrapper(commander, args) {
 73581    return true;
 73582  }
 73583  
 73584  function setFlags(commander) {
 73585    commander.description('Lists installed packages.');
 73586    commander.option('--depth [depth]', 'Limit the depth of the shown dependencies');
 73587    commander.option('--pattern [pattern]', 'Filter dependencies by pattern');
 73588  }
 73589  
 73590  function getReqDepth(inputDepth) {
 73591    return inputDepth && /^\d+$/.test(inputDepth) ? Number(inputDepth) : -1;
 73592  }
 73593  
 73594  function filterTree(tree, filters, pattern = '') {
 73595    if (tree.children) {
 73596      tree.children = tree.children.filter(child => filterTree(child, filters, pattern));
 73597    }
 73598  
 73599    const notDim = tree.color !== 'dim';
 73600    const hasChildren = tree.children == null ? false : tree.children.length > 0;
 73601    const name = tree.name.slice(0, tree.name.lastIndexOf('@'));
 73602    const found = micromatch.any(name, filters) || micromatch.contains(name, pattern);
 73603  
 73604    return notDim && (found || hasChildren);
 73605  }
 73606  
 73607  function getDevDeps(manifest) {
 73608    if (manifest.devDependencies) {
 73609      return new Set(Object.keys(manifest.devDependencies).map(key => `${key}@${manifest.devDependencies[key]}`));
 73610    } else {
 73611      return new Set();
 73612    }
 73613  }
 73614  
 73615  /***/ }),
 73616  /* 353 */
 73617  /***/ (function(module, exports, __webpack_require__) {
 73618  
 73619  "use strict";
 73620  
 73621  
 73622  Object.defineProperty(exports, "__esModule", {
 73623    value: true
 73624  });
 73625  exports.run = exports.requireLockfile = undefined;
 73626  
 73627  var _extends2;
 73628  
 73629  function _load_extends() {
 73630    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 73631  }
 73632  
 73633  var _asyncToGenerator2;
 73634  
 73635  function _load_asyncToGenerator() {
 73636    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 73637  }
 73638  
 73639  let run = exports.run = (() => {
 73640    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 73641      const isWorkspaceRoot = config.workspaceRootFolder && config.cwd === config.workspaceRootFolder;
 73642  
 73643      if (!args.length) {
 73644        throw new (_errors || _load_errors()).MessageError(reporter.lang('tooFewArguments', 1));
 73645      }
 73646  
 73647      // running "yarn remove something" in a workspace root is often a mistake
 73648      if (isWorkspaceRoot && !flags.ignoreWorkspaceRootCheck) {
 73649        throw new (_errors || _load_errors()).MessageError(reporter.lang('workspacesRemoveRootCheck'));
 73650      }
 73651  
 73652      const totalSteps = args.length + 1;
 73653      let step = 0;
 73654  
 73655      // load manifests
 73656      const lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.lockfileFolder);
 73657      const rootManifests = yield config.getRootManifests();
 73658      const manifests = [];
 73659  
 73660      for (var _iterator = args, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 73661        var _ref2;
 73662  
 73663        if (_isArray) {
 73664          if (_i >= _iterator.length) break;
 73665          _ref2 = _iterator[_i++];
 73666        } else {
 73667          _i = _iterator.next();
 73668          if (_i.done) break;
 73669          _ref2 = _i.value;
 73670        }
 73671  
 73672        const name = _ref2;
 73673  
 73674        reporter.step(++step, totalSteps, `Removing module ${name}`, emoji.get('wastebasket'));
 73675  
 73676        let found = false;
 73677  
 73678        for (var _iterator2 = Object.keys((_index || _load_index()).registries), _isArray2 = Array.isArray(_iterator2), _i3 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 73679          var _ref3;
 73680  
 73681          if (_isArray2) {
 73682            if (_i3 >= _iterator2.length) break;
 73683            _ref3 = _iterator2[_i3++];
 73684          } else {
 73685            _i3 = _iterator2.next();
 73686            if (_i3.done) break;
 73687            _ref3 = _i3.value;
 73688          }
 73689  
 73690          const registryName = _ref3;
 73691  
 73692          const registry = config.registries[registryName];
 73693          const object = rootManifests[registryName].object;
 73694  
 73695          for (var _iterator3 = (_constants || _load_constants()).DEPENDENCY_TYPES, _isArray3 = Array.isArray(_iterator3), _i4 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 73696            var _ref4;
 73697  
 73698            if (_isArray3) {
 73699              if (_i4 >= _iterator3.length) break;
 73700              _ref4 = _iterator3[_i4++];
 73701            } else {
 73702              _i4 = _iterator3.next();
 73703              if (_i4.done) break;
 73704              _ref4 = _i4.value;
 73705            }
 73706  
 73707            const type = _ref4;
 73708  
 73709            const deps = object[type];
 73710            if (deps && deps[name]) {
 73711              found = true;
 73712              delete deps[name];
 73713            }
 73714          }
 73715  
 73716          const possibleManifestLoc = path.join(config.cwd, registry.folder, name);
 73717          if (yield (_fs || _load_fs()).exists(possibleManifestLoc)) {
 73718            const manifest = yield config.maybeReadManifest(possibleManifestLoc, registryName);
 73719            if (manifest) {
 73720              manifests.push([possibleManifestLoc, manifest]);
 73721            }
 73722          }
 73723        }
 73724  
 73725        if (!found) {
 73726          throw new (_errors || _load_errors()).MessageError(reporter.lang('moduleNotInManifest'));
 73727        }
 73728      }
 73729  
 73730      // save manifests
 73731      yield config.saveRootManifests(rootManifests);
 73732  
 73733      // run hooks - npm runs these one after another
 73734      var _arr = ['preuninstall', 'uninstall', 'postuninstall'];
 73735      for (var _i2 = 0; _i2 < _arr.length; _i2++) {
 73736        const action = _arr[_i2];
 73737        for (var _iterator4 = manifests, _isArray4 = Array.isArray(_iterator4), _i5 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 73738          var _ref6;
 73739  
 73740          if (_isArray4) {
 73741            if (_i5 >= _iterator4.length) break;
 73742            _ref6 = _iterator4[_i5++];
 73743          } else {
 73744            _i5 = _iterator4.next();
 73745            if (_i5.done) break;
 73746            _ref6 = _i5.value;
 73747          }
 73748  
 73749          const _ref5 = _ref6;
 73750          const loc = _ref5[0];
 73751  
 73752          yield config.executeLifecycleScript(action, loc);
 73753        }
 73754      }
 73755  
 73756      // reinstall so we can get the updated lockfile
 73757      reporter.step(++step, totalSteps, reporter.lang('uninstallRegenerate'), emoji.get('hammer'));
 73758      const installFlags = (0, (_extends2 || _load_extends()).default)({ force: true, workspaceRootIsCwd: true }, flags);
 73759      const reinstall = new (_install || _load_install()).Install(installFlags, config, new (_index2 || _load_index2()).NoopReporter(), lockfile);
 73760      yield reinstall.init();
 73761  
 73762      //
 73763      reporter.success(reporter.lang('uninstalledPackages'));
 73764    });
 73765  
 73766    return function run(_x, _x2, _x3, _x4) {
 73767      return _ref.apply(this, arguments);
 73768    };
 73769  })();
 73770  
 73771  exports.setFlags = setFlags;
 73772  exports.hasWrapper = hasWrapper;
 73773  
 73774  var _lockfile;
 73775  
 73776  function _load_lockfile() {
 73777    return _lockfile = _interopRequireDefault(__webpack_require__(19));
 73778  }
 73779  
 73780  var _index;
 73781  
 73782  function _load_index() {
 73783    return _index = __webpack_require__(58);
 73784  }
 73785  
 73786  var _install;
 73787  
 73788  function _load_install() {
 73789    return _install = __webpack_require__(34);
 73790  }
 73791  
 73792  var _errors;
 73793  
 73794  function _load_errors() {
 73795    return _errors = __webpack_require__(6);
 73796  }
 73797  
 73798  var _index2;
 73799  
 73800  function _load_index2() {
 73801    return _index2 = __webpack_require__(201);
 73802  }
 73803  
 73804  var _fs;
 73805  
 73806  function _load_fs() {
 73807    return _fs = _interopRequireWildcard(__webpack_require__(5));
 73808  }
 73809  
 73810  var _constants;
 73811  
 73812  function _load_constants() {
 73813    return _constants = _interopRequireWildcard(__webpack_require__(8));
 73814  }
 73815  
 73816  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 73817  
 73818  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 73819  
 73820  const path = __webpack_require__(0);
 73821  
 73822  const emoji = __webpack_require__(302);
 73823  
 73824  const requireLockfile = exports.requireLockfile = true;
 73825  
 73826  function setFlags(commander) {
 73827    commander.description('Removes a package from your direct dependencies updating your package.json and yarn.lock.');
 73828    commander.usage('remove [packages ...] [flags]');
 73829    commander.option('-W, --ignore-workspace-root-check', 'required to run yarn remove inside a workspace root');
 73830  }
 73831  
 73832  function hasWrapper(commander, args) {
 73833    return true;
 73834  }
 73835  
 73836  /***/ }),
 73837  /* 354 */
 73838  /***/ (function(module, exports, __webpack_require__) {
 73839  
 73840  "use strict";
 73841  
 73842  
 73843  Object.defineProperty(exports, "__esModule", {
 73844    value: true
 73845  });
 73846  exports.run = exports.getBinEntries = undefined;
 73847  
 73848  var _asyncToGenerator2;
 73849  
 73850  function _load_asyncToGenerator() {
 73851    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 73852  }
 73853  
 73854  let getBinEntries = exports.getBinEntries = (() => {
 73855    var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config) {
 73856      const binFolders = new Set();
 73857      const binEntries = new Map();
 73858  
 73859      // Setup the node_modules/.bin folders for analysis
 73860      for (var _iterator2 = config.registryFolders, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 73861        var _ref4;
 73862  
 73863        if (_isArray2) {
 73864          if (_i2 >= _iterator2.length) break;
 73865          _ref4 = _iterator2[_i2++];
 73866        } else {
 73867          _i2 = _iterator2.next();
 73868          if (_i2.done) break;
 73869          _ref4 = _i2.value;
 73870        }
 73871  
 73872        const registryFolder = _ref4;
 73873  
 73874        binFolders.add(path.resolve(config.cwd, registryFolder, '.bin'));
 73875        binFolders.add(path.resolve(config.lockfileFolder, registryFolder, '.bin'));
 73876      }
 73877  
 73878      // Same thing, but for the pnp dependencies, located inside the cache
 73879      if (yield (_fs || _load_fs()).exists(`${config.lockfileFolder}/${(_constants || _load_constants()).PNP_FILENAME}`)) {
 73880        const pnpApi = (0, (_dynamicRequire || _load_dynamicRequire()).dynamicRequire)(`${config.lockfileFolder}/${(_constants || _load_constants()).PNP_FILENAME}`);
 73881  
 73882        const packageLocator = pnpApi.findPackageLocator(`${config.cwd}/`);
 73883        const packageInformation = pnpApi.getPackageInformation(packageLocator);
 73884  
 73885        for (var _iterator3 = packageInformation.packageDependencies.entries(), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 73886          var _ref6;
 73887  
 73888          if (_isArray3) {
 73889            if (_i3 >= _iterator3.length) break;
 73890            _ref6 = _iterator3[_i3++];
 73891          } else {
 73892            _i3 = _iterator3.next();
 73893            if (_i3.done) break;
 73894            _ref6 = _i3.value;
 73895          }
 73896  
 73897          const _ref5 = _ref6;
 73898          const name = _ref5[0];
 73899          const reference = _ref5[1];
 73900  
 73901          const dependencyInformation = pnpApi.getPackageInformation({ name, reference });
 73902  
 73903          if (dependencyInformation.packageLocation) {
 73904            binFolders.add(`${dependencyInformation.packageLocation}/.bin`);
 73905          }
 73906        }
 73907      }
 73908  
 73909      // Build up a list of possible scripts by exploring the folders marked for analysis
 73910      for (var _iterator4 = binFolders, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 73911        var _ref7;
 73912  
 73913        if (_isArray4) {
 73914          if (_i4 >= _iterator4.length) break;
 73915          _ref7 = _iterator4[_i4++];
 73916        } else {
 73917          _i4 = _iterator4.next();
 73918          if (_i4.done) break;
 73919          _ref7 = _i4.value;
 73920        }
 73921  
 73922        const binFolder = _ref7;
 73923  
 73924        if (yield (_fs || _load_fs()).exists(binFolder)) {
 73925          for (var _iterator5 = yield (_fs || _load_fs()).readdir(binFolder), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
 73926            var _ref8;
 73927  
 73928            if (_isArray5) {
 73929              if (_i5 >= _iterator5.length) break;
 73930              _ref8 = _iterator5[_i5++];
 73931            } else {
 73932              _i5 = _iterator5.next();
 73933              if (_i5.done) break;
 73934              _ref8 = _i5.value;
 73935            }
 73936  
 73937            const name = _ref8;
 73938  
 73939            binEntries.set(name, path.join(binFolder, name));
 73940          }
 73941        }
 73942      }
 73943  
 73944      return binEntries;
 73945    });
 73946  
 73947    return function getBinEntries(_x) {
 73948      return _ref3.apply(this, arguments);
 73949    };
 73950  })();
 73951  
 73952  let run = exports.run = (() => {
 73953    var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 73954      let realRunCommand = (() => {
 73955        var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (action, args) {
 73956          // build up list of commands
 73957          const cmds = [];
 73958  
 73959          if (pkgScripts && action in pkgScripts) {
 73960            const preAction = `pre${action}`;
 73961            if (preAction in pkgScripts) {
 73962              cmds.push([preAction, pkgScripts[preAction]]);
 73963            }
 73964  
 73965            const script = scripts.get(action);
 73966            invariant(script, 'Script must exist');
 73967            cmds.push([action, script]);
 73968  
 73969            const postAction = `post${action}`;
 73970            if (postAction in pkgScripts) {
 73971              cmds.push([postAction, pkgScripts[postAction]]);
 73972            }
 73973          } else if (scripts.has(action)) {
 73974            const script = scripts.get(action);
 73975            invariant(script, 'Script must exist');
 73976            cmds.push([action, script]);
 73977          }
 73978  
 73979          if (cmds.length) {
 73980            const ignoreEngines = !!(flags.ignoreEngines || config.getOption('ignore-engines'));
 73981            try {
 73982              yield (0, (_packageCompatibility || _load_packageCompatibility()).checkOne)(pkg, config, ignoreEngines);
 73983            } catch (err) {
 73984              throw err instanceof (_errors || _load_errors()).MessageError ? new (_errors || _load_errors()).MessageError(reporter.lang('cannotRunWithIncompatibleEnv')) : err;
 73985            }
 73986  
 73987            // Disable wrapper in executed commands
 73988            process.env.YARN_WRAP_OUTPUT = 'false';
 73989            for (var _iterator8 = cmds, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {
 73990              var _ref15;
 73991  
 73992              if (_isArray8) {
 73993                if (_i8 >= _iterator8.length) break;
 73994                _ref15 = _iterator8[_i8++];
 73995              } else {
 73996                _i8 = _iterator8.next();
 73997                if (_i8.done) break;
 73998                _ref15 = _i8.value;
 73999              }
 74000  
 74001              const _ref14 = _ref15;
 74002              const stage = _ref14[0];
 74003              const cmd = _ref14[1];
 74004  
 74005              // only tack on trailing arguments for default script, ignore for pre and post - #1595
 74006              const cmdWithArgs = stage === action ? sh`${unquoted(cmd)} ${args}` : cmd;
 74007              const customShell = config.getOption('script-shell');
 74008              yield (0, (_executeLifecycleScript || _load_executeLifecycleScript()).execCommand)({
 74009                stage,
 74010                config,
 74011                cmd: cmdWithArgs,
 74012                cwd: flags.into || config.cwd,
 74013                isInteractive: true,
 74014                customShell: customShell ? String(customShell) : undefined
 74015              });
 74016            }
 74017          } else if (action === 'env') {
 74018            reporter.log(JSON.stringify((yield (0, (_executeLifecycleScript || _load_executeLifecycleScript()).makeEnv)('env', config.cwd, config)), null, 2), { force: true });
 74019          } else {
 74020            let suggestion;
 74021  
 74022            for (var _iterator9 = scripts.keys(), _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {
 74023              var _ref16;
 74024  
 74025              if (_isArray9) {
 74026                if (_i9 >= _iterator9.length) break;
 74027                _ref16 = _iterator9[_i9++];
 74028              } else {
 74029                _i9 = _iterator9.next();
 74030                if (_i9.done) break;
 74031                _ref16 = _i9.value;
 74032              }
 74033  
 74034              const commandName = _ref16;
 74035  
 74036              const steps = leven(commandName, action);
 74037              if (steps < 2) {
 74038                suggestion = commandName;
 74039              }
 74040            }
 74041  
 74042            let msg = `Command ${JSON.stringify(action)} not found.`;
 74043            if (suggestion) {
 74044              msg += ` Did you mean ${JSON.stringify(suggestion)}?`;
 74045            }
 74046            throw new (_errors || _load_errors()).MessageError(msg);
 74047          }
 74048        });
 74049  
 74050        return function realRunCommand(_x6, _x7) {
 74051          return _ref13.apply(this, arguments);
 74052        };
 74053      })();
 74054  
 74055      // list possible scripts if none specified
 74056  
 74057  
 74058      const pkg = yield config.readManifest(config.cwd);
 74059  
 74060      const binCommands = new Set();
 74061      const pkgCommands = new Set();
 74062  
 74063      const scripts = new Map();
 74064  
 74065      for (var _iterator6 = yield getBinEntries(config), _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
 74066        var _ref11;
 74067  
 74068        if (_isArray6) {
 74069          if (_i6 >= _iterator6.length) break;
 74070          _ref11 = _iterator6[_i6++];
 74071        } else {
 74072          _i6 = _iterator6.next();
 74073          if (_i6.done) break;
 74074          _ref11 = _i6.value;
 74075        }
 74076  
 74077        const _ref10 = _ref11;
 74078        const name = _ref10[0];
 74079        const loc = _ref10[1];
 74080  
 74081        scripts.set(name, quoteForShell(loc));
 74082        binCommands.add(name);
 74083      }
 74084  
 74085      const pkgScripts = pkg.scripts;
 74086  
 74087      if (pkgScripts) {
 74088        for (var _iterator7 = Object.keys(pkgScripts).sort(), _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
 74089          var _ref12;
 74090  
 74091          if (_isArray7) {
 74092            if (_i7 >= _iterator7.length) break;
 74093            _ref12 = _iterator7[_i7++];
 74094          } else {
 74095            _i7 = _iterator7.next();
 74096            if (_i7.done) break;
 74097            _ref12 = _i7.value;
 74098          }
 74099  
 74100          const name = _ref12;
 74101  
 74102          scripts.set(name, pkgScripts[name] || '');
 74103          pkgCommands.add(name);
 74104        }
 74105      }
 74106  
 74107      function runCommand([action, ...args]) {
 74108        return (0, (_hooks || _load_hooks()).callThroughHook)('runScript', () => realRunCommand(action, args), { action, args });
 74109      }
 74110  
 74111      if (args.length === 0) {
 74112        if (binCommands.size > 0) {
 74113          reporter.info(`${reporter.lang('binCommands') + Array.from(binCommands).join(', ')}`);
 74114        } else {
 74115          reporter.error(reporter.lang('noBinAvailable'));
 74116        }
 74117  
 74118        const printedCommands = new Map();
 74119  
 74120        for (var _iterator10 = pkgCommands, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {
 74121          var _ref17;
 74122  
 74123          if (_isArray10) {
 74124            if (_i10 >= _iterator10.length) break;
 74125            _ref17 = _iterator10[_i10++];
 74126          } else {
 74127            _i10 = _iterator10.next();
 74128            if (_i10.done) break;
 74129            _ref17 = _i10.value;
 74130          }
 74131  
 74132          const pkgCommand = _ref17;
 74133  
 74134          const action = scripts.get(pkgCommand);
 74135          invariant(action, 'Action must exists');
 74136          printedCommands.set(pkgCommand, action);
 74137        }
 74138  
 74139        if (pkgCommands.size > 0) {
 74140          reporter.info(`${reporter.lang('possibleCommands')}`);
 74141          reporter.list('possibleCommands', Array.from(pkgCommands), toObject(printedCommands));
 74142          if (!flags.nonInteractive) {
 74143            yield reporter.question(reporter.lang('commandQuestion')).then(function (answer) {
 74144              return runCommand(answer.trim().split(' '));
 74145            }, function () {
 74146              return reporter.error(reporter.lang('commandNotSpecified'));
 74147            });
 74148          }
 74149        } else {
 74150          reporter.error(reporter.lang('noScriptsAvailable'));
 74151        }
 74152        return Promise.resolve();
 74153      } else {
 74154        return runCommand(args);
 74155      }
 74156    });
 74157  
 74158    return function run(_x2, _x3, _x4, _x5) {
 74159      return _ref9.apply(this, arguments);
 74160    };
 74161  })();
 74162  
 74163  exports.setFlags = setFlags;
 74164  exports.hasWrapper = hasWrapper;
 74165  
 74166  var _executeLifecycleScript;
 74167  
 74168  function _load_executeLifecycleScript() {
 74169    return _executeLifecycleScript = __webpack_require__(111);
 74170  }
 74171  
 74172  var _dynamicRequire;
 74173  
 74174  function _load_dynamicRequire() {
 74175    return _dynamicRequire = __webpack_require__(365);
 74176  }
 74177  
 74178  var _hooks;
 74179  
 74180  function _load_hooks() {
 74181    return _hooks = __webpack_require__(368);
 74182  }
 74183  
 74184  var _errors;
 74185  
 74186  function _load_errors() {
 74187    return _errors = __webpack_require__(6);
 74188  }
 74189  
 74190  var _packageCompatibility;
 74191  
 74192  function _load_packageCompatibility() {
 74193    return _packageCompatibility = __webpack_require__(207);
 74194  }
 74195  
 74196  var _fs;
 74197  
 74198  function _load_fs() {
 74199    return _fs = _interopRequireWildcard(__webpack_require__(5));
 74200  }
 74201  
 74202  var _constants;
 74203  
 74204  function _load_constants() {
 74205    return _constants = _interopRequireWildcard(__webpack_require__(8));
 74206  }
 74207  
 74208  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 74209  
 74210  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 74211  
 74212  const invariant = __webpack_require__(9);
 74213  
 74214  const leven = __webpack_require__(747);
 74215  const path = __webpack_require__(0);
 74216  
 74217  var _require = __webpack_require__(780);
 74218  
 74219  const quoteForShell = _require.quoteForShell,
 74220        sh = _require.sh,
 74221        unquoted = _require.unquoted;
 74222  
 74223  
 74224  function toObject(input) {
 74225    const output = Object.create(null);
 74226  
 74227    for (var _iterator = input.entries(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 74228      var _ref2;
 74229  
 74230      if (_isArray) {
 74231        if (_i >= _iterator.length) break;
 74232        _ref2 = _iterator[_i++];
 74233      } else {
 74234        _i = _iterator.next();
 74235        if (_i.done) break;
 74236        _ref2 = _i.value;
 74237      }
 74238  
 74239      const _ref = _ref2;
 74240      const key = _ref[0];
 74241      const val = _ref[1];
 74242  
 74243      output[key] = val;
 74244    }
 74245  
 74246    return output;
 74247  }
 74248  
 74249  function setFlags(commander) {
 74250    commander.description('Runs a defined package script.');
 74251  }
 74252  
 74253  function hasWrapper(commander, args) {
 74254    return true;
 74255  }
 74256  
 74257  /***/ }),
 74258  /* 355 */
 74259  /***/ (function(module, exports, __webpack_require__) {
 74260  
 74261  "use strict";
 74262  
 74263  
 74264  Object.defineProperty(exports, "__esModule", {
 74265    value: true
 74266  });
 74267  exports.examples = exports.hasWrapper = exports.run = exports.getName = undefined;
 74268  
 74269  var _asyncToGenerator2;
 74270  
 74271  function _load_asyncToGenerator() {
 74272    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 74273  }
 74274  
 74275  let getName = exports.getName = (() => {
 74276    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (args, config) {
 74277      let name = args.shift();
 74278  
 74279      if (!name) {
 74280        const pkg = yield config.readRootManifest();
 74281        name = pkg.name;
 74282      }
 74283  
 74284      if (name) {
 74285        if (!(0, (_validate || _load_validate()).isValidPackageName)(name)) {
 74286          throw new (_errors || _load_errors()).MessageError(config.reporter.lang('invalidPackageName'));
 74287        }
 74288  
 74289        return (_npmRegistry || _load_npmRegistry()).default.escapeName(name);
 74290      } else {
 74291        throw new (_errors || _load_errors()).MessageError(config.reporter.lang('unknownPackageName'));
 74292      }
 74293    });
 74294  
 74295    return function getName(_x, _x2) {
 74296      return _ref.apply(this, arguments);
 74297    };
 74298  })();
 74299  
 74300  let list = (() => {
 74301    var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 74302      const name = yield getName(args, config);
 74303  
 74304      reporter.step(1, 1, reporter.lang('gettingTags'));
 74305      const tags = yield config.registries.npm.request(`-/package/${name}/dist-tags`);
 74306  
 74307      if (tags) {
 74308        reporter.info(`Package ${name}`);
 74309        for (const name in tags) {
 74310          reporter.info(`${name}: ${tags[name]}`);
 74311        }
 74312      }
 74313  
 74314      if (!tags) {
 74315        throw new (_errors || _load_errors()).MessageError(reporter.lang('packageNotFoundRegistry', name, 'npm'));
 74316      }
 74317    });
 74318  
 74319    return function list(_x3, _x4, _x5, _x6) {
 74320      return _ref2.apply(this, arguments);
 74321    };
 74322  })();
 74323  
 74324  let remove = (() => {
 74325    var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 74326      if (args.length !== 2) {
 74327        return false;
 74328      }
 74329  
 74330      const name = yield getName(args, config);
 74331      const tag = args.shift();
 74332  
 74333      reporter.step(1, 3, reporter.lang('loggingIn'));
 74334      const revoke = yield (0, (_login || _load_login()).getToken)(config, reporter, name);
 74335  
 74336      reporter.step(2, 3, reporter.lang('deletingTags'));
 74337      const result = yield config.registries.npm.request(`-/package/${name}/dist-tags/${encodeURI(tag)}`, {
 74338        method: 'DELETE'
 74339      });
 74340  
 74341      if (result === false) {
 74342        reporter.error(reporter.lang('deletedTagFail'));
 74343      } else {
 74344        reporter.success(reporter.lang('deletedTag'));
 74345      }
 74346  
 74347      reporter.step(3, 3, reporter.lang('revokingToken'));
 74348      yield revoke();
 74349  
 74350      if (result === false) {
 74351        throw new Error();
 74352      } else {
 74353        return true;
 74354      }
 74355    });
 74356  
 74357    return function remove(_x7, _x8, _x9, _x10) {
 74358      return _ref3.apply(this, arguments);
 74359    };
 74360  })();
 74361  
 74362  exports.setFlags = setFlags;
 74363  
 74364  var _buildSubCommands2;
 74365  
 74366  function _load_buildSubCommands() {
 74367    return _buildSubCommands2 = _interopRequireDefault(__webpack_require__(59));
 74368  }
 74369  
 74370  var _login;
 74371  
 74372  function _load_login() {
 74373    return _login = __webpack_require__(107);
 74374  }
 74375  
 74376  var _npmRegistry;
 74377  
 74378  function _load_npmRegistry() {
 74379    return _npmRegistry = _interopRequireDefault(__webpack_require__(88));
 74380  }
 74381  
 74382  var _errors;
 74383  
 74384  function _load_errors() {
 74385    return _errors = __webpack_require__(6);
 74386  }
 74387  
 74388  var _normalizePattern2;
 74389  
 74390  function _load_normalizePattern() {
 74391    return _normalizePattern2 = __webpack_require__(37);
 74392  }
 74393  
 74394  var _validate;
 74395  
 74396  function _load_validate() {
 74397    return _validate = __webpack_require__(125);
 74398  }
 74399  
 74400  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 74401  
 74402  function setFlags(commander) {
 74403    commander.description('Add, remove, or list tags on a package.');
 74404  }
 74405  
 74406  var _buildSubCommands = (0, (_buildSubCommands2 || _load_buildSubCommands()).default)('tag', {
 74407    add(config, reporter, flags, args) {
 74408      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 74409        if (args.length !== 2) {
 74410          return false;
 74411        }
 74412  
 74413        var _normalizePattern = (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(args.shift());
 74414  
 74415        const name = _normalizePattern.name,
 74416              range = _normalizePattern.range,
 74417              hasVersion = _normalizePattern.hasVersion;
 74418  
 74419        if (!hasVersion) {
 74420          throw new (_errors || _load_errors()).MessageError(reporter.lang('requiredVersionInRange'));
 74421        }
 74422        if (!(0, (_validate || _load_validate()).isValidPackageName)(name)) {
 74423          throw new (_errors || _load_errors()).MessageError(reporter.lang('invalidPackageName'));
 74424        }
 74425  
 74426        const tag = args.shift();
 74427  
 74428        reporter.step(1, 3, reporter.lang('loggingIn'));
 74429        const revoke = yield (0, (_login || _load_login()).getToken)(config, reporter, name);
 74430  
 74431        reporter.step(2, 3, reporter.lang('creatingTag', tag, range));
 74432        const result = yield config.registries.npm.request(`-/package/${(_npmRegistry || _load_npmRegistry()).default.escapeName(name)}/dist-tags/${encodeURI(tag)}`, {
 74433          method: 'PUT',
 74434          body: range
 74435        });
 74436  
 74437        if (result != null && result.ok) {
 74438          reporter.success(reporter.lang('createdTag'));
 74439        } else {
 74440          reporter.error(reporter.lang('createdTagFail'));
 74441        }
 74442  
 74443        reporter.step(3, 3, reporter.lang('revokingToken'));
 74444        yield revoke();
 74445  
 74446        if (result != null && result.ok) {
 74447          return true;
 74448        } else {
 74449          throw new Error();
 74450        }
 74451      })();
 74452    },
 74453  
 74454    rm(config, reporter, flags, args) {
 74455      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 74456        reporter.warn(`\`yarn tag rm\` is deprecated. Please use \`yarn tag remove\`.`);
 74457        yield remove(config, reporter, flags, args);
 74458      })();
 74459    },
 74460  
 74461    remove(config, reporter, flags, args) {
 74462      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 74463        yield remove(config, reporter, flags, args);
 74464      })();
 74465    },
 74466  
 74467    ls(config, reporter, flags, args) {
 74468      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 74469        reporter.warn(`\`yarn tag ls\` is deprecated. Please use \`yarn tag list\`.`);
 74470        yield list(config, reporter, flags, args);
 74471      })();
 74472    },
 74473  
 74474    list(config, reporter, flags, args) {
 74475      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 74476        yield list(config, reporter, flags, args);
 74477      })();
 74478    }
 74479  }, ['add <pkg>@<version> [<tag>]', 'remove <pkg> <tag>', 'list [<pkg>]']);
 74480  
 74481  const run = _buildSubCommands.run,
 74482        hasWrapper = _buildSubCommands.hasWrapper,
 74483        examples = _buildSubCommands.examples;
 74484  exports.run = run;
 74485  exports.hasWrapper = hasWrapper;
 74486  exports.examples = examples;
 74487  
 74488  /***/ }),
 74489  /* 356 */
 74490  /***/ (function(module, exports, __webpack_require__) {
 74491  
 74492  "use strict";
 74493  
 74494  
 74495  Object.defineProperty(exports, "__esModule", {
 74496    value: true
 74497  });
 74498  exports.run = exports.requireLockfile = undefined;
 74499  
 74500  var _extends2;
 74501  
 74502  function _load_extends() {
 74503    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 74504  }
 74505  
 74506  var _asyncToGenerator2;
 74507  
 74508  function _load_asyncToGenerator() {
 74509    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 74510  }
 74511  
 74512  let run = exports.run = (() => {
 74513    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 74514      const outdatedFieldName = flags.latest ? 'latest' : 'wanted';
 74515      const lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.lockfileFolder);
 74516  
 74517      const deps = yield (0, (_upgrade || _load_upgrade()).getOutdated)(config, reporter, (0, (_extends2 || _load_extends()).default)({}, flags, { includeWorkspaceDeps: true }), lockfile, args);
 74518  
 74519      if (deps.length === 0) {
 74520        reporter.success(reporter.lang('allDependenciesUpToDate'));
 74521        return;
 74522      }
 74523  
 74524      // Fail early with runtime compatibility checks so that it doesn't fail after you've made your selections
 74525      const install = new (_install || _load_install()).Install(flags, config, reporter, lockfile);
 74526      yield install.checkCompatibility();
 74527  
 74528      const usesWorkspaces = !!config.workspaceRootFolder;
 74529  
 74530      const maxLengthArr = {
 74531        name: 'name'.length,
 74532        current: 'from'.length,
 74533        range: 'latest'.length,
 74534        [outdatedFieldName]: 'to'.length,
 74535        workspaceName: 'workspace'.length
 74536      };
 74537  
 74538      const keysWithDynamicLength = ['name', 'current', outdatedFieldName];
 74539  
 74540      if (!flags.latest) {
 74541        maxLengthArr.range = 'range'.length;
 74542        keysWithDynamicLength.push('range');
 74543      }
 74544  
 74545      if (usesWorkspaces) {
 74546        keysWithDynamicLength.push('workspaceName');
 74547      }
 74548  
 74549      deps.forEach(function (dep) {
 74550        return keysWithDynamicLength.forEach(function (key) {
 74551          maxLengthArr[key] = Math.max(maxLengthArr[key], dep[key].length);
 74552        });
 74553      });
 74554  
 74555      // Depends on maxLengthArr
 74556      const addPadding = function addPadding(dep) {
 74557        return function (key) {
 74558          return `${dep[key]}${' '.repeat(maxLengthArr[key] - dep[key].length)}`;
 74559        };
 74560      };
 74561      const headerPadding = function headerPadding(header, key) {
 74562        return `${reporter.format.bold.underline(header)}${' '.repeat(maxLengthArr[key] - header.length)}`;
 74563      };
 74564  
 74565      const colorizeName = function colorizeName(from, to) {
 74566        return reporter.format[(0, (_colorForVersions || _load_colorForVersions()).default)(from, to)];
 74567      };
 74568  
 74569      const getNameFromHint = function getNameFromHint(hint) {
 74570        return hint ? `${hint}Dependencies` : 'dependencies';
 74571      };
 74572  
 74573      const makeRow = function makeRow(dep) {
 74574        const padding = addPadding(dep);
 74575        const name = colorizeName(dep.current, dep[outdatedFieldName])(padding('name'));
 74576        const current = reporter.format.blue(padding('current'));
 74577        const latest = (0, (_colorizeDiff || _load_colorizeDiff()).default)(dep.current, padding(outdatedFieldName), reporter);
 74578        const url = reporter.format.cyan(dep.url);
 74579        const range = reporter.format.blue(flags.latest ? 'latest' : padding('range'));
 74580        if (usesWorkspaces) {
 74581          const workspace = padding('workspaceName');
 74582          return `${name}  ${range}  ${current}  ❯  ${latest}  ${workspace}  ${url}`;
 74583        } else {
 74584          return `${name}  ${range}  ${current}  ❯  ${latest}  ${url}`;
 74585        }
 74586      };
 74587  
 74588      const makeHeaderRow = function makeHeaderRow() {
 74589        const name = headerPadding('name', 'name');
 74590        const range = headerPadding('range', 'range');
 74591        const from = headerPadding('from', 'current');
 74592        const to = headerPadding('to', outdatedFieldName);
 74593        const url = reporter.format.bold.underline('url');
 74594        if (usesWorkspaces) {
 74595          const workspace = headerPadding('workspace', 'workspaceName');
 74596          return `  ${name}  ${range}  ${from}     ${to}  ${workspace}  ${url}`;
 74597        } else {
 74598          return `  ${name}  ${range}  ${from}     ${to}  ${url}`;
 74599        }
 74600      };
 74601  
 74602      const groupedDeps = deps.reduce(function (acc, dep) {
 74603        const hint = dep.hint,
 74604              name = dep.name,
 74605              upgradeTo = dep.upgradeTo;
 74606  
 74607        const version = dep[outdatedFieldName];
 74608        const key = getNameFromHint(hint);
 74609        const xs = acc[key] || [];
 74610        acc[key] = xs.concat({
 74611          name: makeRow(dep),
 74612          value: dep,
 74613          short: `${name}@${version}`,
 74614          upgradeTo
 74615        });
 74616        return acc;
 74617      }, {});
 74618  
 74619      const flatten = function flatten(xs) {
 74620        return xs.reduce(function (ys, y) {
 74621          return ys.concat(Array.isArray(y) ? flatten(y) : y);
 74622        }, []);
 74623      };
 74624  
 74625      const choices = flatten(Object.keys(groupedDeps).map(function (key) {
 74626        return [new (_inquirer || _load_inquirer()).default.Separator(reporter.format.bold.underline.green(key)), new (_inquirer || _load_inquirer()).default.Separator(makeHeaderRow()), groupedDeps[key], new (_inquirer || _load_inquirer()).default.Separator(' ')];
 74627      }));
 74628  
 74629      try {
 74630        const red = reporter.format.red('<red>');
 74631        const yellow = reporter.format.yellow('<yellow>');
 74632        const green = reporter.format.green('<green>');
 74633        reporter.info(reporter.lang('legendColorsForVersionUpdates', red, yellow, green));
 74634  
 74635        const answers = yield reporter.prompt('Choose which packages to update.', choices, {
 74636          name: 'packages',
 74637          type: 'checkbox',
 74638          validate: function validate(answer) {
 74639            return !!answer.length || 'You must choose at least one package.';
 74640          }
 74641        });
 74642  
 74643        const getPattern = function getPattern({ upgradeTo }) {
 74644          return upgradeTo;
 74645        };
 74646        const isHint = function isHint(x) {
 74647          return function ({ hint }) {
 74648            return hint === x;
 74649          };
 74650        };
 74651  
 74652        var _arr = [null, 'dev', 'optional', 'peer'];
 74653        for (var _i = 0; _i < _arr.length; _i++) {
 74654          const hint = _arr[_i];
 74655          // Reset dependency flags
 74656          flags.dev = hint === 'dev';
 74657          flags.peer = hint === 'peer';
 74658          flags.optional = hint === 'optional';
 74659          flags.ignoreWorkspaceRootCheck = true;
 74660          flags.includeWorkspaceDeps = false;
 74661          flags.workspaceRootIsCwd = false;
 74662          const deps = answers.filter(isHint(hint));
 74663          if (deps.length) {
 74664            const install = new (_install || _load_install()).Install(flags, config, reporter, lockfile);
 74665  
 74666            var _ref2 = yield install.fetchRequestFromCwd();
 74667  
 74668            const packagePatterns = _ref2.requests;
 74669  
 74670            const depsByWorkspace = deps.reduce(function (acc, dep) {
 74671              const workspaceLoc = dep.workspaceLoc;
 74672  
 74673              const xs = acc[workspaceLoc] || [];
 74674              acc[workspaceLoc] = xs.concat(dep);
 74675              return acc;
 74676            }, {});
 74677            const cwd = config.cwd;
 74678            for (var _iterator = Object.keys(depsByWorkspace), _isArray = Array.isArray(_iterator), _i2 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 74679              var _ref3;
 74680  
 74681              if (_isArray) {
 74682                if (_i2 >= _iterator.length) break;
 74683                _ref3 = _iterator[_i2++];
 74684              } else {
 74685                _i2 = _iterator.next();
 74686                if (_i2.done) break;
 74687                _ref3 = _i2.value;
 74688              }
 74689  
 74690              const loc = _ref3;
 74691  
 74692              const patterns = depsByWorkspace[loc].map(getPattern);
 74693              (0, (_upgrade || _load_upgrade()).cleanLockfile)(lockfile, deps, packagePatterns, reporter);
 74694              reporter.info(reporter.lang('updateInstalling', getNameFromHint(hint)));
 74695              if (loc !== '') {
 74696                config.cwd = path.resolve(path.dirname(loc));
 74697              }
 74698              const add = new (_add || _load_add()).Add(patterns, flags, config, reporter, lockfile);
 74699              yield add.init();
 74700              config.cwd = cwd;
 74701            }
 74702          }
 74703        }
 74704      } catch (e) {
 74705        Promise.reject(e);
 74706      }
 74707    });
 74708  
 74709    return function run(_x, _x2, _x3, _x4) {
 74710      return _ref.apply(this, arguments);
 74711    };
 74712  })();
 74713  
 74714  exports.setFlags = setFlags;
 74715  exports.hasWrapper = hasWrapper;
 74716  
 74717  var _inquirer;
 74718  
 74719  function _load_inquirer() {
 74720    return _inquirer = _interopRequireDefault(__webpack_require__(276));
 74721  }
 74722  
 74723  var _lockfile;
 74724  
 74725  function _load_lockfile() {
 74726    return _lockfile = _interopRequireDefault(__webpack_require__(19));
 74727  }
 74728  
 74729  var _add;
 74730  
 74731  function _load_add() {
 74732    return _add = __webpack_require__(165);
 74733  }
 74734  
 74735  var _upgrade;
 74736  
 74737  function _load_upgrade() {
 74738    return _upgrade = __webpack_require__(205);
 74739  }
 74740  
 74741  var _colorForVersions;
 74742  
 74743  function _load_colorForVersions() {
 74744    return _colorForVersions = _interopRequireDefault(__webpack_require__(363));
 74745  }
 74746  
 74747  var _colorizeDiff;
 74748  
 74749  function _load_colorizeDiff() {
 74750    return _colorizeDiff = _interopRequireDefault(__webpack_require__(364));
 74751  }
 74752  
 74753  var _install;
 74754  
 74755  function _load_install() {
 74756    return _install = __webpack_require__(34);
 74757  }
 74758  
 74759  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 74760  
 74761  const path = __webpack_require__(0);
 74762  
 74763  const requireLockfile = exports.requireLockfile = true;
 74764  
 74765  function setFlags(commander) {
 74766    commander.description('Provides an easy way to update outdated packages.');
 74767    commander.usage('upgrade-interactive [flags]');
 74768    commander.option('-S, --scope <scope>', 'upgrade packages under the specified scope');
 74769    commander.option('--latest', 'list the latest version of packages, ignoring version ranges in package.json');
 74770    commander.option('-E, --exact', 'install exact version. Only used when --latest is specified.');
 74771    commander.option('-T, --tilde', 'install most recent release with the same minor version. Only used when --latest is specified.');
 74772    commander.option('-C, --caret', 'install most recent release with the same major version. Only used when --latest is specified.');
 74773  }
 74774  
 74775  function hasWrapper(commander, args) {
 74776    return true;
 74777  }
 74778  
 74779  /***/ }),
 74780  /* 357 */
 74781  /***/ (function(module, exports, __webpack_require__) {
 74782  
 74783  "use strict";
 74784  
 74785  
 74786  Object.defineProperty(exports, "__esModule", {
 74787    value: true
 74788  });
 74789  exports.run = exports.setVersion = undefined;
 74790  
 74791  var _asyncToGenerator2;
 74792  
 74793  function _load_asyncToGenerator() {
 74794    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 74795  }
 74796  
 74797  let setVersion = exports.setVersion = (() => {
 74798    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args, required) {
 74799      const pkg = yield config.readRootManifest();
 74800      const pkgLoc = pkg._loc;
 74801      const scripts = (0, (_map || _load_map()).default)();
 74802      let newVersion = flags.newVersion;
 74803      let identifier = undefined;
 74804      if (flags.preid) {
 74805        identifier = flags.preid;
 74806      }
 74807      invariant(pkgLoc, 'expected package location');
 74808  
 74809      if (args.length && !newVersion) {
 74810        throw new (_errors || _load_errors()).MessageError(reporter.lang('invalidVersionArgument', NEW_VERSION_FLAG));
 74811      }
 74812  
 74813      function runLifecycle(lifecycle) {
 74814        if (scripts[lifecycle]) {
 74815          return (0, (_executeLifecycleScript || _load_executeLifecycleScript()).execCommand)({ stage: lifecycle, config, cmd: scripts[lifecycle], cwd: config.cwd, isInteractive: true });
 74816        }
 74817  
 74818        return Promise.resolve();
 74819      }
 74820  
 74821      function isCommitHooksDisabled() {
 74822        return flags.commitHooks === false || config.getOption('version-commit-hooks') === false;
 74823      }
 74824  
 74825      if (pkg.scripts) {
 74826        // inherit `scripts` from manifest
 74827        Object.assign(scripts, pkg.scripts);
 74828      }
 74829  
 74830      // get old version
 74831      let oldVersion = pkg.version;
 74832      if (oldVersion) {
 74833        reporter.info(`${reporter.lang('currentVersion')}: ${oldVersion}`);
 74834      } else {
 74835        oldVersion = '0.0.0';
 74836      }
 74837  
 74838      // get new version
 74839      if (newVersion && !isValidNewVersion(oldVersion, newVersion, config.looseSemver, identifier)) {
 74840        throw new (_errors || _load_errors()).MessageError(reporter.lang('invalidVersion'));
 74841      }
 74842  
 74843      // get new version by bumping old version, if requested
 74844      if (!newVersion) {
 74845        if (flags.major) {
 74846          newVersion = semver.inc(oldVersion, 'major');
 74847        } else if (flags.minor) {
 74848          newVersion = semver.inc(oldVersion, 'minor');
 74849        } else if (flags.patch) {
 74850          newVersion = semver.inc(oldVersion, 'patch');
 74851        } else if (flags.premajor) {
 74852          newVersion = semver.inc(oldVersion, 'premajor', identifier);
 74853        } else if (flags.preminor) {
 74854          newVersion = semver.inc(oldVersion, 'preminor', identifier);
 74855        } else if (flags.prepatch) {
 74856          newVersion = semver.inc(oldVersion, 'prepatch', identifier);
 74857        } else if (flags.prerelease) {
 74858          newVersion = semver.inc(oldVersion, 'prerelease', identifier);
 74859        }
 74860      }
 74861  
 74862      // wasn't passed a version arg so ask interactively
 74863      while (!newVersion) {
 74864        // make sure we're not running in non-interactive mode before asking for new version
 74865        if (flags.nonInteractive || config.nonInteractive) {
 74866          // if no version is specified, use current version in package.json
 74867          newVersion = oldVersion;
 74868          break;
 74869        }
 74870  
 74871        // Make sure we dont exit with an error message when pressing Ctrl-C or enter to abort
 74872        try {
 74873          newVersion = yield reporter.question(reporter.lang('newVersion'));
 74874          if (!newVersion) {
 74875            newVersion = oldVersion;
 74876          }
 74877        } catch (err) {
 74878          newVersion = oldVersion;
 74879        }
 74880  
 74881        if (!required && !newVersion) {
 74882          reporter.info(`${reporter.lang('noVersionOnPublish')}: ${oldVersion}`);
 74883          return function () {
 74884            return Promise.resolve();
 74885          };
 74886        }
 74887  
 74888        if (isValidNewVersion(oldVersion, newVersion, config.looseSemver, identifier)) {
 74889          break;
 74890        } else {
 74891          newVersion = null;
 74892          reporter.error(reporter.lang('invalidSemver'));
 74893        }
 74894      }
 74895      if (newVersion) {
 74896        newVersion = semver.inc(oldVersion, newVersion, config.looseSemver, identifier) || newVersion;
 74897      }
 74898      invariant(newVersion, 'expected new version');
 74899  
 74900      if (newVersion === pkg.version) {
 74901        return function () {
 74902          return Promise.resolve();
 74903        };
 74904      }
 74905  
 74906      yield runLifecycle('preversion');
 74907  
 74908      // update version
 74909      reporter.info(`${reporter.lang('newVersion')}: ${newVersion}`);
 74910      pkg.version = newVersion;
 74911  
 74912      // update versions in manifests
 74913      const manifests = yield config.getRootManifests();
 74914      for (var _iterator = (_index || _load_index()).registryNames, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 74915        var _ref2;
 74916  
 74917        if (_isArray) {
 74918          if (_i >= _iterator.length) break;
 74919          _ref2 = _iterator[_i++];
 74920        } else {
 74921          _i = _iterator.next();
 74922          if (_i.done) break;
 74923          _ref2 = _i.value;
 74924        }
 74925  
 74926        const registryName = _ref2;
 74927  
 74928        const manifest = manifests[registryName];
 74929        if (manifest.exists) {
 74930          manifest.object.version = newVersion;
 74931        }
 74932      }
 74933      yield config.saveRootManifests(manifests);
 74934  
 74935      yield runLifecycle('version');
 74936  
 74937      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 74938        invariant(newVersion, 'expected version');
 74939  
 74940        // check if a new git tag should be created
 74941        if (flags.gitTagVersion && config.getOption('version-git-tag')) {
 74942          // add git commit and tag
 74943          let isGit = false;
 74944          const parts = config.cwd.split(path.sep);
 74945          while (parts.length) {
 74946            isGit = yield (_fs || _load_fs()).exists(path.join(parts.join(path.sep), '.git'));
 74947            if (isGit) {
 74948              break;
 74949            } else {
 74950              parts.pop();
 74951            }
 74952          }
 74953  
 74954          if (isGit) {
 74955            const message = (flags.message || String(config.getOption('version-git-message'))).replace(/%s/g, newVersion);
 74956            const sign = Boolean(config.getOption('version-sign-git-tag'));
 74957            const flag = sign ? '-sm' : '-am';
 74958            const prefix = String(config.getOption('version-tag-prefix'));
 74959            const args = ['commit', '-m', message, ...(isCommitHooksDisabled() ? ['-n'] : [])];
 74960  
 74961            const gitRoot = (yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['rev-parse', '--show-toplevel'], { cwd: config.cwd })).trim();
 74962  
 74963            // add manifest
 74964            yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['add', path.relative(gitRoot, pkgLoc)], { cwd: gitRoot });
 74965  
 74966            // create git commit
 74967            yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(args, { cwd: gitRoot });
 74968  
 74969            // create git tag
 74970            yield (0, (_gitSpawn || _load_gitSpawn()).spawn)(['tag', `${prefix}${newVersion}`, flag, message], { cwd: gitRoot });
 74971          }
 74972        }
 74973  
 74974        yield runLifecycle('postversion');
 74975      });
 74976    });
 74977  
 74978    return function setVersion(_x, _x2, _x3, _x4, _x5) {
 74979      return _ref.apply(this, arguments);
 74980    };
 74981  })();
 74982  
 74983  let run = exports.run = (() => {
 74984    var _ref4 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 74985      const commit = yield setVersion(config, reporter, flags, args, true);
 74986      yield commit();
 74987    });
 74988  
 74989    return function run(_x6, _x7, _x8, _x9) {
 74990      return _ref4.apply(this, arguments);
 74991    };
 74992  })();
 74993  
 74994  exports.setFlags = setFlags;
 74995  exports.hasWrapper = hasWrapper;
 74996  
 74997  var _index;
 74998  
 74999  function _load_index() {
 75000    return _index = __webpack_require__(58);
 75001  }
 75002  
 75003  var _executeLifecycleScript;
 75004  
 75005  function _load_executeLifecycleScript() {
 75006    return _executeLifecycleScript = __webpack_require__(111);
 75007  }
 75008  
 75009  var _errors;
 75010  
 75011  function _load_errors() {
 75012    return _errors = __webpack_require__(6);
 75013  }
 75014  
 75015  var _gitSpawn;
 75016  
 75017  function _load_gitSpawn() {
 75018    return _gitSpawn = __webpack_require__(367);
 75019  }
 75020  
 75021  var _fs;
 75022  
 75023  function _load_fs() {
 75024    return _fs = _interopRequireWildcard(__webpack_require__(5));
 75025  }
 75026  
 75027  var _map;
 75028  
 75029  function _load_map() {
 75030    return _map = _interopRequireDefault(__webpack_require__(29));
 75031  }
 75032  
 75033  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 75034  
 75035  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 75036  
 75037  const invariant = __webpack_require__(9);
 75038  const semver = __webpack_require__(22);
 75039  const path = __webpack_require__(0);
 75040  
 75041  const NEW_VERSION_FLAG = '--new-version [version]';
 75042  function isValidNewVersion(oldVersion, newVersion, looseSemver, identifier) {
 75043    return !!(semver.valid(newVersion, looseSemver) || semver.inc(oldVersion, newVersion, looseSemver, identifier));
 75044  }
 75045  
 75046  function setFlags(commander) {
 75047    commander.description('Update the version of your package via the command line.');
 75048    commander.option(NEW_VERSION_FLAG, 'new version');
 75049    commander.option('--major', 'auto-increment major version number');
 75050    commander.option('--minor', 'auto-increment minor version number');
 75051    commander.option('--patch', 'auto-increment patch version number');
 75052    commander.option('--premajor', 'auto-increment premajor version number');
 75053    commander.option('--preminor', 'auto-increment preminor version number');
 75054    commander.option('--prepatch', 'auto-increment prepatch version number');
 75055    commander.option('--prerelease', 'auto-increment prerelease version number');
 75056    commander.option('--preid [preid]', 'add a custom identifier to the prerelease');
 75057    commander.option('--message [message]', 'message');
 75058    commander.option('--no-git-tag-version', 'no git tag version');
 75059    commander.option('--no-commit-hooks', 'bypass git hooks when committing new version');
 75060  }
 75061  
 75062  function hasWrapper(commander, args) {
 75063    return true;
 75064  }
 75065  
 75066  /***/ }),
 75067  /* 358 */
 75068  /***/ (function(module, exports, __webpack_require__) {
 75069  
 75070  "use strict";
 75071  
 75072  
 75073  Object.defineProperty(exports, "__esModule", {
 75074    value: true
 75075  });
 75076  exports.LocalTarballFetcher = undefined;
 75077  
 75078  var _extends2;
 75079  
 75080  function _load_extends() {
 75081    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 75082  }
 75083  
 75084  var _asyncToGenerator2;
 75085  
 75086  function _load_asyncToGenerator() {
 75087    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 75088  }
 75089  
 75090  var _errors;
 75091  
 75092  function _load_errors() {
 75093    return _errors = __webpack_require__(6);
 75094  }
 75095  
 75096  var _constants;
 75097  
 75098  function _load_constants() {
 75099    return _constants = _interopRequireWildcard(__webpack_require__(8));
 75100  }
 75101  
 75102  var _baseFetcher;
 75103  
 75104  function _load_baseFetcher() {
 75105    return _baseFetcher = _interopRequireDefault(__webpack_require__(167));
 75106  }
 75107  
 75108  var _fs;
 75109  
 75110  function _load_fs() {
 75111    return _fs = _interopRequireWildcard(__webpack_require__(5));
 75112  }
 75113  
 75114  var _misc;
 75115  
 75116  function _load_misc() {
 75117    return _misc = __webpack_require__(18);
 75118  }
 75119  
 75120  var _normalizeUrl;
 75121  
 75122  function _load_normalizeUrl() {
 75123    return _normalizeUrl = _interopRequireDefault(__webpack_require__(402));
 75124  }
 75125  
 75126  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 75127  
 75128  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 75129  
 75130  const crypto = __webpack_require__(11);
 75131  const path = __webpack_require__(0);
 75132  const tarFs = __webpack_require__(194);
 75133  const url = __webpack_require__(24);
 75134  const fs = __webpack_require__(4);
 75135  const stream = __webpack_require__(23);
 75136  const gunzip = __webpack_require__(624);
 75137  const invariant = __webpack_require__(9);
 75138  const ssri = __webpack_require__(65);
 75139  
 75140  const RE_URL_NAME_MATCH = /\/(?:(@[^/]+)(?:\/|%2f))?[^/]+\/(?:-|_attachments)\/(?:@[^/]+\/)?([^/]+)$/;
 75141  
 75142  const isHashAlgorithmSupported = name => {
 75143    const cachedResult = isHashAlgorithmSupported.__cache[name];
 75144    if (cachedResult != null) {
 75145      return cachedResult;
 75146    }
 75147    let supported = true;
 75148    try {
 75149      crypto.createHash(name);
 75150    } catch (error) {
 75151      if (error.message !== 'Digest method not supported') {
 75152        throw error;
 75153      }
 75154      supported = false;
 75155    }
 75156  
 75157    isHashAlgorithmSupported.__cache[name] = supported;
 75158    return supported;
 75159  };
 75160  isHashAlgorithmSupported.__cache = {};
 75161  
 75162  class TarballFetcher extends (_baseFetcher || _load_baseFetcher()).default {
 75163    constructor(...args) {
 75164      var _temp;
 75165  
 75166      return _temp = super(...args), this.validateError = null, this.validateIntegrity = null, _temp;
 75167    }
 75168  
 75169    setupMirrorFromCache() {
 75170      var _this = this;
 75171  
 75172      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 75173        const tarballMirrorPath = _this.getTarballMirrorPath();
 75174        const tarballCachePath = _this.getTarballCachePath();
 75175  
 75176        if (tarballMirrorPath == null) {
 75177          return;
 75178        }
 75179  
 75180        if (!(yield (_fs || _load_fs()).exists(tarballMirrorPath)) && (yield (_fs || _load_fs()).exists(tarballCachePath))) {
 75181          // The tarball doesn't exists in the offline cache but does in the cache; we import it to the mirror
 75182          yield (_fs || _load_fs()).mkdirp(path.dirname(tarballMirrorPath));
 75183          yield (_fs || _load_fs()).copy(tarballCachePath, tarballMirrorPath, _this.reporter);
 75184        }
 75185      })();
 75186    }
 75187  
 75188    getTarballCachePath() {
 75189      return path.join(this.dest, (_constants || _load_constants()).TARBALL_FILENAME);
 75190    }
 75191  
 75192    getTarballMirrorPath() {
 75193      var _url$parse = url.parse(this.reference);
 75194  
 75195      const pathname = _url$parse.pathname;
 75196  
 75197  
 75198      if (pathname == null) {
 75199        return null;
 75200      }
 75201  
 75202      const match = pathname.match(RE_URL_NAME_MATCH);
 75203  
 75204      let packageFilename;
 75205      if (match) {
 75206        const scope = match[1],
 75207              tarballBasename = match[2];
 75208  
 75209        packageFilename = scope ? `${scope}-${tarballBasename}` : tarballBasename;
 75210      } else {
 75211        // fallback to base name
 75212        packageFilename = path.basename(pathname);
 75213      }
 75214  
 75215      return this.config.getOfflineMirrorPath(packageFilename);
 75216    }
 75217  
 75218    createExtractor(resolve, reject, tarballPath) {
 75219      const hashInfo = this._supportedIntegrity({ hashOnly: true });
 75220      const integrityInfo = this._supportedIntegrity({ hashOnly: false });
 75221  
 75222      const now = new Date();
 75223  
 75224      const fs = __webpack_require__(4);
 75225      const patchedFs = Object.assign({}, fs, {
 75226        utimes: (path, atime, mtime, cb) => {
 75227          fs.stat(path, (err, stat) => {
 75228            if (err) {
 75229              cb(err);
 75230              return;
 75231            }
 75232            if (stat.isDirectory()) {
 75233              fs.utimes(path, atime, mtime, cb);
 75234              return;
 75235            }
 75236            fs.open(path, 'a', (err, fd) => {
 75237              if (err) {
 75238                cb(err);
 75239                return;
 75240              }
 75241              fs.futimes(fd, atime, mtime, err => {
 75242                if (err) {
 75243                  fs.close(fd, () => cb(err));
 75244                } else {
 75245                  fs.close(fd, err => cb(err));
 75246                }
 75247              });
 75248            });
 75249          });
 75250        }
 75251      });
 75252  
 75253      const hashValidateStream = new ssri.integrityStream(hashInfo);
 75254      const integrityValidateStream = new ssri.integrityStream(integrityInfo);
 75255  
 75256      const untarStream = tarFs.extract(this.dest, {
 75257        strip: 1,
 75258        dmode: 0o755, // all dirs should be readable
 75259        fmode: 0o644, // all files should be readable
 75260        chown: false, // don't chown. just leave as it is
 75261        map: header => {
 75262          header.mtime = now;
 75263          if (header.linkname) {
 75264            const basePath = path.posix.dirname(path.join('/', header.name));
 75265            const jailPath = path.posix.join(basePath, header.linkname);
 75266            header.linkname = path.posix.relative('/', jailPath);
 75267          }
 75268          return header;
 75269        },
 75270        fs: patchedFs
 75271      });
 75272      const extractorStream = gunzip();
 75273  
 75274      hashValidateStream.once('error', err => {
 75275        this.validateError = err;
 75276      });
 75277      integrityValidateStream.once('error', err => {
 75278        this.validateError = err;
 75279      });
 75280      integrityValidateStream.once('integrity', sri => {
 75281        this.validateIntegrity = sri;
 75282      });
 75283  
 75284      untarStream.on('error', err => {
 75285        reject(new (_errors || _load_errors()).MessageError(this.config.reporter.lang('errorExtractingTarball', err.message, tarballPath)));
 75286      });
 75287  
 75288      extractorStream.pipe(untarStream).on('finish', () => {
 75289        const error = this.validateError;
 75290        const hexDigest = this.validateIntegrity ? this.validateIntegrity.hexDigest() : '';
 75291        if (this.config.updateChecksums && this.remote.integrity && this.validateIntegrity && this.remote.integrity !== this.validateIntegrity.toString()) {
 75292          this.remote.integrity = this.validateIntegrity.toString();
 75293        } else if (this.validateIntegrity) {
 75294          this.remote.cacheIntegrity = this.validateIntegrity.toString();
 75295        }
 75296  
 75297        if (integrityInfo.integrity && Object.keys(integrityInfo.integrity).length === 0) {
 75298          return reject(new (_errors || _load_errors()).SecurityError(this.config.reporter.lang('fetchBadIntegrityAlgorithm', this.packageName, this.remote.reference)));
 75299        }
 75300  
 75301        if (error) {
 75302          if (this.config.updateChecksums) {
 75303            this.remote.integrity = error.found.toString();
 75304          } else {
 75305            return reject(new (_errors || _load_errors()).SecurityError(this.config.reporter.lang('fetchBadHashWithPath', this.packageName, this.remote.reference, error.found.toString(), error.expected.toString())));
 75306          }
 75307        }
 75308  
 75309        return resolve({
 75310          hash: this.hash || hexDigest
 75311        });
 75312      });
 75313  
 75314      return { hashValidateStream, integrityValidateStream, extractorStream };
 75315    }
 75316  
 75317    getLocalPaths(override) {
 75318      const paths = [override ? path.resolve(this.config.cwd, override) : null, this.getTarballMirrorPath(), this.getTarballCachePath()];
 75319      // $FlowFixMe: https://github.com/facebook/flow/issues/1414
 75320      return paths.filter(path => path != null);
 75321    }
 75322  
 75323    fetchFromLocal(override) {
 75324      var _this2 = this;
 75325  
 75326      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 75327        const tarPaths = _this2.getLocalPaths(override);
 75328        const stream = yield (_fs || _load_fs()).readFirstAvailableStream(tarPaths);
 75329  
 75330        return new Promise(function (resolve, reject) {
 75331          if (!stream) {
 75332            reject(new (_errors || _load_errors()).MessageError(_this2.reporter.lang('tarballNotInNetworkOrCache', _this2.reference, tarPaths)));
 75333            return;
 75334          }
 75335          invariant(stream, 'stream should be available at this point');
 75336          // $FlowFixMe - This is available https://nodejs.org/api/fs.html#fs_readstream_path
 75337          const tarballPath = stream.path;
 75338  
 75339          var _createExtractor = _this2.createExtractor(resolve, reject, tarballPath);
 75340  
 75341          const hashValidateStream = _createExtractor.hashValidateStream,
 75342                integrityValidateStream = _createExtractor.integrityValidateStream,
 75343                extractorStream = _createExtractor.extractorStream;
 75344  
 75345  
 75346          stream.pipe(hashValidateStream);
 75347          hashValidateStream.pipe(integrityValidateStream);
 75348  
 75349          integrityValidateStream.pipe(extractorStream).on('error', function (err) {
 75350            reject(new (_errors || _load_errors()).MessageError(_this2.config.reporter.lang('fetchErrorCorrupt', err.message, tarballPath)));
 75351          });
 75352        });
 75353      })();
 75354    }
 75355  
 75356    fetchFromExternal() {
 75357      var _this3 = this;
 75358  
 75359      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 75360        const registry = _this3.config.registries[_this3.registry];
 75361  
 75362        try {
 75363          const headers = _this3.requestHeaders();
 75364          return yield registry.request(_this3.reference, {
 75365            headers: (0, (_extends2 || _load_extends()).default)({
 75366              'Accept-Encoding': 'gzip'
 75367            }, headers),
 75368            buffer: true,
 75369            process: function process(req, resolve, reject) {
 75370              // should we save this to the offline cache?
 75371              const tarballMirrorPath = _this3.getTarballMirrorPath();
 75372              const tarballCachePath = _this3.getTarballCachePath();
 75373  
 75374              var _createExtractor2 = _this3.createExtractor(resolve, reject);
 75375  
 75376              const hashValidateStream = _createExtractor2.hashValidateStream,
 75377                    integrityValidateStream = _createExtractor2.integrityValidateStream,
 75378                    extractorStream = _createExtractor2.extractorStream;
 75379  
 75380  
 75381              req.pipe(hashValidateStream);
 75382              hashValidateStream.pipe(integrityValidateStream);
 75383  
 75384              if (tarballMirrorPath) {
 75385                integrityValidateStream.pipe(fs.createWriteStream(tarballMirrorPath)).on('error', reject);
 75386              }
 75387  
 75388              if (tarballCachePath) {
 75389                integrityValidateStream.pipe(fs.createWriteStream(tarballCachePath)).on('error', reject);
 75390              }
 75391  
 75392              integrityValidateStream.pipe(extractorStream).on('error', reject);
 75393            }
 75394          }, _this3.packageName);
 75395        } catch (err) {
 75396          const tarballMirrorPath = _this3.getTarballMirrorPath();
 75397          const tarballCachePath = _this3.getTarballCachePath();
 75398  
 75399          if (tarballMirrorPath && (yield (_fs || _load_fs()).exists(tarballMirrorPath))) {
 75400            yield (_fs || _load_fs()).unlink(tarballMirrorPath);
 75401          }
 75402  
 75403          if (tarballCachePath && (yield (_fs || _load_fs()).exists(tarballCachePath))) {
 75404            yield (_fs || _load_fs()).unlink(tarballCachePath);
 75405          }
 75406  
 75407          throw err;
 75408        }
 75409      })();
 75410    }
 75411  
 75412    requestHeaders() {
 75413      const registry = this.config.registries.yarn;
 75414      const config = registry.config;
 75415      const requestParts = urlParts(this.reference);
 75416      return Object.keys(config).reduce((headers, option) => {
 75417        const parts = option.split(':');
 75418        if (parts.length === 3 && parts[1] === '_header') {
 75419          const registryParts = urlParts(parts[0]);
 75420          if (requestParts.host === registryParts.host && requestParts.path.startsWith(registryParts.path)) {
 75421            const headerName = parts[2];
 75422            const headerValue = config[option];
 75423            headers[headerName] = headerValue;
 75424          }
 75425        }
 75426        return headers;
 75427      }, {});
 75428    }
 75429  
 75430    _fetch() {
 75431      const isFilePath = this.reference.startsWith('file:');
 75432      this.reference = (0, (_misc || _load_misc()).removePrefix)(this.reference, 'file:');
 75433      const urlParse = url.parse(this.reference);
 75434  
 75435      // legacy support for local paths in yarn.lock entries
 75436      const isRelativePath = urlParse.protocol ? urlParse.protocol.match(/^[a-z]:$/i) : urlParse.pathname ? urlParse.pathname.match(/^(?:\.{1,2})?[\\\/]/) : false;
 75437  
 75438      if (isFilePath || isRelativePath) {
 75439        return this.fetchFromLocal(this.reference);
 75440      }
 75441  
 75442      return this.fetchFromLocal().catch(err => this.fetchFromExternal());
 75443    }
 75444  
 75445    _findIntegrity({ hashOnly }) {
 75446      if (this.remote.integrity && !hashOnly) {
 75447        return ssri.parse(this.remote.integrity);
 75448      }
 75449      if (this.hash) {
 75450        return ssri.fromHex(this.hash, 'sha1');
 75451      }
 75452      return null;
 75453    }
 75454  
 75455    _supportedIntegrity({ hashOnly }) {
 75456      const expectedIntegrity = this._findIntegrity({ hashOnly }) || {};
 75457      const expectedIntegrityAlgorithms = Object.keys(expectedIntegrity);
 75458      const shouldValidateIntegrity = (this.hash || this.remote.integrity) && !this.config.updateChecksums;
 75459  
 75460      if (expectedIntegrityAlgorithms.length === 0 && (!shouldValidateIntegrity || hashOnly)) {
 75461        const algorithms = this.config.updateChecksums ? ['sha512'] : ['sha1'];
 75462        // for consistency, return sha1 for packages without a remote integrity (eg. github)
 75463        return { integrity: null, algorithms };
 75464      }
 75465  
 75466      const algorithms = new Set(['sha512', 'sha1']);
 75467      const integrity = {};
 75468      for (var _iterator = expectedIntegrityAlgorithms, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 75469        var _ref;
 75470  
 75471        if (_isArray) {
 75472          if (_i >= _iterator.length) break;
 75473          _ref = _iterator[_i++];
 75474        } else {
 75475          _i = _iterator.next();
 75476          if (_i.done) break;
 75477          _ref = _i.value;
 75478        }
 75479  
 75480        const algorithm = _ref;
 75481  
 75482        if (isHashAlgorithmSupported(algorithm)) {
 75483          algorithms.add(algorithm);
 75484          integrity[algorithm] = expectedIntegrity[algorithm];
 75485        }
 75486      }
 75487  
 75488      return { integrity, algorithms: Array.from(algorithms) };
 75489    }
 75490  }
 75491  
 75492  exports.default = TarballFetcher;
 75493  class LocalTarballFetcher extends TarballFetcher {
 75494    _fetch() {
 75495      return this.fetchFromLocal(this.reference);
 75496    }
 75497  }
 75498  
 75499  exports.LocalTarballFetcher = LocalTarballFetcher;
 75500  
 75501  
 75502  function urlParts(requestUrl) {
 75503    const normalizedUrl = (0, (_normalizeUrl || _load_normalizeUrl()).default)(requestUrl);
 75504    const parsed = url.parse(normalizedUrl);
 75505    const host = parsed.host || '';
 75506    const path = parsed.path || '';
 75507    return { host, path };
 75508  }
 75509  
 75510  /***/ }),
 75511  /* 359 */
 75512  /***/ (function(module, exports, __webpack_require__) {
 75513  
 75514  "use strict";
 75515  
 75516  
 75517  Object.defineProperty(exports, "__esModule", {
 75518    value: true
 75519  });
 75520  
 75521  var _misc;
 75522  
 75523  function _load_misc() {
 75524    return _misc = __webpack_require__(18);
 75525  }
 75526  
 75527  class PackageReference {
 75528    constructor(request, info, remote) {
 75529      this.resolver = request.resolver;
 75530      this.lockfile = request.lockfile;
 75531      this.requests = [];
 75532      this.config = request.config;
 75533      this.hint = request.hint;
 75534  
 75535      this.isPlugnplay = false;
 75536  
 75537      this.registry = remote.registry;
 75538      this.version = info.version;
 75539      this.name = info.name;
 75540      this.uid = info._uid;
 75541  
 75542      this.remote = remote;
 75543  
 75544      this.dependencies = [];
 75545  
 75546      this.permissions = {};
 75547      this.patterns = [];
 75548      this.optional = null;
 75549      this.level = Infinity;
 75550      this.ignore = false;
 75551      this.incompatible = false;
 75552      this.fresh = false;
 75553      this.locations = [];
 75554      this.addRequest(request);
 75555    }
 75556  
 75557    setFresh(fresh) {
 75558      this.fresh = fresh;
 75559    }
 75560  
 75561    addLocation(loc) {
 75562      if (this.locations.indexOf(loc) === -1) {
 75563        this.locations.push(loc);
 75564      }
 75565    }
 75566  
 75567    addRequest(request) {
 75568      this.requests.push(request);
 75569  
 75570      this.level = Math.min(this.level, request.parentNames.length);
 75571    }
 75572  
 75573    prune() {
 75574      for (var _iterator = this.patterns, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 75575        var _ref;
 75576  
 75577        if (_isArray) {
 75578          if (_i >= _iterator.length) break;
 75579          _ref = _iterator[_i++];
 75580        } else {
 75581          _i = _iterator.next();
 75582          if (_i.done) break;
 75583          _ref = _i.value;
 75584        }
 75585  
 75586        const selfPattern = _ref;
 75587  
 75588        // remove ourselves from the resolver
 75589        this.resolver.removePattern(selfPattern);
 75590      }
 75591    }
 75592  
 75593    addDependencies(deps) {
 75594      this.dependencies = this.dependencies.concat(deps);
 75595    }
 75596  
 75597    setPermission(key, val) {
 75598      this.permissions[key] = val;
 75599    }
 75600  
 75601    hasPermission(key) {
 75602      if (key in this.permissions) {
 75603        return this.permissions[key];
 75604      } else {
 75605        return false;
 75606      }
 75607    }
 75608  
 75609    addPattern(pattern, manifest) {
 75610      this.resolver.addPattern(pattern, manifest);
 75611  
 75612      this.patterns.push(pattern);
 75613  
 75614      const shrunk = this.lockfile.getLocked(pattern);
 75615      if (shrunk && shrunk.permissions) {
 75616        for (var _iterator2 = (0, (_misc || _load_misc()).entries)(shrunk.permissions), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 75617          var _ref3;
 75618  
 75619          if (_isArray2) {
 75620            if (_i2 >= _iterator2.length) break;
 75621            _ref3 = _iterator2[_i2++];
 75622          } else {
 75623            _i2 = _iterator2.next();
 75624            if (_i2.done) break;
 75625            _ref3 = _i2.value;
 75626          }
 75627  
 75628          const _ref2 = _ref3;
 75629          const key = _ref2[0];
 75630          const perm = _ref2[1];
 75631  
 75632          this.setPermission(key, perm);
 75633        }
 75634      }
 75635    }
 75636  
 75637    addOptional(optional) {
 75638      if (this.optional == null) {
 75639        // optional is uninitialised
 75640        this.optional = optional;
 75641      } else if (!optional) {
 75642        // otherwise, ignore all subsequent optional assignments and only accept ones making
 75643        // this not optional
 75644        this.optional = false;
 75645      }
 75646    }
 75647  }
 75648  exports.default = PackageReference;
 75649  
 75650  /***/ }),
 75651  /* 360 */
 75652  /***/ (function(module, exports, __webpack_require__) {
 75653  
 75654  "use strict";
 75655  
 75656  
 75657  Object.defineProperty(exports, "__esModule", {
 75658    value: true
 75659  });
 75660  
 75661  var _asyncToGenerator2;
 75662  
 75663  function _load_asyncToGenerator() {
 75664    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 75665  }
 75666  
 75667  var _index;
 75668  
 75669  function _load_index() {
 75670    return _index = __webpack_require__(78);
 75671  }
 75672  
 75673  var _packageRequest;
 75674  
 75675  function _load_packageRequest() {
 75676    return _packageRequest = _interopRequireDefault(__webpack_require__(122));
 75677  }
 75678  
 75679  var _normalizePattern2;
 75680  
 75681  function _load_normalizePattern() {
 75682    return _normalizePattern2 = __webpack_require__(37);
 75683  }
 75684  
 75685  var _requestManager;
 75686  
 75687  function _load_requestManager() {
 75688    return _requestManager = _interopRequireDefault(__webpack_require__(372));
 75689  }
 75690  
 75691  var _blockingQueue;
 75692  
 75693  function _load_blockingQueue() {
 75694    return _blockingQueue = _interopRequireDefault(__webpack_require__(110));
 75695  }
 75696  
 75697  var _lockfile;
 75698  
 75699  function _load_lockfile() {
 75700    return _lockfile = _interopRequireDefault(__webpack_require__(19));
 75701  }
 75702  
 75703  var _map;
 75704  
 75705  function _load_map() {
 75706    return _map = _interopRequireDefault(__webpack_require__(29));
 75707  }
 75708  
 75709  var _workspaceLayout;
 75710  
 75711  function _load_workspaceLayout() {
 75712    return _workspaceLayout = _interopRequireDefault(__webpack_require__(90));
 75713  }
 75714  
 75715  var _resolutionMap;
 75716  
 75717  function _load_resolutionMap() {
 75718    return _resolutionMap = _interopRequireDefault(__webpack_require__(212));
 75719  }
 75720  
 75721  var _resolutionMap2;
 75722  
 75723  function _load_resolutionMap2() {
 75724    return _resolutionMap2 = __webpack_require__(212);
 75725  }
 75726  
 75727  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 75728  
 75729  const invariant = __webpack_require__(9);
 75730  
 75731  const semver = __webpack_require__(22);
 75732  
 75733  class PackageResolver {
 75734    constructor(config, lockfile, resolutionMap = new (_resolutionMap || _load_resolutionMap()).default(config)) {
 75735      this.patternsByPackage = (0, (_map || _load_map()).default)();
 75736      this.fetchingPatterns = new Set();
 75737      this.fetchingQueue = new (_blockingQueue || _load_blockingQueue()).default('resolver fetching');
 75738      this.patterns = (0, (_map || _load_map()).default)();
 75739      this.resolutionMap = resolutionMap;
 75740      this.usedRegistries = new Set();
 75741      this.flat = false;
 75742  
 75743      this.reporter = config.reporter;
 75744      this.lockfile = lockfile;
 75745      this.config = config;
 75746      this.delayedResolveQueue = [];
 75747    }
 75748  
 75749    // whether the dependency graph will be flattened
 75750  
 75751  
 75752    // list of registries that have been used in this resolution
 75753  
 75754  
 75755    // activity monitor
 75756  
 75757  
 75758    // patterns we've already resolved or are in the process of resolving
 75759  
 75760  
 75761    // TODO
 75762  
 75763  
 75764    // manages and throttles json api http requests
 75765  
 75766  
 75767    // list of patterns associated with a package
 75768  
 75769  
 75770    // lockfile instance which we can use to retrieve version info
 75771  
 75772  
 75773    // a map of dependency patterns to packages
 75774  
 75775  
 75776    // reporter instance, abstracts out display logic
 75777  
 75778  
 75779    // environment specific config methods and options
 75780  
 75781  
 75782    // list of packages need to be resolved later (they found a matching version in the
 75783    // resolver, but better matches can still arrive later in the resolve process)
 75784  
 75785  
 75786    /**
 75787     * TODO description
 75788     */
 75789  
 75790    isNewPattern(pattern) {
 75791      return !!this.patterns[pattern].fresh;
 75792    }
 75793  
 75794    updateManifest(ref, newPkg) {
 75795      // inherit fields
 75796      const oldPkg = this.patterns[ref.patterns[0]];
 75797      newPkg._reference = ref;
 75798      newPkg._remote = ref.remote;
 75799      newPkg.name = oldPkg.name;
 75800      newPkg.fresh = oldPkg.fresh;
 75801      newPkg.prebuiltVariants = oldPkg.prebuiltVariants;
 75802  
 75803      // update patterns
 75804      for (var _iterator = ref.patterns, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 75805        var _ref;
 75806  
 75807        if (_isArray) {
 75808          if (_i >= _iterator.length) break;
 75809          _ref = _iterator[_i++];
 75810        } else {
 75811          _i = _iterator.next();
 75812          if (_i.done) break;
 75813          _ref = _i.value;
 75814        }
 75815  
 75816        const pattern = _ref;
 75817  
 75818        this.patterns[pattern] = newPkg;
 75819      }
 75820  
 75821      return Promise.resolve();
 75822    }
 75823  
 75824    updateManifests(newPkgs) {
 75825      for (var _iterator2 = newPkgs, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 75826        var _ref2;
 75827  
 75828        if (_isArray2) {
 75829          if (_i2 >= _iterator2.length) break;
 75830          _ref2 = _iterator2[_i2++];
 75831        } else {
 75832          _i2 = _iterator2.next();
 75833          if (_i2.done) break;
 75834          _ref2 = _i2.value;
 75835        }
 75836  
 75837        const newPkg = _ref2;
 75838  
 75839        if (newPkg._reference) {
 75840          for (var _iterator3 = newPkg._reference.patterns, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 75841            var _ref3;
 75842  
 75843            if (_isArray3) {
 75844              if (_i3 >= _iterator3.length) break;
 75845              _ref3 = _iterator3[_i3++];
 75846            } else {
 75847              _i3 = _iterator3.next();
 75848              if (_i3.done) break;
 75849              _ref3 = _i3.value;
 75850            }
 75851  
 75852            const pattern = _ref3;
 75853  
 75854            const oldPkg = this.patterns[pattern];
 75855            newPkg.prebuiltVariants = oldPkg.prebuiltVariants;
 75856  
 75857            this.patterns[pattern] = newPkg;
 75858          }
 75859        }
 75860      }
 75861  
 75862      return Promise.resolve();
 75863    }
 75864  
 75865    /**
 75866     * Given a list of patterns, dedupe them to a list of unique patterns.
 75867     */
 75868  
 75869    dedupePatterns(patterns) {
 75870      const deduped = [];
 75871      const seen = new Set();
 75872  
 75873      for (var _iterator4 = patterns, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 75874        var _ref4;
 75875  
 75876        if (_isArray4) {
 75877          if (_i4 >= _iterator4.length) break;
 75878          _ref4 = _iterator4[_i4++];
 75879        } else {
 75880          _i4 = _iterator4.next();
 75881          if (_i4.done) break;
 75882          _ref4 = _i4.value;
 75883        }
 75884  
 75885        const pattern = _ref4;
 75886  
 75887        const info = this.getResolvedPattern(pattern);
 75888        if (seen.has(info)) {
 75889          continue;
 75890        }
 75891  
 75892        seen.add(info);
 75893        deduped.push(pattern);
 75894      }
 75895  
 75896      return deduped;
 75897    }
 75898  
 75899    /**
 75900     * Get a list of all manifests by topological order.
 75901     */
 75902  
 75903    getTopologicalManifests(seedPatterns) {
 75904      const pkgs = new Set();
 75905      const skip = new Set();
 75906  
 75907      const add = seedPatterns => {
 75908        for (var _iterator5 = seedPatterns, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
 75909          var _ref5;
 75910  
 75911          if (_isArray5) {
 75912            if (_i5 >= _iterator5.length) break;
 75913            _ref5 = _iterator5[_i5++];
 75914          } else {
 75915            _i5 = _iterator5.next();
 75916            if (_i5.done) break;
 75917            _ref5 = _i5.value;
 75918          }
 75919  
 75920          const pattern = _ref5;
 75921  
 75922          const pkg = this.getStrictResolvedPattern(pattern);
 75923          if (skip.has(pkg)) {
 75924            continue;
 75925          }
 75926  
 75927          const ref = pkg._reference;
 75928          invariant(ref, 'expected reference');
 75929          skip.add(pkg);
 75930          add(ref.dependencies);
 75931          pkgs.add(pkg);
 75932        }
 75933      };
 75934  
 75935      add(seedPatterns);
 75936  
 75937      return pkgs;
 75938    }
 75939  
 75940    /**
 75941     * Get a list of all manifests by level sort order.
 75942     */
 75943  
 75944    getLevelOrderManifests(seedPatterns) {
 75945      const pkgs = new Set();
 75946      const skip = new Set();
 75947  
 75948      const add = seedPatterns => {
 75949        const refs = [];
 75950  
 75951        for (var _iterator6 = seedPatterns, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
 75952          var _ref6;
 75953  
 75954          if (_isArray6) {
 75955            if (_i6 >= _iterator6.length) break;
 75956            _ref6 = _iterator6[_i6++];
 75957          } else {
 75958            _i6 = _iterator6.next();
 75959            if (_i6.done) break;
 75960            _ref6 = _i6.value;
 75961          }
 75962  
 75963          const pattern = _ref6;
 75964  
 75965          const pkg = this.getStrictResolvedPattern(pattern);
 75966          if (skip.has(pkg)) {
 75967            continue;
 75968          }
 75969  
 75970          const ref = pkg._reference;
 75971          invariant(ref, 'expected reference');
 75972  
 75973          refs.push(ref);
 75974          skip.add(pkg);
 75975          pkgs.add(pkg);
 75976        }
 75977  
 75978        for (var _iterator7 = refs, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
 75979          var _ref7;
 75980  
 75981          if (_isArray7) {
 75982            if (_i7 >= _iterator7.length) break;
 75983            _ref7 = _iterator7[_i7++];
 75984          } else {
 75985            _i7 = _iterator7.next();
 75986            if (_i7.done) break;
 75987            _ref7 = _i7.value;
 75988          }
 75989  
 75990          const ref = _ref7;
 75991  
 75992          add(ref.dependencies);
 75993        }
 75994      };
 75995  
 75996      add(seedPatterns);
 75997  
 75998      return pkgs;
 75999    }
 76000  
 76001    /**
 76002     * Get a list of all package names in the dependency graph.
 76003     */
 76004  
 76005    getAllDependencyNamesByLevelOrder(seedPatterns) {
 76006      const names = new Set();
 76007      for (var _iterator8 = this.getLevelOrderManifests(seedPatterns), _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {
 76008        var _ref9;
 76009  
 76010        if (_isArray8) {
 76011          if (_i8 >= _iterator8.length) break;
 76012          _ref9 = _iterator8[_i8++];
 76013        } else {
 76014          _i8 = _iterator8.next();
 76015          if (_i8.done) break;
 76016          _ref9 = _i8.value;
 76017        }
 76018  
 76019        const _ref8 = _ref9;
 76020        const name = _ref8.name;
 76021  
 76022        names.add(name);
 76023      }
 76024      return names;
 76025    }
 76026  
 76027    /**
 76028     * Retrieve all the package info stored for this package name.
 76029     */
 76030  
 76031    getAllInfoForPackageName(name) {
 76032      const patterns = this.patternsByPackage[name] || [];
 76033      return this.getAllInfoForPatterns(patterns);
 76034    }
 76035  
 76036    /**
 76037     * Retrieve all the package info stored for a list of patterns.
 76038     */
 76039  
 76040    getAllInfoForPatterns(patterns) {
 76041      const infos = [];
 76042      const seen = new Set();
 76043  
 76044      for (var _iterator9 = patterns, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {
 76045        var _ref10;
 76046  
 76047        if (_isArray9) {
 76048          if (_i9 >= _iterator9.length) break;
 76049          _ref10 = _iterator9[_i9++];
 76050        } else {
 76051          _i9 = _iterator9.next();
 76052          if (_i9.done) break;
 76053          _ref10 = _i9.value;
 76054        }
 76055  
 76056        const pattern = _ref10;
 76057  
 76058        const info = this.patterns[pattern];
 76059        if (seen.has(info)) {
 76060          continue;
 76061        }
 76062  
 76063        seen.add(info);
 76064        infos.push(info);
 76065      }
 76066  
 76067      return infos;
 76068    }
 76069  
 76070    /**
 76071     * Get a flat list of all package info.
 76072     */
 76073  
 76074    getManifests() {
 76075      const infos = [];
 76076      const seen = new Set();
 76077  
 76078      for (const pattern in this.patterns) {
 76079        const info = this.patterns[pattern];
 76080        if (seen.has(info)) {
 76081          continue;
 76082        }
 76083  
 76084        infos.push(info);
 76085        seen.add(info);
 76086      }
 76087  
 76088      return infos;
 76089    }
 76090  
 76091    /**
 76092     * replace pattern in resolver, e.g. `name` is replaced with `name@^1.0.1`
 76093     */
 76094    replacePattern(pattern, newPattern) {
 76095      const pkg = this.getResolvedPattern(pattern);
 76096      invariant(pkg, `missing package ${pattern}`);
 76097      const ref = pkg._reference;
 76098      invariant(ref, 'expected package reference');
 76099      ref.patterns = [newPattern];
 76100      this.addPattern(newPattern, pkg);
 76101      this.removePattern(pattern);
 76102    }
 76103  
 76104    /**
 76105     * Make all versions of this package resolve to it.
 76106     */
 76107  
 76108    collapseAllVersionsOfPackage(name, version) {
 76109      const patterns = this.dedupePatterns(this.patternsByPackage[name]);
 76110      return this.collapsePackageVersions(name, version, patterns);
 76111    }
 76112  
 76113    /**
 76114     * Make all given patterns resolve to version.
 76115     */
 76116    collapsePackageVersions(name, version, patterns) {
 76117      const human = `${name}@${version}`;
 76118  
 76119      // get manifest that matches the version we're collapsing too
 76120      let collapseToReference;
 76121      let collapseToManifest;
 76122      let collapseToPattern;
 76123      for (var _iterator10 = patterns, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {
 76124        var _ref11;
 76125  
 76126        if (_isArray10) {
 76127          if (_i10 >= _iterator10.length) break;
 76128          _ref11 = _iterator10[_i10++];
 76129        } else {
 76130          _i10 = _iterator10.next();
 76131          if (_i10.done) break;
 76132          _ref11 = _i10.value;
 76133        }
 76134  
 76135        const pattern = _ref11;
 76136  
 76137        const _manifest = this.patterns[pattern];
 76138        if (_manifest.version === version) {
 76139          collapseToReference = _manifest._reference;
 76140          collapseToManifest = _manifest;
 76141          collapseToPattern = pattern;
 76142          break;
 76143        }
 76144      }
 76145  
 76146      invariant(collapseToReference && collapseToManifest && collapseToPattern, `Couldn't find package manifest for ${human}`);
 76147  
 76148      for (var _iterator11 = patterns, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) {
 76149        var _ref12;
 76150  
 76151        if (_isArray11) {
 76152          if (_i11 >= _iterator11.length) break;
 76153          _ref12 = _iterator11[_i11++];
 76154        } else {
 76155          _i11 = _iterator11.next();
 76156          if (_i11.done) break;
 76157          _ref12 = _i11.value;
 76158        }
 76159  
 76160        const pattern = _ref12;
 76161  
 76162        // don't touch the pattern we're collapsing to
 76163        if (pattern === collapseToPattern) {
 76164          continue;
 76165        }
 76166  
 76167        // remove this pattern
 76168        const ref = this.getStrictResolvedPattern(pattern)._reference;
 76169        invariant(ref, 'expected package reference');
 76170        const refPatterns = ref.patterns.slice();
 76171        ref.prune();
 76172  
 76173        // add pattern to the manifest we're collapsing to
 76174        for (var _iterator12 = refPatterns, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) {
 76175          var _ref13;
 76176  
 76177          if (_isArray12) {
 76178            if (_i12 >= _iterator12.length) break;
 76179            _ref13 = _iterator12[_i12++];
 76180          } else {
 76181            _i12 = _iterator12.next();
 76182            if (_i12.done) break;
 76183            _ref13 = _i12.value;
 76184          }
 76185  
 76186          const pattern = _ref13;
 76187  
 76188          collapseToReference.addPattern(pattern, collapseToManifest);
 76189        }
 76190      }
 76191  
 76192      return collapseToPattern;
 76193    }
 76194  
 76195    /**
 76196     * TODO description
 76197     */
 76198  
 76199    addPattern(pattern, info) {
 76200      this.patterns[pattern] = info;
 76201  
 76202      const byName = this.patternsByPackage[info.name] = this.patternsByPackage[info.name] || [];
 76203      if (byName.indexOf(pattern) === -1) {
 76204        byName.push(pattern);
 76205      }
 76206    }
 76207  
 76208    /**
 76209     * TODO description
 76210     */
 76211  
 76212    removePattern(pattern) {
 76213      const pkg = this.patterns[pattern];
 76214      if (!pkg) {
 76215        return;
 76216      }
 76217  
 76218      const byName = this.patternsByPackage[pkg.name];
 76219      if (!byName) {
 76220        return;
 76221      }
 76222  
 76223      byName.splice(byName.indexOf(pattern), 1);
 76224      delete this.patterns[pattern];
 76225    }
 76226  
 76227    /**
 76228     * TODO description
 76229     */
 76230  
 76231    getResolvedPattern(pattern) {
 76232      return this.patterns[pattern];
 76233    }
 76234  
 76235    /**
 76236     * TODO description
 76237     */
 76238  
 76239    getStrictResolvedPattern(pattern) {
 76240      const manifest = this.getResolvedPattern(pattern);
 76241      invariant(manifest, 'expected manifest');
 76242      return manifest;
 76243    }
 76244  
 76245    /**
 76246     * TODO description
 76247     */
 76248  
 76249    getExactVersionMatch(name, version, manifest) {
 76250      const patterns = this.patternsByPackage[name];
 76251      if (!patterns) {
 76252        return null;
 76253      }
 76254  
 76255      for (var _iterator13 = patterns, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) {
 76256        var _ref14;
 76257  
 76258        if (_isArray13) {
 76259          if (_i13 >= _iterator13.length) break;
 76260          _ref14 = _iterator13[_i13++];
 76261        } else {
 76262          _i13 = _iterator13.next();
 76263          if (_i13.done) break;
 76264          _ref14 = _i13.value;
 76265        }
 76266  
 76267        const pattern = _ref14;
 76268  
 76269        const info = this.getStrictResolvedPattern(pattern);
 76270        if (info.version === version) {
 76271          return info;
 76272        }
 76273      }
 76274  
 76275      if (manifest && (0, (_index || _load_index()).getExoticResolver)(version)) {
 76276        return this.exoticRangeMatch(patterns.map(this.getStrictResolvedPattern.bind(this)), manifest);
 76277      }
 76278  
 76279      return null;
 76280    }
 76281  
 76282    /**
 76283     * Get the manifest of the highest known version that satisfies a package range
 76284     */
 76285  
 76286    getHighestRangeVersionMatch(name, range, manifest) {
 76287      const patterns = this.patternsByPackage[name];
 76288  
 76289      if (!patterns) {
 76290        return null;
 76291      }
 76292  
 76293      const versionNumbers = [];
 76294      const resolvedPatterns = patterns.map(pattern => {
 76295        const info = this.getStrictResolvedPattern(pattern);
 76296        versionNumbers.push(info.version);
 76297  
 76298        return info;
 76299      });
 76300  
 76301      const maxValidRange = semver.maxSatisfying(versionNumbers, range);
 76302  
 76303      if (!maxValidRange) {
 76304        return manifest && (0, (_index || _load_index()).getExoticResolver)(range) ? this.exoticRangeMatch(resolvedPatterns, manifest) : null;
 76305      }
 76306  
 76307      const indexOfmaxValidRange = versionNumbers.indexOf(maxValidRange);
 76308      const maxValidRangeManifest = resolvedPatterns[indexOfmaxValidRange];
 76309  
 76310      return maxValidRangeManifest;
 76311    }
 76312  
 76313    /**
 76314     * Get the manifest of the package that matches an exotic range
 76315     */
 76316  
 76317    exoticRangeMatch(resolvedPkgs, manifest) {
 76318      const remote = manifest._remote;
 76319      if (!(remote && remote.reference && remote.type === 'copy')) {
 76320        return null;
 76321      }
 76322  
 76323      const matchedPkg = resolvedPkgs.find(({ _remote: pkgRemote }) => pkgRemote && pkgRemote.reference === remote.reference && pkgRemote.type === 'copy');
 76324  
 76325      if (matchedPkg) {
 76326        manifest._remote = matchedPkg._remote;
 76327      }
 76328  
 76329      return matchedPkg;
 76330    }
 76331  
 76332    /**
 76333     * Determine if LockfileEntry is incorrect, remove it from lockfile cache and consider the pattern as new
 76334     */
 76335    isLockfileEntryOutdated(version, range, hasVersion) {
 76336      return !!(semver.validRange(range) && semver.valid(version) && !(0, (_index || _load_index()).getExoticResolver)(range) && hasVersion && !semver.satisfies(version, range));
 76337    }
 76338  
 76339    /**
 76340     * TODO description
 76341     */
 76342  
 76343    find(initialReq) {
 76344      var _this = this;
 76345  
 76346      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 76347        const req = _this.resolveToResolution(initialReq);
 76348  
 76349        // we've already resolved it with a resolution
 76350        if (!req) {
 76351          return;
 76352        }
 76353  
 76354        const request = new (_packageRequest || _load_packageRequest()).default(req, _this);
 76355        const fetchKey = `${req.registry}:${req.pattern}:${String(req.optional)}`;
 76356        const initialFetch = !_this.fetchingPatterns.has(fetchKey);
 76357        let fresh = false;
 76358  
 76359        if (_this.activity) {
 76360          _this.activity.tick(req.pattern);
 76361        }
 76362  
 76363        if (initialFetch) {
 76364          _this.fetchingPatterns.add(fetchKey);
 76365  
 76366          const lockfileEntry = _this.lockfile.getLocked(req.pattern);
 76367  
 76368          if (lockfileEntry) {
 76369            var _normalizePattern = (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(req.pattern);
 76370  
 76371            const range = _normalizePattern.range,
 76372                  hasVersion = _normalizePattern.hasVersion;
 76373  
 76374  
 76375            if (_this.isLockfileEntryOutdated(lockfileEntry.version, range, hasVersion)) {
 76376              _this.reporter.warn(_this.reporter.lang('incorrectLockfileEntry', req.pattern));
 76377              _this.removePattern(req.pattern);
 76378              _this.lockfile.removePattern(req.pattern);
 76379              fresh = true;
 76380            }
 76381          } else {
 76382            fresh = true;
 76383          }
 76384  
 76385          request.init();
 76386        }
 76387  
 76388        yield request.find({ fresh, frozen: _this.frozen });
 76389      })();
 76390    }
 76391  
 76392    /**
 76393     * TODO description
 76394     */
 76395  
 76396    init(deps, { isFlat, isFrozen, workspaceLayout } = {
 76397      isFlat: false,
 76398      isFrozen: false,
 76399      workspaceLayout: undefined
 76400    }) {
 76401      var _this2 = this;
 76402  
 76403      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 76404        _this2.flat = Boolean(isFlat);
 76405        _this2.frozen = Boolean(isFrozen);
 76406        _this2.workspaceLayout = workspaceLayout;
 76407        const activity = _this2.activity = _this2.reporter.activity();
 76408  
 76409        for (var _iterator14 = deps, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) {
 76410          var _ref15;
 76411  
 76412          if (_isArray14) {
 76413            if (_i14 >= _iterator14.length) break;
 76414            _ref15 = _iterator14[_i14++];
 76415          } else {
 76416            _i14 = _iterator14.next();
 76417            if (_i14.done) break;
 76418            _ref15 = _i14.value;
 76419          }
 76420  
 76421          const req = _ref15;
 76422  
 76423          yield _this2.find(req);
 76424        }
 76425  
 76426        // all required package versions have been discovered, so now packages that
 76427        // resolved to existing versions can be resolved to their best available version
 76428        _this2.resolvePackagesWithExistingVersions();
 76429  
 76430        for (var _iterator15 = _this2.resolutionMap.delayQueue, _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) {
 76431          var _ref16;
 76432  
 76433          if (_isArray15) {
 76434            if (_i15 >= _iterator15.length) break;
 76435            _ref16 = _iterator15[_i15++];
 76436          } else {
 76437            _i15 = _iterator15.next();
 76438            if (_i15.done) break;
 76439            _ref16 = _i15.value;
 76440          }
 76441  
 76442          const req = _ref16;
 76443  
 76444          _this2.resolveToResolution(req);
 76445        }
 76446  
 76447        if (isFlat) {
 76448          for (var _iterator16 = deps, _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : _iterator16[Symbol.iterator]();;) {
 76449            var _ref17;
 76450  
 76451            if (_isArray16) {
 76452              if (_i16 >= _iterator16.length) break;
 76453              _ref17 = _iterator16[_i16++];
 76454            } else {
 76455              _i16 = _iterator16.next();
 76456              if (_i16.done) break;
 76457              _ref17 = _i16.value;
 76458            }
 76459  
 76460            const dep = _ref17;
 76461  
 76462            const name = (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(dep.pattern).name;
 76463            _this2.optimizeResolutions(name);
 76464          }
 76465        }
 76466  
 76467        activity.end();
 76468        _this2.activity = null;
 76469      })();
 76470    }
 76471  
 76472    // for a given package, see if a single manifest can satisfy all ranges
 76473    optimizeResolutions(name) {
 76474      const patterns = this.dedupePatterns(this.patternsByPackage[name] || []);
 76475  
 76476      // don't optimize things that already have a lockfile entry:
 76477      // https://github.com/yarnpkg/yarn/issues/79
 76478      const collapsablePatterns = patterns.filter(pattern => {
 76479        const remote = this.patterns[pattern]._remote;
 76480        return !this.lockfile.getLocked(pattern) && (!remote || remote.type !== 'workspace');
 76481      });
 76482      if (collapsablePatterns.length < 2) {
 76483        return;
 76484      }
 76485  
 76486      // reverse sort, so we'll find the maximum satisfying version first
 76487      const availableVersions = this.getAllInfoForPatterns(collapsablePatterns).map(manifest => manifest.version);
 76488      availableVersions.sort(semver.rcompare);
 76489  
 76490      const ranges = collapsablePatterns.map(pattern => (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(pattern).range);
 76491  
 76492      // find the most recent version that satisfies all patterns (if one exists), and
 76493      // collapse to that version.
 76494      for (var _iterator17 = availableVersions, _isArray17 = Array.isArray(_iterator17), _i17 = 0, _iterator17 = _isArray17 ? _iterator17 : _iterator17[Symbol.iterator]();;) {
 76495        var _ref18;
 76496  
 76497        if (_isArray17) {
 76498          if (_i17 >= _iterator17.length) break;
 76499          _ref18 = _iterator17[_i17++];
 76500        } else {
 76501          _i17 = _iterator17.next();
 76502          if (_i17.done) break;
 76503          _ref18 = _i17.value;
 76504        }
 76505  
 76506        const version = _ref18;
 76507  
 76508        if (ranges.every(range => semver.satisfies(version, range))) {
 76509          this.collapsePackageVersions(name, version, collapsablePatterns);
 76510          return;
 76511        }
 76512      }
 76513    }
 76514  
 76515    /**
 76516      * Called by the package requester for packages that this resolver already had
 76517      * a matching version for. Delay the resolve, because better matches can still be
 76518      * discovered.
 76519      */
 76520  
 76521    reportPackageWithExistingVersion(req, info) {
 76522      this.delayedResolveQueue.push({ req, info });
 76523    }
 76524  
 76525    /**
 76526      * Executes the resolve to existing versions for packages after the find process,
 76527      * when all versions that are going to be used have been discovered.
 76528      */
 76529  
 76530    resolvePackagesWithExistingVersions() {
 76531      for (var _iterator18 = this.delayedResolveQueue, _isArray18 = Array.isArray(_iterator18), _i18 = 0, _iterator18 = _isArray18 ? _iterator18 : _iterator18[Symbol.iterator]();;) {
 76532        var _ref20;
 76533  
 76534        if (_isArray18) {
 76535          if (_i18 >= _iterator18.length) break;
 76536          _ref20 = _iterator18[_i18++];
 76537        } else {
 76538          _i18 = _iterator18.next();
 76539          if (_i18.done) break;
 76540          _ref20 = _i18.value;
 76541        }
 76542  
 76543        const _ref19 = _ref20;
 76544        const req = _ref19.req,
 76545              info = _ref19.info;
 76546  
 76547        req.resolveToExistingVersion(info);
 76548      }
 76549    }
 76550  
 76551    resolveToResolution(req) {
 76552      const parentNames = req.parentNames,
 76553            pattern = req.pattern;
 76554  
 76555  
 76556      if (!parentNames || this.flat) {
 76557        return req;
 76558      }
 76559  
 76560      const resolution = this.resolutionMap.find(pattern, parentNames);
 76561  
 76562      if (resolution) {
 76563        const resolutionManifest = this.getResolvedPattern(resolution);
 76564  
 76565        if (resolutionManifest) {
 76566          invariant(resolutionManifest._reference, 'resolutions should have a resolved reference');
 76567          resolutionManifest._reference.patterns.push(pattern);
 76568          this.addPattern(pattern, resolutionManifest);
 76569          const lockManifest = this.lockfile.getLocked(pattern);
 76570          if ((0, (_resolutionMap2 || _load_resolutionMap2()).shouldUpdateLockfile)(lockManifest, resolutionManifest._reference)) {
 76571            this.lockfile.removePattern(pattern);
 76572          }
 76573        } else {
 76574          this.resolutionMap.addToDelayQueue(req);
 76575        }
 76576        return null;
 76577      }
 76578  
 76579      return req;
 76580    }
 76581  }
 76582  exports.default = PackageResolver;
 76583  
 76584  /***/ }),
 76585  /* 361 */
 76586  /***/ (function(module, exports, __webpack_require__) {
 76587  
 76588  "use strict";
 76589  
 76590  
 76591  Object.defineProperty(exports, "__esModule", {
 76592    value: true
 76593  });
 76594  
 76595  var _hostedGitResolver;
 76596  
 76597  function _load_hostedGitResolver() {
 76598    return _hostedGitResolver = _interopRequireDefault(__webpack_require__(109));
 76599  }
 76600  
 76601  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 76602  
 76603  class GitHubResolver extends (_hostedGitResolver || _load_hostedGitResolver()).default {
 76604  
 76605    static isVersion(pattern) {
 76606      // github proto
 76607      if (pattern.startsWith('github:')) {
 76608        return true;
 76609      }
 76610  
 76611      // github shorthand
 76612      if (/^[^:@%/\s.-][^:@%/\s]*[/][^:@\s/%]+(?:#.*)?$/.test(pattern)) {
 76613        return true;
 76614      }
 76615  
 76616      return false;
 76617    }
 76618  
 76619    static getTarballUrl(parts, hash) {
 76620      return `https://codeload.${this.hostname}/${parts.user}/${parts.repo}/tar.gz/${hash}`;
 76621    }
 76622  
 76623    static getGitSSHUrl(parts) {
 76624      return `git+ssh://git@${this.hostname}/${parts.user}/${parts.repo}.git` + `${parts.hash ? '#' + decodeURIComponent(parts.hash) : ''}`;
 76625    }
 76626  
 76627    static getGitHTTPBaseUrl(parts) {
 76628      return `https://${this.hostname}/${parts.user}/${parts.repo}`;
 76629    }
 76630  
 76631    static getGitHTTPUrl(parts) {
 76632      return `${GitHubResolver.getGitHTTPBaseUrl(parts)}.git`;
 76633    }
 76634  
 76635    static getHTTPFileUrl(parts, filename, commit) {
 76636      return `https://raw.githubusercontent.com/${parts.user}/${parts.repo}/${commit}/${filename}`;
 76637    }
 76638  }
 76639  exports.default = GitHubResolver;
 76640  GitHubResolver.protocol = 'github';
 76641  GitHubResolver.hostname = 'github.com';
 76642  
 76643  /***/ }),
 76644  /* 362 */
 76645  /***/ (function(module, exports, __webpack_require__) {
 76646  
 76647  "use strict";
 76648  
 76649  
 76650  Object.defineProperty(exports, "__esModule", {
 76651    value: true
 76652  });
 76653  exports.LINK_PROTOCOL_PREFIX = undefined;
 76654  
 76655  var _asyncToGenerator2;
 76656  
 76657  function _load_asyncToGenerator() {
 76658    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 76659  }
 76660  
 76661  var _exoticResolver;
 76662  
 76663  function _load_exoticResolver() {
 76664    return _exoticResolver = _interopRequireDefault(__webpack_require__(89));
 76665  }
 76666  
 76667  var _misc;
 76668  
 76669  function _load_misc() {
 76670    return _misc = _interopRequireWildcard(__webpack_require__(18));
 76671  }
 76672  
 76673  var _fs;
 76674  
 76675  function _load_fs() {
 76676    return _fs = _interopRequireWildcard(__webpack_require__(5));
 76677  }
 76678  
 76679  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 76680  
 76681  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 76682  
 76683  const path = __webpack_require__(0);
 76684  
 76685  const LINK_PROTOCOL_PREFIX = exports.LINK_PROTOCOL_PREFIX = 'link:';
 76686  
 76687  class LinkResolver extends (_exoticResolver || _load_exoticResolver()).default {
 76688    constructor(request, fragment) {
 76689      super(request, fragment);
 76690      this.loc = (_misc || _load_misc()).removePrefix(fragment, LINK_PROTOCOL_PREFIX);
 76691    }
 76692  
 76693    resolve() {
 76694      var _this = this;
 76695  
 76696      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 76697        let loc = _this.loc;
 76698        if (!path.isAbsolute(loc)) {
 76699          loc = path.resolve(_this.config.lockfileFolder, loc);
 76700        }
 76701  
 76702        const name = path.basename(loc);
 76703        const registry = 'npm';
 76704  
 76705        const manifest = !(yield (_fs || _load_fs()).exists(`${loc}/package.json`)) || loc === _this.config.lockfileFolder ? { _uid: '', name, version: '0.0.0', _registry: registry } : yield _this.config.readManifest(loc, _this.registry);
 76706  
 76707        manifest._remote = {
 76708          type: 'link',
 76709          registry,
 76710          hash: null,
 76711          reference: loc
 76712        };
 76713  
 76714        manifest._uid = manifest.version;
 76715  
 76716        return manifest;
 76717      })();
 76718    }
 76719  }
 76720  exports.default = LinkResolver;
 76721  LinkResolver.protocol = 'link';
 76722  
 76723  /***/ }),
 76724  /* 363 */
 76725  /***/ (function(module, exports, __webpack_require__) {
 76726  
 76727  "use strict";
 76728  
 76729  
 76730  Object.defineProperty(exports, "__esModule", {
 76731    value: true
 76732  });
 76733  
 76734  exports.default = function (from, to) {
 76735    const validFrom = (_semver || _load_semver()).default.valid(from);
 76736    const validTo = (_semver || _load_semver()).default.valid(to);
 76737    let versionBump = 'unknown';
 76738    if (validFrom && validTo) {
 76739      versionBump = (0, (_semver2 || _load_semver2()).diffWithUnstable)(validFrom, validTo) || 'unchanged';
 76740    }
 76741    return (_constants || _load_constants()).VERSION_COLOR_SCHEME[versionBump];
 76742  };
 76743  
 76744  var _semver;
 76745  
 76746  function _load_semver() {
 76747    return _semver = _interopRequireDefault(__webpack_require__(22));
 76748  }
 76749  
 76750  var _semver2;
 76751  
 76752  function _load_semver2() {
 76753    return _semver2 = __webpack_require__(170);
 76754  }
 76755  
 76756  var _constants;
 76757  
 76758  function _load_constants() {
 76759    return _constants = __webpack_require__(8);
 76760  }
 76761  
 76762  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 76763  
 76764  /***/ }),
 76765  /* 364 */
 76766  /***/ (function(module, exports, __webpack_require__) {
 76767  
 76768  "use strict";
 76769  
 76770  
 76771  Object.defineProperty(exports, "__esModule", {
 76772    value: true
 76773  });
 76774  
 76775  exports.default = function (from, to, reporter) {
 76776    const parts = to.split('.');
 76777    const fromParts = from.split('.');
 76778  
 76779    const splitIndex = parts.findIndex((part, i) => part !== fromParts[i]);
 76780    if (splitIndex === -1) {
 76781      return from;
 76782    }
 76783  
 76784    const colorized = reporter.format.green(parts.slice(splitIndex).join('.'));
 76785    return parts.slice(0, splitIndex).concat(colorized).join('.');
 76786  };
 76787  
 76788  /***/ }),
 76789  /* 365 */
 76790  /***/ (function(module, exports, __webpack_require__) {
 76791  
 76792  "use strict";
 76793  
 76794  
 76795  // $FlowFixMe We want this require to be dynamic
 76796  exports.dynamicRequire =  true ? require : require; // eslint-disable-line
 76797  
 76798  /***/ }),
 76799  /* 366 */
 76800  /***/ (function(module, exports, __webpack_require__) {
 76801  
 76802  "use strict";
 76803  
 76804  
 76805  Object.defineProperty(exports, "__esModule", {
 76806    value: true
 76807  });
 76808  exports.sortFilter = sortFilter;
 76809  exports.matchesFilter = matchesFilter;
 76810  exports.ignoreLinesToRegex = ignoreLinesToRegex;
 76811  exports.filterOverridenGitignores = filterOverridenGitignores;
 76812  
 76813  var _misc;
 76814  
 76815  function _load_misc() {
 76816    return _misc = __webpack_require__(18);
 76817  }
 76818  
 76819  const mm = __webpack_require__(115);
 76820  const path = __webpack_require__(0);
 76821  
 76822  const WHITESPACE_RE = /^\s+$/;
 76823  
 76824  function sortFilter(files, filters, keepFiles = new Set(), possibleKeepFiles = new Set(), ignoreFiles = new Set()) {
 76825    for (var _iterator = files, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 76826      var _ref;
 76827  
 76828      if (_isArray) {
 76829        if (_i >= _iterator.length) break;
 76830        _ref = _iterator[_i++];
 76831      } else {
 76832        _i = _iterator.next();
 76833        if (_i.done) break;
 76834        _ref = _i.value;
 76835      }
 76836  
 76837      const file = _ref;
 76838  
 76839      let keep = false;
 76840  
 76841      // always keep a file if a ! pattern matches it
 76842      for (var _iterator5 = filters, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
 76843        var _ref5;
 76844  
 76845        if (_isArray5) {
 76846          if (_i5 >= _iterator5.length) break;
 76847          _ref5 = _iterator5[_i5++];
 76848        } else {
 76849          _i5 = _iterator5.next();
 76850          if (_i5.done) break;
 76851          _ref5 = _i5.value;
 76852        }
 76853  
 76854        const filter = _ref5;
 76855  
 76856        if (filter.isNegation && matchesFilter(filter, file.basename, file.relative)) {
 76857          keep = true;
 76858          break;
 76859        }
 76860      }
 76861  
 76862      //
 76863      if (keep) {
 76864        keepFiles.add(file.relative);
 76865        continue;
 76866      }
 76867  
 76868      // otherwise don't keep it if a pattern matches it
 76869      keep = true;
 76870      for (var _iterator6 = filters, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
 76871        var _ref6;
 76872  
 76873        if (_isArray6) {
 76874          if (_i6 >= _iterator6.length) break;
 76875          _ref6 = _iterator6[_i6++];
 76876        } else {
 76877          _i6 = _iterator6.next();
 76878          if (_i6.done) break;
 76879          _ref6 = _i6.value;
 76880        }
 76881  
 76882        const filter = _ref6;
 76883  
 76884        if (!filter.isNegation && matchesFilter(filter, file.basename, file.relative)) {
 76885          keep = false;
 76886          break;
 76887        }
 76888      }
 76889  
 76890      if (keep) {
 76891        possibleKeepFiles.add(file.relative);
 76892      } else {
 76893        ignoreFiles.add(file.relative);
 76894      }
 76895    }
 76896  
 76897    // exclude file
 76898    for (var _iterator2 = possibleKeepFiles, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 76899      var _ref2;
 76900  
 76901      if (_isArray2) {
 76902        if (_i2 >= _iterator2.length) break;
 76903        _ref2 = _iterator2[_i2++];
 76904      } else {
 76905        _i2 = _iterator2.next();
 76906        if (_i2.done) break;
 76907        _ref2 = _i2.value;
 76908      }
 76909  
 76910      const file = _ref2;
 76911  
 76912      const parts = path.dirname(file).split(path.sep);
 76913  
 76914      while (parts.length) {
 76915        const folder = parts.join(path.sep);
 76916        if (ignoreFiles.has(folder)) {
 76917          ignoreFiles.add(file);
 76918          break;
 76919        }
 76920        parts.pop();
 76921      }
 76922    }
 76923  
 76924    //
 76925    for (var _iterator3 = possibleKeepFiles, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 76926      var _ref3;
 76927  
 76928      if (_isArray3) {
 76929        if (_i3 >= _iterator3.length) break;
 76930        _ref3 = _iterator3[_i3++];
 76931      } else {
 76932        _i3 = _iterator3.next();
 76933        if (_i3.done) break;
 76934        _ref3 = _i3.value;
 76935      }
 76936  
 76937      const file = _ref3;
 76938  
 76939      if (!ignoreFiles.has(file)) {
 76940        keepFiles.add(file);
 76941      }
 76942    }
 76943  
 76944    //
 76945    for (var _iterator4 = keepFiles, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 76946      var _ref4;
 76947  
 76948      if (_isArray4) {
 76949        if (_i4 >= _iterator4.length) break;
 76950        _ref4 = _iterator4[_i4++];
 76951      } else {
 76952        _i4 = _iterator4.next();
 76953        if (_i4.done) break;
 76954        _ref4 = _i4.value;
 76955      }
 76956  
 76957      const file = _ref4;
 76958  
 76959      const parts = path.dirname(file).split(path.sep);
 76960  
 76961      while (parts.length) {
 76962        // deregister this folder from being ignored, any files inside
 76963        // will still be marked as ignored
 76964        ignoreFiles.delete(parts.join(path.sep));
 76965        parts.pop();
 76966      }
 76967    }
 76968  
 76969    return { ignoreFiles, keepFiles };
 76970  }
 76971  
 76972  function matchesFilter(filter, basename, loc) {
 76973    let filterByBasename = true;
 76974    if (filter.base && filter.base !== '.') {
 76975      loc = path.relative(filter.base, loc);
 76976      filterByBasename = false;
 76977    }
 76978    // the micromatch regex expects unix path separators
 76979    loc = loc.replace(/\\/g, '/');
 76980  
 76981    return filter.regex.test(loc) || filter.regex.test(`/${loc}`) || filterByBasename && filter.regex.test(basename) || mm.isMatch(loc, filter.pattern);
 76982  }
 76983  
 76984  function ignoreLinesToRegex(lines, base = '.') {
 76985    return lines
 76986    // create regex
 76987    .map(line => {
 76988      // remove empty lines, comments, etc
 76989      if (line === '' || line === '!' || line[0] === '#' || WHITESPACE_RE.test(line)) {
 76990        return null;
 76991      }
 76992  
 76993      let pattern = line;
 76994      let isNegation = false;
 76995  
 76996      // hide the fact that it's a negation from minimatch since we'll handle this specifically
 76997      // ourselves
 76998      if (pattern[0] === '!') {
 76999        isNegation = true;
 77000        pattern = pattern.slice(1);
 77001      }
 77002  
 77003      // remove trailing slash
 77004      pattern = (0, (_misc || _load_misc()).removeSuffix)(pattern, '/');
 77005  
 77006      const regex = mm.makeRe(pattern.trim(), { dot: true, nocase: true });
 77007  
 77008      if (regex) {
 77009        return {
 77010          base,
 77011          isNegation,
 77012          pattern,
 77013          regex
 77014        };
 77015      } else {
 77016        return null;
 77017      }
 77018    }).filter(Boolean);
 77019  }
 77020  
 77021  function filterOverridenGitignores(files) {
 77022    const IGNORE_FILENAMES = ['.yarnignore', '.npmignore', '.gitignore'];
 77023    const GITIGNORE_NAME = IGNORE_FILENAMES[2];
 77024    return files.filter(file => IGNORE_FILENAMES.indexOf(file.basename) > -1).reduce((acc, file) => {
 77025      if (file.basename !== GITIGNORE_NAME) {
 77026        return [...acc, file];
 77027      } else {
 77028        //don't include .gitignore if .npmignore or .yarnignore are present
 77029        const dir = path.dirname(file.absolute);
 77030        const higherPriorityIgnoreFilePaths = [path.join(dir, IGNORE_FILENAMES[0]), path.join(dir, IGNORE_FILENAMES[1])];
 77031        const hasHigherPriorityFiles = files.find(file => higherPriorityIgnoreFilePaths.indexOf(path.normalize(file.absolute)) > -1);
 77032        if (!hasHigherPriorityFiles) {
 77033          return [...acc, file];
 77034        }
 77035      }
 77036      return acc;
 77037    }, []);
 77038  }
 77039  
 77040  /***/ }),
 77041  /* 367 */
 77042  /***/ (function(module, exports, __webpack_require__) {
 77043  
 77044  "use strict";
 77045  
 77046  
 77047  Object.defineProperty(exports, "__esModule", {
 77048    value: true
 77049  });
 77050  exports.spawn = undefined;
 77051  
 77052  var _extends2;
 77053  
 77054  function _load_extends() {
 77055    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 77056  }
 77057  
 77058  var _path;
 77059  
 77060  function _load_path() {
 77061    return _path = _interopRequireDefault(__webpack_require__(0));
 77062  }
 77063  
 77064  var _child;
 77065  
 77066  function _load_child() {
 77067    return _child = _interopRequireWildcard(__webpack_require__(50));
 77068  }
 77069  
 77070  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 77071  
 77072  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 77073  
 77074  const BATCH_MODE_ARGS = new Map([['ssh', '-oBatchMode=yes'], ['plink', '-batch']]);
 77075  
 77076  // Suppress any password prompts since we run these in the background
 77077  const env = (0, (_extends2 || _load_extends()).default)({
 77078    GIT_ASKPASS: '',
 77079    GIT_TERMINAL_PROMPT: 0
 77080  }, process.env);
 77081  
 77082  const sshCommand = env.GIT_SSH || 'ssh';
 77083  const sshExecutable = (_path || _load_path()).default.basename(sshCommand.toLowerCase(), '.exe');
 77084  const sshBatchArgs = BATCH_MODE_ARGS.get(sshExecutable);
 77085  
 77086  if (!env.GIT_SSH_COMMAND && sshBatchArgs) {
 77087    // We have to manually specify `GIT_SSH_VARIANT`,
 77088    // because it's not automatically set when using `GIT_SSH_COMMAND` instead of `GIT_SSH`
 77089    // See: https://github.com/yarnpkg/yarn/issues/4729
 77090    env.GIT_SSH_VARIANT = sshExecutable;
 77091    env.GIT_SSH_COMMAND = `"${sshCommand}" ${sshBatchArgs}`;
 77092  }
 77093  
 77094  const spawn = exports.spawn = (args, opts = {}) => {
 77095    return (_child || _load_child()).spawn('git', args, (0, (_extends2 || _load_extends()).default)({}, opts, { env }));
 77096  };
 77097  
 77098  /***/ }),
 77099  /* 368 */
 77100  /***/ (function(module, exports, __webpack_require__) {
 77101  
 77102  "use strict";
 77103  
 77104  
 77105  Object.defineProperty(exports, "__esModule", {
 77106    value: true
 77107  });
 77108  exports.callThroughHook = callThroughHook;
 77109  
 77110  
 77111  const YARN_HOOKS_KEY = 'experimentalYarnHooks';
 77112  
 77113  function callThroughHook(type, fn, context) {
 77114    if (typeof global === 'undefined') {
 77115      return fn();
 77116    }
 77117  
 77118    if (typeof global[YARN_HOOKS_KEY] !== 'object' || !global[YARN_HOOKS_KEY]) {
 77119      return fn();
 77120    }
 77121  
 77122    const hook = global[YARN_HOOKS_KEY][type];
 77123  
 77124    if (!hook) {
 77125      return fn();
 77126    }
 77127  
 77128    return hook(fn, context);
 77129  }
 77130  
 77131  /***/ }),
 77132  /* 369 */
 77133  /***/ (function(module, exports, __webpack_require__) {
 77134  
 77135  "use strict";
 77136  
 77137  
 77138  Object.defineProperty(exports, "__esModule", {
 77139    value: true
 77140  });
 77141  const lockPromises = new Map();
 77142  
 77143  /**
 77144   * Acquires a mutex lock over the given key. If the lock can't be acquired, it waits until it's available.
 77145   * @param key Key to get the lock for.
 77146   * @return {Promise.<Function>} A Promise that resolves when the lock is acquired, with the function that
 77147   * must be called to release the lock.
 77148   */
 77149  
 77150  exports.default = key => {
 77151    let unlockNext;
 77152    const willLock = new Promise(resolve => unlockNext = resolve);
 77153    const lockPromise = lockPromises.get(key) || Promise.resolve();
 77154    const willUnlock = lockPromise.then(() => unlockNext);
 77155    lockPromises.set(key, lockPromise.then(() => willLock));
 77156    return willUnlock;
 77157  };
 77158  
 77159  /***/ }),
 77160  /* 370 */
 77161  /***/ (function(module, exports, __webpack_require__) {
 77162  
 77163  "use strict";
 77164  
 77165  
 77166  Object.defineProperty(exports, "__esModule", {
 77167    value: true
 77168  });
 77169  exports.default = parsePackagePath;
 77170  exports.isValidPackagePath = isValidPackagePath;
 77171  
 77172  
 77173  /**
 77174   * Parse input strings like `package-1/package-2` to an array of packages
 77175   */
 77176  function parsePackagePath(input) {
 77177    return input.match(/(@[^\/]+\/)?([^/]+)/g) || [];
 77178  }
 77179  
 77180  const WRONG_PATTERNS = /\/$|\/{2,}|\*+$/;
 77181  
 77182  function isValidPackagePath(input) {
 77183    return !WRONG_PATTERNS.test(input);
 77184  }
 77185  
 77186  /***/ }),
 77187  /* 371 */
 77188  /***/ (function(module, exports, __webpack_require__) {
 77189  
 77190  "use strict";
 77191  
 77192  
 77193  Object.defineProperty(exports, "__esModule", {
 77194    value: true
 77195  });
 77196  exports.getPosixPath = getPosixPath;
 77197  exports.resolveWithHome = resolveWithHome;
 77198  
 77199  var _path;
 77200  
 77201  function _load_path() {
 77202    return _path = __webpack_require__(0);
 77203  }
 77204  
 77205  const userHome = __webpack_require__(67).default;
 77206  
 77207  function getPosixPath(path) {
 77208    return path.replace(/\\/g, '/');
 77209  }
 77210  
 77211  function resolveWithHome(path) {
 77212    const homePattern = process.platform === 'win32' ? /^~(\/|\\)/ : /^~\//;
 77213    if (homePattern.test(path)) {
 77214      return (0, (_path || _load_path()).resolve)(userHome, path.substr(2));
 77215    }
 77216  
 77217    return (0, (_path || _load_path()).resolve)(path);
 77218  }
 77219  
 77220  /***/ }),
 77221  /* 372 */
 77222  /***/ (function(module, exports, __webpack_require__) {
 77223  
 77224  "use strict";
 77225  
 77226  
 77227  Object.defineProperty(exports, "__esModule", {
 77228    value: true
 77229  });
 77230  
 77231  var _fs;
 77232  
 77233  function _load_fs() {
 77234    return _fs = _interopRequireDefault(__webpack_require__(4));
 77235  }
 77236  
 77237  var _http;
 77238  
 77239  function _load_http() {
 77240    return _http = _interopRequireDefault(__webpack_require__(87));
 77241  }
 77242  
 77243  var _url;
 77244  
 77245  function _load_url() {
 77246    return _url = _interopRequireDefault(__webpack_require__(24));
 77247  }
 77248  
 77249  var _dnscache;
 77250  
 77251  function _load_dnscache() {
 77252    return _dnscache = _interopRequireDefault(__webpack_require__(605));
 77253  }
 77254  
 77255  var _invariant;
 77256  
 77257  function _load_invariant() {
 77258    return _invariant = _interopRequireDefault(__webpack_require__(9));
 77259  }
 77260  
 77261  var _requestCaptureHar;
 77262  
 77263  function _load_requestCaptureHar() {
 77264    return _requestCaptureHar = _interopRequireDefault(__webpack_require__(799));
 77265  }
 77266  
 77267  var _errors;
 77268  
 77269  function _load_errors() {
 77270    return _errors = __webpack_require__(6);
 77271  }
 77272  
 77273  var _blockingQueue;
 77274  
 77275  function _load_blockingQueue() {
 77276    return _blockingQueue = _interopRequireDefault(__webpack_require__(110));
 77277  }
 77278  
 77279  var _constants;
 77280  
 77281  function _load_constants() {
 77282    return _constants = _interopRequireWildcard(__webpack_require__(8));
 77283  }
 77284  
 77285  var _network;
 77286  
 77287  function _load_network() {
 77288    return _network = _interopRequireWildcard(__webpack_require__(337));
 77289  }
 77290  
 77291  var _map;
 77292  
 77293  function _load_map() {
 77294    return _map = _interopRequireDefault(__webpack_require__(29));
 77295  }
 77296  
 77297  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 77298  
 77299  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 77300  
 77301  // Initialize DNS cache so we don't look up the same
 77302  // domains like registry.yarnpkg.com over and over again
 77303  // for each request.
 77304  (0, (_dnscache || _load_dnscache()).default)({
 77305    enable: true,
 77306    ttl: 300,
 77307    cachesize: 10
 77308  });
 77309  
 77310  const successHosts = (0, (_map || _load_map()).default)();
 77311  const controlOffline = (_network || _load_network()).isOffline();
 77312  
 77313  class RequestManager {
 77314    constructor(reporter) {
 77315      this.offlineNoRequests = false;
 77316      this._requestCaptureHar = null;
 77317      this._requestModule = null;
 77318      this.offlineQueue = [];
 77319      this.captureHar = false;
 77320      this.httpsProxy = '';
 77321      this.ca = null;
 77322      this.httpProxy = '';
 77323      this.strictSSL = true;
 77324      this.userAgent = '';
 77325      this.reporter = reporter;
 77326      this.running = 0;
 77327      this.queue = [];
 77328      this.cache = {};
 77329      this.max = (_constants || _load_constants()).NETWORK_CONCURRENCY;
 77330      this.maxRetryAttempts = 5;
 77331    }
 77332  
 77333    setOptions(opts) {
 77334      if (opts.userAgent != null) {
 77335        this.userAgent = opts.userAgent;
 77336      }
 77337  
 77338      if (opts.offline != null) {
 77339        this.offlineNoRequests = opts.offline;
 77340      }
 77341  
 77342      if (opts.captureHar != null) {
 77343        this.captureHar = opts.captureHar;
 77344      }
 77345  
 77346      if (opts.httpProxy != null) {
 77347        this.httpProxy = opts.httpProxy || '';
 77348      }
 77349  
 77350      if (opts.httpsProxy === '') {
 77351        this.httpsProxy = opts.httpProxy || '';
 77352      } else if (opts.httpsProxy === false) {
 77353        this.httpsProxy = false;
 77354      } else {
 77355        this.httpsProxy = opts.httpsProxy || '';
 77356      }
 77357  
 77358      if (opts.strictSSL !== null && typeof opts.strictSSL !== 'undefined') {
 77359        this.strictSSL = opts.strictSSL;
 77360      }
 77361  
 77362      if (opts.ca != null && opts.ca.length > 0) {
 77363        this.ca = opts.ca;
 77364      }
 77365  
 77366      if (opts.networkConcurrency != null) {
 77367        this.max = opts.networkConcurrency;
 77368      }
 77369  
 77370      if (opts.networkTimeout != null) {
 77371        this.timeout = opts.networkTimeout;
 77372      }
 77373  
 77374      if (opts.maxRetryAttempts != null) {
 77375        this.maxRetryAttempts = opts.maxRetryAttempts;
 77376      }
 77377  
 77378      if (opts.cafile != null && opts.cafile != '') {
 77379        // The CA bundle file can contain one or more certificates with comments/text between each PEM block.
 77380        // tls.connect wants an array of certificates without any comments/text, so we need to split the string
 77381        // and strip out any text in between the certificates
 77382        try {
 77383          const bundle = (_fs || _load_fs()).default.readFileSync(opts.cafile).toString();
 77384          const hasPemPrefix = block => block.startsWith('-----BEGIN ');
 77385          // opts.cafile overrides opts.ca, this matches with npm behavior
 77386          this.ca = bundle.split(/(-----BEGIN .*\r?\n[^-]+\r?\n--.*)/).filter(hasPemPrefix);
 77387        } catch (err) {
 77388          this.reporter.error(`Could not open cafile: ${err.message}`);
 77389        }
 77390      }
 77391  
 77392      if (opts.cert != null) {
 77393        this.cert = opts.cert;
 77394      }
 77395  
 77396      if (opts.key != null) {
 77397        this.key = opts.key;
 77398      }
 77399    }
 77400  
 77401    /**
 77402     * Lazy load `request` since it is exceptionally expensive to load and is
 77403     * often not needed at all.
 77404     */
 77405  
 77406    _getRequestModule() {
 77407      if (!this._requestModule) {
 77408        const request = __webpack_require__(800);
 77409        if (this.captureHar) {
 77410          this._requestCaptureHar = new (_requestCaptureHar || _load_requestCaptureHar()).default(request);
 77411          this._requestModule = this._requestCaptureHar.request.bind(this._requestCaptureHar);
 77412        } else {
 77413          this._requestModule = request;
 77414        }
 77415      }
 77416      return this._requestModule;
 77417    }
 77418  
 77419    /**
 77420     * Queue up a request.
 77421     */
 77422  
 77423    request(params) {
 77424      if (this.offlineNoRequests) {
 77425        return Promise.reject(new (_errors || _load_errors()).MessageError(this.reporter.lang('cantRequestOffline', params.url)));
 77426      }
 77427  
 77428      const cached = this.cache[params.url];
 77429      if (cached) {
 77430        return cached;
 77431      }
 77432  
 77433      params.method = params.method || 'GET';
 77434      params.forever = true;
 77435      params.retryAttempts = 0;
 77436      params.strictSSL = this.strictSSL;
 77437      params.headers = Object.assign({
 77438        'User-Agent': this.userAgent
 77439      }, params.headers);
 77440  
 77441      const promise = new Promise((resolve, reject) => {
 77442        this.queue.push({ params, reject, resolve });
 77443        this.shiftQueue();
 77444      });
 77445  
 77446      // we can't cache a request with a processor
 77447      if (!params.process) {
 77448        this.cache[params.url] = promise;
 77449      }
 77450  
 77451      return promise;
 77452    }
 77453  
 77454    /**
 77455     * Clear the request cache. This is important as we cache all HTTP requests so you'll
 77456     * want to do this as soon as you can.
 77457     */
 77458  
 77459    clearCache() {
 77460      this.cache = {};
 77461      if (this._requestCaptureHar != null) {
 77462        this._requestCaptureHar.clear();
 77463      }
 77464    }
 77465  
 77466    /**
 77467     * Check if an error is possibly due to lost or poor network connectivity.
 77468     */
 77469  
 77470    isPossibleOfflineError(err) {
 77471      const code = err.code,
 77472            hostname = err.hostname;
 77473  
 77474      if (!code) {
 77475        return false;
 77476      }
 77477  
 77478      // network was previously online but now we're offline
 77479      const possibleOfflineChange = !controlOffline && !(_network || _load_network()).isOffline();
 77480      if (code === 'ENOTFOUND' && possibleOfflineChange) {
 77481        // can't resolve a domain
 77482        return true;
 77483      }
 77484  
 77485      // used to be able to resolve this domain! something is wrong
 77486      if (code === 'ENOTFOUND' && hostname && successHosts[hostname]) {
 77487        // can't resolve this domain but we've successfully resolved it before
 77488        return true;
 77489      }
 77490  
 77491      // network was previously offline and we can't resolve the domain
 77492      if (code === 'ENOTFOUND' && controlOffline) {
 77493        return true;
 77494      }
 77495  
 77496      // connection was reset or dropped
 77497      if (code === 'ECONNRESET') {
 77498        return true;
 77499      }
 77500  
 77501      // TCP timeout
 77502      if (code === 'ESOCKETTIMEDOUT' || code === 'ETIMEDOUT') {
 77503        return true;
 77504      }
 77505  
 77506      return false;
 77507    }
 77508  
 77509    /**
 77510     * Queue up request arguments to be retried. Start a network connectivity timer if there
 77511     * isn't already one.
 77512     */
 77513  
 77514    queueForRetry(opts) {
 77515      if (opts.retryReason) {
 77516        let containsReason = false;
 77517  
 77518        for (var _iterator = this.offlineQueue, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 77519          var _ref;
 77520  
 77521          if (_isArray) {
 77522            if (_i >= _iterator.length) break;
 77523            _ref = _iterator[_i++];
 77524          } else {
 77525            _i = _iterator.next();
 77526            if (_i.done) break;
 77527            _ref = _i.value;
 77528          }
 77529  
 77530          const queuedOpts = _ref;
 77531  
 77532          if (queuedOpts.retryReason === opts.retryReason) {
 77533            containsReason = true;
 77534            break;
 77535          }
 77536        }
 77537  
 77538        if (!containsReason) {
 77539          this.reporter.info(opts.retryReason);
 77540        }
 77541      }
 77542  
 77543      if (!this.offlineQueue.length) {
 77544        this.initOfflineRetry();
 77545      }
 77546  
 77547      this.offlineQueue.push(opts);
 77548    }
 77549  
 77550    /**
 77551     * Begin timers to retry failed requests when we possibly establish network connectivity
 77552     * again.
 77553     */
 77554  
 77555    initOfflineRetry() {
 77556      setTimeout(() => {
 77557        const queue = this.offlineQueue;
 77558        this.offlineQueue = [];
 77559        for (var _iterator2 = queue, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 77560          var _ref2;
 77561  
 77562          if (_isArray2) {
 77563            if (_i2 >= _iterator2.length) break;
 77564            _ref2 = _iterator2[_i2++];
 77565          } else {
 77566            _i2 = _iterator2.next();
 77567            if (_i2.done) break;
 77568            _ref2 = _i2.value;
 77569          }
 77570  
 77571          const opts = _ref2;
 77572  
 77573          this.execute(opts);
 77574        }
 77575      }, 3000);
 77576    }
 77577  
 77578    /**
 77579     * Execute a request.
 77580     */
 77581  
 77582    execute(opts) {
 77583      const params = opts.params;
 77584      const reporter = this.reporter;
 77585  
 77586  
 77587      const buildNext = fn => data => {
 77588        fn(data);
 77589        this.running--;
 77590        this.shiftQueue();
 77591      };
 77592  
 77593      const resolve = buildNext(opts.resolve);
 77594  
 77595      const rejectNext = buildNext(opts.reject);
 77596      const reject = function reject(err) {
 77597        err.message = `${params.url}: ${err.message}`;
 77598        rejectNext(err);
 77599      };
 77600  
 77601      const rejectWithoutUrl = function rejectWithoutUrl(err) {
 77602        err.message = err.message;
 77603        rejectNext(err);
 77604      };
 77605  
 77606      const queueForRetry = reason => {
 77607        const attempts = params.retryAttempts || 0;
 77608        if (attempts >= this.maxRetryAttempts - 1) {
 77609          return false;
 77610        }
 77611        if (opts.params.method && opts.params.method.toUpperCase() !== 'GET') {
 77612          return false;
 77613        }
 77614        params.retryAttempts = attempts + 1;
 77615        if (typeof params.cleanup === 'function') {
 77616          params.cleanup();
 77617        }
 77618        opts.retryReason = reason;
 77619        this.queueForRetry(opts);
 77620        return true;
 77621      };
 77622  
 77623      let calledOnError = false;
 77624      const onError = err => {
 77625        if (calledOnError) {
 77626          return;
 77627        }
 77628        calledOnError = true;
 77629  
 77630        if (this.isPossibleOfflineError(err)) {
 77631          if (!queueForRetry(this.reporter.lang('offlineRetrying'))) {
 77632            reject(err);
 77633          }
 77634        } else {
 77635          reject(err);
 77636        }
 77637      };
 77638  
 77639      if (!params.process) {
 77640        const parts = (_url || _load_url()).default.parse(params.url);
 77641  
 77642        params.callback = (err, res, body) => {
 77643          if (err) {
 77644            onError(err);
 77645            return;
 77646          }
 77647  
 77648          successHosts[parts.hostname] = true;
 77649  
 77650          this.reporter.verbose(this.reporter.lang('verboseRequestFinish', params.url, res.statusCode));
 77651  
 77652          if (res.statusCode === 408 || res.statusCode >= 500) {
 77653            const description = `${res.statusCode} ${(_http || _load_http()).default.STATUS_CODES[res.statusCode]}`;
 77654            if (!queueForRetry(this.reporter.lang('internalServerErrorRetrying', description))) {
 77655              throw new (_errors || _load_errors()).ResponseError(this.reporter.lang('requestFailed', description), res.statusCode);
 77656            } else {
 77657              return;
 77658            }
 77659          }
 77660  
 77661          if (res.statusCode === 401 && res.caseless && res.caseless.get('server') === 'GitHub.com') {
 77662            const message = `${res.body.message}. If using GITHUB_TOKEN in your env, check that it is valid.`;
 77663            rejectWithoutUrl(new Error(this.reporter.lang('unauthorizedResponse', res.caseless.get('server'), message)));
 77664          }
 77665  
 77666          if (res.statusCode === 401 && res.headers['www-authenticate']) {
 77667            const authMethods = res.headers['www-authenticate'].split(/,\s*/).map(s => s.toLowerCase());
 77668            if (authMethods.indexOf('otp') !== -1) {
 77669              reject(new (_errors || _load_errors()).OneTimePasswordError(res.headers['npm-notice']));
 77670              return;
 77671            }
 77672          }
 77673  
 77674          if (body && typeof body.error === 'string') {
 77675            reject(new Error(body.error));
 77676            return;
 77677          }
 77678  
 77679          if ([400, 401, 404].concat(params.rejectStatusCode || []).indexOf(res.statusCode) !== -1) {
 77680            // So this is actually a rejection ... the hosted git resolver uses this to know whether http is supported
 77681            resolve(false);
 77682          } else if (res.statusCode >= 400) {
 77683            const errMsg = body && body.message || reporter.lang('requestError', params.url, res.statusCode);
 77684            reject(new Error(errMsg));
 77685          } else {
 77686            resolve(body);
 77687          }
 77688        };
 77689      }
 77690  
 77691      if (params.buffer) {
 77692        params.encoding = null;
 77693      }
 77694  
 77695      let proxy = this.httpProxy;
 77696      if (params.url.startsWith('https:')) {
 77697        proxy = this.httpsProxy;
 77698      }
 77699  
 77700      if (proxy) {
 77701        // if no proxy is set, do not pass a proxy down to request.
 77702        // the request library will internally check the HTTP_PROXY and HTTPS_PROXY env vars.
 77703        params.proxy = String(proxy);
 77704      } else if (proxy === false) {
 77705        // passing empty string prevents the underlying library from falling back to the env vars.
 77706        // an explicit false in the yarn config should override the env var. See #4546.
 77707        params.proxy = '';
 77708      }
 77709  
 77710      if (this.ca != null) {
 77711        params.ca = this.ca;
 77712      }
 77713  
 77714      if (this.cert != null) {
 77715        params.cert = this.cert;
 77716      }
 77717  
 77718      if (this.key != null) {
 77719        params.key = this.key;
 77720      }
 77721  
 77722      if (this.timeout != null) {
 77723        params.timeout = this.timeout;
 77724      }
 77725  
 77726      const request = this._getRequestModule();
 77727      const req = request(params);
 77728      this.reporter.verbose(this.reporter.lang('verboseRequestStart', params.method, params.url));
 77729  
 77730      req.on('error', onError);
 77731  
 77732      const queue = params.queue;
 77733      if (queue) {
 77734        req.on('data', queue.stillActive.bind(queue));
 77735      }
 77736  
 77737      const process = params.process;
 77738      if (process) {
 77739        req.on('response', res => {
 77740          if (res.statusCode >= 200 && res.statusCode < 300) {
 77741            return;
 77742          }
 77743  
 77744          const description = `${res.statusCode} ${(_http || _load_http()).default.STATUS_CODES[res.statusCode]}`;
 77745          reject(new (_errors || _load_errors()).ResponseError(this.reporter.lang('requestFailed', description), res.statusCode));
 77746  
 77747          req.abort();
 77748        });
 77749        process(req, resolve, reject);
 77750      }
 77751    }
 77752  
 77753    /**
 77754     * Remove an item from the queue. Create it's request options and execute it.
 77755     */
 77756  
 77757    shiftQueue() {
 77758      if (this.running >= this.max || !this.queue.length) {
 77759        return;
 77760      }
 77761  
 77762      const opts = this.queue.shift();
 77763  
 77764      this.running++;
 77765      this.execute(opts);
 77766    }
 77767  
 77768    saveHar(filename) {
 77769      if (!this.captureHar) {
 77770        throw new Error(this.reporter.lang('requestManagerNotSetupHAR'));
 77771      }
 77772      // No request may have occurred at all.
 77773      this._getRequestModule();
 77774      (0, (_invariant || _load_invariant()).default)(this._requestCaptureHar != null, 'request-capture-har not setup');
 77775      this._requestCaptureHar.saveHar(filename);
 77776    }
 77777  }
 77778  exports.default = RequestManager;
 77779  
 77780  /***/ }),
 77781  /* 373 */
 77782  /***/ (function(module, exports, __webpack_require__) {
 77783  
 77784  "use strict";
 77785  
 77786  
 77787  var crypto_hash_sha512 = __webpack_require__(76).lowlevel.crypto_hash;
 77788  
 77789  /*
 77790   * This file is a 1:1 port from the OpenBSD blowfish.c and bcrypt_pbkdf.c. As a
 77791   * result, it retains the original copyright and license. The two files are
 77792   * under slightly different (but compatible) licenses, and are here combined in
 77793   * one file.
 77794   *
 77795   * Credit for the actual porting work goes to:
 77796   *  Devi Mandiri <me@devi.web.id>
 77797   */
 77798  
 77799  /*
 77800   * The Blowfish portions are under the following license:
 77801   *
 77802   * Blowfish block cipher for OpenBSD
 77803   * Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>
 77804   * All rights reserved.
 77805   *
 77806   * Implementation advice by David Mazieres <dm@lcs.mit.edu>.
 77807   *
 77808   * Redistribution and use in source and binary forms, with or without
 77809   * modification, are permitted provided that the following conditions
 77810   * are met:
 77811   * 1. Redistributions of source code must retain the above copyright
 77812   *    notice, this list of conditions and the following disclaimer.
 77813   * 2. Redistributions in binary form must reproduce the above copyright
 77814   *    notice, this list of conditions and the following disclaimer in the
 77815   *    documentation and/or other materials provided with the distribution.
 77816   * 3. The name of the author may not be used to endorse or promote products
 77817   *    derived from this software without specific prior written permission.
 77818   *
 77819   * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 77820   * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 77821   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 77822   * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 77823   * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 77824   * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 77825   * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 77826   * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 77827   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 77828   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 77829   */
 77830  
 77831  /*
 77832   * The bcrypt_pbkdf portions are under the following license:
 77833   *
 77834   * Copyright (c) 2013 Ted Unangst <tedu@openbsd.org>
 77835   *
 77836   * Permission to use, copy, modify, and distribute this software for any
 77837   * purpose with or without fee is hereby granted, provided that the above
 77838   * copyright notice and this permission notice appear in all copies.
 77839   *
 77840   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 77841   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 77842   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 77843   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 77844   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 77845   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 77846   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 77847   */
 77848  
 77849  /*
 77850   * Performance improvements (Javascript-specific):
 77851   *
 77852   * Copyright 2016, Joyent Inc
 77853   * Author: Alex Wilson <alex.wilson@joyent.com>
 77854   *
 77855   * Permission to use, copy, modify, and distribute this software for any
 77856   * purpose with or without fee is hereby granted, provided that the above
 77857   * copyright notice and this permission notice appear in all copies.
 77858   *
 77859   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 77860   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 77861   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 77862   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 77863   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 77864   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 77865   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 77866   */
 77867  
 77868  // Ported from OpenBSD bcrypt_pbkdf.c v1.9
 77869  
 77870  var BLF_J = 0;
 77871  
 77872  var Blowfish = function() {
 77873    this.S = [
 77874      new Uint32Array([
 77875        0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,
 77876        0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99,
 77877        0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,
 77878        0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e,
 77879        0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,
 77880        0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,
 77881        0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef,
 77882        0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e,
 77883        0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,
 77884        0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,
 77885        0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce,
 77886        0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,
 77887        0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e,
 77888        0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677,
 77889        0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,
 77890        0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032,
 77891        0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88,
 77892        0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,
 77893        0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e,
 77894        0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,
 77895        0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,
 77896        0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98,
 77897        0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88,
 77898        0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,
 77899        0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,
 77900        0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d,
 77901        0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,
 77902        0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7,
 77903        0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba,
 77904        0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,
 77905        0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f,
 77906        0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09,
 77907        0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,
 77908        0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb,
 77909        0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,
 77910        0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,
 77911        0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab,
 77912        0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82,
 77913        0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,
 77914        0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,
 77915        0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0,
 77916        0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,
 77917        0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790,
 77918        0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8,
 77919        0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,
 77920        0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0,
 77921        0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7,
 77922        0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,
 77923        0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad,
 77924        0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,
 77925        0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,
 77926        0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9,
 77927        0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477,
 77928        0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,
 77929        0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,
 77930        0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af,
 77931        0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,
 77932        0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5,
 77933        0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41,
 77934        0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,
 77935        0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400,
 77936        0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915,
 77937        0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,
 77938        0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a]),
 77939      new Uint32Array([
 77940        0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,
 77941        0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,
 77942        0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,
 77943        0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e,
 77944        0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,
 77945        0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,
 77946        0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e,
 77947        0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,
 77948        0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,
 77949        0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8,
 77950        0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,
 77951        0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,
 77952        0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701,
 77953        0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,
 77954        0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,
 77955        0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,
 77956        0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,
 77957        0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,
 77958        0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e,
 77959        0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,
 77960        0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,
 77961        0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2,
 77962        0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,
 77963        0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,
 77964        0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b,
 77965        0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,
 77966        0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,
 77967        0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3,
 77968        0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,
 77969        0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,
 77970        0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,
 77971        0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,
 77972        0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,
 77973        0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28,
 77974        0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,
 77975        0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,
 77976        0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510,
 77977        0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,
 77978        0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,
 77979        0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e,
 77980        0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,
 77981        0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,
 77982        0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8,
 77983        0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,
 77984        0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,
 77985        0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,
 77986        0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,
 77987        0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,
 77988        0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0,
 77989        0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,
 77990        0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,
 77991        0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250,
 77992        0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,
 77993        0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,
 77994        0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00,
 77995        0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,
 77996        0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,
 77997        0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e,
 77998        0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,
 77999        0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,
 78000        0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,
 78001        0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,
 78002        0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,
 78003        0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7]),
 78004      new Uint32Array([
 78005        0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,
 78006        0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,
 78007        0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,
 78008        0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,
 78009        0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45,
 78010        0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504,
 78011        0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,
 78012        0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb,
 78013        0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee,
 78014        0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,
 78015        0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42,
 78016        0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,
 78017        0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,
 78018        0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb,
 78019        0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,
 78020        0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,
 78021        0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,
 78022        0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c,
 78023        0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,
 78024        0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc,
 78025        0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17,
 78026        0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,
 78027        0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b,
 78028        0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115,
 78029        0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,
 78030        0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728,
 78031        0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,
 78032        0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,
 78033        0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37,
 78034        0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d,
 78035        0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,
 78036        0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,
 78037        0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3,
 78038        0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,
 78039        0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d,
 78040        0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c,
 78041        0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,
 78042        0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9,
 78043        0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a,
 78044        0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,
 78045        0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d,
 78046        0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,
 78047        0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,
 78048        0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61,
 78049        0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2,
 78050        0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,
 78051        0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,
 78052        0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c,
 78053        0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,
 78054        0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633,
 78055        0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10,
 78056        0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,
 78057        0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52,
 78058        0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027,
 78059        0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,
 78060        0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62,
 78061        0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,
 78062        0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,
 78063        0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24,
 78064        0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc,
 78065        0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,
 78066        0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,
 78067        0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837,
 78068        0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0]),
 78069      new Uint32Array([
 78070        0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b,
 78071        0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe,
 78072        0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,
 78073        0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4,
 78074        0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8,
 78075        0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,
 78076        0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304,
 78077        0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,
 78078        0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,
 78079        0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6,
 78080        0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9,
 78081        0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,
 78082        0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,
 78083        0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51,
 78084        0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,
 78085        0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c,
 78086        0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b,
 78087        0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,
 78088        0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c,
 78089        0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd,
 78090        0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,
 78091        0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319,
 78092        0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,
 78093        0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,
 78094        0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991,
 78095        0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32,
 78096        0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,
 78097        0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,
 78098        0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae,
 78099        0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,
 78100        0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5,
 78101        0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47,
 78102        0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,
 78103        0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d,
 78104        0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84,
 78105        0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,
 78106        0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8,
 78107        0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,
 78108        0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,
 78109        0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7,
 78110        0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38,
 78111        0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,
 78112        0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,
 78113        0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525,
 78114        0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,
 78115        0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442,
 78116        0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964,
 78117        0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,
 78118        0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8,
 78119        0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d,
 78120        0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,
 78121        0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299,
 78122        0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,
 78123        0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,
 78124        0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614,
 78125        0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a,
 78126        0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,
 78127        0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,
 78128        0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0,
 78129        0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,
 78130        0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e,
 78131        0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9,
 78132        0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,
 78133        0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6])
 78134      ];
 78135    this.P = new Uint32Array([
 78136      0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,
 78137      0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,
 78138      0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
 78139      0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,
 78140      0x9216d5d9, 0x8979fb1b]);
 78141  };
 78142  
 78143  function F(S, x8, i) {
 78144    return (((S[0][x8[i+3]] +
 78145              S[1][x8[i+2]]) ^
 78146              S[2][x8[i+1]]) +
 78147              S[3][x8[i]]);
 78148  };
 78149  
 78150  Blowfish.prototype.encipher = function(x, x8) {
 78151    if (x8 === undefined) {
 78152      x8 = new Uint8Array(x.buffer);
 78153      if (x.byteOffset !== 0)
 78154        x8 = x8.subarray(x.byteOffset);
 78155    }
 78156    x[0] ^= this.P[0];
 78157    for (var i = 1; i < 16; i += 2) {
 78158      x[1] ^= F(this.S, x8, 0) ^ this.P[i];
 78159      x[0] ^= F(this.S, x8, 4) ^ this.P[i+1];
 78160    }
 78161    var t = x[0];
 78162    x[0] = x[1] ^ this.P[17];
 78163    x[1] = t;
 78164  };
 78165  
 78166  Blowfish.prototype.decipher = function(x) {
 78167    var x8 = new Uint8Array(x.buffer);
 78168    if (x.byteOffset !== 0)
 78169      x8 = x8.subarray(x.byteOffset);
 78170    x[0] ^= this.P[17];
 78171    for (var i = 16; i > 0; i -= 2) {
 78172      x[1] ^= F(this.S, x8, 0) ^ this.P[i];
 78173      x[0] ^= F(this.S, x8, 4) ^ this.P[i-1];
 78174    }
 78175    var t = x[0];
 78176    x[0] = x[1] ^ this.P[0];
 78177    x[1] = t;
 78178  };
 78179  
 78180  function stream2word(data, databytes){
 78181    var i, temp = 0;
 78182    for (i = 0; i < 4; i++, BLF_J++) {
 78183      if (BLF_J >= databytes) BLF_J = 0;
 78184      temp = (temp << 8) | data[BLF_J];
 78185    }
 78186    return temp;
 78187  };
 78188  
 78189  Blowfish.prototype.expand0state = function(key, keybytes) {
 78190    var d = new Uint32Array(2), i, k;
 78191    var d8 = new Uint8Array(d.buffer);
 78192  
 78193    for (i = 0, BLF_J = 0; i < 18; i++) {
 78194      this.P[i] ^= stream2word(key, keybytes);
 78195    }
 78196    BLF_J = 0;
 78197  
 78198    for (i = 0; i < 18; i += 2) {
 78199      this.encipher(d, d8);
 78200      this.P[i]   = d[0];
 78201      this.P[i+1] = d[1];
 78202    }
 78203  
 78204    for (i = 0; i < 4; i++) {
 78205      for (k = 0; k < 256; k += 2) {
 78206        this.encipher(d, d8);
 78207        this.S[i][k]   = d[0];
 78208        this.S[i][k+1] = d[1];
 78209      }
 78210    }
 78211  };
 78212  
 78213  Blowfish.prototype.expandstate = function(data, databytes, key, keybytes) {
 78214    var d = new Uint32Array(2), i, k;
 78215  
 78216    for (i = 0, BLF_J = 0; i < 18; i++) {
 78217      this.P[i] ^= stream2word(key, keybytes);
 78218    }
 78219  
 78220    for (i = 0, BLF_J = 0; i < 18; i += 2) {
 78221      d[0] ^= stream2word(data, databytes);
 78222      d[1] ^= stream2word(data, databytes);
 78223      this.encipher(d);
 78224      this.P[i]   = d[0];
 78225      this.P[i+1] = d[1];
 78226    }
 78227  
 78228    for (i = 0; i < 4; i++) {
 78229      for (k = 0; k < 256; k += 2) {
 78230        d[0] ^= stream2word(data, databytes);
 78231        d[1] ^= stream2word(data, databytes);
 78232        this.encipher(d);
 78233        this.S[i][k]   = d[0];
 78234        this.S[i][k+1] = d[1];
 78235      }
 78236    }
 78237    BLF_J = 0;
 78238  };
 78239  
 78240  Blowfish.prototype.enc = function(data, blocks) {
 78241    for (var i = 0; i < blocks; i++) {
 78242      this.encipher(data.subarray(i*2));
 78243    }
 78244  };
 78245  
 78246  Blowfish.prototype.dec = function(data, blocks) {
 78247    for (var i = 0; i < blocks; i++) {
 78248      this.decipher(data.subarray(i*2));
 78249    }
 78250  };
 78251  
 78252  var BCRYPT_BLOCKS = 8,
 78253      BCRYPT_HASHSIZE = 32;
 78254  
 78255  function bcrypt_hash(sha2pass, sha2salt, out) {
 78256    var state = new Blowfish(),
 78257        cdata = new Uint32Array(BCRYPT_BLOCKS), i,
 78258        ciphertext = new Uint8Array([79,120,121,99,104,114,111,109,97,116,105,
 78259              99,66,108,111,119,102,105,115,104,83,119,97,116,68,121,110,97,109,
 78260              105,116,101]); //"OxychromaticBlowfishSwatDynamite"
 78261  
 78262    state.expandstate(sha2salt, 64, sha2pass, 64);
 78263    for (i = 0; i < 64; i++) {
 78264      state.expand0state(sha2salt, 64);
 78265      state.expand0state(sha2pass, 64);
 78266    }
 78267  
 78268    for (i = 0; i < BCRYPT_BLOCKS; i++)
 78269      cdata[i] = stream2word(ciphertext, ciphertext.byteLength);
 78270    for (i = 0; i < 64; i++)
 78271      state.enc(cdata, cdata.byteLength / 8);
 78272  
 78273    for (i = 0; i < BCRYPT_BLOCKS; i++) {
 78274      out[4*i+3] = cdata[i] >>> 24;
 78275      out[4*i+2] = cdata[i] >>> 16;
 78276      out[4*i+1] = cdata[i] >>> 8;
 78277      out[4*i+0] = cdata[i];
 78278    }
 78279  };
 78280  
 78281  function bcrypt_pbkdf(pass, passlen, salt, saltlen, key, keylen, rounds) {
 78282    var sha2pass = new Uint8Array(64),
 78283        sha2salt = new Uint8Array(64),
 78284        out = new Uint8Array(BCRYPT_HASHSIZE),
 78285        tmpout = new Uint8Array(BCRYPT_HASHSIZE),
 78286        countsalt = new Uint8Array(saltlen+4),
 78287        i, j, amt, stride, dest, count,
 78288        origkeylen = keylen;
 78289  
 78290    if (rounds < 1)
 78291      return -1;
 78292    if (passlen === 0 || saltlen === 0 || keylen === 0 ||
 78293        keylen > (out.byteLength * out.byteLength) || saltlen > (1<<20))
 78294      return -1;
 78295  
 78296    stride = Math.floor((keylen + out.byteLength - 1) / out.byteLength);
 78297    amt = Math.floor((keylen + stride - 1) / stride);
 78298  
 78299    for (i = 0; i < saltlen; i++)
 78300      countsalt[i] = salt[i];
 78301  
 78302    crypto_hash_sha512(sha2pass, pass, passlen);
 78303  
 78304    for (count = 1; keylen > 0; count++) {
 78305      countsalt[saltlen+0] = count >>> 24;
 78306      countsalt[saltlen+1] = count >>> 16;
 78307      countsalt[saltlen+2] = count >>>  8;
 78308      countsalt[saltlen+3] = count;
 78309  
 78310      crypto_hash_sha512(sha2salt, countsalt, saltlen + 4);
 78311      bcrypt_hash(sha2pass, sha2salt, tmpout);
 78312      for (i = out.byteLength; i--;)
 78313        out[i] = tmpout[i];
 78314  
 78315      for (i = 1; i < rounds; i++) {
 78316        crypto_hash_sha512(sha2salt, tmpout, tmpout.byteLength);
 78317        bcrypt_hash(sha2pass, sha2salt, tmpout);
 78318        for (j = 0; j < out.byteLength; j++)
 78319          out[j] ^= tmpout[j];
 78320      }
 78321  
 78322      amt = Math.min(amt, keylen);
 78323      for (i = 0; i < amt; i++) {
 78324        dest = i * stride + (count - 1);
 78325        if (dest >= origkeylen)
 78326          break;
 78327        key[dest] = out[i];
 78328      }
 78329      keylen -= i;
 78330    }
 78331  
 78332    return 0;
 78333  };
 78334  
 78335  module.exports = {
 78336        BLOCKS: BCRYPT_BLOCKS,
 78337        HASHSIZE: BCRYPT_HASHSIZE,
 78338        hash: bcrypt_hash,
 78339        pbkdf: bcrypt_pbkdf
 78340  };
 78341  
 78342  
 78343  /***/ }),
 78344  /* 374 */
 78345  /***/ (function(module, exports, __webpack_require__) {
 78346  
 78347  var bufferFill = __webpack_require__(562)
 78348  var allocUnsafe = __webpack_require__(561)
 78349  
 78350  module.exports = function alloc (size, fill, encoding) {
 78351    if (typeof size !== 'number') {
 78352      throw new TypeError('"size" argument must be a number')
 78353    }
 78354  
 78355    if (size < 0) {
 78356      throw new RangeError('"size" argument must not be negative')
 78357    }
 78358  
 78359    if (Buffer.alloc) {
 78360      return Buffer.alloc(size, fill, encoding)
 78361    }
 78362  
 78363    var buffer = allocUnsafe(size)
 78364  
 78365    if (size === 0) {
 78366      return buffer
 78367    }
 78368  
 78369    if (fill === undefined) {
 78370      return bufferFill(buffer, 0)
 78371    }
 78372  
 78373    if (typeof encoding !== 'string') {
 78374      encoding = undefined
 78375    }
 78376  
 78377    return bufferFill(buffer, fill, encoding)
 78378  }
 78379  
 78380  
 78381  /***/ }),
 78382  /* 375 */
 78383  /***/ (function(module, exports, __webpack_require__) {
 78384  
 78385  "use strict";
 78386  
 78387  const restoreCursor = __webpack_require__(818);
 78388  
 78389  let hidden = false;
 78390  
 78391  exports.show = stream => {
 78392  	const s = stream || process.stderr;
 78393  
 78394  	if (!s.isTTY) {
 78395  		return;
 78396  	}
 78397  
 78398  	hidden = false;
 78399  	s.write('\u001b[?25h');
 78400  };
 78401  
 78402  exports.hide = stream => {
 78403  	const s = stream || process.stderr;
 78404  
 78405  	if (!s.isTTY) {
 78406  		return;
 78407  	}
 78408  
 78409  	restoreCursor();
 78410  	hidden = true;
 78411  	s.write('\u001b[?25l');
 78412  };
 78413  
 78414  exports.toggle = (force, stream) => {
 78415  	if (force !== undefined) {
 78416  		hidden = force;
 78417  	}
 78418  
 78419  	if (hidden) {
 78420  		exports.show(stream);
 78421  	} else {
 78422  		exports.hide(stream);
 78423  	}
 78424  };
 78425  
 78426  
 78427  /***/ }),
 78428  /* 376 */
 78429  /***/ (function(module, exports, __webpack_require__) {
 78430  
 78431  var objectAssign = __webpack_require__(303);
 78432  var stringWidth = __webpack_require__(945);
 78433  
 78434  function codeRegex(capture){
 78435    return capture ? /\u001b\[((?:\d*;){0,5}\d*)m/g : /\u001b\[(?:\d*;){0,5}\d*m/g
 78436  }
 78437  
 78438  function strlen(str){
 78439    var code = codeRegex();
 78440    var stripped = ("" + str).replace(code,'');
 78441    var split = stripped.split("\n");
 78442    return split.reduce(function (memo, s) { return (stringWidth(s) > memo) ? stringWidth(s) : memo }, 0);
 78443  }
 78444  
 78445  function repeat(str,times){
 78446    return Array(times + 1).join(str);
 78447  }
 78448  
 78449  function pad(str, len, pad, dir) {
 78450    var length = strlen(str);
 78451    if (len + 1 >= length) {
 78452      var padlen = len - length;
 78453      switch (dir) {
 78454        case 'right':
 78455          str = repeat(pad, padlen) + str;
 78456          break;
 78457  
 78458        case 'center':
 78459          var right = Math.ceil((padlen) / 2);
 78460          var left = padlen - right;
 78461          str = repeat(pad, left) + str + repeat(pad, right);
 78462          break;
 78463  
 78464        default :
 78465          str = str + repeat(pad,padlen);
 78466          break;
 78467      }
 78468    }
 78469    return str;
 78470  }
 78471  
 78472  var codeCache = {};
 78473  
 78474  function addToCodeCache(name,on,off){
 78475    on = '\u001b[' + on + 'm';
 78476    off = '\u001b[' + off + 'm';
 78477    codeCache[on] = {set:name,to:true};
 78478    codeCache[off] = {set:name,to:false};
 78479    codeCache[name] = {on:on,off:off};
 78480  }
 78481  
 78482  //https://github.com/Marak/colors.js/blob/master/lib/styles.js
 78483  addToCodeCache('bold', 1, 22);
 78484  addToCodeCache('italics', 3, 23);
 78485  addToCodeCache('underline', 4, 24);
 78486  addToCodeCache('inverse', 7, 27);
 78487  addToCodeCache('strikethrough', 9, 29);
 78488  
 78489  
 78490  function updateState(state, controlChars){
 78491    var controlCode = controlChars[1] ? parseInt(controlChars[1].split(';')[0]) : 0;
 78492    if ( (controlCode >= 30 && controlCode <= 39)
 78493       || (controlCode >= 90 && controlCode <= 97)
 78494    ) {
 78495      state.lastForegroundAdded = controlChars[0];
 78496      return;
 78497    }
 78498    if ( (controlCode >= 40 && controlCode <= 49)
 78499       || (controlCode >= 100 && controlCode <= 107)
 78500    ) {
 78501      state.lastBackgroundAdded = controlChars[0];
 78502      return;
 78503    }
 78504    if (controlCode === 0) {
 78505      for (var i in state) {
 78506        /* istanbul ignore else */
 78507        if (state.hasOwnProperty(i)) {
 78508          delete state[i];
 78509        }
 78510      }
 78511      return;
 78512    }
 78513    var info = codeCache[controlChars[0]];
 78514    if (info) {
 78515      state[info.set] = info.to;
 78516    }
 78517  }
 78518  
 78519  function readState(line){
 78520    var code = codeRegex(true);
 78521    var controlChars = code.exec(line);
 78522    var state = {};
 78523    while(controlChars !== null){
 78524      updateState(state, controlChars);
 78525      controlChars = code.exec(line);
 78526    }
 78527    return state;
 78528  }
 78529  
 78530  function unwindState(state,ret){
 78531    var lastBackgroundAdded = state.lastBackgroundAdded;
 78532    var lastForegroundAdded = state.lastForegroundAdded;
 78533  
 78534    delete state.lastBackgroundAdded;
 78535    delete state.lastForegroundAdded;
 78536  
 78537    Object.keys(state).forEach(function(key){
 78538      if(state[key]){
 78539        ret += codeCache[key].off;
 78540      }
 78541    });
 78542  
 78543    if(lastBackgroundAdded && (lastBackgroundAdded != '\u001b[49m')){
 78544      ret += '\u001b[49m';
 78545    }
 78546    if(lastForegroundAdded && (lastForegroundAdded != '\u001b[39m')){
 78547      ret += '\u001b[39m';
 78548    }
 78549  
 78550    return ret;
 78551  }
 78552  
 78553  function rewindState(state,ret){
 78554    var lastBackgroundAdded = state.lastBackgroundAdded;
 78555    var lastForegroundAdded = state.lastForegroundAdded;
 78556  
 78557    delete state.lastBackgroundAdded;
 78558    delete state.lastForegroundAdded;
 78559  
 78560    Object.keys(state).forEach(function(key){
 78561      if(state[key]){
 78562        ret = codeCache[key].on + ret;
 78563      }
 78564    });
 78565  
 78566    if(lastBackgroundAdded && (lastBackgroundAdded != '\u001b[49m')){
 78567      ret = lastBackgroundAdded + ret;
 78568    }
 78569    if(lastForegroundAdded && (lastForegroundAdded != '\u001b[39m')){
 78570      ret = lastForegroundAdded + ret;
 78571    }
 78572  
 78573    return ret;
 78574  }
 78575  
 78576  function truncateWidth(str, desiredLength){
 78577    if (str.length === strlen(str)) {
 78578      return str.substr(0, desiredLength);
 78579    }
 78580  
 78581    while (strlen(str) > desiredLength){
 78582      str = str.slice(0, -1);
 78583    }
 78584  
 78585    return str;
 78586  }
 78587  
 78588  function truncateWidthWithAnsi(str, desiredLength){
 78589    var code = codeRegex(true);
 78590    var split = str.split(codeRegex());
 78591    var splitIndex = 0;
 78592    var retLen = 0;
 78593    var ret = '';
 78594    var myArray;
 78595    var state = {};
 78596  
 78597    while(retLen < desiredLength){
 78598      myArray = code.exec(str);
 78599      var toAdd = split[splitIndex];
 78600      splitIndex++;
 78601      if (retLen + strlen(toAdd) > desiredLength){
 78602        toAdd = truncateWidth(toAdd, desiredLength - retLen);
 78603      }
 78604      ret += toAdd;
 78605      retLen += strlen(toAdd);
 78606  
 78607      if(retLen < desiredLength){
 78608        if (!myArray) { break; }  // full-width chars may cause a whitespace which cannot be filled
 78609        ret += myArray[0];
 78610        updateState(state,myArray);
 78611      }
 78612    }
 78613  
 78614    return unwindState(state,ret);
 78615  }
 78616  
 78617  function truncate(str, desiredLength, truncateChar){
 78618    truncateChar = truncateChar || '…';
 78619    var lengthOfStr = strlen(str);
 78620    if(lengthOfStr <= desiredLength){
 78621      return str;
 78622    }
 78623    desiredLength -= strlen(truncateChar);
 78624  
 78625    var ret = truncateWidthWithAnsi(str, desiredLength);
 78626  
 78627    return ret + truncateChar;
 78628  }
 78629  
 78630  
 78631  function defaultOptions(){
 78632    return{
 78633      chars: {
 78634        'top': '─'
 78635        , 'top-mid': '┬'
 78636        , 'top-left': '┌'
 78637        , 'top-right': '┐'
 78638        , 'bottom': '─'
 78639        , 'bottom-mid': '┴'
 78640        , 'bottom-left': '└'
 78641        , 'bottom-right': '┘'
 78642        , 'left': '│'
 78643        , 'left-mid': '├'
 78644        , 'mid': '─'
 78645        , 'mid-mid': '┼'
 78646        , 'right': '│'
 78647        , 'right-mid': '┤'
 78648        , 'middle': '│'
 78649      }
 78650      , truncate: '…'
 78651      , colWidths: []
 78652      , rowHeights: []
 78653      , colAligns: []
 78654      , rowAligns: []
 78655      , style: {
 78656        'padding-left': 1
 78657        , 'padding-right': 1
 78658        , head: ['red']
 78659        , border: ['grey']
 78660        , compact : false
 78661      }
 78662      , head: []
 78663    };
 78664  }
 78665  
 78666  function mergeOptions(options,defaults){
 78667    options = options || {};
 78668    defaults = defaults || defaultOptions();
 78669    var ret = objectAssign({}, defaults, options);
 78670    ret.chars = objectAssign({}, defaults.chars, options.chars);
 78671    ret.style = objectAssign({}, defaults.style, options.style);
 78672    return ret;
 78673  }
 78674  
 78675  function wordWrap(maxLength,input){
 78676    var lines = [];
 78677    var split = input.split(/(\s+)/g);
 78678    var line = [];
 78679    var lineLength = 0;
 78680    var whitespace;
 78681    for (var i = 0; i < split.length; i += 2) {
 78682      var word = split[i];
 78683      var newLength = lineLength + strlen(word);
 78684      if (lineLength > 0 && whitespace) {
 78685        newLength += whitespace.length;
 78686      }
 78687      if(newLength > maxLength){
 78688        if(lineLength !== 0){
 78689          lines.push(line.join(''));
 78690        }
 78691        line = [word];
 78692        lineLength = strlen(word);
 78693      } else {
 78694        line.push(whitespace || '', word);
 78695        lineLength = newLength;
 78696      }
 78697      whitespace = split[i+1];
 78698    }
 78699    if(lineLength){
 78700      lines.push(line.join(''));
 78701    }
 78702    return lines;
 78703  }
 78704  
 78705  function multiLineWordWrap(maxLength, input){
 78706    var output = [];
 78707    input = input.split('\n');
 78708    for(var i = 0; i < input.length; i++){
 78709      output.push.apply(output,wordWrap(maxLength,input[i]));
 78710    }
 78711    return output;
 78712  }
 78713  
 78714  function colorizeLines(input){
 78715    var state = {};
 78716    var output = [];
 78717    for(var i = 0; i < input.length; i++){
 78718      var line = rewindState(state,input[i]) ;
 78719      state = readState(line);
 78720      var temp = objectAssign({},state);
 78721      output.push(unwindState(temp,line));
 78722    }
 78723    return output;
 78724  }
 78725  
 78726  module.exports = {
 78727    strlen:strlen,
 78728    repeat:repeat,
 78729    pad:pad,
 78730    truncate:truncate,
 78731    mergeOptions:mergeOptions,
 78732    wordWrap:multiLineWordWrap,
 78733    colorizeLines:colorizeLines
 78734  };
 78735  
 78736  
 78737  /***/ }),
 78738  /* 377 */
 78739  /***/ (function(module, exports) {
 78740  
 78741  
 78742  /**
 78743   * slice() reference.
 78744   */
 78745  
 78746  var slice = Array.prototype.slice;
 78747  
 78748  /**
 78749   * Expose `co`.
 78750   */
 78751  
 78752  module.exports = co['default'] = co.co = co;
 78753  
 78754  /**
 78755   * Wrap the given generator `fn` into a
 78756   * function that returns a promise.
 78757   * This is a separate function so that
 78758   * every `co()` call doesn't create a new,
 78759   * unnecessary closure.
 78760   *
 78761   * @param {GeneratorFunction} fn
 78762   * @return {Function}
 78763   * @api public
 78764   */
 78765  
 78766  co.wrap = function (fn) {
 78767    createPromise.__generatorFunction__ = fn;
 78768    return createPromise;
 78769    function createPromise() {
 78770      return co.call(this, fn.apply(this, arguments));
 78771    }
 78772  };
 78773  
 78774  /**
 78775   * Execute the generator function or a generator
 78776   * and return a promise.
 78777   *
 78778   * @param {Function} fn
 78779   * @return {Promise}
 78780   * @api public
 78781   */
 78782  
 78783  function co(gen) {
 78784    var ctx = this;
 78785    var args = slice.call(arguments, 1)
 78786  
 78787    // we wrap everything in a promise to avoid promise chaining,
 78788    // which leads to memory leak errors.
 78789    // see https://github.com/tj/co/issues/180
 78790    return new Promise(function(resolve, reject) {
 78791      if (typeof gen === 'function') gen = gen.apply(ctx, args);
 78792      if (!gen || typeof gen.next !== 'function') return resolve(gen);
 78793  
 78794      onFulfilled();
 78795  
 78796      /**
 78797       * @param {Mixed} res
 78798       * @return {Promise}
 78799       * @api private
 78800       */
 78801  
 78802      function onFulfilled(res) {
 78803        var ret;
 78804        try {
 78805          ret = gen.next(res);
 78806        } catch (e) {
 78807          return reject(e);
 78808        }
 78809        next(ret);
 78810      }
 78811  
 78812      /**
 78813       * @param {Error} err
 78814       * @return {Promise}
 78815       * @api private
 78816       */
 78817  
 78818      function onRejected(err) {
 78819        var ret;
 78820        try {
 78821          ret = gen.throw(err);
 78822        } catch (e) {
 78823          return reject(e);
 78824        }
 78825        next(ret);
 78826      }
 78827  
 78828      /**
 78829       * Get the next value in the generator,
 78830       * return a promise.
 78831       *
 78832       * @param {Object} ret
 78833       * @return {Promise}
 78834       * @api private
 78835       */
 78836  
 78837      function next(ret) {
 78838        if (ret.done) return resolve(ret.value);
 78839        var value = toPromise.call(ctx, ret.value);
 78840        if (value && isPromise(value)) return value.then(onFulfilled, onRejected);
 78841        return onRejected(new TypeError('You may only yield a function, promise, generator, array, or object, '
 78842          + 'but the following object was passed: "' + String(ret.value) + '"'));
 78843      }
 78844    });
 78845  }
 78846  
 78847  /**
 78848   * Convert a `yield`ed value into a promise.
 78849   *
 78850   * @param {Mixed} obj
 78851   * @return {Promise}
 78852   * @api private
 78853   */
 78854  
 78855  function toPromise(obj) {
 78856    if (!obj) return obj;
 78857    if (isPromise(obj)) return obj;
 78858    if (isGeneratorFunction(obj) || isGenerator(obj)) return co.call(this, obj);
 78859    if ('function' == typeof obj) return thunkToPromise.call(this, obj);
 78860    if (Array.isArray(obj)) return arrayToPromise.call(this, obj);
 78861    if (isObject(obj)) return objectToPromise.call(this, obj);
 78862    return obj;
 78863  }
 78864  
 78865  /**
 78866   * Convert a thunk to a promise.
 78867   *
 78868   * @param {Function}
 78869   * @return {Promise}
 78870   * @api private
 78871   */
 78872  
 78873  function thunkToPromise(fn) {
 78874    var ctx = this;
 78875    return new Promise(function (resolve, reject) {
 78876      fn.call(ctx, function (err, res) {
 78877        if (err) return reject(err);
 78878        if (arguments.length > 2) res = slice.call(arguments, 1);
 78879        resolve(res);
 78880      });
 78881    });
 78882  }
 78883  
 78884  /**
 78885   * Convert an array of "yieldables" to a promise.
 78886   * Uses `Promise.all()` internally.
 78887   *
 78888   * @param {Array} obj
 78889   * @return {Promise}
 78890   * @api private
 78891   */
 78892  
 78893  function arrayToPromise(obj) {
 78894    return Promise.all(obj.map(toPromise, this));
 78895  }
 78896  
 78897  /**
 78898   * Convert an object of "yieldables" to a promise.
 78899   * Uses `Promise.all()` internally.
 78900   *
 78901   * @param {Object} obj
 78902   * @return {Promise}
 78903   * @api private
 78904   */
 78905  
 78906  function objectToPromise(obj){
 78907    var results = new obj.constructor();
 78908    var keys = Object.keys(obj);
 78909    var promises = [];
 78910    for (var i = 0; i < keys.length; i++) {
 78911      var key = keys[i];
 78912      var promise = toPromise.call(this, obj[key]);
 78913      if (promise && isPromise(promise)) defer(promise, key);
 78914      else results[key] = obj[key];
 78915    }
 78916    return Promise.all(promises).then(function () {
 78917      return results;
 78918    });
 78919  
 78920    function defer(promise, key) {
 78921      // predefine the key in the result
 78922      results[key] = undefined;
 78923      promises.push(promise.then(function (res) {
 78924        results[key] = res;
 78925      }));
 78926    }
 78927  }
 78928  
 78929  /**
 78930   * Check if `obj` is a promise.
 78931   *
 78932   * @param {Object} obj
 78933   * @return {Boolean}
 78934   * @api private
 78935   */
 78936  
 78937  function isPromise(obj) {
 78938    return 'function' == typeof obj.then;
 78939  }
 78940  
 78941  /**
 78942   * Check if `obj` is a generator.
 78943   *
 78944   * @param {Mixed} obj
 78945   * @return {Boolean}
 78946   * @api private
 78947   */
 78948  
 78949  function isGenerator(obj) {
 78950    return 'function' == typeof obj.next && 'function' == typeof obj.throw;
 78951  }
 78952  
 78953  /**
 78954   * Check if `obj` is a generator function.
 78955   *
 78956   * @param {Mixed} obj
 78957   * @return {Boolean}
 78958   * @api private
 78959   */
 78960  function isGeneratorFunction(obj) {
 78961    var constructor = obj.constructor;
 78962    if (!constructor) return false;
 78963    if ('GeneratorFunction' === constructor.name || 'GeneratorFunction' === constructor.displayName) return true;
 78964    return isGenerator(constructor.prototype);
 78965  }
 78966  
 78967  /**
 78968   * Check for plain object.
 78969   *
 78970   * @param {Mixed} val
 78971   * @return {Boolean}
 78972   * @api private
 78973   */
 78974  
 78975  function isObject(val) {
 78976    return Object == val.constructor;
 78977  }
 78978  
 78979  
 78980  /***/ }),
 78981  /* 378 */
 78982  /***/ (function(module, exports, __webpack_require__) {
 78983  
 78984  /* MIT license */
 78985  var cssKeywords = __webpack_require__(578);
 78986  
 78987  // NOTE: conversions should only return primitive values (i.e. arrays, or
 78988  //       values that give correct `typeof` results).
 78989  //       do not use box values types (i.e. Number(), String(), etc.)
 78990  
 78991  var reverseKeywords = {};
 78992  for (var key in cssKeywords) {
 78993  	if (cssKeywords.hasOwnProperty(key)) {
 78994  		reverseKeywords[cssKeywords[key]] = key;
 78995  	}
 78996  }
 78997  
 78998  var convert = module.exports = {
 78999  	rgb: {channels: 3, labels: 'rgb'},
 79000  	hsl: {channels: 3, labels: 'hsl'},
 79001  	hsv: {channels: 3, labels: 'hsv'},
 79002  	hwb: {channels: 3, labels: 'hwb'},
 79003  	cmyk: {channels: 4, labels: 'cmyk'},
 79004  	xyz: {channels: 3, labels: 'xyz'},
 79005  	lab: {channels: 3, labels: 'lab'},
 79006  	lch: {channels: 3, labels: 'lch'},
 79007  	hex: {channels: 1, labels: ['hex']},
 79008  	keyword: {channels: 1, labels: ['keyword']},
 79009  	ansi16: {channels: 1, labels: ['ansi16']},
 79010  	ansi256: {channels: 1, labels: ['ansi256']},
 79011  	hcg: {channels: 3, labels: ['h', 'c', 'g']},
 79012  	apple: {channels: 3, labels: ['r16', 'g16', 'b16']},
 79013  	gray: {channels: 1, labels: ['gray']}
 79014  };
 79015  
 79016  // hide .channels and .labels properties
 79017  for (var model in convert) {
 79018  	if (convert.hasOwnProperty(model)) {
 79019  		if (!('channels' in convert[model])) {
 79020  			throw new Error('missing channels property: ' + model);
 79021  		}
 79022  
 79023  		if (!('labels' in convert[model])) {
 79024  			throw new Error('missing channel labels property: ' + model);
 79025  		}
 79026  
 79027  		if (convert[model].labels.length !== convert[model].channels) {
 79028  			throw new Error('channel and label counts mismatch: ' + model);
 79029  		}
 79030  
 79031  		var channels = convert[model].channels;
 79032  		var labels = convert[model].labels;
 79033  		delete convert[model].channels;
 79034  		delete convert[model].labels;
 79035  		Object.defineProperty(convert[model], 'channels', {value: channels});
 79036  		Object.defineProperty(convert[model], 'labels', {value: labels});
 79037  	}
 79038  }
 79039  
 79040  convert.rgb.hsl = function (rgb) {
 79041  	var r = rgb[0] / 255;
 79042  	var g = rgb[1] / 255;
 79043  	var b = rgb[2] / 255;
 79044  	var min = Math.min(r, g, b);
 79045  	var max = Math.max(r, g, b);
 79046  	var delta = max - min;
 79047  	var h;
 79048  	var s;
 79049  	var l;
 79050  
 79051  	if (max === min) {
 79052  		h = 0;
 79053  	} else if (r === max) {
 79054  		h = (g - b) / delta;
 79055  	} else if (g === max) {
 79056  		h = 2 + (b - r) / delta;
 79057  	} else if (b === max) {
 79058  		h = 4 + (r - g) / delta;
 79059  	}
 79060  
 79061  	h = Math.min(h * 60, 360);
 79062  
 79063  	if (h < 0) {
 79064  		h += 360;
 79065  	}
 79066  
 79067  	l = (min + max) / 2;
 79068  
 79069  	if (max === min) {
 79070  		s = 0;
 79071  	} else if (l <= 0.5) {
 79072  		s = delta / (max + min);
 79073  	} else {
 79074  		s = delta / (2 - max - min);
 79075  	}
 79076  
 79077  	return [h, s * 100, l * 100];
 79078  };
 79079  
 79080  convert.rgb.hsv = function (rgb) {
 79081  	var rdif;
 79082  	var gdif;
 79083  	var bdif;
 79084  	var h;
 79085  	var s;
 79086  
 79087  	var r = rgb[0] / 255;
 79088  	var g = rgb[1] / 255;
 79089  	var b = rgb[2] / 255;
 79090  	var v = Math.max(r, g, b);
 79091  	var diff = v - Math.min(r, g, b);
 79092  	var diffc = function (c) {
 79093  		return (v - c) / 6 / diff + 1 / 2;
 79094  	};
 79095  
 79096  	if (diff === 0) {
 79097  		h = s = 0;
 79098  	} else {
 79099  		s = diff / v;
 79100  		rdif = diffc(r);
 79101  		gdif = diffc(g);
 79102  		bdif = diffc(b);
 79103  
 79104  		if (r === v) {
 79105  			h = bdif - gdif;
 79106  		} else if (g === v) {
 79107  			h = (1 / 3) + rdif - bdif;
 79108  		} else if (b === v) {
 79109  			h = (2 / 3) + gdif - rdif;
 79110  		}
 79111  		if (h < 0) {
 79112  			h += 1;
 79113  		} else if (h > 1) {
 79114  			h -= 1;
 79115  		}
 79116  	}
 79117  
 79118  	return [
 79119  		h * 360,
 79120  		s * 100,
 79121  		v * 100
 79122  	];
 79123  };
 79124  
 79125  convert.rgb.hwb = function (rgb) {
 79126  	var r = rgb[0];
 79127  	var g = rgb[1];
 79128  	var b = rgb[2];
 79129  	var h = convert.rgb.hsl(rgb)[0];
 79130  	var w = 1 / 255 * Math.min(r, Math.min(g, b));
 79131  
 79132  	b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
 79133  
 79134  	return [h, w * 100, b * 100];
 79135  };
 79136  
 79137  convert.rgb.cmyk = function (rgb) {
 79138  	var r = rgb[0] / 255;
 79139  	var g = rgb[1] / 255;
 79140  	var b = rgb[2] / 255;
 79141  	var c;
 79142  	var m;
 79143  	var y;
 79144  	var k;
 79145  
 79146  	k = Math.min(1 - r, 1 - g, 1 - b);
 79147  	c = (1 - r - k) / (1 - k) || 0;
 79148  	m = (1 - g - k) / (1 - k) || 0;
 79149  	y = (1 - b - k) / (1 - k) || 0;
 79150  
 79151  	return [c * 100, m * 100, y * 100, k * 100];
 79152  };
 79153  
 79154  /**
 79155   * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance
 79156   * */
 79157  function comparativeDistance(x, y) {
 79158  	return (
 79159  		Math.pow(x[0] - y[0], 2) +
 79160  		Math.pow(x[1] - y[1], 2) +
 79161  		Math.pow(x[2] - y[2], 2)
 79162  	);
 79163  }
 79164  
 79165  convert.rgb.keyword = function (rgb) {
 79166  	var reversed = reverseKeywords[rgb];
 79167  	if (reversed) {
 79168  		return reversed;
 79169  	}
 79170  
 79171  	var currentClosestDistance = Infinity;
 79172  	var currentClosestKeyword;
 79173  
 79174  	for (var keyword in cssKeywords) {
 79175  		if (cssKeywords.hasOwnProperty(keyword)) {
 79176  			var value = cssKeywords[keyword];
 79177  
 79178  			// Compute comparative distance
 79179  			var distance = comparativeDistance(rgb, value);
 79180  
 79181  			// Check if its less, if so set as closest
 79182  			if (distance < currentClosestDistance) {
 79183  				currentClosestDistance = distance;
 79184  				currentClosestKeyword = keyword;
 79185  			}
 79186  		}
 79187  	}
 79188  
 79189  	return currentClosestKeyword;
 79190  };
 79191  
 79192  convert.keyword.rgb = function (keyword) {
 79193  	return cssKeywords[keyword];
 79194  };
 79195  
 79196  convert.rgb.xyz = function (rgb) {
 79197  	var r = rgb[0] / 255;
 79198  	var g = rgb[1] / 255;
 79199  	var b = rgb[2] / 255;
 79200  
 79201  	// assume sRGB
 79202  	r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);
 79203  	g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);
 79204  	b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);
 79205  
 79206  	var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);
 79207  	var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);
 79208  	var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);
 79209  
 79210  	return [x * 100, y * 100, z * 100];
 79211  };
 79212  
 79213  convert.rgb.lab = function (rgb) {
 79214  	var xyz = convert.rgb.xyz(rgb);
 79215  	var x = xyz[0];
 79216  	var y = xyz[1];
 79217  	var z = xyz[2];
 79218  	var l;
 79219  	var a;
 79220  	var b;
 79221  
 79222  	x /= 95.047;
 79223  	y /= 100;
 79224  	z /= 108.883;
 79225  
 79226  	x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);
 79227  	y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);
 79228  	z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);
 79229  
 79230  	l = (116 * y) - 16;
 79231  	a = 500 * (x - y);
 79232  	b = 200 * (y - z);
 79233  
 79234  	return [l, a, b];
 79235  };
 79236  
 79237  convert.hsl.rgb = function (hsl) {
 79238  	var h = hsl[0] / 360;
 79239  	var s = hsl[1] / 100;
 79240  	var l = hsl[2] / 100;
 79241  	var t1;
 79242  	var t2;
 79243  	var t3;
 79244  	var rgb;
 79245  	var val;
 79246  
 79247  	if (s === 0) {
 79248  		val = l * 255;
 79249  		return [val, val, val];
 79250  	}
 79251  
 79252  	if (l < 0.5) {
 79253  		t2 = l * (1 + s);
 79254  	} else {
 79255  		t2 = l + s - l * s;
 79256  	}
 79257  
 79258  	t1 = 2 * l - t2;
 79259  
 79260  	rgb = [0, 0, 0];
 79261  	for (var i = 0; i < 3; i++) {
 79262  		t3 = h + 1 / 3 * -(i - 1);
 79263  		if (t3 < 0) {
 79264  			t3++;
 79265  		}
 79266  		if (t3 > 1) {
 79267  			t3--;
 79268  		}
 79269  
 79270  		if (6 * t3 < 1) {
 79271  			val = t1 + (t2 - t1) * 6 * t3;
 79272  		} else if (2 * t3 < 1) {
 79273  			val = t2;
 79274  		} else if (3 * t3 < 2) {
 79275  			val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
 79276  		} else {
 79277  			val = t1;
 79278  		}
 79279  
 79280  		rgb[i] = val * 255;
 79281  	}
 79282  
 79283  	return rgb;
 79284  };
 79285  
 79286  convert.hsl.hsv = function (hsl) {
 79287  	var h = hsl[0];
 79288  	var s = hsl[1] / 100;
 79289  	var l = hsl[2] / 100;
 79290  	var smin = s;
 79291  	var lmin = Math.max(l, 0.01);
 79292  	var sv;
 79293  	var v;
 79294  
 79295  	l *= 2;
 79296  	s *= (l <= 1) ? l : 2 - l;
 79297  	smin *= lmin <= 1 ? lmin : 2 - lmin;
 79298  	v = (l + s) / 2;
 79299  	sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);
 79300  
 79301  	return [h, sv * 100, v * 100];
 79302  };
 79303  
 79304  convert.hsv.rgb = function (hsv) {
 79305  	var h = hsv[0] / 60;
 79306  	var s = hsv[1] / 100;
 79307  	var v = hsv[2] / 100;
 79308  	var hi = Math.floor(h) % 6;
 79309  
 79310  	var f = h - Math.floor(h);
 79311  	var p = 255 * v * (1 - s);
 79312  	var q = 255 * v * (1 - (s * f));
 79313  	var t = 255 * v * (1 - (s * (1 - f)));
 79314  	v *= 255;
 79315  
 79316  	switch (hi) {
 79317  		case 0:
 79318  			return [v, t, p];
 79319  		case 1:
 79320  			return [q, v, p];
 79321  		case 2:
 79322  			return [p, v, t];
 79323  		case 3:
 79324  			return [p, q, v];
 79325  		case 4:
 79326  			return [t, p, v];
 79327  		case 5:
 79328  			return [v, p, q];
 79329  	}
 79330  };
 79331  
 79332  convert.hsv.hsl = function (hsv) {
 79333  	var h = hsv[0];
 79334  	var s = hsv[1] / 100;
 79335  	var v = hsv[2] / 100;
 79336  	var vmin = Math.max(v, 0.01);
 79337  	var lmin;
 79338  	var sl;
 79339  	var l;
 79340  
 79341  	l = (2 - s) * v;
 79342  	lmin = (2 - s) * vmin;
 79343  	sl = s * vmin;
 79344  	sl /= (lmin <= 1) ? lmin : 2 - lmin;
 79345  	sl = sl || 0;
 79346  	l /= 2;
 79347  
 79348  	return [h, sl * 100, l * 100];
 79349  };
 79350  
 79351  // http://dev.w3.org/csswg/css-color/#hwb-to-rgb
 79352  convert.hwb.rgb = function (hwb) {
 79353  	var h = hwb[0] / 360;
 79354  	var wh = hwb[1] / 100;
 79355  	var bl = hwb[2] / 100;
 79356  	var ratio = wh + bl;
 79357  	var i;
 79358  	var v;
 79359  	var f;
 79360  	var n;
 79361  
 79362  	// wh + bl cant be > 1
 79363  	if (ratio > 1) {
 79364  		wh /= ratio;
 79365  		bl /= ratio;
 79366  	}
 79367  
 79368  	i = Math.floor(6 * h);
 79369  	v = 1 - bl;
 79370  	f = 6 * h - i;
 79371  
 79372  	if ((i & 0x01) !== 0) {
 79373  		f = 1 - f;
 79374  	}
 79375  
 79376  	n = wh + f * (v - wh); // linear interpolation
 79377  
 79378  	var r;
 79379  	var g;
 79380  	var b;
 79381  	switch (i) {
 79382  		default:
 79383  		case 6:
 79384  		case 0: r = v; g = n; b = wh; break;
 79385  		case 1: r = n; g = v; b = wh; break;
 79386  		case 2: r = wh; g = v; b = n; break;
 79387  		case 3: r = wh; g = n; b = v; break;
 79388  		case 4: r = n; g = wh; b = v; break;
 79389  		case 5: r = v; g = wh; b = n; break;
 79390  	}
 79391  
 79392  	return [r * 255, g * 255, b * 255];
 79393  };
 79394  
 79395  convert.cmyk.rgb = function (cmyk) {
 79396  	var c = cmyk[0] / 100;
 79397  	var m = cmyk[1] / 100;
 79398  	var y = cmyk[2] / 100;
 79399  	var k = cmyk[3] / 100;
 79400  	var r;
 79401  	var g;
 79402  	var b;
 79403  
 79404  	r = 1 - Math.min(1, c * (1 - k) + k);
 79405  	g = 1 - Math.min(1, m * (1 - k) + k);
 79406  	b = 1 - Math.min(1, y * (1 - k) + k);
 79407  
 79408  	return [r * 255, g * 255, b * 255];
 79409  };
 79410  
 79411  convert.xyz.rgb = function (xyz) {
 79412  	var x = xyz[0] / 100;
 79413  	var y = xyz[1] / 100;
 79414  	var z = xyz[2] / 100;
 79415  	var r;
 79416  	var g;
 79417  	var b;
 79418  
 79419  	r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);
 79420  	g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);
 79421  	b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);
 79422  
 79423  	// assume sRGB
 79424  	r = r > 0.0031308
 79425  		? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)
 79426  		: r * 12.92;
 79427  
 79428  	g = g > 0.0031308
 79429  		? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)
 79430  		: g * 12.92;
 79431  
 79432  	b = b > 0.0031308
 79433  		? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)
 79434  		: b * 12.92;
 79435  
 79436  	r = Math.min(Math.max(0, r), 1);
 79437  	g = Math.min(Math.max(0, g), 1);
 79438  	b = Math.min(Math.max(0, b), 1);
 79439  
 79440  	return [r * 255, g * 255, b * 255];
 79441  };
 79442  
 79443  convert.xyz.lab = function (xyz) {
 79444  	var x = xyz[0];
 79445  	var y = xyz[1];
 79446  	var z = xyz[2];
 79447  	var l;
 79448  	var a;
 79449  	var b;
 79450  
 79451  	x /= 95.047;
 79452  	y /= 100;
 79453  	z /= 108.883;
 79454  
 79455  	x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);
 79456  	y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);
 79457  	z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);
 79458  
 79459  	l = (116 * y) - 16;
 79460  	a = 500 * (x - y);
 79461  	b = 200 * (y - z);
 79462  
 79463  	return [l, a, b];
 79464  };
 79465  
 79466  convert.lab.xyz = function (lab) {
 79467  	var l = lab[0];
 79468  	var a = lab[1];
 79469  	var b = lab[2];
 79470  	var x;
 79471  	var y;
 79472  	var z;
 79473  
 79474  	y = (l + 16) / 116;
 79475  	x = a / 500 + y;
 79476  	z = y - b / 200;
 79477  
 79478  	var y2 = Math.pow(y, 3);
 79479  	var x2 = Math.pow(x, 3);
 79480  	var z2 = Math.pow(z, 3);
 79481  	y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;
 79482  	x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;
 79483  	z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;
 79484  
 79485  	x *= 95.047;
 79486  	y *= 100;
 79487  	z *= 108.883;
 79488  
 79489  	return [x, y, z];
 79490  };
 79491  
 79492  convert.lab.lch = function (lab) {
 79493  	var l = lab[0];
 79494  	var a = lab[1];
 79495  	var b = lab[2];
 79496  	var hr;
 79497  	var h;
 79498  	var c;
 79499  
 79500  	hr = Math.atan2(b, a);
 79501  	h = hr * 360 / 2 / Math.PI;
 79502  
 79503  	if (h < 0) {
 79504  		h += 360;
 79505  	}
 79506  
 79507  	c = Math.sqrt(a * a + b * b);
 79508  
 79509  	return [l, c, h];
 79510  };
 79511  
 79512  convert.lch.lab = function (lch) {
 79513  	var l = lch[0];
 79514  	var c = lch[1];
 79515  	var h = lch[2];
 79516  	var a;
 79517  	var b;
 79518  	var hr;
 79519  
 79520  	hr = h / 360 * 2 * Math.PI;
 79521  	a = c * Math.cos(hr);
 79522  	b = c * Math.sin(hr);
 79523  
 79524  	return [l, a, b];
 79525  };
 79526  
 79527  convert.rgb.ansi16 = function (args) {
 79528  	var r = args[0];
 79529  	var g = args[1];
 79530  	var b = args[2];
 79531  	var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization
 79532  
 79533  	value = Math.round(value / 50);
 79534  
 79535  	if (value === 0) {
 79536  		return 30;
 79537  	}
 79538  
 79539  	var ansi = 30
 79540  		+ ((Math.round(b / 255) << 2)
 79541  		| (Math.round(g / 255) << 1)
 79542  		| Math.round(r / 255));
 79543  
 79544  	if (value === 2) {
 79545  		ansi += 60;
 79546  	}
 79547  
 79548  	return ansi;
 79549  };
 79550  
 79551  convert.hsv.ansi16 = function (args) {
 79552  	// optimization here; we already know the value and don't need to get
 79553  	// it converted for us.
 79554  	return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);
 79555  };
 79556  
 79557  convert.rgb.ansi256 = function (args) {
 79558  	var r = args[0];
 79559  	var g = args[1];
 79560  	var b = args[2];
 79561  
 79562  	// we use the extended greyscale palette here, with the exception of
 79563  	// black and white. normal palette only has 4 greyscale shades.
 79564  	if (r === g && g === b) {
 79565  		if (r < 8) {
 79566  			return 16;
 79567  		}
 79568  
 79569  		if (r > 248) {
 79570  			return 231;
 79571  		}
 79572  
 79573  		return Math.round(((r - 8) / 247) * 24) + 232;
 79574  	}
 79575  
 79576  	var ansi = 16
 79577  		+ (36 * Math.round(r / 255 * 5))
 79578  		+ (6 * Math.round(g / 255 * 5))
 79579  		+ Math.round(b / 255 * 5);
 79580  
 79581  	return ansi;
 79582  };
 79583  
 79584  convert.ansi16.rgb = function (args) {
 79585  	var color = args % 10;
 79586  
 79587  	// handle greyscale
 79588  	if (color === 0 || color === 7) {
 79589  		if (args > 50) {
 79590  			color += 3.5;
 79591  		}
 79592  
 79593  		color = color / 10.5 * 255;
 79594  
 79595  		return [color, color, color];
 79596  	}
 79597  
 79598  	var mult = (~~(args > 50) + 1) * 0.5;
 79599  	var r = ((color & 1) * mult) * 255;
 79600  	var g = (((color >> 1) & 1) * mult) * 255;
 79601  	var b = (((color >> 2) & 1) * mult) * 255;
 79602  
 79603  	return [r, g, b];
 79604  };
 79605  
 79606  convert.ansi256.rgb = function (args) {
 79607  	// handle greyscale
 79608  	if (args >= 232) {
 79609  		var c = (args - 232) * 10 + 8;
 79610  		return [c, c, c];
 79611  	}
 79612  
 79613  	args -= 16;
 79614  
 79615  	var rem;
 79616  	var r = Math.floor(args / 36) / 5 * 255;
 79617  	var g = Math.floor((rem = args % 36) / 6) / 5 * 255;
 79618  	var b = (rem % 6) / 5 * 255;
 79619  
 79620  	return [r, g, b];
 79621  };
 79622  
 79623  convert.rgb.hex = function (args) {
 79624  	var integer = ((Math.round(args[0]) & 0xFF) << 16)
 79625  		+ ((Math.round(args[1]) & 0xFF) << 8)
 79626  		+ (Math.round(args[2]) & 0xFF);
 79627  
 79628  	var string = integer.toString(16).toUpperCase();
 79629  	return '000000'.substring(string.length) + string;
 79630  };
 79631  
 79632  convert.hex.rgb = function (args) {
 79633  	var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
 79634  	if (!match) {
 79635  		return [0, 0, 0];
 79636  	}
 79637  
 79638  	var colorString = match[0];
 79639  
 79640  	if (match[0].length === 3) {
 79641  		colorString = colorString.split('').map(function (char) {
 79642  			return char + char;
 79643  		}).join('');
 79644  	}
 79645  
 79646  	var integer = parseInt(colorString, 16);
 79647  	var r = (integer >> 16) & 0xFF;
 79648  	var g = (integer >> 8) & 0xFF;
 79649  	var b = integer & 0xFF;
 79650  
 79651  	return [r, g, b];
 79652  };
 79653  
 79654  convert.rgb.hcg = function (rgb) {
 79655  	var r = rgb[0] / 255;
 79656  	var g = rgb[1] / 255;
 79657  	var b = rgb[2] / 255;
 79658  	var max = Math.max(Math.max(r, g), b);
 79659  	var min = Math.min(Math.min(r, g), b);
 79660  	var chroma = (max - min);
 79661  	var grayscale;
 79662  	var hue;
 79663  
 79664  	if (chroma < 1) {
 79665  		grayscale = min / (1 - chroma);
 79666  	} else {
 79667  		grayscale = 0;
 79668  	}
 79669  
 79670  	if (chroma <= 0) {
 79671  		hue = 0;
 79672  	} else
 79673  	if (max === r) {
 79674  		hue = ((g - b) / chroma) % 6;
 79675  	} else
 79676  	if (max === g) {
 79677  		hue = 2 + (b - r) / chroma;
 79678  	} else {
 79679  		hue = 4 + (r - g) / chroma + 4;
 79680  	}
 79681  
 79682  	hue /= 6;
 79683  	hue %= 1;
 79684  
 79685  	return [hue * 360, chroma * 100, grayscale * 100];
 79686  };
 79687  
 79688  convert.hsl.hcg = function (hsl) {
 79689  	var s = hsl[1] / 100;
 79690  	var l = hsl[2] / 100;
 79691  	var c = 1;
 79692  	var f = 0;
 79693  
 79694  	if (l < 0.5) {
 79695  		c = 2.0 * s * l;
 79696  	} else {
 79697  		c = 2.0 * s * (1.0 - l);
 79698  	}
 79699  
 79700  	if (c < 1.0) {
 79701  		f = (l - 0.5 * c) / (1.0 - c);
 79702  	}
 79703  
 79704  	return [hsl[0], c * 100, f * 100];
 79705  };
 79706  
 79707  convert.hsv.hcg = function (hsv) {
 79708  	var s = hsv[1] / 100;
 79709  	var v = hsv[2] / 100;
 79710  
 79711  	var c = s * v;
 79712  	var f = 0;
 79713  
 79714  	if (c < 1.0) {
 79715  		f = (v - c) / (1 - c);
 79716  	}
 79717  
 79718  	return [hsv[0], c * 100, f * 100];
 79719  };
 79720  
 79721  convert.hcg.rgb = function (hcg) {
 79722  	var h = hcg[0] / 360;
 79723  	var c = hcg[1] / 100;
 79724  	var g = hcg[2] / 100;
 79725  
 79726  	if (c === 0.0) {
 79727  		return [g * 255, g * 255, g * 255];
 79728  	}
 79729  
 79730  	var pure = [0, 0, 0];
 79731  	var hi = (h % 1) * 6;
 79732  	var v = hi % 1;
 79733  	var w = 1 - v;
 79734  	var mg = 0;
 79735  
 79736  	switch (Math.floor(hi)) {
 79737  		case 0:
 79738  			pure[0] = 1; pure[1] = v; pure[2] = 0; break;
 79739  		case 1:
 79740  			pure[0] = w; pure[1] = 1; pure[2] = 0; break;
 79741  		case 2:
 79742  			pure[0] = 0; pure[1] = 1; pure[2] = v; break;
 79743  		case 3:
 79744  			pure[0] = 0; pure[1] = w; pure[2] = 1; break;
 79745  		case 4:
 79746  			pure[0] = v; pure[1] = 0; pure[2] = 1; break;
 79747  		default:
 79748  			pure[0] = 1; pure[1] = 0; pure[2] = w;
 79749  	}
 79750  
 79751  	mg = (1.0 - c) * g;
 79752  
 79753  	return [
 79754  		(c * pure[0] + mg) * 255,
 79755  		(c * pure[1] + mg) * 255,
 79756  		(c * pure[2] + mg) * 255
 79757  	];
 79758  };
 79759  
 79760  convert.hcg.hsv = function (hcg) {
 79761  	var c = hcg[1] / 100;
 79762  	var g = hcg[2] / 100;
 79763  
 79764  	var v = c + g * (1.0 - c);
 79765  	var f = 0;
 79766  
 79767  	if (v > 0.0) {
 79768  		f = c / v;
 79769  	}
 79770  
 79771  	return [hcg[0], f * 100, v * 100];
 79772  };
 79773  
 79774  convert.hcg.hsl = function (hcg) {
 79775  	var c = hcg[1] / 100;
 79776  	var g = hcg[2] / 100;
 79777  
 79778  	var l = g * (1.0 - c) + 0.5 * c;
 79779  	var s = 0;
 79780  
 79781  	if (l > 0.0 && l < 0.5) {
 79782  		s = c / (2 * l);
 79783  	} else
 79784  	if (l >= 0.5 && l < 1.0) {
 79785  		s = c / (2 * (1 - l));
 79786  	}
 79787  
 79788  	return [hcg[0], s * 100, l * 100];
 79789  };
 79790  
 79791  convert.hcg.hwb = function (hcg) {
 79792  	var c = hcg[1] / 100;
 79793  	var g = hcg[2] / 100;
 79794  	var v = c + g * (1.0 - c);
 79795  	return [hcg[0], (v - c) * 100, (1 - v) * 100];
 79796  };
 79797  
 79798  convert.hwb.hcg = function (hwb) {
 79799  	var w = hwb[1] / 100;
 79800  	var b = hwb[2] / 100;
 79801  	var v = 1 - b;
 79802  	var c = v - w;
 79803  	var g = 0;
 79804  
 79805  	if (c < 1) {
 79806  		g = (v - c) / (1 - c);
 79807  	}
 79808  
 79809  	return [hwb[0], c * 100, g * 100];
 79810  };
 79811  
 79812  convert.apple.rgb = function (apple) {
 79813  	return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];
 79814  };
 79815  
 79816  convert.rgb.apple = function (rgb) {
 79817  	return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];
 79818  };
 79819  
 79820  convert.gray.rgb = function (args) {
 79821  	return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
 79822  };
 79823  
 79824  convert.gray.hsl = convert.gray.hsv = function (args) {
 79825  	return [0, 0, args[0]];
 79826  };
 79827  
 79828  convert.gray.hwb = function (gray) {
 79829  	return [0, 100, gray[0]];
 79830  };
 79831  
 79832  convert.gray.cmyk = function (gray) {
 79833  	return [0, 0, 0, gray[0]];
 79834  };
 79835  
 79836  convert.gray.lab = function (gray) {
 79837  	return [gray[0], 0, 0];
 79838  };
 79839  
 79840  convert.gray.hex = function (gray) {
 79841  	var val = Math.round(gray[0] / 100 * 255) & 0xFF;
 79842  	var integer = (val << 16) + (val << 8) + val;
 79843  
 79844  	var string = integer.toString(16).toUpperCase();
 79845  	return '000000'.substring(string.length) + string;
 79846  };
 79847  
 79848  convert.rgb.gray = function (rgb) {
 79849  	var val = (rgb[0] + rgb[1] + rgb[2]) / 3;
 79850  	return [val / 255 * 100];
 79851  };
 79852  
 79853  
 79854  /***/ }),
 79855  /* 379 */
 79856  /***/ (function(module, exports, __webpack_require__) {
 79857  
 79858  var util = __webpack_require__(3);
 79859  var Stream = __webpack_require__(23).Stream;
 79860  var DelayedStream = __webpack_require__(602);
 79861  var defer = __webpack_require__(590);
 79862  
 79863  module.exports = CombinedStream;
 79864  function CombinedStream() {
 79865    this.writable = false;
 79866    this.readable = true;
 79867    this.dataSize = 0;
 79868    this.maxDataSize = 2 * 1024 * 1024;
 79869    this.pauseStreams = true;
 79870  
 79871    this._released = false;
 79872    this._streams = [];
 79873    this._currentStream = null;
 79874  }
 79875  util.inherits(CombinedStream, Stream);
 79876  
 79877  CombinedStream.create = function(options) {
 79878    var combinedStream = new this();
 79879  
 79880    options = options || {};
 79881    for (var option in options) {
 79882      combinedStream[option] = options[option];
 79883    }
 79884  
 79885    return combinedStream;
 79886  };
 79887  
 79888  CombinedStream.isStreamLike = function(stream) {
 79889    return (typeof stream !== 'function')
 79890      && (typeof stream !== 'string')
 79891      && (typeof stream !== 'boolean')
 79892      && (typeof stream !== 'number')
 79893      && (!Buffer.isBuffer(stream));
 79894  };
 79895  
 79896  CombinedStream.prototype.append = function(stream) {
 79897    var isStreamLike = CombinedStream.isStreamLike(stream);
 79898  
 79899    if (isStreamLike) {
 79900      if (!(stream instanceof DelayedStream)) {
 79901        var newStream = DelayedStream.create(stream, {
 79902          maxDataSize: Infinity,
 79903          pauseStream: this.pauseStreams,
 79904        });
 79905        stream.on('data', this._checkDataSize.bind(this));
 79906        stream = newStream;
 79907      }
 79908  
 79909      this._handleErrors(stream);
 79910  
 79911      if (this.pauseStreams) {
 79912        stream.pause();
 79913      }
 79914    }
 79915  
 79916    this._streams.push(stream);
 79917    return this;
 79918  };
 79919  
 79920  CombinedStream.prototype.pipe = function(dest, options) {
 79921    Stream.prototype.pipe.call(this, dest, options);
 79922    this.resume();
 79923    return dest;
 79924  };
 79925  
 79926  CombinedStream.prototype._getNext = function() {
 79927    this._currentStream = null;
 79928    var stream = this._streams.shift();
 79929  
 79930  
 79931    if (typeof stream == 'undefined') {
 79932      this.end();
 79933      return;
 79934    }
 79935  
 79936    if (typeof stream !== 'function') {
 79937      this._pipeNext(stream);
 79938      return;
 79939    }
 79940  
 79941    var getStream = stream;
 79942    getStream(function(stream) {
 79943      var isStreamLike = CombinedStream.isStreamLike(stream);
 79944      if (isStreamLike) {
 79945        stream.on('data', this._checkDataSize.bind(this));
 79946        this._handleErrors(stream);
 79947      }
 79948  
 79949      defer(this._pipeNext.bind(this, stream));
 79950    }.bind(this));
 79951  };
 79952  
 79953  CombinedStream.prototype._pipeNext = function(stream) {
 79954    this._currentStream = stream;
 79955  
 79956    var isStreamLike = CombinedStream.isStreamLike(stream);
 79957    if (isStreamLike) {
 79958      stream.on('end', this._getNext.bind(this));
 79959      stream.pipe(this, {end: false});
 79960      return;
 79961    }
 79962  
 79963    var value = stream;
 79964    this.write(value);
 79965    this._getNext();
 79966  };
 79967  
 79968  CombinedStream.prototype._handleErrors = function(stream) {
 79969    var self = this;
 79970    stream.on('error', function(err) {
 79971      self._emitError(err);
 79972    });
 79973  };
 79974  
 79975  CombinedStream.prototype.write = function(data) {
 79976    this.emit('data', data);
 79977  };
 79978  
 79979  CombinedStream.prototype.pause = function() {
 79980    if (!this.pauseStreams) {
 79981      return;
 79982    }
 79983  
 79984    if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause();
 79985    this.emit('pause');
 79986  };
 79987  
 79988  CombinedStream.prototype.resume = function() {
 79989    if (!this._released) {
 79990      this._released = true;
 79991      this.writable = true;
 79992      this._getNext();
 79993    }
 79994  
 79995    if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume();
 79996    this.emit('resume');
 79997  };
 79998  
 79999  CombinedStream.prototype.end = function() {
 80000    this._reset();
 80001    this.emit('end');
 80002  };
 80003  
 80004  CombinedStream.prototype.destroy = function() {
 80005    this._reset();
 80006    this.emit('close');
 80007  };
 80008  
 80009  CombinedStream.prototype._reset = function() {
 80010    this.writable = false;
 80011    this._streams = [];
 80012    this._currentStream = null;
 80013  };
 80014  
 80015  CombinedStream.prototype._checkDataSize = function() {
 80016    this._updateDataSize();
 80017    if (this.dataSize <= this.maxDataSize) {
 80018      return;
 80019    }
 80020  
 80021    var message =
 80022      'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.';
 80023    this._emitError(new Error(message));
 80024  };
 80025  
 80026  CombinedStream.prototype._updateDataSize = function() {
 80027    this.dataSize = 0;
 80028  
 80029    var self = this;
 80030    this._streams.forEach(function(stream) {
 80031      if (!stream.dataSize) {
 80032        return;
 80033      }
 80034  
 80035      self.dataSize += stream.dataSize;
 80036    });
 80037  
 80038    if (this._currentStream && this._currentStream.dataSize) {
 80039      this.dataSize += this._currentStream.dataSize;
 80040    }
 80041  };
 80042  
 80043  CombinedStream.prototype._emitError = function(err) {
 80044    this._reset();
 80045    this.emit('error', err);
 80046  };
 80047  
 80048  
 80049  /***/ }),
 80050  /* 380 */
 80051  /***/ (function(module, exports, __webpack_require__) {
 80052  
 80053  var stream = __webpack_require__(102)
 80054  var eos = __webpack_require__(174)
 80055  var inherits = __webpack_require__(61)
 80056  var shift = __webpack_require__(942)
 80057  
 80058  var SIGNAL_FLUSH = (Buffer.from && Buffer.from !== Uint8Array.from)
 80059    ? Buffer.from([0])
 80060    : new Buffer([0])
 80061  
 80062  var onuncork = function(self, fn) {
 80063    if (self._corked) self.once('uncork', fn)
 80064    else fn()
 80065  }
 80066  
 80067  var autoDestroy = function (self, err) {
 80068    if (self._autoDestroy) self.destroy(err)
 80069  }
 80070  
 80071  var destroyer = function(self, end) {
 80072    return function(err) {
 80073      if (err) autoDestroy(self, err.message === 'premature close' ? null : err)
 80074      else if (end && !self._ended) self.end()
 80075    }
 80076  }
 80077  
 80078  var end = function(ws, fn) {
 80079    if (!ws) return fn()
 80080    if (ws._writableState && ws._writableState.finished) return fn()
 80081    if (ws._writableState) return ws.end(fn)
 80082    ws.end()
 80083    fn()
 80084  }
 80085  
 80086  var toStreams2 = function(rs) {
 80087    return new (stream.Readable)({objectMode:true, highWaterMark:16}).wrap(rs)
 80088  }
 80089  
 80090  var Duplexify = function(writable, readable, opts) {
 80091    if (!(this instanceof Duplexify)) return new Duplexify(writable, readable, opts)
 80092    stream.Duplex.call(this, opts)
 80093  
 80094    this._writable = null
 80095    this._readable = null
 80096    this._readable2 = null
 80097  
 80098    this._autoDestroy = !opts || opts.autoDestroy !== false
 80099    this._forwardDestroy = !opts || opts.destroy !== false
 80100    this._forwardEnd = !opts || opts.end !== false
 80101    this._corked = 1 // start corked
 80102    this._ondrain = null
 80103    this._drained = false
 80104    this._forwarding = false
 80105    this._unwrite = null
 80106    this._unread = null
 80107    this._ended = false
 80108  
 80109    this.destroyed = false
 80110  
 80111    if (writable) this.setWritable(writable)
 80112    if (readable) this.setReadable(readable)
 80113  }
 80114  
 80115  inherits(Duplexify, stream.Duplex)
 80116  
 80117  Duplexify.obj = function(writable, readable, opts) {
 80118    if (!opts) opts = {}
 80119    opts.objectMode = true
 80120    opts.highWaterMark = 16
 80121    return new Duplexify(writable, readable, opts)
 80122  }
 80123  
 80124  Duplexify.prototype.cork = function() {
 80125    if (++this._corked === 1) this.emit('cork')
 80126  }
 80127  
 80128  Duplexify.prototype.uncork = function() {
 80129    if (this._corked && --this._corked === 0) this.emit('uncork')
 80130  }
 80131  
 80132  Duplexify.prototype.setWritable = function(writable) {
 80133    if (this._unwrite) this._unwrite()
 80134  
 80135    if (this.destroyed) {
 80136      if (writable && writable.destroy) writable.destroy()
 80137      return
 80138    }
 80139  
 80140    if (writable === null || writable === false) {
 80141      this.end()
 80142      return
 80143    }
 80144  
 80145    var self = this
 80146    var unend = eos(writable, {writable:true, readable:false}, destroyer(this, this._forwardEnd))
 80147  
 80148    var ondrain = function() {
 80149      var ondrain = self._ondrain
 80150      self._ondrain = null
 80151      if (ondrain) ondrain()
 80152    }
 80153  
 80154    var clear = function() {
 80155      self._writable.removeListener('drain', ondrain)
 80156      unend()
 80157    }
 80158  
 80159    if (this._unwrite) process.nextTick(ondrain) // force a drain on stream reset to avoid livelocks
 80160  
 80161    this._writable = writable
 80162    this._writable.on('drain', ondrain)
 80163    this._unwrite = clear
 80164  
 80165    this.uncork() // always uncork setWritable
 80166  }
 80167  
 80168  Duplexify.prototype.setReadable = function(readable) {
 80169    if (this._unread) this._unread()
 80170  
 80171    if (this.destroyed) {
 80172      if (readable && readable.destroy) readable.destroy()
 80173      return
 80174    }
 80175  
 80176    if (readable === null || readable === false) {
 80177      this.push(null)
 80178      this.resume()
 80179      return
 80180    }
 80181  
 80182    var self = this
 80183    var unend = eos(readable, {writable:false, readable:true}, destroyer(this))
 80184  
 80185    var onreadable = function() {
 80186      self._forward()
 80187    }
 80188  
 80189    var onend = function() {
 80190      self.push(null)
 80191    }
 80192  
 80193    var clear = function() {
 80194      self._readable2.removeListener('readable', onreadable)
 80195      self._readable2.removeListener('end', onend)
 80196      unend()
 80197    }
 80198  
 80199    this._drained = true
 80200    this._readable = readable
 80201    this._readable2 = readable._readableState ? readable : toStreams2(readable)
 80202    this._readable2.on('readable', onreadable)
 80203    this._readable2.on('end', onend)
 80204    this._unread = clear
 80205  
 80206    this._forward()
 80207  }
 80208  
 80209  Duplexify.prototype._read = function() {
 80210    this._drained = true
 80211    this._forward()
 80212  }
 80213  
 80214  Duplexify.prototype._forward = function() {
 80215    if (this._forwarding || !this._readable2 || !this._drained) return
 80216    this._forwarding = true
 80217  
 80218    var data
 80219  
 80220    while (this._drained && (data = shift(this._readable2)) !== null) {
 80221      if (this.destroyed) continue
 80222      this._drained = this.push(data)
 80223    }
 80224  
 80225    this._forwarding = false
 80226  }
 80227  
 80228  Duplexify.prototype.destroy = function(err) {
 80229    if (this.destroyed) return
 80230    this.destroyed = true
 80231  
 80232    var self = this
 80233    process.nextTick(function() {
 80234      self._destroy(err)
 80235    })
 80236  }
 80237  
 80238  Duplexify.prototype._destroy = function(err) {
 80239    if (err) {
 80240      var ondrain = this._ondrain
 80241      this._ondrain = null
 80242      if (ondrain) ondrain(err)
 80243      else this.emit('error', err)
 80244    }
 80245  
 80246    if (this._forwardDestroy) {
 80247      if (this._readable && this._readable.destroy) this._readable.destroy()
 80248      if (this._writable && this._writable.destroy) this._writable.destroy()
 80249    }
 80250  
 80251    this.emit('close')
 80252  }
 80253  
 80254  Duplexify.prototype._write = function(data, enc, cb) {
 80255    if (this.destroyed) return cb()
 80256    if (this._corked) return onuncork(this, this._write.bind(this, data, enc, cb))
 80257    if (data === SIGNAL_FLUSH) return this._finish(cb)
 80258    if (!this._writable) return cb()
 80259  
 80260    if (this._writable.write(data) === false) this._ondrain = cb
 80261    else cb()
 80262  }
 80263  
 80264  
 80265  Duplexify.prototype._finish = function(cb) {
 80266    var self = this
 80267    this.emit('preend')
 80268    onuncork(this, function() {
 80269      end(self._forwardEnd && self._writable, function() {
 80270        // haxx to not emit prefinish twice
 80271        if (self._writableState.prefinished === false) self._writableState.prefinished = true
 80272        self.emit('prefinish')
 80273        onuncork(self, cb)
 80274      })
 80275    })
 80276  }
 80277  
 80278  Duplexify.prototype.end = function(data, enc, cb) {
 80279    if (typeof data === 'function') return this.end(null, null, data)
 80280    if (typeof enc === 'function') return this.end(data, null, enc)
 80281    this._ended = true
 80282    if (data) this.write(data)
 80283    if (!this._writableState.ending) this.write(SIGNAL_FLUSH)
 80284    return stream.Writable.prototype.end.call(this, cb)
 80285  }
 80286  
 80287  module.exports = Duplexify
 80288  
 80289  
 80290  /***/ }),
 80291  /* 381 */
 80292  /***/ (function(module, exports, __webpack_require__) {
 80293  
 80294  var crypto = __webpack_require__(11);
 80295  var BigInteger = __webpack_require__(81).BigInteger;
 80296  var ECPointFp = __webpack_require__(139).ECPointFp;
 80297  var Buffer = __webpack_require__(15).Buffer;
 80298  exports.ECCurves = __webpack_require__(606);
 80299  
 80300  // zero prepad
 80301  function unstupid(hex,len)
 80302  {
 80303  	return (hex.length >= len) ? hex : unstupid("0"+hex,len);
 80304  }
 80305  
 80306  exports.ECKey = function(curve, key, isPublic)
 80307  {
 80308    var priv;
 80309  	var c = curve();
 80310  	var n = c.getN();
 80311    var bytes = Math.floor(n.bitLength()/8);
 80312  
 80313    if(key)
 80314    {
 80315      if(isPublic)
 80316      {
 80317        var curve = c.getCurve();
 80318  //      var x = key.slice(1,bytes+1); // skip the 04 for uncompressed format
 80319  //      var y = key.slice(bytes+1);
 80320  //      this.P = new ECPointFp(curve,
 80321  //        curve.fromBigInteger(new BigInteger(x.toString("hex"), 16)),
 80322  //        curve.fromBigInteger(new BigInteger(y.toString("hex"), 16)));      
 80323        this.P = curve.decodePointHex(key.toString("hex"));
 80324      }else{
 80325        if(key.length != bytes) return false;
 80326        priv = new BigInteger(key.toString("hex"), 16);      
 80327      }
 80328    }else{
 80329      var n1 = n.subtract(BigInteger.ONE);
 80330      var r = new BigInteger(crypto.randomBytes(n.bitLength()));
 80331      priv = r.mod(n1).add(BigInteger.ONE);
 80332      this.P = c.getG().multiply(priv);
 80333    }
 80334    if(this.P)
 80335    {
 80336  //  var pubhex = unstupid(this.P.getX().toBigInteger().toString(16),bytes*2)+unstupid(this.P.getY().toBigInteger().toString(16),bytes*2);
 80337  //  this.PublicKey = Buffer.from("04"+pubhex,"hex");
 80338      this.PublicKey = Buffer.from(c.getCurve().encodeCompressedPointHex(this.P),"hex");
 80339    }
 80340    if(priv)
 80341    {
 80342      this.PrivateKey = Buffer.from(unstupid(priv.toString(16),bytes*2),"hex");
 80343      this.deriveSharedSecret = function(key)
 80344      {
 80345        if(!key || !key.P) return false;
 80346        var S = key.P.multiply(priv);
 80347        return Buffer.from(unstupid(S.getX().toBigInteger().toString(16),bytes*2),"hex");
 80348     }     
 80349    }
 80350  }
 80351  
 80352  
 80353  
 80354  /***/ }),
 80355  /* 382 */
 80356  /***/ (function(module, exports, __webpack_require__) {
 80357  
 80358  "use strict";
 80359  
 80360  
 80361  var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
 80362  
 80363  module.exports = function (str) {
 80364  	if (typeof str !== 'string') {
 80365  		throw new TypeError('Expected a string');
 80366  	}
 80367  
 80368  	return str.replace(matchOperatorsRe, '\\$&');
 80369  };
 80370  
 80371  
 80372  /***/ }),
 80373  /* 383 */
 80374  /***/ (function(module, exports, __webpack_require__) {
 80375  
 80376  "use strict";
 80377  
 80378  
 80379  module.exports = function (data, opts) {
 80380      if (!opts) opts = {};
 80381      if (typeof opts === 'function') opts = { cmp: opts };
 80382      var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;
 80383  
 80384      var cmp = opts.cmp && (function (f) {
 80385          return function (node) {
 80386              return function (a, b) {
 80387                  var aobj = { key: a, value: node[a] };
 80388                  var bobj = { key: b, value: node[b] };
 80389                  return f(aobj, bobj);
 80390              };
 80391          };
 80392      })(opts.cmp);
 80393  
 80394      var seen = [];
 80395      return (function stringify (node) {
 80396          if (node && node.toJSON && typeof node.toJSON === 'function') {
 80397              node = node.toJSON();
 80398          }
 80399  
 80400          if (node === undefined) return;
 80401          if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';
 80402          if (typeof node !== 'object') return JSON.stringify(node);
 80403  
 80404          var i, out;
 80405          if (Array.isArray(node)) {
 80406              out = '[';
 80407              for (i = 0; i < node.length; i++) {
 80408                  if (i) out += ',';
 80409                  out += stringify(node[i]) || 'null';
 80410              }
 80411              return out + ']';
 80412          }
 80413  
 80414          if (node === null) return 'null';
 80415  
 80416          if (seen.indexOf(node) !== -1) {
 80417              if (cycles) return JSON.stringify('__cycle__');
 80418              throw new TypeError('Converting circular structure to JSON');
 80419          }
 80420  
 80421          var seenIndex = seen.push(node) - 1;
 80422          var keys = Object.keys(node).sort(cmp && cmp(node));
 80423          out = '';
 80424          for (i = 0; i < keys.length; i++) {
 80425              var key = keys[i];
 80426              var value = stringify(node[key]);
 80427  
 80428              if (!value) continue;
 80429              if (out) out += ',';
 80430              out += JSON.stringify(key) + ':' + value;
 80431          }
 80432          seen.splice(seenIndex, 1);
 80433          return '{' + out + '}';
 80434      })(data);
 80435  };
 80436  
 80437  
 80438  /***/ }),
 80439  /* 384 */
 80440  /***/ (function(module, exports, __webpack_require__) {
 80441  
 80442  "use strict";
 80443  
 80444  
 80445  var fs = __webpack_require__(4)
 80446  
 80447  module.exports = clone(fs)
 80448  
 80449  function clone (obj) {
 80450    if (obj === null || typeof obj !== 'object')
 80451      return obj
 80452  
 80453    if (obj instanceof Object)
 80454      var copy = { __proto__: obj.__proto__ }
 80455    else
 80456      var copy = Object.create(null)
 80457  
 80458    Object.getOwnPropertyNames(obj).forEach(function (key) {
 80459      Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))
 80460    })
 80461  
 80462    return copy
 80463  }
 80464  
 80465  
 80466  /***/ }),
 80467  /* 385 */
 80468  /***/ (function(module, exports, __webpack_require__) {
 80469  
 80470  var fs = __webpack_require__(4)
 80471  var polyfills = __webpack_require__(623)
 80472  var legacy = __webpack_require__(622)
 80473  var queue = []
 80474  
 80475  var util = __webpack_require__(3)
 80476  
 80477  function noop () {}
 80478  
 80479  var debug = noop
 80480  if (util.debuglog)
 80481    debug = util.debuglog('gfs4')
 80482  else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || ''))
 80483    debug = function() {
 80484      var m = util.format.apply(util, arguments)
 80485      m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ')
 80486      console.error(m)
 80487    }
 80488  
 80489  if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) {
 80490    process.on('exit', function() {
 80491      debug(queue)
 80492      __webpack_require__(28).equal(queue.length, 0)
 80493    })
 80494  }
 80495  
 80496  module.exports = patch(__webpack_require__(384))
 80497  if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH) {
 80498    module.exports = patch(fs)
 80499  }
 80500  
 80501  // Always patch fs.close/closeSync, because we want to
 80502  // retry() whenever a close happens *anywhere* in the program.
 80503  // This is essential when multiple graceful-fs instances are
 80504  // in play at the same time.
 80505  module.exports.close =
 80506  fs.close = (function (fs$close) { return function (fd, cb) {
 80507    return fs$close.call(fs, fd, function (err) {
 80508      if (!err)
 80509        retry()
 80510  
 80511      if (typeof cb === 'function')
 80512        cb.apply(this, arguments)
 80513    })
 80514  }})(fs.close)
 80515  
 80516  module.exports.closeSync =
 80517  fs.closeSync = (function (fs$closeSync) { return function (fd) {
 80518    // Note that graceful-fs also retries when fs.closeSync() fails.
 80519    // Looks like a bug to me, although it's probably a harmless one.
 80520    var rval = fs$closeSync.apply(fs, arguments)
 80521    retry()
 80522    return rval
 80523  }})(fs.closeSync)
 80524  
 80525  function patch (fs) {
 80526    // Everything that references the open() function needs to be in here
 80527    polyfills(fs)
 80528    fs.gracefulify = patch
 80529    fs.FileReadStream = ReadStream;  // Legacy name.
 80530    fs.FileWriteStream = WriteStream;  // Legacy name.
 80531    fs.createReadStream = createReadStream
 80532    fs.createWriteStream = createWriteStream
 80533    var fs$readFile = fs.readFile
 80534    fs.readFile = readFile
 80535    function readFile (path, options, cb) {
 80536      if (typeof options === 'function')
 80537        cb = options, options = null
 80538  
 80539      return go$readFile(path, options, cb)
 80540  
 80541      function go$readFile (path, options, cb) {
 80542        return fs$readFile(path, options, function (err) {
 80543          if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
 80544            enqueue([go$readFile, [path, options, cb]])
 80545          else {
 80546            if (typeof cb === 'function')
 80547              cb.apply(this, arguments)
 80548            retry()
 80549          }
 80550        })
 80551      }
 80552    }
 80553  
 80554    var fs$writeFile = fs.writeFile
 80555    fs.writeFile = writeFile
 80556    function writeFile (path, data, options, cb) {
 80557      if (typeof options === 'function')
 80558        cb = options, options = null
 80559  
 80560      return go$writeFile(path, data, options, cb)
 80561  
 80562      function go$writeFile (path, data, options, cb) {
 80563        return fs$writeFile(path, data, options, function (err) {
 80564          if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
 80565            enqueue([go$writeFile, [path, data, options, cb]])
 80566          else {
 80567            if (typeof cb === 'function')
 80568              cb.apply(this, arguments)
 80569            retry()
 80570          }
 80571        })
 80572      }
 80573    }
 80574  
 80575    var fs$appendFile = fs.appendFile
 80576    if (fs$appendFile)
 80577      fs.appendFile = appendFile
 80578    function appendFile (path, data, options, cb) {
 80579      if (typeof options === 'function')
 80580        cb = options, options = null
 80581  
 80582      return go$appendFile(path, data, options, cb)
 80583  
 80584      function go$appendFile (path, data, options, cb) {
 80585        return fs$appendFile(path, data, options, function (err) {
 80586          if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
 80587            enqueue([go$appendFile, [path, data, options, cb]])
 80588          else {
 80589            if (typeof cb === 'function')
 80590              cb.apply(this, arguments)
 80591            retry()
 80592          }
 80593        })
 80594      }
 80595    }
 80596  
 80597    var fs$readdir = fs.readdir
 80598    fs.readdir = readdir
 80599    function readdir (path, options, cb) {
 80600      var args = [path]
 80601      if (typeof options !== 'function') {
 80602        args.push(options)
 80603      } else {
 80604        cb = options
 80605      }
 80606      args.push(go$readdir$cb)
 80607  
 80608      return go$readdir(args)
 80609  
 80610      function go$readdir$cb (err, files) {
 80611        if (files && files.sort)
 80612          files.sort()
 80613  
 80614        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
 80615          enqueue([go$readdir, [args]])
 80616        else {
 80617          if (typeof cb === 'function')
 80618            cb.apply(this, arguments)
 80619          retry()
 80620        }
 80621      }
 80622    }
 80623  
 80624    function go$readdir (args) {
 80625      return fs$readdir.apply(fs, args)
 80626    }
 80627  
 80628    if (process.version.substr(0, 4) === 'v0.8') {
 80629      var legStreams = legacy(fs)
 80630      ReadStream = legStreams.ReadStream
 80631      WriteStream = legStreams.WriteStream
 80632    }
 80633  
 80634    var fs$ReadStream = fs.ReadStream
 80635    ReadStream.prototype = Object.create(fs$ReadStream.prototype)
 80636    ReadStream.prototype.open = ReadStream$open
 80637  
 80638    var fs$WriteStream = fs.WriteStream
 80639    WriteStream.prototype = Object.create(fs$WriteStream.prototype)
 80640    WriteStream.prototype.open = WriteStream$open
 80641  
 80642    fs.ReadStream = ReadStream
 80643    fs.WriteStream = WriteStream
 80644  
 80645    function ReadStream (path, options) {
 80646      if (this instanceof ReadStream)
 80647        return fs$ReadStream.apply(this, arguments), this
 80648      else
 80649        return ReadStream.apply(Object.create(ReadStream.prototype), arguments)
 80650    }
 80651  
 80652    function ReadStream$open () {
 80653      var that = this
 80654      open(that.path, that.flags, that.mode, function (err, fd) {
 80655        if (err) {
 80656          if (that.autoClose)
 80657            that.destroy()
 80658  
 80659          that.emit('error', err)
 80660        } else {
 80661          that.fd = fd
 80662          that.emit('open', fd)
 80663          that.read()
 80664        }
 80665      })
 80666    }
 80667  
 80668    function WriteStream (path, options) {
 80669      if (this instanceof WriteStream)
 80670        return fs$WriteStream.apply(this, arguments), this
 80671      else
 80672        return WriteStream.apply(Object.create(WriteStream.prototype), arguments)
 80673    }
 80674  
 80675    function WriteStream$open () {
 80676      var that = this
 80677      open(that.path, that.flags, that.mode, function (err, fd) {
 80678        if (err) {
 80679          that.destroy()
 80680          that.emit('error', err)
 80681        } else {
 80682          that.fd = fd
 80683          that.emit('open', fd)
 80684        }
 80685      })
 80686    }
 80687  
 80688    function createReadStream (path, options) {
 80689      return new ReadStream(path, options)
 80690    }
 80691  
 80692    function createWriteStream (path, options) {
 80693      return new WriteStream(path, options)
 80694    }
 80695  
 80696    var fs$open = fs.open
 80697    fs.open = open
 80698    function open (path, flags, mode, cb) {
 80699      if (typeof mode === 'function')
 80700        cb = mode, mode = null
 80701  
 80702      return go$open(path, flags, mode, cb)
 80703  
 80704      function go$open (path, flags, mode, cb) {
 80705        return fs$open(path, flags, mode, function (err, fd) {
 80706          if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
 80707            enqueue([go$open, [path, flags, mode, cb]])
 80708          else {
 80709            if (typeof cb === 'function')
 80710              cb.apply(this, arguments)
 80711            retry()
 80712          }
 80713        })
 80714      }
 80715    }
 80716  
 80717    return fs
 80718  }
 80719  
 80720  function enqueue (elem) {
 80721    debug('ENQUEUE', elem[0].name, elem[1])
 80722    queue.push(elem)
 80723  }
 80724  
 80725  function retry () {
 80726    var elem = queue.shift()
 80727    if (elem) {
 80728      debug('RETRY', elem[0].name, elem[1])
 80729      elem[0].apply(null, elem[1])
 80730    }
 80731  }
 80732  
 80733  
 80734  /***/ }),
 80735  /* 386 */
 80736  /***/ (function(module, exports, __webpack_require__) {
 80737  
 80738  "use strict";
 80739  
 80740  
 80741  var util = __webpack_require__(114);
 80742  
 80743  module.exports = SchemaObject;
 80744  
 80745  function SchemaObject(obj) {
 80746    util.copy(obj, this);
 80747  }
 80748  
 80749  
 80750  /***/ }),
 80751  /* 387 */
 80752  /***/ (function(module, exports, __webpack_require__) {
 80753  
 80754  "use strict";
 80755  
 80756  module.exports = function generate__limit(it, $keyword, $ruleType) {
 80757    var out = ' ';
 80758    var $lvl = it.level;
 80759    var $dataLvl = it.dataLevel;
 80760    var $schema = it.schema[$keyword];
 80761    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
 80762    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
 80763    var $breakOnError = !it.opts.allErrors;
 80764    var $errorKeyword;
 80765    var $data = 'data' + ($dataLvl || '');
 80766    var $isData = it.opts.$data && $schema && $schema.$data,
 80767      $schemaValue;
 80768    if ($isData) {
 80769      out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
 80770      $schemaValue = 'schema' + $lvl;
 80771    } else {
 80772      $schemaValue = $schema;
 80773    }
 80774    var $isMax = $keyword == 'maximum',
 80775      $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum',
 80776      $schemaExcl = it.schema[$exclusiveKeyword],
 80777      $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data,
 80778      $op = $isMax ? '<' : '>',
 80779      $notOp = $isMax ? '>' : '<',
 80780      $errorKeyword = undefined;
 80781    if ($isDataExcl) {
 80782      var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),
 80783        $exclusive = 'exclusive' + $lvl,
 80784        $exclType = 'exclType' + $lvl,
 80785        $exclIsNumber = 'exclIsNumber' + $lvl,
 80786        $opExpr = 'op' + $lvl,
 80787        $opStr = '\' + ' + $opExpr + ' + \'';
 80788      out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';
 80789      $schemaValueExcl = 'schemaExcl' + $lvl;
 80790      out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \'boolean\' && ' + ($exclType) + ' != \'undefined\' && ' + ($exclType) + ' != \'number\') { ';
 80791      var $errorKeyword = $exclusiveKeyword;
 80792      var $$outStack = $$outStack || [];
 80793      $$outStack.push(out);
 80794      out = ''; /* istanbul ignore else */
 80795      if (it.createErrors !== false) {
 80796        out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
 80797        if (it.opts.messages !== false) {
 80798          out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' ';
 80799        }
 80800        if (it.opts.verbose) {
 80801          out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
 80802        }
 80803        out += ' } ';
 80804      } else {
 80805        out += ' {} ';
 80806      }
 80807      var __err = out;
 80808      out = $$outStack.pop();
 80809      if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
 80810        if (it.async) {
 80811          out += ' throw new ValidationError([' + (__err) + ']); ';
 80812        } else {
 80813          out += ' validate.errors = [' + (__err) + ']; return false; ';
 80814        }
 80815      } else {
 80816        out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
 80817      }
 80818      out += ' } else if ( ';
 80819      if ($isData) {
 80820        out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || ';
 80821      }
 80822      out += ' ' + ($exclType) + ' == \'number\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\';';
 80823    } else {
 80824      var $exclIsNumber = typeof $schemaExcl == 'number',
 80825        $opStr = $op;
 80826      if ($exclIsNumber && $isData) {
 80827        var $opExpr = '\'' + $opStr + '\'';
 80828        out += ' if ( ';
 80829        if ($isData) {
 80830          out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || ';
 80831        }
 80832        out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { ';
 80833      } else {
 80834        if ($exclIsNumber && $schema === undefined) {
 80835          $exclusive = true;
 80836          $errorKeyword = $exclusiveKeyword;
 80837          $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;
 80838          $schemaValue = $schemaExcl;
 80839          $notOp += '=';
 80840        } else {
 80841          if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);
 80842          if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {
 80843            $exclusive = true;
 80844            $errorKeyword = $exclusiveKeyword;
 80845            $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;
 80846            $notOp += '=';
 80847          } else {
 80848            $exclusive = false;
 80849            $opStr += '=';
 80850          }
 80851        }
 80852        var $opExpr = '\'' + $opStr + '\'';
 80853        out += ' if ( ';
 80854        if ($isData) {
 80855          out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || ';
 80856        }
 80857        out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { ';
 80858      }
 80859    }
 80860    $errorKeyword = $errorKeyword || $keyword;
 80861    var $$outStack = $$outStack || [];
 80862    $$outStack.push(out);
 80863    out = ''; /* istanbul ignore else */
 80864    if (it.createErrors !== false) {
 80865      out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } ';
 80866      if (it.opts.messages !== false) {
 80867        out += ' , message: \'should be ' + ($opStr) + ' ';
 80868        if ($isData) {
 80869          out += '\' + ' + ($schemaValue);
 80870        } else {
 80871          out += '' + ($schemaValue) + '\'';
 80872        }
 80873      }
 80874      if (it.opts.verbose) {
 80875        out += ' , schema:  ';
 80876        if ($isData) {
 80877          out += 'validate.schema' + ($schemaPath);
 80878        } else {
 80879          out += '' + ($schema);
 80880        }
 80881        out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
 80882      }
 80883      out += ' } ';
 80884    } else {
 80885      out += ' {} ';
 80886    }
 80887    var __err = out;
 80888    out = $$outStack.pop();
 80889    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
 80890      if (it.async) {
 80891        out += ' throw new ValidationError([' + (__err) + ']); ';
 80892      } else {
 80893        out += ' validate.errors = [' + (__err) + ']; return false; ';
 80894      }
 80895    } else {
 80896      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
 80897    }
 80898    out += ' } ';
 80899    if ($breakOnError) {
 80900      out += ' else { ';
 80901    }
 80902    return out;
 80903  }
 80904  
 80905  
 80906  /***/ }),
 80907  /* 388 */
 80908  /***/ (function(module, exports, __webpack_require__) {
 80909  
 80910  "use strict";
 80911  
 80912  module.exports = function generate__limitItems(it, $keyword, $ruleType) {
 80913    var out = ' ';
 80914    var $lvl = it.level;
 80915    var $dataLvl = it.dataLevel;
 80916    var $schema = it.schema[$keyword];
 80917    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
 80918    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
 80919    var $breakOnError = !it.opts.allErrors;
 80920    var $errorKeyword;
 80921    var $data = 'data' + ($dataLvl || '');
 80922    var $isData = it.opts.$data && $schema && $schema.$data,
 80923      $schemaValue;
 80924    if ($isData) {
 80925      out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
 80926      $schemaValue = 'schema' + $lvl;
 80927    } else {
 80928      $schemaValue = $schema;
 80929    }
 80930    var $op = $keyword == 'maxItems' ? '>' : '<';
 80931    out += 'if ( ';
 80932    if ($isData) {
 80933      out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || ';
 80934    }
 80935    out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { ';
 80936    var $errorKeyword = $keyword;
 80937    var $$outStack = $$outStack || [];
 80938    $$outStack.push(out);
 80939    out = ''; /* istanbul ignore else */
 80940    if (it.createErrors !== false) {
 80941      out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';
 80942      if (it.opts.messages !== false) {
 80943        out += ' , message: \'should NOT have ';
 80944        if ($keyword == 'maxItems') {
 80945          out += 'more';
 80946        } else {
 80947          out += 'less';
 80948        }
 80949        out += ' than ';
 80950        if ($isData) {
 80951          out += '\' + ' + ($schemaValue) + ' + \'';
 80952        } else {
 80953          out += '' + ($schema);
 80954        }
 80955        out += ' items\' ';
 80956      }
 80957      if (it.opts.verbose) {
 80958        out += ' , schema:  ';
 80959        if ($isData) {
 80960          out += 'validate.schema' + ($schemaPath);
 80961        } else {
 80962          out += '' + ($schema);
 80963        }
 80964        out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
 80965      }
 80966      out += ' } ';
 80967    } else {
 80968      out += ' {} ';
 80969    }
 80970    var __err = out;
 80971    out = $$outStack.pop();
 80972    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
 80973      if (it.async) {
 80974        out += ' throw new ValidationError([' + (__err) + ']); ';
 80975      } else {
 80976        out += ' validate.errors = [' + (__err) + ']; return false; ';
 80977      }
 80978    } else {
 80979      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
 80980    }
 80981    out += '} ';
 80982    if ($breakOnError) {
 80983      out += ' else { ';
 80984    }
 80985    return out;
 80986  }
 80987  
 80988  
 80989  /***/ }),
 80990  /* 389 */
 80991  /***/ (function(module, exports, __webpack_require__) {
 80992  
 80993  "use strict";
 80994  
 80995  module.exports = function generate__limitLength(it, $keyword, $ruleType) {
 80996    var out = ' ';
 80997    var $lvl = it.level;
 80998    var $dataLvl = it.dataLevel;
 80999    var $schema = it.schema[$keyword];
 81000    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
 81001    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
 81002    var $breakOnError = !it.opts.allErrors;
 81003    var $errorKeyword;
 81004    var $data = 'data' + ($dataLvl || '');
 81005    var $isData = it.opts.$data && $schema && $schema.$data,
 81006      $schemaValue;
 81007    if ($isData) {
 81008      out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
 81009      $schemaValue = 'schema' + $lvl;
 81010    } else {
 81011      $schemaValue = $schema;
 81012    }
 81013    var $op = $keyword == 'maxLength' ? '>' : '<';
 81014    out += 'if ( ';
 81015    if ($isData) {
 81016      out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || ';
 81017    }
 81018    if (it.opts.unicode === false) {
 81019      out += ' ' + ($data) + '.length ';
 81020    } else {
 81021      out += ' ucs2length(' + ($data) + ') ';
 81022    }
 81023    out += ' ' + ($op) + ' ' + ($schemaValue) + ') { ';
 81024    var $errorKeyword = $keyword;
 81025    var $$outStack = $$outStack || [];
 81026    $$outStack.push(out);
 81027    out = ''; /* istanbul ignore else */
 81028    if (it.createErrors !== false) {
 81029      out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';
 81030      if (it.opts.messages !== false) {
 81031        out += ' , message: \'should NOT be ';
 81032        if ($keyword == 'maxLength') {
 81033          out += 'longer';
 81034        } else {
 81035          out += 'shorter';
 81036        }
 81037        out += ' than ';
 81038        if ($isData) {
 81039          out += '\' + ' + ($schemaValue) + ' + \'';
 81040        } else {
 81041          out += '' + ($schema);
 81042        }
 81043        out += ' characters\' ';
 81044      }
 81045      if (it.opts.verbose) {
 81046        out += ' , schema:  ';
 81047        if ($isData) {
 81048          out += 'validate.schema' + ($schemaPath);
 81049        } else {
 81050          out += '' + ($schema);
 81051        }
 81052        out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
 81053      }
 81054      out += ' } ';
 81055    } else {
 81056      out += ' {} ';
 81057    }
 81058    var __err = out;
 81059    out = $$outStack.pop();
 81060    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
 81061      if (it.async) {
 81062        out += ' throw new ValidationError([' + (__err) + ']); ';
 81063      } else {
 81064        out += ' validate.errors = [' + (__err) + ']; return false; ';
 81065      }
 81066    } else {
 81067      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
 81068    }
 81069    out += '} ';
 81070    if ($breakOnError) {
 81071      out += ' else { ';
 81072    }
 81073    return out;
 81074  }
 81075  
 81076  
 81077  /***/ }),
 81078  /* 390 */
 81079  /***/ (function(module, exports, __webpack_require__) {
 81080  
 81081  "use strict";
 81082  
 81083  module.exports = function generate__limitProperties(it, $keyword, $ruleType) {
 81084    var out = ' ';
 81085    var $lvl = it.level;
 81086    var $dataLvl = it.dataLevel;
 81087    var $schema = it.schema[$keyword];
 81088    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
 81089    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
 81090    var $breakOnError = !it.opts.allErrors;
 81091    var $errorKeyword;
 81092    var $data = 'data' + ($dataLvl || '');
 81093    var $isData = it.opts.$data && $schema && $schema.$data,
 81094      $schemaValue;
 81095    if ($isData) {
 81096      out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
 81097      $schemaValue = 'schema' + $lvl;
 81098    } else {
 81099      $schemaValue = $schema;
 81100    }
 81101    var $op = $keyword == 'maxProperties' ? '>' : '<';
 81102    out += 'if ( ';
 81103    if ($isData) {
 81104      out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || ';
 81105    }
 81106    out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { ';
 81107    var $errorKeyword = $keyword;
 81108    var $$outStack = $$outStack || [];
 81109    $$outStack.push(out);
 81110    out = ''; /* istanbul ignore else */
 81111    if (it.createErrors !== false) {
 81112      out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';
 81113      if (it.opts.messages !== false) {
 81114        out += ' , message: \'should NOT have ';
 81115        if ($keyword == 'maxProperties') {
 81116          out += 'more';
 81117        } else {
 81118          out += 'less';
 81119        }
 81120        out += ' than ';
 81121        if ($isData) {
 81122          out += '\' + ' + ($schemaValue) + ' + \'';
 81123        } else {
 81124          out += '' + ($schema);
 81125        }
 81126        out += ' properties\' ';
 81127      }
 81128      if (it.opts.verbose) {
 81129        out += ' , schema:  ';
 81130        if ($isData) {
 81131          out += 'validate.schema' + ($schemaPath);
 81132        } else {
 81133          out += '' + ($schema);
 81134        }
 81135        out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
 81136      }
 81137      out += ' } ';
 81138    } else {
 81139      out += ' {} ';
 81140    }
 81141    var __err = out;
 81142    out = $$outStack.pop();
 81143    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
 81144      if (it.async) {
 81145        out += ' throw new ValidationError([' + (__err) + ']); ';
 81146      } else {
 81147        out += ' validate.errors = [' + (__err) + ']; return false; ';
 81148      }
 81149    } else {
 81150      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
 81151    }
 81152    out += '} ';
 81153    if ($breakOnError) {
 81154      out += ' else { ';
 81155    }
 81156    return out;
 81157  }
 81158  
 81159  
 81160  /***/ }),
 81161  /* 391 */
 81162  /***/ (function(module, exports, __webpack_require__) {
 81163  
 81164  "use strict";
 81165  
 81166  module.exports = function generate_validate(it, $keyword, $ruleType) {
 81167    var out = '';
 81168    var $async = it.schema.$async === true,
 81169      $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'),
 81170      $id = it.self._getId(it.schema);
 81171    if (it.isTop) {
 81172      if ($async) {
 81173        it.async = true;
 81174        var $es7 = it.opts.async == 'es7';
 81175        it.yieldAwait = $es7 ? 'await' : 'yield';
 81176      }
 81177      out += ' var validate = ';
 81178      if ($async) {
 81179        if ($es7) {
 81180          out += ' (async function ';
 81181        } else {
 81182          if (it.opts.async != '*') {
 81183            out += 'co.wrap';
 81184          }
 81185          out += '(function* ';
 81186        }
 81187      } else {
 81188        out += ' (function ';
 81189      }
 81190      out += ' (data, dataPath, parentData, parentDataProperty, rootData) { \'use strict\'; ';
 81191      if ($id && (it.opts.sourceCode || it.opts.processCode)) {
 81192        out += ' ' + ('/\*# sourceURL=' + $id + ' */') + ' ';
 81193      }
 81194    }
 81195    if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) {
 81196      var $keyword = 'false schema';
 81197      var $lvl = it.level;
 81198      var $dataLvl = it.dataLevel;
 81199      var $schema = it.schema[$keyword];
 81200      var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
 81201      var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
 81202      var $breakOnError = !it.opts.allErrors;
 81203      var $errorKeyword;
 81204      var $data = 'data' + ($dataLvl || '');
 81205      var $valid = 'valid' + $lvl;
 81206      if (it.schema === false) {
 81207        if (it.isTop) {
 81208          $breakOnError = true;
 81209        } else {
 81210          out += ' var ' + ($valid) + ' = false; ';
 81211        }
 81212        var $$outStack = $$outStack || [];
 81213        $$outStack.push(out);
 81214        out = ''; /* istanbul ignore else */
 81215        if (it.createErrors !== false) {
 81216          out += ' { keyword: \'' + ($errorKeyword || 'false schema') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
 81217          if (it.opts.messages !== false) {
 81218            out += ' , message: \'boolean schema is false\' ';
 81219          }
 81220          if (it.opts.verbose) {
 81221            out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
 81222          }
 81223          out += ' } ';
 81224        } else {
 81225          out += ' {} ';
 81226        }
 81227        var __err = out;
 81228        out = $$outStack.pop();
 81229        if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
 81230          if (it.async) {
 81231            out += ' throw new ValidationError([' + (__err) + ']); ';
 81232          } else {
 81233            out += ' validate.errors = [' + (__err) + ']; return false; ';
 81234          }
 81235        } else {
 81236          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
 81237        }
 81238      } else {
 81239        if (it.isTop) {
 81240          if ($async) {
 81241            out += ' return data; ';
 81242          } else {
 81243            out += ' validate.errors = null; return true; ';
 81244          }
 81245        } else {
 81246          out += ' var ' + ($valid) + ' = true; ';
 81247        }
 81248      }
 81249      if (it.isTop) {
 81250        out += ' }); return validate; ';
 81251      }
 81252      return out;
 81253    }
 81254    if (it.isTop) {
 81255      var $top = it.isTop,
 81256        $lvl = it.level = 0,
 81257        $dataLvl = it.dataLevel = 0,
 81258        $data = 'data';
 81259      it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema));
 81260      it.baseId = it.baseId || it.rootId;
 81261      delete it.isTop;
 81262      it.dataPathArr = [undefined];
 81263      out += ' var vErrors = null; ';
 81264      out += ' var errors = 0;     ';
 81265      out += ' if (rootData === undefined) rootData = data; ';
 81266    } else {
 81267      var $lvl = it.level,
 81268        $dataLvl = it.dataLevel,
 81269        $data = 'data' + ($dataLvl || '');
 81270      if ($id) it.baseId = it.resolve.url(it.baseId, $id);
 81271      if ($async && !it.async) throw new Error('async schema in sync schema');
 81272      out += ' var errs_' + ($lvl) + ' = errors;';
 81273    }
 81274    var $valid = 'valid' + $lvl,
 81275      $breakOnError = !it.opts.allErrors,
 81276      $closingBraces1 = '',
 81277      $closingBraces2 = '';
 81278    var $errorKeyword;
 81279    var $typeSchema = it.schema.type,
 81280      $typeIsArray = Array.isArray($typeSchema);
 81281    if ($typeIsArray && $typeSchema.length == 1) {
 81282      $typeSchema = $typeSchema[0];
 81283      $typeIsArray = false;
 81284    }
 81285    if (it.schema.$ref && $refKeywords) {
 81286      if (it.opts.extendRefs == 'fail') {
 81287        throw new Error('$ref: validation keywords used in schema at path "' + it.errSchemaPath + '" (see option extendRefs)');
 81288      } else if (it.opts.extendRefs !== true) {
 81289        $refKeywords = false;
 81290        it.logger.warn('$ref: keywords ignored in schema at path "' + it.errSchemaPath + '"');
 81291      }
 81292    }
 81293    if ($typeSchema) {
 81294      if (it.opts.coerceTypes) {
 81295        var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema);
 81296      }
 81297      var $rulesGroup = it.RULES.types[$typeSchema];
 81298      if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) {
 81299        var $schemaPath = it.schemaPath + '.type',
 81300          $errSchemaPath = it.errSchemaPath + '/type';
 81301        var $schemaPath = it.schemaPath + '.type',
 81302          $errSchemaPath = it.errSchemaPath + '/type',
 81303          $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType';
 81304        out += ' if (' + (it.util[$method]($typeSchema, $data, true)) + ') { ';
 81305        if ($coerceToTypes) {
 81306          var $dataType = 'dataType' + $lvl,
 81307            $coerced = 'coerced' + $lvl;
 81308          out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; ';
 81309          if (it.opts.coerceTypes == 'array') {
 81310            out += ' if (' + ($dataType) + ' == \'object\' && Array.isArray(' + ($data) + ')) ' + ($dataType) + ' = \'array\'; ';
 81311          }
 81312          out += ' var ' + ($coerced) + ' = undefined; ';
 81313          var $bracesCoercion = '';
 81314          var arr1 = $coerceToTypes;
 81315          if (arr1) {
 81316            var $type, $i = -1,
 81317              l1 = arr1.length - 1;
 81318            while ($i < l1) {
 81319              $type = arr1[$i += 1];
 81320              if ($i) {
 81321                out += ' if (' + ($coerced) + ' === undefined) { ';
 81322                $bracesCoercion += '}';
 81323              }
 81324              if (it.opts.coerceTypes == 'array' && $type != 'array') {
 81325                out += ' if (' + ($dataType) + ' == \'array\' && ' + ($data) + '.length == 1) { ' + ($coerced) + ' = ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + ';  } ';
 81326              }
 81327              if ($type == 'string') {
 81328                out += ' if (' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\') ' + ($coerced) + ' = \'\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \'\'; ';
 81329              } else if ($type == 'number' || $type == 'integer') {
 81330                out += ' if (' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \'string\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' ';
 81331                if ($type == 'integer') {
 81332                  out += ' && !(' + ($data) + ' % 1)';
 81333                }
 81334                out += ')) ' + ($coerced) + ' = +' + ($data) + '; ';
 81335              } else if ($type == 'boolean') {
 81336                out += ' if (' + ($data) + ' === \'false\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \'true\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; ';
 81337              } else if ($type == 'null') {
 81338                out += ' if (' + ($data) + ' === \'\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; ';
 81339              } else if (it.opts.coerceTypes == 'array' && $type == 'array') {
 81340                out += ' if (' + ($dataType) + ' == \'string\' || ' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; ';
 81341              }
 81342            }
 81343          }
 81344          out += ' ' + ($bracesCoercion) + ' if (' + ($coerced) + ' === undefined) {   ';
 81345          var $$outStack = $$outStack || [];
 81346          $$outStack.push(out);
 81347          out = ''; /* istanbul ignore else */
 81348          if (it.createErrors !== false) {
 81349            out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \'';
 81350            if ($typeIsArray) {
 81351              out += '' + ($typeSchema.join(","));
 81352            } else {
 81353              out += '' + ($typeSchema);
 81354            }
 81355            out += '\' } ';
 81356            if (it.opts.messages !== false) {
 81357              out += ' , message: \'should be ';
 81358              if ($typeIsArray) {
 81359                out += '' + ($typeSchema.join(","));
 81360              } else {
 81361                out += '' + ($typeSchema);
 81362              }
 81363              out += '\' ';
 81364            }
 81365            if (it.opts.verbose) {
 81366              out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
 81367            }
 81368            out += ' } ';
 81369          } else {
 81370            out += ' {} ';
 81371          }
 81372          var __err = out;
 81373          out = $$outStack.pop();
 81374          if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
 81375            if (it.async) {
 81376              out += ' throw new ValidationError([' + (__err) + ']); ';
 81377            } else {
 81378              out += ' validate.errors = [' + (__err) + ']; return false; ';
 81379            }
 81380          } else {
 81381            out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
 81382          }
 81383          out += ' } else {  ';
 81384          var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',
 81385            $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';
 81386          out += ' ' + ($data) + ' = ' + ($coerced) + '; ';
 81387          if (!$dataLvl) {
 81388            out += 'if (' + ($parentData) + ' !== undefined)';
 81389          }
 81390          out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } ';
 81391        } else {
 81392          var $$outStack = $$outStack || [];
 81393          $$outStack.push(out);
 81394          out = ''; /* istanbul ignore else */
 81395          if (it.createErrors !== false) {
 81396            out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \'';
 81397            if ($typeIsArray) {
 81398              out += '' + ($typeSchema.join(","));
 81399            } else {
 81400              out += '' + ($typeSchema);
 81401            }
 81402            out += '\' } ';
 81403            if (it.opts.messages !== false) {
 81404              out += ' , message: \'should be ';
 81405              if ($typeIsArray) {
 81406                out += '' + ($typeSchema.join(","));
 81407              } else {
 81408                out += '' + ($typeSchema);
 81409              }
 81410              out += '\' ';
 81411            }
 81412            if (it.opts.verbose) {
 81413              out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
 81414            }
 81415            out += ' } ';
 81416          } else {
 81417            out += ' {} ';
 81418          }
 81419          var __err = out;
 81420          out = $$outStack.pop();
 81421          if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
 81422            if (it.async) {
 81423              out += ' throw new ValidationError([' + (__err) + ']); ';
 81424            } else {
 81425              out += ' validate.errors = [' + (__err) + ']; return false; ';
 81426            }
 81427          } else {
 81428            out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
 81429          }
 81430        }
 81431        out += ' } ';
 81432      }
 81433    }
 81434    if (it.schema.$ref && !$refKeywords) {
 81435      out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' ';
 81436      if ($breakOnError) {
 81437        out += ' } if (errors === ';
 81438        if ($top) {
 81439          out += '0';
 81440        } else {
 81441          out += 'errs_' + ($lvl);
 81442        }
 81443        out += ') { ';
 81444        $closingBraces2 += '}';
 81445      }
 81446    } else {
 81447      if (it.opts.v5 && it.schema.patternGroups) {
 81448        it.logger.warn('keyword "patternGroups" is deprecated and disabled. Use option patternGroups: true to enable.');
 81449      }
 81450      var arr2 = it.RULES;
 81451      if (arr2) {
 81452        var $rulesGroup, i2 = -1,
 81453          l2 = arr2.length - 1;
 81454        while (i2 < l2) {
 81455          $rulesGroup = arr2[i2 += 1];
 81456          if ($shouldUseGroup($rulesGroup)) {
 81457            if ($rulesGroup.type) {
 81458              out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data)) + ') { ';
 81459            }
 81460            if (it.opts.useDefaults && !it.compositeRule) {
 81461              if ($rulesGroup.type == 'object' && it.schema.properties) {
 81462                var $schema = it.schema.properties,
 81463                  $schemaKeys = Object.keys($schema);
 81464                var arr3 = $schemaKeys;
 81465                if (arr3) {
 81466                  var $propertyKey, i3 = -1,
 81467                    l3 = arr3.length - 1;
 81468                  while (i3 < l3) {
 81469                    $propertyKey = arr3[i3 += 1];
 81470                    var $sch = $schema[$propertyKey];
 81471                    if ($sch.default !== undefined) {
 81472                      var $passData = $data + it.util.getProperty($propertyKey);
 81473                      out += '  if (' + ($passData) + ' === undefined) ' + ($passData) + ' = ';
 81474                      if (it.opts.useDefaults == 'shared') {
 81475                        out += ' ' + (it.useDefault($sch.default)) + ' ';
 81476                      } else {
 81477                        out += ' ' + (JSON.stringify($sch.default)) + ' ';
 81478                      }
 81479                      out += '; ';
 81480                    }
 81481                  }
 81482                }
 81483              } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) {
 81484                var arr4 = it.schema.items;
 81485                if (arr4) {
 81486                  var $sch, $i = -1,
 81487                    l4 = arr4.length - 1;
 81488                  while ($i < l4) {
 81489                    $sch = arr4[$i += 1];
 81490                    if ($sch.default !== undefined) {
 81491                      var $passData = $data + '[' + $i + ']';
 81492                      out += '  if (' + ($passData) + ' === undefined) ' + ($passData) + ' = ';
 81493                      if (it.opts.useDefaults == 'shared') {
 81494                        out += ' ' + (it.useDefault($sch.default)) + ' ';
 81495                      } else {
 81496                        out += ' ' + (JSON.stringify($sch.default)) + ' ';
 81497                      }
 81498                      out += '; ';
 81499                    }
 81500                  }
 81501                }
 81502              }
 81503            }
 81504            var arr5 = $rulesGroup.rules;
 81505            if (arr5) {
 81506              var $rule, i5 = -1,
 81507                l5 = arr5.length - 1;
 81508              while (i5 < l5) {
 81509                $rule = arr5[i5 += 1];
 81510                if ($shouldUseRule($rule)) {
 81511                  var $code = $rule.code(it, $rule.keyword, $rulesGroup.type);
 81512                  if ($code) {
 81513                    out += ' ' + ($code) + ' ';
 81514                    if ($breakOnError) {
 81515                      $closingBraces1 += '}';
 81516                    }
 81517                  }
 81518                }
 81519              }
 81520            }
 81521            if ($breakOnError) {
 81522              out += ' ' + ($closingBraces1) + ' ';
 81523              $closingBraces1 = '';
 81524            }
 81525            if ($rulesGroup.type) {
 81526              out += ' } ';
 81527              if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) {
 81528                out += ' else { ';
 81529                var $schemaPath = it.schemaPath + '.type',
 81530                  $errSchemaPath = it.errSchemaPath + '/type';
 81531                var $$outStack = $$outStack || [];
 81532                $$outStack.push(out);
 81533                out = ''; /* istanbul ignore else */
 81534                if (it.createErrors !== false) {
 81535                  out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \'';
 81536                  if ($typeIsArray) {
 81537                    out += '' + ($typeSchema.join(","));
 81538                  } else {
 81539                    out += '' + ($typeSchema);
 81540                  }
 81541                  out += '\' } ';
 81542                  if (it.opts.messages !== false) {
 81543                    out += ' , message: \'should be ';
 81544                    if ($typeIsArray) {
 81545                      out += '' + ($typeSchema.join(","));
 81546                    } else {
 81547                      out += '' + ($typeSchema);
 81548                    }
 81549                    out += '\' ';
 81550                  }
 81551                  if (it.opts.verbose) {
 81552                    out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
 81553                  }
 81554                  out += ' } ';
 81555                } else {
 81556                  out += ' {} ';
 81557                }
 81558                var __err = out;
 81559                out = $$outStack.pop();
 81560                if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
 81561                  if (it.async) {
 81562                    out += ' throw new ValidationError([' + (__err) + ']); ';
 81563                  } else {
 81564                    out += ' validate.errors = [' + (__err) + ']; return false; ';
 81565                  }
 81566                } else {
 81567                  out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
 81568                }
 81569                out += ' } ';
 81570              }
 81571            }
 81572            if ($breakOnError) {
 81573              out += ' if (errors === ';
 81574              if ($top) {
 81575                out += '0';
 81576              } else {
 81577                out += 'errs_' + ($lvl);
 81578              }
 81579              out += ') { ';
 81580              $closingBraces2 += '}';
 81581            }
 81582          }
 81583        }
 81584      }
 81585    }
 81586    if ($breakOnError) {
 81587      out += ' ' + ($closingBraces2) + ' ';
 81588    }
 81589    if ($top) {
 81590      if ($async) {
 81591        out += ' if (errors === 0) return data;           ';
 81592        out += ' else throw new ValidationError(vErrors); ';
 81593      } else {
 81594        out += ' validate.errors = vErrors; ';
 81595        out += ' return errors === 0;       ';
 81596      }
 81597      out += ' }); return validate;';
 81598    } else {
 81599      out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';';
 81600    }
 81601    out = it.util.cleanUpCode(out);
 81602    if ($top) {
 81603      out = it.util.finalCleanUpCode(out, $async);
 81604    }
 81605  
 81606    function $shouldUseGroup($rulesGroup) {
 81607      var rules = $rulesGroup.rules;
 81608      for (var i = 0; i < rules.length; i++)
 81609        if ($shouldUseRule(rules[i])) return true;
 81610    }
 81611  
 81612    function $shouldUseRule($rule) {
 81613      return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule));
 81614    }
 81615  
 81616    function $ruleImplementsSomeKeyword($rule) {
 81617      var impl = $rule.implements;
 81618      for (var i = 0; i < impl.length; i++)
 81619        if (it.schema[impl[i]] !== undefined) return true;
 81620    }
 81621    return out;
 81622  }
 81623  
 81624  
 81625  /***/ }),
 81626  /* 392 */
 81627  /***/ (function(module, exports, __webpack_require__) {
 81628  
 81629  "use strict";
 81630  
 81631  /**
 81632   * `input` type prompt
 81633   */
 81634  
 81635  var chalk = __webpack_require__(30);
 81636  var { map, takeUntil } = __webpack_require__(63);
 81637  var Base = __webpack_require__(79);
 81638  var observe = __webpack_require__(80);
 81639  
 81640  class InputPrompt extends Base {
 81641    /**
 81642     * Start the Inquiry session
 81643     * @param  {Function} cb      Callback when prompt is done
 81644     * @return {this}
 81645     */
 81646  
 81647    _run(cb) {
 81648      this.done = cb;
 81649  
 81650      // Once user confirm (enter key)
 81651      var events = observe(this.rl);
 81652      var submit = events.line.pipe(map(this.filterInput.bind(this)));
 81653  
 81654      var validation = this.handleSubmitEvents(submit);
 81655      validation.success.forEach(this.onEnd.bind(this));
 81656      validation.error.forEach(this.onError.bind(this));
 81657  
 81658      events.keypress
 81659        .pipe(takeUntil(validation.success))
 81660        .forEach(this.onKeypress.bind(this));
 81661  
 81662      // Init
 81663      this.render();
 81664  
 81665      return this;
 81666    }
 81667  
 81668    /**
 81669     * Render the prompt to screen
 81670     * @return {InputPrompt} self
 81671     */
 81672  
 81673    render(error) {
 81674      var bottomContent = '';
 81675      var appendContent = '';
 81676      var message = this.getQuestion();
 81677      var transformer = this.opt.transformer;
 81678      var isFinal = this.status === 'answered';
 81679  
 81680      if (isFinal) {
 81681        appendContent = this.answer;
 81682      } else {
 81683        appendContent = this.rl.line;
 81684      }
 81685  
 81686      if (transformer) {
 81687        message += transformer(appendContent, this.answers, { isFinal });
 81688      } else {
 81689        message += isFinal ? chalk.cyan(appendContent) : appendContent;
 81690      }
 81691  
 81692      if (error) {
 81693        bottomContent = chalk.red('>> ') + error;
 81694      }
 81695  
 81696      this.screen.render(message, bottomContent);
 81697    }
 81698  
 81699    /**
 81700     * When user press `enter` key
 81701     */
 81702  
 81703    filterInput(input) {
 81704      if (!input) {
 81705        return this.opt.default == null ? '' : this.opt.default;
 81706      }
 81707      return input;
 81708    }
 81709  
 81710    onEnd(state) {
 81711      this.answer = state.value;
 81712      this.status = 'answered';
 81713  
 81714      // Re-render prompt
 81715      this.render();
 81716  
 81717      this.screen.done();
 81718      this.done(state.value);
 81719    }
 81720  
 81721    onError(state) {
 81722      this.render(state.isValid);
 81723    }
 81724  
 81725    /**
 81726     * When user press a key
 81727     */
 81728  
 81729    onKeypress() {
 81730      // If user press a key, just clear the default value
 81731      if (this.opt.default) {
 81732        this.opt.default = undefined;
 81733      }
 81734  
 81735      this.render();
 81736    }
 81737  }
 81738  
 81739  module.exports = InputPrompt;
 81740  
 81741  
 81742  /***/ }),
 81743  /* 393 */
 81744  /***/ (function(module, exports, __webpack_require__) {
 81745  
 81746  "use strict";
 81747  
 81748  var _ = __webpack_require__(38);
 81749  var MuteStream = __webpack_require__(401);
 81750  var readline = __webpack_require__(198);
 81751  
 81752  /**
 81753   * Base interface class other can inherits from
 81754   */
 81755  
 81756  class UI {
 81757    constructor(opt) {
 81758      // Instantiate the Readline interface
 81759      // @Note: Don't reassign if already present (allow test to override the Stream)
 81760      if (!this.rl) {
 81761        this.rl = readline.createInterface(setupReadlineOptions(opt));
 81762      }
 81763      this.rl.resume();
 81764  
 81765      this.onForceClose = this.onForceClose.bind(this);
 81766  
 81767      // Make sure new prompt start on a newline when closing
 81768      process.on('exit', this.onForceClose);
 81769  
 81770      // Terminate process on SIGINT (which will call process.on('exit') in return)
 81771      this.rl.on('SIGINT', this.onForceClose);
 81772    }
 81773  
 81774    /**
 81775     * Handle the ^C exit
 81776     * @return {null}
 81777     */
 81778  
 81779    onForceClose() {
 81780      this.close();
 81781      process.kill(process.pid, 'SIGINT');
 81782      console.log('');
 81783    }
 81784  
 81785    /**
 81786     * Close the interface and cleanup listeners
 81787     */
 81788  
 81789    close() {
 81790      // Remove events listeners
 81791      this.rl.removeListener('SIGINT', this.onForceClose);
 81792      process.removeListener('exit', this.onForceClose);
 81793  
 81794      this.rl.output.unmute();
 81795  
 81796      if (this.activePrompt && typeof this.activePrompt.close === 'function') {
 81797        this.activePrompt.close();
 81798      }
 81799  
 81800      // Close the readline
 81801      this.rl.output.end();
 81802      this.rl.pause();
 81803      this.rl.close();
 81804    }
 81805  }
 81806  
 81807  function setupReadlineOptions(opt) {
 81808    opt = opt || {};
 81809  
 81810    // Default `input` to stdin
 81811    var input = opt.input || process.stdin;
 81812  
 81813    // Add mute capabilities to the output
 81814    var ms = new MuteStream();
 81815    ms.pipe(opt.output || process.stdout);
 81816    var output = ms;
 81817  
 81818    return _.extend(
 81819      {
 81820        terminal: true,
 81821        input: input,
 81822        output: output
 81823      },
 81824      _.omit(opt, ['input', 'output'])
 81825    );
 81826  }
 81827  
 81828  module.exports = UI;
 81829  
 81830  
 81831  /***/ }),
 81832  /* 394 */
 81833  /***/ (function(module, exports, __webpack_require__) {
 81834  
 81835  "use strict";
 81836  
 81837  var ansiEscapes = __webpack_require__(472);
 81838  
 81839  /**
 81840   * Move cursor left by `x`
 81841   * @param  {Readline} rl - Readline instance
 81842   * @param  {Number}   x  - How far to go left (default to 1)
 81843   */
 81844  
 81845  exports.left = function(rl, x) {
 81846    rl.output.write(ansiEscapes.cursorBackward(x));
 81847  };
 81848  
 81849  /**
 81850   * Move cursor right by `x`
 81851   * @param  {Readline} rl - Readline instance
 81852   * @param  {Number}   x  - How far to go left (default to 1)
 81853   */
 81854  
 81855  exports.right = function(rl, x) {
 81856    rl.output.write(ansiEscapes.cursorForward(x));
 81857  };
 81858  
 81859  /**
 81860   * Move cursor up by `x`
 81861   * @param  {Readline} rl - Readline instance
 81862   * @param  {Number}   x  - How far to go up (default to 1)
 81863   */
 81864  
 81865  exports.up = function(rl, x) {
 81866    rl.output.write(ansiEscapes.cursorUp(x));
 81867  };
 81868  
 81869  /**
 81870   * Move cursor down by `x`
 81871   * @param  {Readline} rl - Readline instance
 81872   * @param  {Number}   x  - How far to go down (default to 1)
 81873   */
 81874  
 81875  exports.down = function(rl, x) {
 81876    rl.output.write(ansiEscapes.cursorDown(x));
 81877  };
 81878  
 81879  /**
 81880   * Clear current line
 81881   * @param  {Readline} rl  - Readline instance
 81882   * @param  {Number}   len - number of line to delete
 81883   */
 81884  exports.clearLine = function(rl, len) {
 81885    rl.output.write(ansiEscapes.eraseLines(len));
 81886  };
 81887  
 81888  
 81889  /***/ }),
 81890  /* 395 */
 81891  /***/ (function(module, exports) {
 81892  
 81893  module.exports = [["0","\u0000",127],["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"],["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"],["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"],["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21],["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10],["a3a1","ㄐ",25,"˙ˉˊˇˋ"],["a3e1","€"],["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"],["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"],["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"],["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"],["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"],["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"],["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"],["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"],["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"],["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"],["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"],["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"],["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"],["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"],["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"],["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"],["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"],["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"],["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"],["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"],["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"],["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"],["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"],["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"],["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"],["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"],["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"],["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"],["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"],["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"],["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"],["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"],["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"],["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"],["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"],["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"],["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"],["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"],["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"],["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"],["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"],["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"],["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"],["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"],["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"],["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"],["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"],["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"],["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"],["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"],["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"],["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"],["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"],["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"],["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"],["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"],["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"],["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"],["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"],["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"],["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"],["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"],["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"],["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"],["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"],["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"],["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"],["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"],["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"],["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"],["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"],["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"],["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"],["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"],["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"],["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"],["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"],["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"],["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"],["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"],["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"],["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"],["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"],["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"],["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"],["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"],["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"],["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"],["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"],["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"],["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"],["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"],["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"],["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"],["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"],["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"],["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"],["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"],["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"],["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"],["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"],["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"],["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"],["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"],["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"],["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"],["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"],["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"],["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"],["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"],["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"],["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"],["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"],["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"],["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"],["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"],["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"],["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"],["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"],["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"],["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"],["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"],["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"],["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"],["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"],["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"],["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"],["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"],["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"],["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"],["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"],["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"],["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"],["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"],["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"],["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"],["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"],["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"],["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"],["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"],["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"],["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"],["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"],["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"],["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"],["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"],["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"],["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"],["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"],["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"],["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"],["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"],["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"],["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"],["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"],["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"],["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"],["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"],["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"],["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"],["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"],["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"],["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"],["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"],["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"],["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"],["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"]]
 81894  
 81895  /***/ }),
 81896  /* 396 */
 81897  /***/ (function(module, exports) {
 81898  
 81899  module.exports = [["a140","",62],["a180","",32],["a240","",62],["a280","",32],["a2ab","",5],["a2e3","€"],["a2ef",""],["a2fd",""],["a340","",62],["a380","",31," "],["a440","",62],["a480","",32],["a4f4","",10],["a540","",62],["a580","",32],["a5f7","",7],["a640","",62],["a680","",32],["a6b9","",7],["a6d9","",6],["a6ec",""],["a6f3",""],["a6f6","",8],["a740","",62],["a780","",32],["a7c2","",14],["a7f2","",12],["a896","",10],["a8bc",""],["a8bf","ǹ"],["a8c1",""],["a8ea","",20],["a958",""],["a95b",""],["a95d",""],["a989","〾⿰",11],["a997","",12],["a9f0","",14],["aaa1","",93],["aba1","",93],["aca1","",93],["ada1","",93],["aea1","",93],["afa1","",93],["d7fa","",4],["f8a1","",93],["f9a1","",93],["faa1","",93],["fba1","",93],["fca1","",93],["fda1","",93],["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"],["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93]]
 81900  
 81901  /***/ }),
 81902  /* 397 */
 81903  /***/ (function(module, exports, __webpack_require__) {
 81904  
 81905  "use strict";
 81906  
 81907  
 81908  module.exports = __webpack_require__(569).isCI
 81909  
 81910  
 81911  /***/ }),
 81912  /* 398 */
 81913  /***/ (function(module, exports) {
 81914  
 81915  var toString = {}.toString;
 81916  
 81917  module.exports = Array.isArray || function (arr) {
 81918    return toString.call(arr) == '[object Array]';
 81919  };
 81920  
 81921  
 81922  /***/ }),
 81923  /* 399 */
 81924  /***/ (function(module, exports, __webpack_require__) {
 81925  
 81926  var stream = __webpack_require__(23)
 81927  
 81928  
 81929  function isStream (obj) {
 81930    return obj instanceof stream.Stream
 81931  }
 81932  
 81933  
 81934  function isReadable (obj) {
 81935    return isStream(obj) && typeof obj._read == 'function' && typeof obj._readableState == 'object'
 81936  }
 81937  
 81938  
 81939  function isWritable (obj) {
 81940    return isStream(obj) && typeof obj._write == 'function' && typeof obj._writableState == 'object'
 81941  }
 81942  
 81943  
 81944  function isDuplex (obj) {
 81945    return isReadable(obj) && isWritable(obj)
 81946  }
 81947  
 81948  
 81949  module.exports            = isStream
 81950  module.exports.isReadable = isReadable
 81951  module.exports.isWritable = isWritable
 81952  module.exports.isDuplex   = isDuplex
 81953  
 81954  
 81955  /***/ }),
 81956  /* 400 */
 81957  /***/ (function(module, exports, __webpack_require__) {
 81958  
 81959  "use strict";
 81960  /*!
 81961   * mime-types
 81962   * Copyright(c) 2014 Jonathan Ong
 81963   * Copyright(c) 2015 Douglas Christopher Wilson
 81964   * MIT Licensed
 81965   */
 81966  
 81967  
 81968  
 81969  /**
 81970   * Module dependencies.
 81971   * @private
 81972   */
 81973  
 81974  var db = __webpack_require__(759)
 81975  var extname = __webpack_require__(0).extname
 81976  
 81977  /**
 81978   * Module variables.
 81979   * @private
 81980   */
 81981  
 81982  var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/
 81983  var TEXT_TYPE_REGEXP = /^text\//i
 81984  
 81985  /**
 81986   * Module exports.
 81987   * @public
 81988   */
 81989  
 81990  exports.charset = charset
 81991  exports.charsets = { lookup: charset }
 81992  exports.contentType = contentType
 81993  exports.extension = extension
 81994  exports.extensions = Object.create(null)
 81995  exports.lookup = lookup
 81996  exports.types = Object.create(null)
 81997  
 81998  // Populate the extensions/types maps
 81999  populateMaps(exports.extensions, exports.types)
 82000  
 82001  /**
 82002   * Get the default charset for a MIME type.
 82003   *
 82004   * @param {string} type
 82005   * @return {boolean|string}
 82006   */
 82007  
 82008  function charset (type) {
 82009    if (!type || typeof type !== 'string') {
 82010      return false
 82011    }
 82012  
 82013    // TODO: use media-typer
 82014    var match = EXTRACT_TYPE_REGEXP.exec(type)
 82015    var mime = match && db[match[1].toLowerCase()]
 82016  
 82017    if (mime && mime.charset) {
 82018      return mime.charset
 82019    }
 82020  
 82021    // default text/* to utf-8
 82022    if (match && TEXT_TYPE_REGEXP.test(match[1])) {
 82023      return 'UTF-8'
 82024    }
 82025  
 82026    return false
 82027  }
 82028  
 82029  /**
 82030   * Create a full Content-Type header given a MIME type or extension.
 82031   *
 82032   * @param {string} str
 82033   * @return {boolean|string}
 82034   */
 82035  
 82036  function contentType (str) {
 82037    // TODO: should this even be in this module?
 82038    if (!str || typeof str !== 'string') {
 82039      return false
 82040    }
 82041  
 82042    var mime = str.indexOf('/') === -1
 82043      ? exports.lookup(str)
 82044      : str
 82045  
 82046    if (!mime) {
 82047      return false
 82048    }
 82049  
 82050    // TODO: use content-type or other module
 82051    if (mime.indexOf('charset') === -1) {
 82052      var charset = exports.charset(mime)
 82053      if (charset) mime += '; charset=' + charset.toLowerCase()
 82054    }
 82055  
 82056    return mime
 82057  }
 82058  
 82059  /**
 82060   * Get the default extension for a MIME type.
 82061   *
 82062   * @param {string} type
 82063   * @return {boolean|string}
 82064   */
 82065  
 82066  function extension (type) {
 82067    if (!type || typeof type !== 'string') {
 82068      return false
 82069    }
 82070  
 82071    // TODO: use media-typer
 82072    var match = EXTRACT_TYPE_REGEXP.exec(type)
 82073  
 82074    // get extensions
 82075    var exts = match && exports.extensions[match[1].toLowerCase()]
 82076  
 82077    if (!exts || !exts.length) {
 82078      return false
 82079    }
 82080  
 82081    return exts[0]
 82082  }
 82083  
 82084  /**
 82085   * Lookup the MIME type for a file path/extension.
 82086   *
 82087   * @param {string} path
 82088   * @return {boolean|string}
 82089   */
 82090  
 82091  function lookup (path) {
 82092    if (!path || typeof path !== 'string') {
 82093      return false
 82094    }
 82095  
 82096    // get the extension ("ext" or ".ext" or full path)
 82097    var extension = extname('x.' + path)
 82098      .toLowerCase()
 82099      .substr(1)
 82100  
 82101    if (!extension) {
 82102      return false
 82103    }
 82104  
 82105    return exports.types[extension] || false
 82106  }
 82107  
 82108  /**
 82109   * Populate the extensions and types maps.
 82110   * @private
 82111   */
 82112  
 82113  function populateMaps (extensions, types) {
 82114    // source preference (least -> most)
 82115    var preference = ['nginx', 'apache', undefined, 'iana']
 82116  
 82117    Object.keys(db).forEach(function forEachMimeType (type) {
 82118      var mime = db[type]
 82119      var exts = mime.extensions
 82120  
 82121      if (!exts || !exts.length) {
 82122        return
 82123      }
 82124  
 82125      // mime -> extensions
 82126      extensions[type] = exts
 82127  
 82128      // extension -> mime
 82129      for (var i = 0; i < exts.length; i++) {
 82130        var extension = exts[i]
 82131  
 82132        if (types[extension]) {
 82133          var from = preference.indexOf(db[types[extension]].source)
 82134          var to = preference.indexOf(mime.source)
 82135  
 82136          if (types[extension] !== 'application/octet-stream' &&
 82137            (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {
 82138            // skip the remapping
 82139            continue
 82140          }
 82141        }
 82142  
 82143        // set the extension -> mime
 82144        types[extension] = type
 82145      }
 82146    })
 82147  }
 82148  
 82149  
 82150  /***/ }),
 82151  /* 401 */
 82152  /***/ (function(module, exports, __webpack_require__) {
 82153  
 82154  var Stream = __webpack_require__(23)
 82155  
 82156  module.exports = MuteStream
 82157  
 82158  // var out = new MuteStream(process.stdout)
 82159  // argument auto-pipes
 82160  function MuteStream (opts) {
 82161    Stream.apply(this)
 82162    opts = opts || {}
 82163    this.writable = this.readable = true
 82164    this.muted = false
 82165    this.on('pipe', this._onpipe)
 82166    this.replace = opts.replace
 82167  
 82168    // For readline-type situations
 82169    // This much at the start of a line being redrawn after a ctrl char
 82170    // is seen (such as backspace) won't be redrawn as the replacement
 82171    this._prompt = opts.prompt || null
 82172    this._hadControl = false
 82173  }
 82174  
 82175  MuteStream.prototype = Object.create(Stream.prototype)
 82176  
 82177  Object.defineProperty(MuteStream.prototype, 'constructor', {
 82178    value: MuteStream,
 82179    enumerable: false
 82180  })
 82181  
 82182  MuteStream.prototype.mute = function () {
 82183    this.muted = true
 82184  }
 82185  
 82186  MuteStream.prototype.unmute = function () {
 82187    this.muted = false
 82188  }
 82189  
 82190  Object.defineProperty(MuteStream.prototype, '_onpipe', {
 82191    value: onPipe,
 82192    enumerable: false,
 82193    writable: true,
 82194    configurable: true
 82195  })
 82196  
 82197  function onPipe (src) {
 82198    this._src = src
 82199  }
 82200  
 82201  Object.defineProperty(MuteStream.prototype, 'isTTY', {
 82202    get: getIsTTY,
 82203    set: setIsTTY,
 82204    enumerable: true,
 82205    configurable: true
 82206  })
 82207  
 82208  function getIsTTY () {
 82209    return( (this._dest) ? this._dest.isTTY
 82210          : (this._src) ? this._src.isTTY
 82211          : false
 82212          )
 82213  }
 82214  
 82215  // basically just get replace the getter/setter with a regular value
 82216  function setIsTTY (isTTY) {
 82217    Object.defineProperty(this, 'isTTY', {
 82218      value: isTTY,
 82219      enumerable: true,
 82220      writable: true,
 82221      configurable: true
 82222    })
 82223  }
 82224  
 82225  Object.defineProperty(MuteStream.prototype, 'rows', {
 82226    get: function () {
 82227      return( this._dest ? this._dest.rows
 82228            : this._src ? this._src.rows
 82229            : undefined )
 82230    }, enumerable: true, configurable: true })
 82231  
 82232  Object.defineProperty(MuteStream.prototype, 'columns', {
 82233    get: function () {
 82234      return( this._dest ? this._dest.columns
 82235            : this._src ? this._src.columns
 82236            : undefined )
 82237    }, enumerable: true, configurable: true })
 82238  
 82239  
 82240  MuteStream.prototype.pipe = function (dest, options) {
 82241    this._dest = dest
 82242    return Stream.prototype.pipe.call(this, dest, options)
 82243  }
 82244  
 82245  MuteStream.prototype.pause = function () {
 82246    if (this._src) return this._src.pause()
 82247  }
 82248  
 82249  MuteStream.prototype.resume = function () {
 82250    if (this._src) return this._src.resume()
 82251  }
 82252  
 82253  MuteStream.prototype.write = function (c) {
 82254    if (this.muted) {
 82255      if (!this.replace) return true
 82256      if (c.match(/^\u001b/)) {
 82257        if(c.indexOf(this._prompt) === 0) {
 82258          c = c.substr(this._prompt.length);
 82259          c = c.replace(/./g, this.replace);
 82260          c = this._prompt + c;
 82261        }
 82262        this._hadControl = true
 82263        return this.emit('data', c)
 82264      } else {
 82265        if (this._prompt && this._hadControl &&
 82266            c.indexOf(this._prompt) === 0) {
 82267          this._hadControl = false
 82268          this.emit('data', this._prompt)
 82269          c = c.substr(this._prompt.length)
 82270        }
 82271        c = c.toString().replace(/./g, this.replace)
 82272      }
 82273    }
 82274    this.emit('data', c)
 82275  }
 82276  
 82277  MuteStream.prototype.end = function (c) {
 82278    if (this.muted) {
 82279      if (c && this.replace) {
 82280        c = c.toString().replace(/./g, this.replace)
 82281      } else {
 82282        c = null
 82283      }
 82284    }
 82285    if (c) this.emit('data', c)
 82286    this.emit('end')
 82287  }
 82288  
 82289  function proxy (fn) { return function () {
 82290    var d = this._dest
 82291    var s = this._src
 82292    if (d && d[fn]) d[fn].apply(d, arguments)
 82293    if (s && s[fn]) s[fn].apply(s, arguments)
 82294  }}
 82295  
 82296  MuteStream.prototype.destroy = proxy('destroy')
 82297  MuteStream.prototype.destroySoon = proxy('destroySoon')
 82298  MuteStream.prototype.close = proxy('close')
 82299  
 82300  
 82301  /***/ }),
 82302  /* 402 */
 82303  /***/ (function(module, exports, __webpack_require__) {
 82304  
 82305  "use strict";
 82306  
 82307  const url = __webpack_require__(24);
 82308  const punycode = __webpack_require__(332);
 82309  const queryString = __webpack_require__(786);
 82310  const prependHttp = __webpack_require__(777);
 82311  const sortKeys = __webpack_require__(934);
 82312  
 82313  const DEFAULT_PORTS = {
 82314  	'http:': 80,
 82315  	'https:': 443,
 82316  	'ftp:': 21
 82317  };
 82318  
 82319  // Protocols that always contain a `//`` bit
 82320  const slashedProtocol = {
 82321  	http: true,
 82322  	https: true,
 82323  	ftp: true,
 82324  	gopher: true,
 82325  	file: true,
 82326  	'http:': true,
 82327  	'https:': true,
 82328  	'ftp:': true,
 82329  	'gopher:': true,
 82330  	'file:': true
 82331  };
 82332  
 82333  function testParameter(name, filters) {
 82334  	return filters.some(filter => filter instanceof RegExp ? filter.test(name) : filter === name);
 82335  }
 82336  
 82337  module.exports = (str, opts) => {
 82338  	opts = Object.assign({
 82339  		normalizeProtocol: true,
 82340  		normalizeHttps: false,
 82341  		stripFragment: true,
 82342  		stripWWW: true,
 82343  		removeQueryParameters: [/^utm_\w+/i],
 82344  		removeTrailingSlash: true,
 82345  		removeDirectoryIndex: false,
 82346  		sortQueryParameters: true
 82347  	}, opts);
 82348  
 82349  	if (typeof str !== 'string') {
 82350  		throw new TypeError('Expected a string');
 82351  	}
 82352  
 82353  	const hasRelativeProtocol = str.startsWith('//');
 82354  
 82355  	// Prepend protocol
 82356  	str = prependHttp(str.trim()).replace(/^\/\//, 'http://');
 82357  
 82358  	const urlObj = url.parse(str);
 82359  
 82360  	if (opts.normalizeHttps && urlObj.protocol === 'https:') {
 82361  		urlObj.protocol = 'http:';
 82362  	}
 82363  
 82364  	if (!urlObj.hostname && !urlObj.pathname) {
 82365  		throw new Error('Invalid URL');
 82366  	}
 82367  
 82368  	// Prevent these from being used by `url.format`
 82369  	delete urlObj.host;
 82370  	delete urlObj.query;
 82371  
 82372  	// Remove fragment
 82373  	if (opts.stripFragment) {
 82374  		delete urlObj.hash;
 82375  	}
 82376  
 82377  	// Remove default port
 82378  	const port = DEFAULT_PORTS[urlObj.protocol];
 82379  	if (Number(urlObj.port) === port) {
 82380  		delete urlObj.port;
 82381  	}
 82382  
 82383  	// Remove duplicate slashes
 82384  	if (urlObj.pathname) {
 82385  		urlObj.pathname = urlObj.pathname.replace(/\/{2,}/g, '/');
 82386  	}
 82387  
 82388  	// Decode URI octets
 82389  	if (urlObj.pathname) {
 82390  		urlObj.pathname = decodeURI(urlObj.pathname);
 82391  	}
 82392  
 82393  	// Remove directory index
 82394  	if (opts.removeDirectoryIndex === true) {
 82395  		opts.removeDirectoryIndex = [/^index\.[a-z]+$/];
 82396  	}
 82397  
 82398  	if (Array.isArray(opts.removeDirectoryIndex) && opts.removeDirectoryIndex.length > 0) {
 82399  		let pathComponents = urlObj.pathname.split('/');
 82400  		const lastComponent = pathComponents[pathComponents.length - 1];
 82401  
 82402  		if (testParameter(lastComponent, opts.removeDirectoryIndex)) {
 82403  			pathComponents = pathComponents.slice(0, pathComponents.length - 1);
 82404  			urlObj.pathname = pathComponents.slice(1).join('/') + '/';
 82405  		}
 82406  	}
 82407  
 82408  	// Resolve relative paths, but only for slashed protocols
 82409  	if (slashedProtocol[urlObj.protocol]) {
 82410  		const domain = urlObj.protocol + '//' + urlObj.hostname;
 82411  		const relative = url.resolve(domain, urlObj.pathname);
 82412  		urlObj.pathname = relative.replace(domain, '');
 82413  	}
 82414  
 82415  	if (urlObj.hostname) {
 82416  		// IDN to Unicode
 82417  		urlObj.hostname = punycode.toUnicode(urlObj.hostname).toLowerCase();
 82418  
 82419  		// Remove trailing dot
 82420  		urlObj.hostname = urlObj.hostname.replace(/\.$/, '');
 82421  
 82422  		// Remove `www.`
 82423  		if (opts.stripWWW) {
 82424  			urlObj.hostname = urlObj.hostname.replace(/^www\./, '');
 82425  		}
 82426  	}
 82427  
 82428  	// Remove URL with empty query string
 82429  	if (urlObj.search === '?') {
 82430  		delete urlObj.search;
 82431  	}
 82432  
 82433  	const queryParameters = queryString.parse(urlObj.search);
 82434  
 82435  	// Remove query unwanted parameters
 82436  	if (Array.isArray(opts.removeQueryParameters)) {
 82437  		for (const key in queryParameters) {
 82438  			if (testParameter(key, opts.removeQueryParameters)) {
 82439  				delete queryParameters[key];
 82440  			}
 82441  		}
 82442  	}
 82443  
 82444  	// Sort query parameters
 82445  	if (opts.sortQueryParameters) {
 82446  		urlObj.search = queryString.stringify(sortKeys(queryParameters));
 82447  	}
 82448  
 82449  	// Decode query parameters
 82450  	if (urlObj.search !== null) {
 82451  		urlObj.search = decodeURIComponent(urlObj.search);
 82452  	}
 82453  
 82454  	// Take advantage of many of the Node `url` normalizations
 82455  	str = url.format(urlObj);
 82456  
 82457  	// Remove ending `/`
 82458  	if (opts.removeTrailingSlash || urlObj.pathname === '/') {
 82459  		str = str.replace(/\/$/, '');
 82460  	}
 82461  
 82462  	// Restore relative protocol, if applicable
 82463  	if (hasRelativeProtocol && !opts.normalizeProtocol) {
 82464  		str = str.replace(/^http:\/\//, '//');
 82465  	}
 82466  
 82467  	return str;
 82468  };
 82469  
 82470  
 82471  /***/ }),
 82472  /* 403 */
 82473  /***/ (function(module, exports, __webpack_require__) {
 82474  
 82475  "use strict";
 82476  
 82477  
 82478  var replace = String.prototype.replace;
 82479  var percentTwenties = /%20/g;
 82480  
 82481  module.exports = {
 82482      'default': 'RFC3986',
 82483      formatters: {
 82484          RFC1738: function (value) {
 82485              return replace.call(value, percentTwenties, '+');
 82486          },
 82487          RFC3986: function (value) {
 82488              return value;
 82489          }
 82490      },
 82491      RFC1738: 'RFC1738',
 82492      RFC3986: 'RFC3986'
 82493  };
 82494  
 82495  
 82496  /***/ }),
 82497  /* 404 */
 82498  /***/ (function(module, exports, __webpack_require__) {
 82499  
 82500  "use strict";
 82501  
 82502  
 82503  var stringify = __webpack_require__(785);
 82504  var parse = __webpack_require__(784);
 82505  var formats = __webpack_require__(403);
 82506  
 82507  module.exports = {
 82508      formats: formats,
 82509      parse: parse,
 82510      stringify: stringify
 82511  };
 82512  
 82513  
 82514  /***/ }),
 82515  /* 405 */
 82516  /***/ (function(module, exports, __webpack_require__) {
 82517  
 82518  "use strict";
 82519  
 82520  
 82521  var has = Object.prototype.hasOwnProperty;
 82522  
 82523  var hexTable = (function () {
 82524      var array = [];
 82525      for (var i = 0; i < 256; ++i) {
 82526          array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());
 82527      }
 82528  
 82529      return array;
 82530  }());
 82531  
 82532  var compactQueue = function compactQueue(queue) {
 82533      var obj;
 82534  
 82535      while (queue.length) {
 82536          var item = queue.pop();
 82537          obj = item.obj[item.prop];
 82538  
 82539          if (Array.isArray(obj)) {
 82540              var compacted = [];
 82541  
 82542              for (var j = 0; j < obj.length; ++j) {
 82543                  if (typeof obj[j] !== 'undefined') {
 82544                      compacted.push(obj[j]);
 82545                  }
 82546              }
 82547  
 82548              item.obj[item.prop] = compacted;
 82549          }
 82550      }
 82551  
 82552      return obj;
 82553  };
 82554  
 82555  var arrayToObject = function arrayToObject(source, options) {
 82556      var obj = options && options.plainObjects ? Object.create(null) : {};
 82557      for (var i = 0; i < source.length; ++i) {
 82558          if (typeof source[i] !== 'undefined') {
 82559              obj[i] = source[i];
 82560          }
 82561      }
 82562  
 82563      return obj;
 82564  };
 82565  
 82566  var merge = function merge(target, source, options) {
 82567      if (!source) {
 82568          return target;
 82569      }
 82570  
 82571      if (typeof source !== 'object') {
 82572          if (Array.isArray(target)) {
 82573              target.push(source);
 82574          } else if (typeof target === 'object') {
 82575              if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) {
 82576                  target[source] = true;
 82577              }
 82578          } else {
 82579              return [target, source];
 82580          }
 82581  
 82582          return target;
 82583      }
 82584  
 82585      if (typeof target !== 'object') {
 82586          return [target].concat(source);
 82587      }
 82588  
 82589      var mergeTarget = target;
 82590      if (Array.isArray(target) && !Array.isArray(source)) {
 82591          mergeTarget = arrayToObject(target, options);
 82592      }
 82593  
 82594      if (Array.isArray(target) && Array.isArray(source)) {
 82595          source.forEach(function (item, i) {
 82596              if (has.call(target, i)) {
 82597                  if (target[i] && typeof target[i] === 'object') {
 82598                      target[i] = merge(target[i], item, options);
 82599                  } else {
 82600                      target.push(item);
 82601                  }
 82602              } else {
 82603                  target[i] = item;
 82604              }
 82605          });
 82606          return target;
 82607      }
 82608  
 82609      return Object.keys(source).reduce(function (acc, key) {
 82610          var value = source[key];
 82611  
 82612          if (has.call(acc, key)) {
 82613              acc[key] = merge(acc[key], value, options);
 82614          } else {
 82615              acc[key] = value;
 82616          }
 82617          return acc;
 82618      }, mergeTarget);
 82619  };
 82620  
 82621  var assign = function assignSingleSource(target, source) {
 82622      return Object.keys(source).reduce(function (acc, key) {
 82623          acc[key] = source[key];
 82624          return acc;
 82625      }, target);
 82626  };
 82627  
 82628  var decode = function (str) {
 82629      try {
 82630          return decodeURIComponent(str.replace(/\+/g, ' '));
 82631      } catch (e) {
 82632          return str;
 82633      }
 82634  };
 82635  
 82636  var encode = function encode(str) {
 82637      // This code was originally written by Brian White (mscdex) for the io.js core querystring library.
 82638      // It has been adapted here for stricter adherence to RFC 3986
 82639      if (str.length === 0) {
 82640          return str;
 82641      }
 82642  
 82643      var string = typeof str === 'string' ? str : String(str);
 82644  
 82645      var out = '';
 82646      for (var i = 0; i < string.length; ++i) {
 82647          var c = string.charCodeAt(i);
 82648  
 82649          if (
 82650              c === 0x2D // -
 82651              || c === 0x2E // .
 82652              || c === 0x5F // _
 82653              || c === 0x7E // ~
 82654              || (c >= 0x30 && c <= 0x39) // 0-9
 82655              || (c >= 0x41 && c <= 0x5A) // a-z
 82656              || (c >= 0x61 && c <= 0x7A) // A-Z
 82657          ) {
 82658              out += string.charAt(i);
 82659              continue;
 82660          }
 82661  
 82662          if (c < 0x80) {
 82663              out = out + hexTable[c];
 82664              continue;
 82665          }
 82666  
 82667          if (c < 0x800) {
 82668              out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);
 82669              continue;
 82670          }
 82671  
 82672          if (c < 0xD800 || c >= 0xE000) {
 82673              out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);
 82674              continue;
 82675          }
 82676  
 82677          i += 1;
 82678          c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));
 82679          out += hexTable[0xF0 | (c >> 18)]
 82680              + hexTable[0x80 | ((c >> 12) & 0x3F)]
 82681              + hexTable[0x80 | ((c >> 6) & 0x3F)]
 82682              + hexTable[0x80 | (c & 0x3F)];
 82683      }
 82684  
 82685      return out;
 82686  };
 82687  
 82688  var compact = function compact(value) {
 82689      var queue = [{ obj: { o: value }, prop: 'o' }];
 82690      var refs = [];
 82691  
 82692      for (var i = 0; i < queue.length; ++i) {
 82693          var item = queue[i];
 82694          var obj = item.obj[item.prop];
 82695  
 82696          var keys = Object.keys(obj);
 82697          for (var j = 0; j < keys.length; ++j) {
 82698              var key = keys[j];
 82699              var val = obj[key];
 82700              if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {
 82701                  queue.push({ obj: obj, prop: key });
 82702                  refs.push(val);
 82703              }
 82704          }
 82705      }
 82706  
 82707      return compactQueue(queue);
 82708  };
 82709  
 82710  var isRegExp = function isRegExp(obj) {
 82711      return Object.prototype.toString.call(obj) === '[object RegExp]';
 82712  };
 82713  
 82714  var isBuffer = function isBuffer(obj) {
 82715      if (obj === null || typeof obj === 'undefined') {
 82716          return false;
 82717      }
 82718  
 82719      return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
 82720  };
 82721  
 82722  module.exports = {
 82723      arrayToObject: arrayToObject,
 82724      assign: assign,
 82725      compact: compact,
 82726      decode: decode,
 82727      encode: encode,
 82728      isBuffer: isBuffer,
 82729      isRegExp: isRegExp,
 82730      merge: merge
 82731  };
 82732  
 82733  
 82734  /***/ }),
 82735  /* 406 */
 82736  /***/ (function(module, exports, __webpack_require__) {
 82737  
 82738  "use strict";
 82739  // Copyright Joyent, Inc. and other Node contributors.
 82740  //
 82741  // Permission is hereby granted, free of charge, to any person obtaining a
 82742  // copy of this software and associated documentation files (the
 82743  // "Software"), to deal in the Software without restriction, including
 82744  // without limitation the rights to use, copy, modify, merge, publish,
 82745  // distribute, sublicense, and/or sell copies of the Software, and to permit
 82746  // persons to whom the Software is furnished to do so, subject to the
 82747  // following conditions:
 82748  //
 82749  // The above copyright notice and this permission notice shall be included
 82750  // in all copies or substantial portions of the Software.
 82751  //
 82752  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 82753  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 82754  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 82755  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 82756  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 82757  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 82758  // USE OR OTHER DEALINGS IN THE SOFTWARE.
 82759  
 82760  
 82761  
 82762  /*<replacement>*/
 82763  
 82764  var pna = __webpack_require__(181);
 82765  /*</replacement>*/
 82766  
 82767  module.exports = Readable;
 82768  
 82769  /*<replacement>*/
 82770  var isArray = __webpack_require__(398);
 82771  /*</replacement>*/
 82772  
 82773  /*<replacement>*/
 82774  var Duplex;
 82775  /*</replacement>*/
 82776  
 82777  Readable.ReadableState = ReadableState;
 82778  
 82779  /*<replacement>*/
 82780  var EE = __webpack_require__(77).EventEmitter;
 82781  
 82782  var EElistenerCount = function (emitter, type) {
 82783    return emitter.listeners(type).length;
 82784  };
 82785  /*</replacement>*/
 82786  
 82787  /*<replacement>*/
 82788  var Stream = __webpack_require__(410);
 82789  /*</replacement>*/
 82790  
 82791  /*<replacement>*/
 82792  
 82793  var Buffer = __webpack_require__(45).Buffer;
 82794  var OurUint8Array = global.Uint8Array || function () {};
 82795  function _uint8ArrayToBuffer(chunk) {
 82796    return Buffer.from(chunk);
 82797  }
 82798  function _isUint8Array(obj) {
 82799    return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
 82800  }
 82801  
 82802  /*</replacement>*/
 82803  
 82804  /*<replacement>*/
 82805  var util = __webpack_require__(113);
 82806  util.inherits = __webpack_require__(61);
 82807  /*</replacement>*/
 82808  
 82809  /*<replacement>*/
 82810  var debugUtil = __webpack_require__(3);
 82811  var debug = void 0;
 82812  if (debugUtil && debugUtil.debuglog) {
 82813    debug = debugUtil.debuglog('stream');
 82814  } else {
 82815    debug = function () {};
 82816  }
 82817  /*</replacement>*/
 82818  
 82819  var BufferList = __webpack_require__(793);
 82820  var destroyImpl = __webpack_require__(409);
 82821  var StringDecoder;
 82822  
 82823  util.inherits(Readable, Stream);
 82824  
 82825  var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
 82826  
 82827  function prependListener(emitter, event, fn) {
 82828    // Sadly this is not cacheable as some libraries bundle their own
 82829    // event emitter implementation with them.
 82830    if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);
 82831  
 82832    // This is a hack to make sure that our error handler is attached before any
 82833    // userland ones.  NEVER DO THIS. This is here only because this code needs
 82834    // to continue to work with older versions of Node.js that do not include
 82835    // the prependListener() method. The goal is to eventually remove this hack.
 82836    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]];
 82837  }
 82838  
 82839  function ReadableState(options, stream) {
 82840    Duplex = Duplex || __webpack_require__(116);
 82841  
 82842    options = options || {};
 82843  
 82844    // Duplex streams are both readable and writable, but share
 82845    // the same options object.
 82846    // However, some cases require setting options to different
 82847    // values for the readable and the writable sides of the duplex stream.
 82848    // These options can be provided separately as readableXXX and writableXXX.
 82849    var isDuplex = stream instanceof Duplex;
 82850  
 82851    // object stream flag. Used to make read(n) ignore n and to
 82852    // make all the buffer merging and length checks go away
 82853    this.objectMode = !!options.objectMode;
 82854  
 82855    if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
 82856  
 82857    // the point at which it stops calling _read() to fill the buffer
 82858    // Note: 0 is a valid value, means "don't call _read preemptively ever"
 82859    var hwm = options.highWaterMark;
 82860    var readableHwm = options.readableHighWaterMark;
 82861    var defaultHwm = this.objectMode ? 16 : 16 * 1024;
 82862  
 82863    if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;
 82864  
 82865    // cast to ints.
 82866    this.highWaterMark = Math.floor(this.highWaterMark);
 82867  
 82868    // A linked list is used to store data chunks instead of an array because the
 82869    // linked list can remove elements from the beginning faster than
 82870    // array.shift()
 82871    this.buffer = new BufferList();
 82872    this.length = 0;
 82873    this.pipes = null;
 82874    this.pipesCount = 0;
 82875    this.flowing = null;
 82876    this.ended = false;
 82877    this.endEmitted = false;
 82878    this.reading = false;
 82879  
 82880    // a flag to be able to tell if the event 'readable'/'data' is emitted
 82881    // immediately, or on a later tick.  We set this to true at first, because
 82882    // any actions that shouldn't happen until "later" should generally also
 82883    // not happen before the first read call.
 82884    this.sync = true;
 82885  
 82886    // whenever we return null, then we set a flag to say
 82887    // that we're awaiting a 'readable' event emission.
 82888    this.needReadable = false;
 82889    this.emittedReadable = false;
 82890    this.readableListening = false;
 82891    this.resumeScheduled = false;
 82892  
 82893    // has it been destroyed
 82894    this.destroyed = false;
 82895  
 82896    // Crypto is kind of old and crusty.  Historically, its default string
 82897    // encoding is 'binary' so we have to make this configurable.
 82898    // Everything else in the universe uses 'utf8', though.
 82899    this.defaultEncoding = options.defaultEncoding || 'utf8';
 82900  
 82901    // the number of writers that are awaiting a drain event in .pipe()s
 82902    this.awaitDrain = 0;
 82903  
 82904    // if true, a maybeReadMore has been scheduled
 82905    this.readingMore = false;
 82906  
 82907    this.decoder = null;
 82908    this.encoding = null;
 82909    if (options.encoding) {
 82910      if (!StringDecoder) StringDecoder = __webpack_require__(458).StringDecoder;
 82911      this.decoder = new StringDecoder(options.encoding);
 82912      this.encoding = options.encoding;
 82913    }
 82914  }
 82915  
 82916  function Readable(options) {
 82917    Duplex = Duplex || __webpack_require__(116);
 82918  
 82919    if (!(this instanceof Readable)) return new Readable(options);
 82920  
 82921    this._readableState = new ReadableState(options, this);
 82922  
 82923    // legacy
 82924    this.readable = true;
 82925  
 82926    if (options) {
 82927      if (typeof options.read === 'function') this._read = options.read;
 82928  
 82929      if (typeof options.destroy === 'function') this._destroy = options.destroy;
 82930    }
 82931  
 82932    Stream.call(this);
 82933  }
 82934  
 82935  Object.defineProperty(Readable.prototype, 'destroyed', {
 82936    get: function () {
 82937      if (this._readableState === undefined) {
 82938        return false;
 82939      }
 82940      return this._readableState.destroyed;
 82941    },
 82942    set: function (value) {
 82943      // we ignore the value if the stream
 82944      // has not been initialized yet
 82945      if (!this._readableState) {
 82946        return;
 82947      }
 82948  
 82949      // backward compatibility, the user is explicitly
 82950      // managing destroyed
 82951      this._readableState.destroyed = value;
 82952    }
 82953  });
 82954  
 82955  Readable.prototype.destroy = destroyImpl.destroy;
 82956  Readable.prototype._undestroy = destroyImpl.undestroy;
 82957  Readable.prototype._destroy = function (err, cb) {
 82958    this.push(null);
 82959    cb(err);
 82960  };
 82961  
 82962  // Manually shove something into the read() buffer.
 82963  // This returns true if the highWaterMark has not been hit yet,
 82964  // similar to how Writable.write() returns true if you should
 82965  // write() some more.
 82966  Readable.prototype.push = function (chunk, encoding) {
 82967    var state = this._readableState;
 82968    var skipChunkCheck;
 82969  
 82970    if (!state.objectMode) {
 82971      if (typeof chunk === 'string') {
 82972        encoding = encoding || state.defaultEncoding;
 82973        if (encoding !== state.encoding) {
 82974          chunk = Buffer.from(chunk, encoding);
 82975          encoding = '';
 82976        }
 82977        skipChunkCheck = true;
 82978      }
 82979    } else {
 82980      skipChunkCheck = true;
 82981    }
 82982  
 82983    return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
 82984  };
 82985  
 82986  // Unshift should *always* be something directly out of read()
 82987  Readable.prototype.unshift = function (chunk) {
 82988    return readableAddChunk(this, chunk, null, true, false);
 82989  };
 82990  
 82991  function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
 82992    var state = stream._readableState;
 82993    if (chunk === null) {
 82994      state.reading = false;
 82995      onEofChunk(stream, state);
 82996    } else {
 82997      var er;
 82998      if (!skipChunkCheck) er = chunkInvalid(state, chunk);
 82999      if (er) {
 83000        stream.emit('error', er);
 83001      } else if (state.objectMode || chunk && chunk.length > 0) {
 83002        if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
 83003          chunk = _uint8ArrayToBuffer(chunk);
 83004        }
 83005  
 83006        if (addToFront) {
 83007          if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
 83008        } else if (state.ended) {
 83009          stream.emit('error', new Error('stream.push() after EOF'));
 83010        } else {
 83011          state.reading = false;
 83012          if (state.decoder && !encoding) {
 83013            chunk = state.decoder.write(chunk);
 83014            if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
 83015          } else {
 83016            addChunk(stream, state, chunk, false);
 83017          }
 83018        }
 83019      } else if (!addToFront) {
 83020        state.reading = false;
 83021      }
 83022    }
 83023  
 83024    return needMoreData(state);
 83025  }
 83026  
 83027  function addChunk(stream, state, chunk, addToFront) {
 83028    if (state.flowing && state.length === 0 && !state.sync) {
 83029      stream.emit('data', chunk);
 83030      stream.read(0);
 83031    } else {
 83032      // update the buffer info.
 83033      state.length += state.objectMode ? 1 : chunk.length;
 83034      if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
 83035  
 83036      if (state.needReadable) emitReadable(stream);
 83037    }
 83038    maybeReadMore(stream, state);
 83039  }
 83040  
 83041  function chunkInvalid(state, chunk) {
 83042    var er;
 83043    if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
 83044      er = new TypeError('Invalid non-string/buffer chunk');
 83045    }
 83046    return er;
 83047  }
 83048  
 83049  // if it's past the high water mark, we can push in some more.
 83050  // Also, if we have no data yet, we can stand some
 83051  // more bytes.  This is to work around cases where hwm=0,
 83052  // such as the repl.  Also, if the push() triggered a
 83053  // readable event, and the user called read(largeNumber) such that
 83054  // needReadable was set, then we ought to push more, so that another
 83055  // 'readable' event will be triggered.
 83056  function needMoreData(state) {
 83057    return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
 83058  }
 83059  
 83060  Readable.prototype.isPaused = function () {
 83061    return this._readableState.flowing === false;
 83062  };
 83063  
 83064  // backwards compatibility.
 83065  Readable.prototype.setEncoding = function (enc) {
 83066    if (!StringDecoder) StringDecoder = __webpack_require__(458).StringDecoder;
 83067    this._readableState.decoder = new StringDecoder(enc);
 83068    this._readableState.encoding = enc;
 83069    return this;
 83070  };
 83071  
 83072  // Don't raise the hwm > 8MB
 83073  var MAX_HWM = 0x800000;
 83074  function computeNewHighWaterMark(n) {
 83075    if (n >= MAX_HWM) {
 83076      n = MAX_HWM;
 83077    } else {
 83078      // Get the next highest power of 2 to prevent increasing hwm excessively in
 83079      // tiny amounts
 83080      n--;
 83081      n |= n >>> 1;
 83082      n |= n >>> 2;
 83083      n |= n >>> 4;
 83084      n |= n >>> 8;
 83085      n |= n >>> 16;
 83086      n++;
 83087    }
 83088    return n;
 83089  }
 83090  
 83091  // This function is designed to be inlinable, so please take care when making
 83092  // changes to the function body.
 83093  function howMuchToRead(n, state) {
 83094    if (n <= 0 || state.length === 0 && state.ended) return 0;
 83095    if (state.objectMode) return 1;
 83096    if (n !== n) {
 83097      // Only flow one buffer at a time
 83098      if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
 83099    }
 83100    // If we're asking for more than the current hwm, then raise the hwm.
 83101    if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
 83102    if (n <= state.length) return n;
 83103    // Don't have enough
 83104    if (!state.ended) {
 83105      state.needReadable = true;
 83106      return 0;
 83107    }
 83108    return state.length;
 83109  }
 83110  
 83111  // you can override either this method, or the async _read(n) below.
 83112  Readable.prototype.read = function (n) {
 83113    debug('read', n);
 83114    n = parseInt(n, 10);
 83115    var state = this._readableState;
 83116    var nOrig = n;
 83117  
 83118    if (n !== 0) state.emittedReadable = false;
 83119  
 83120    // if we're doing read(0) to trigger a readable event, but we
 83121    // already have a bunch of data in the buffer, then just trigger
 83122    // the 'readable' event and move on.
 83123    if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
 83124      debug('read: emitReadable', state.length, state.ended);
 83125      if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
 83126      return null;
 83127    }
 83128  
 83129    n = howMuchToRead(n, state);
 83130  
 83131    // if we've ended, and we're now clear, then finish it up.
 83132    if (n === 0 && state.ended) {
 83133      if (state.length === 0) endReadable(this);
 83134      return null;
 83135    }
 83136  
 83137    // All the actual chunk generation logic needs to be
 83138    // *below* the call to _read.  The reason is that in certain
 83139    // synthetic stream cases, such as passthrough streams, _read
 83140    // may be a completely synchronous operation which may change
 83141    // the state of the read buffer, providing enough data when
 83142    // before there was *not* enough.
 83143    //
 83144    // So, the steps are:
 83145    // 1. Figure out what the state of things will be after we do
 83146    // a read from the buffer.
 83147    //
 83148    // 2. If that resulting state will trigger a _read, then call _read.
 83149    // Note that this may be asynchronous, or synchronous.  Yes, it is
 83150    // deeply ugly to write APIs this way, but that still doesn't mean
 83151    // that the Readable class should behave improperly, as streams are
 83152    // designed to be sync/async agnostic.
 83153    // Take note if the _read call is sync or async (ie, if the read call
 83154    // has returned yet), so that we know whether or not it's safe to emit
 83155    // 'readable' etc.
 83156    //
 83157    // 3. Actually pull the requested chunks out of the buffer and return.
 83158  
 83159    // if we need a readable event, then we need to do some reading.
 83160    var doRead = state.needReadable;
 83161    debug('need readable', doRead);
 83162  
 83163    // if we currently have less than the highWaterMark, then also read some
 83164    if (state.length === 0 || state.length - n < state.highWaterMark) {
 83165      doRead = true;
 83166      debug('length less than watermark', doRead);
 83167    }
 83168  
 83169    // however, if we've ended, then there's no point, and if we're already
 83170    // reading, then it's unnecessary.
 83171    if (state.ended || state.reading) {
 83172      doRead = false;
 83173      debug('reading or ended', doRead);
 83174    } else if (doRead) {
 83175      debug('do read');
 83176      state.reading = true;
 83177      state.sync = true;
 83178      // if the length is currently zero, then we *need* a readable event.
 83179      if (state.length === 0) state.needReadable = true;
 83180      // call internal read method
 83181      this._read(state.highWaterMark);
 83182      state.sync = false;
 83183      // If _read pushed data synchronously, then `reading` will be false,
 83184      // and we need to re-evaluate how much data we can return to the user.
 83185      if (!state.reading) n = howMuchToRead(nOrig, state);
 83186    }
 83187  
 83188    var ret;
 83189    if (n > 0) ret = fromList(n, state);else ret = null;
 83190  
 83191    if (ret === null) {
 83192      state.needReadable = true;
 83193      n = 0;
 83194    } else {
 83195      state.length -= n;
 83196    }
 83197  
 83198    if (state.length === 0) {
 83199      // If we have nothing in the buffer, then we want to know
 83200      // as soon as we *do* get something into the buffer.
 83201      if (!state.ended) state.needReadable = true;
 83202  
 83203      // If we tried to read() past the EOF, then emit end on the next tick.
 83204      if (nOrig !== n && state.ended) endReadable(this);
 83205    }
 83206  
 83207    if (ret !== null) this.emit('data', ret);
 83208  
 83209    return ret;
 83210  };
 83211  
 83212  function onEofChunk(stream, state) {
 83213    if (state.ended) return;
 83214    if (state.decoder) {
 83215      var chunk = state.decoder.end();
 83216      if (chunk && chunk.length) {
 83217        state.buffer.push(chunk);
 83218        state.length += state.objectMode ? 1 : chunk.length;
 83219      }
 83220    }
 83221    state.ended = true;
 83222  
 83223    // emit 'readable' now to make sure it gets picked up.
 83224    emitReadable(stream);
 83225  }
 83226  
 83227  // Don't emit readable right away in sync mode, because this can trigger
 83228  // another read() call => stack overflow.  This way, it might trigger
 83229  // a nextTick recursion warning, but that's not so bad.
 83230  function emitReadable(stream) {
 83231    var state = stream._readableState;
 83232    state.needReadable = false;
 83233    if (!state.emittedReadable) {
 83234      debug('emitReadable', state.flowing);
 83235      state.emittedReadable = true;
 83236      if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);
 83237    }
 83238  }
 83239  
 83240  function emitReadable_(stream) {
 83241    debug('emit readable');
 83242    stream.emit('readable');
 83243    flow(stream);
 83244  }
 83245  
 83246  // at this point, the user has presumably seen the 'readable' event,
 83247  // and called read() to consume some data.  that may have triggered
 83248  // in turn another _read(n) call, in which case reading = true if
 83249  // it's in progress.
 83250  // However, if we're not ended, or reading, and the length < hwm,
 83251  // then go ahead and try to read some more preemptively.
 83252  function maybeReadMore(stream, state) {
 83253    if (!state.readingMore) {
 83254      state.readingMore = true;
 83255      pna.nextTick(maybeReadMore_, stream, state);
 83256    }
 83257  }
 83258  
 83259  function maybeReadMore_(stream, state) {
 83260    var len = state.length;
 83261    while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
 83262      debug('maybeReadMore read 0');
 83263      stream.read(0);
 83264      if (len === state.length)
 83265        // didn't get any data, stop spinning.
 83266        break;else len = state.length;
 83267    }
 83268    state.readingMore = false;
 83269  }
 83270  
 83271  // abstract method.  to be overridden in specific implementation classes.
 83272  // call cb(er, data) where data is <= n in length.
 83273  // for virtual (non-string, non-buffer) streams, "length" is somewhat
 83274  // arbitrary, and perhaps not very meaningful.
 83275  Readable.prototype._read = function (n) {
 83276    this.emit('error', new Error('_read() is not implemented'));
 83277  };
 83278  
 83279  Readable.prototype.pipe = function (dest, pipeOpts) {
 83280    var src = this;
 83281    var state = this._readableState;
 83282  
 83283    switch (state.pipesCount) {
 83284      case 0:
 83285        state.pipes = dest;
 83286        break;
 83287      case 1:
 83288        state.pipes = [state.pipes, dest];
 83289        break;
 83290      default:
 83291        state.pipes.push(dest);
 83292        break;
 83293    }
 83294    state.pipesCount += 1;
 83295    debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
 83296  
 83297    var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
 83298  
 83299    var endFn = doEnd ? onend : unpipe;
 83300    if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);
 83301  
 83302    dest.on('unpipe', onunpipe);
 83303    function onunpipe(readable, unpipeInfo) {
 83304      debug('onunpipe');
 83305      if (readable === src) {
 83306        if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
 83307          unpipeInfo.hasUnpiped = true;
 83308          cleanup();
 83309        }
 83310      }
 83311    }
 83312  
 83313    function onend() {
 83314      debug('onend');
 83315      dest.end();
 83316    }
 83317  
 83318    // when the dest drains, it reduces the awaitDrain counter
 83319    // on the source.  This would be more elegant with a .once()
 83320    // handler in flow(), but adding and removing repeatedly is
 83321    // too slow.
 83322    var ondrain = pipeOnDrain(src);
 83323    dest.on('drain', ondrain);
 83324  
 83325    var cleanedUp = false;
 83326    function cleanup() {
 83327      debug('cleanup');
 83328      // cleanup event handlers once the pipe is broken
 83329      dest.removeListener('close', onclose);
 83330      dest.removeListener('finish', onfinish);
 83331      dest.removeListener('drain', ondrain);
 83332      dest.removeListener('error', onerror);
 83333      dest.removeListener('unpipe', onunpipe);
 83334      src.removeListener('end', onend);
 83335      src.removeListener('end', unpipe);
 83336      src.removeListener('data', ondata);
 83337  
 83338      cleanedUp = true;
 83339  
 83340      // if the reader is waiting for a drain event from this
 83341      // specific writer, then it would cause it to never start
 83342      // flowing again.
 83343      // So, if this is awaiting a drain, then we just call it now.
 83344      // If we don't know, then assume that we are waiting for one.
 83345      if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
 83346    }
 83347  
 83348    // If the user pushes more data while we're writing to dest then we'll end up
 83349    // in ondata again. However, we only want to increase awaitDrain once because
 83350    // dest will only emit one 'drain' event for the multiple writes.
 83351    // => Introduce a guard on increasing awaitDrain.
 83352    var increasedAwaitDrain = false;
 83353    src.on('data', ondata);
 83354    function ondata(chunk) {
 83355      debug('ondata');
 83356      increasedAwaitDrain = false;
 83357      var ret = dest.write(chunk);
 83358      if (false === ret && !increasedAwaitDrain) {
 83359        // If the user unpiped during `dest.write()`, it is possible
 83360        // to get stuck in a permanently paused state if that write
 83361        // also returned false.
 83362        // => Check whether `dest` is still a piping destination.
 83363        if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
 83364          debug('false write response, pause', src._readableState.awaitDrain);
 83365          src._readableState.awaitDrain++;
 83366          increasedAwaitDrain = true;
 83367        }
 83368        src.pause();
 83369      }
 83370    }
 83371  
 83372    // if the dest has an error, then stop piping into it.
 83373    // however, don't suppress the throwing behavior for this.
 83374    function onerror(er) {
 83375      debug('onerror', er);
 83376      unpipe();
 83377      dest.removeListener('error', onerror);
 83378      if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
 83379    }
 83380  
 83381    // Make sure our error handler is attached before userland ones.
 83382    prependListener(dest, 'error', onerror);
 83383  
 83384    // Both close and finish should trigger unpipe, but only once.
 83385    function onclose() {
 83386      dest.removeListener('finish', onfinish);
 83387      unpipe();
 83388    }
 83389    dest.once('close', onclose);
 83390    function onfinish() {
 83391      debug('onfinish');
 83392      dest.removeListener('close', onclose);
 83393      unpipe();
 83394    }
 83395    dest.once('finish', onfinish);
 83396  
 83397    function unpipe() {
 83398      debug('unpipe');
 83399      src.unpipe(dest);
 83400    }
 83401  
 83402    // tell the dest that it's being piped to
 83403    dest.emit('pipe', src);
 83404  
 83405    // start the flow if it hasn't been started already.
 83406    if (!state.flowing) {
 83407      debug('pipe resume');
 83408      src.resume();
 83409    }
 83410  
 83411    return dest;
 83412  };
 83413  
 83414  function pipeOnDrain(src) {
 83415    return function () {
 83416      var state = src._readableState;
 83417      debug('pipeOnDrain', state.awaitDrain);
 83418      if (state.awaitDrain) state.awaitDrain--;
 83419      if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
 83420        state.flowing = true;
 83421        flow(src);
 83422      }
 83423    };
 83424  }
 83425  
 83426  Readable.prototype.unpipe = function (dest) {
 83427    var state = this._readableState;
 83428    var unpipeInfo = { hasUnpiped: false };
 83429  
 83430    // if we're not piping anywhere, then do nothing.
 83431    if (state.pipesCount === 0) return this;
 83432  
 83433    // just one destination.  most common case.
 83434    if (state.pipesCount === 1) {
 83435      // passed in one, but it's not the right one.
 83436      if (dest && dest !== state.pipes) return this;
 83437  
 83438      if (!dest) dest = state.pipes;
 83439  
 83440      // got a match.
 83441      state.pipes = null;
 83442      state.pipesCount = 0;
 83443      state.flowing = false;
 83444      if (dest) dest.emit('unpipe', this, unpipeInfo);
 83445      return this;
 83446    }
 83447  
 83448    // slow case. multiple pipe destinations.
 83449  
 83450    if (!dest) {
 83451      // remove all.
 83452      var dests = state.pipes;
 83453      var len = state.pipesCount;
 83454      state.pipes = null;
 83455      state.pipesCount = 0;
 83456      state.flowing = false;
 83457  
 83458      for (var i = 0; i < len; i++) {
 83459        dests[i].emit('unpipe', this, unpipeInfo);
 83460      }return this;
 83461    }
 83462  
 83463    // try to find the right one.
 83464    var index = indexOf(state.pipes, dest);
 83465    if (index === -1) return this;
 83466  
 83467    state.pipes.splice(index, 1);
 83468    state.pipesCount -= 1;
 83469    if (state.pipesCount === 1) state.pipes = state.pipes[0];
 83470  
 83471    dest.emit('unpipe', this, unpipeInfo);
 83472  
 83473    return this;
 83474  };
 83475  
 83476  // set up data events if they are asked for
 83477  // Ensure readable listeners eventually get something
 83478  Readable.prototype.on = function (ev, fn) {
 83479    var res = Stream.prototype.on.call(this, ev, fn);
 83480  
 83481    if (ev === 'data') {
 83482      // Start flowing on next tick if stream isn't explicitly paused
 83483      if (this._readableState.flowing !== false) this.resume();
 83484    } else if (ev === 'readable') {
 83485      var state = this._readableState;
 83486      if (!state.endEmitted && !state.readableListening) {
 83487        state.readableListening = state.needReadable = true;
 83488        state.emittedReadable = false;
 83489        if (!state.reading) {
 83490          pna.nextTick(nReadingNextTick, this);
 83491        } else if (state.length) {
 83492          emitReadable(this);
 83493        }
 83494      }
 83495    }
 83496  
 83497    return res;
 83498  };
 83499  Readable.prototype.addListener = Readable.prototype.on;
 83500  
 83501  function nReadingNextTick(self) {
 83502    debug('readable nexttick read 0');
 83503    self.read(0);
 83504  }
 83505  
 83506  // pause() and resume() are remnants of the legacy readable stream API
 83507  // If the user uses them, then switch into old mode.
 83508  Readable.prototype.resume = function () {
 83509    var state = this._readableState;
 83510    if (!state.flowing) {
 83511      debug('resume');
 83512      state.flowing = true;
 83513      resume(this, state);
 83514    }
 83515    return this;
 83516  };
 83517  
 83518  function resume(stream, state) {
 83519    if (!state.resumeScheduled) {
 83520      state.resumeScheduled = true;
 83521      pna.nextTick(resume_, stream, state);
 83522    }
 83523  }
 83524  
 83525  function resume_(stream, state) {
 83526    if (!state.reading) {
 83527      debug('resume read 0');
 83528      stream.read(0);
 83529    }
 83530  
 83531    state.resumeScheduled = false;
 83532    state.awaitDrain = 0;
 83533    stream.emit('resume');
 83534    flow(stream);
 83535    if (state.flowing && !state.reading) stream.read(0);
 83536  }
 83537  
 83538  Readable.prototype.pause = function () {
 83539    debug('call pause flowing=%j', this._readableState.flowing);
 83540    if (false !== this._readableState.flowing) {
 83541      debug('pause');
 83542      this._readableState.flowing = false;
 83543      this.emit('pause');
 83544    }
 83545    return this;
 83546  };
 83547  
 83548  function flow(stream) {
 83549    var state = stream._readableState;
 83550    debug('flow', state.flowing);
 83551    while (state.flowing && stream.read() !== null) {}
 83552  }
 83553  
 83554  // wrap an old-style stream as the async data source.
 83555  // This is *not* part of the readable stream interface.
 83556  // It is an ugly unfortunate mess of history.
 83557  Readable.prototype.wrap = function (stream) {
 83558    var _this = this;
 83559  
 83560    var state = this._readableState;
 83561    var paused = false;
 83562  
 83563    stream.on('end', function () {
 83564      debug('wrapped end');
 83565      if (state.decoder && !state.ended) {
 83566        var chunk = state.decoder.end();
 83567        if (chunk && chunk.length) _this.push(chunk);
 83568      }
 83569  
 83570      _this.push(null);
 83571    });
 83572  
 83573    stream.on('data', function (chunk) {
 83574      debug('wrapped data');
 83575      if (state.decoder) chunk = state.decoder.write(chunk);
 83576  
 83577      // don't skip over falsy values in objectMode
 83578      if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
 83579  
 83580      var ret = _this.push(chunk);
 83581      if (!ret) {
 83582        paused = true;
 83583        stream.pause();
 83584      }
 83585    });
 83586  
 83587    // proxy all the other methods.
 83588    // important when wrapping filters and duplexes.
 83589    for (var i in stream) {
 83590      if (this[i] === undefined && typeof stream[i] === 'function') {
 83591        this[i] = function (method) {
 83592          return function () {
 83593            return stream[method].apply(stream, arguments);
 83594          };
 83595        }(i);
 83596      }
 83597    }
 83598  
 83599    // proxy certain important events.
 83600    for (var n = 0; n < kProxyEvents.length; n++) {
 83601      stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
 83602    }
 83603  
 83604    // when we try to consume some more bytes, simply unpause the
 83605    // underlying stream.
 83606    this._read = function (n) {
 83607      debug('wrapped _read', n);
 83608      if (paused) {
 83609        paused = false;
 83610        stream.resume();
 83611      }
 83612    };
 83613  
 83614    return this;
 83615  };
 83616  
 83617  Object.defineProperty(Readable.prototype, 'readableHighWaterMark', {
 83618    // making it explicit this property is not enumerable
 83619    // because otherwise some prototype manipulation in
 83620    // userland will fail
 83621    enumerable: false,
 83622    get: function () {
 83623      return this._readableState.highWaterMark;
 83624    }
 83625  });
 83626  
 83627  // exposed for testing purposes only.
 83628  Readable._fromList = fromList;
 83629  
 83630  // Pluck off n bytes from an array of buffers.
 83631  // Length is the combined lengths of all the buffers in the list.
 83632  // This function is designed to be inlinable, so please take care when making
 83633  // changes to the function body.
 83634  function fromList(n, state) {
 83635    // nothing buffered
 83636    if (state.length === 0) return null;
 83637  
 83638    var ret;
 83639    if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
 83640      // read it all, truncate the list
 83641      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);
 83642      state.buffer.clear();
 83643    } else {
 83644      // read part of list
 83645      ret = fromListPartial(n, state.buffer, state.decoder);
 83646    }
 83647  
 83648    return ret;
 83649  }
 83650  
 83651  // Extracts only enough buffered data to satisfy the amount requested.
 83652  // This function is designed to be inlinable, so please take care when making
 83653  // changes to the function body.
 83654  function fromListPartial(n, list, hasStrings) {
 83655    var ret;
 83656    if (n < list.head.data.length) {
 83657      // slice is the same for buffers and strings
 83658      ret = list.head.data.slice(0, n);
 83659      list.head.data = list.head.data.slice(n);
 83660    } else if (n === list.head.data.length) {
 83661      // first chunk is a perfect match
 83662      ret = list.shift();
 83663    } else {
 83664      // result spans more than one buffer
 83665      ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
 83666    }
 83667    return ret;
 83668  }
 83669  
 83670  // Copies a specified amount of characters from the list of buffered data
 83671  // chunks.
 83672  // This function is designed to be inlinable, so please take care when making
 83673  // changes to the function body.
 83674  function copyFromBufferString(n, list) {
 83675    var p = list.head;
 83676    var c = 1;
 83677    var ret = p.data;
 83678    n -= ret.length;
 83679    while (p = p.next) {
 83680      var str = p.data;
 83681      var nb = n > str.length ? str.length : n;
 83682      if (nb === str.length) ret += str;else ret += str.slice(0, n);
 83683      n -= nb;
 83684      if (n === 0) {
 83685        if (nb === str.length) {
 83686          ++c;
 83687          if (p.next) list.head = p.next;else list.head = list.tail = null;
 83688        } else {
 83689          list.head = p;
 83690          p.data = str.slice(nb);
 83691        }
 83692        break;
 83693      }
 83694      ++c;
 83695    }
 83696    list.length -= c;
 83697    return ret;
 83698  }
 83699  
 83700  // Copies a specified amount of bytes from the list of buffered data chunks.
 83701  // This function is designed to be inlinable, so please take care when making
 83702  // changes to the function body.
 83703  function copyFromBuffer(n, list) {
 83704    var ret = Buffer.allocUnsafe(n);
 83705    var p = list.head;
 83706    var c = 1;
 83707    p.data.copy(ret);
 83708    n -= p.data.length;
 83709    while (p = p.next) {
 83710      var buf = p.data;
 83711      var nb = n > buf.length ? buf.length : n;
 83712      buf.copy(ret, ret.length - n, 0, nb);
 83713      n -= nb;
 83714      if (n === 0) {
 83715        if (nb === buf.length) {
 83716          ++c;
 83717          if (p.next) list.head = p.next;else list.head = list.tail = null;
 83718        } else {
 83719          list.head = p;
 83720          p.data = buf.slice(nb);
 83721        }
 83722        break;
 83723      }
 83724      ++c;
 83725    }
 83726    list.length -= c;
 83727    return ret;
 83728  }
 83729  
 83730  function endReadable(stream) {
 83731    var state = stream._readableState;
 83732  
 83733    // If we get here before consuming all the bytes, then that is a
 83734    // bug in node.  Should never happen.
 83735    if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
 83736  
 83737    if (!state.endEmitted) {
 83738      state.ended = true;
 83739      pna.nextTick(endReadableNT, state, stream);
 83740    }
 83741  }
 83742  
 83743  function endReadableNT(state, stream) {
 83744    // Check that we didn't get one last unshift.
 83745    if (!state.endEmitted && state.length === 0) {
 83746      state.endEmitted = true;
 83747      stream.readable = false;
 83748      stream.emit('end');
 83749    }
 83750  }
 83751  
 83752  function indexOf(xs, x) {
 83753    for (var i = 0, l = xs.length; i < l; i++) {
 83754      if (xs[i] === x) return i;
 83755    }
 83756    return -1;
 83757  }
 83758  
 83759  /***/ }),
 83760  /* 407 */
 83761  /***/ (function(module, exports, __webpack_require__) {
 83762  
 83763  "use strict";
 83764  // Copyright Joyent, Inc. and other Node contributors.
 83765  //
 83766  // Permission is hereby granted, free of charge, to any person obtaining a
 83767  // copy of this software and associated documentation files (the
 83768  // "Software"), to deal in the Software without restriction, including
 83769  // without limitation the rights to use, copy, modify, merge, publish,
 83770  // distribute, sublicense, and/or sell copies of the Software, and to permit
 83771  // persons to whom the Software is furnished to do so, subject to the
 83772  // following conditions:
 83773  //
 83774  // The above copyright notice and this permission notice shall be included
 83775  // in all copies or substantial portions of the Software.
 83776  //
 83777  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 83778  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 83779  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 83780  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 83781  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 83782  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 83783  // USE OR OTHER DEALINGS IN THE SOFTWARE.
 83784  
 83785  // a transform stream is a readable/writable stream where you do
 83786  // something with the data.  Sometimes it's called a "filter",
 83787  // but that's not a great name for it, since that implies a thing where
 83788  // some bits pass through, and others are simply ignored.  (That would
 83789  // be a valid example of a transform, of course.)
 83790  //
 83791  // While the output is causally related to the input, it's not a
 83792  // necessarily symmetric or synchronous transformation.  For example,
 83793  // a zlib stream might take multiple plain-text writes(), and then
 83794  // emit a single compressed chunk some time in the future.
 83795  //
 83796  // Here's how this works:
 83797  //
 83798  // The Transform stream has all the aspects of the readable and writable
 83799  // stream classes.  When you write(chunk), that calls _write(chunk,cb)
 83800  // internally, and returns false if there's a lot of pending writes
 83801  // buffered up.  When you call read(), that calls _read(n) until
 83802  // there's enough pending readable data buffered up.
 83803  //
 83804  // In a transform stream, the written data is placed in a buffer.  When
 83805  // _read(n) is called, it transforms the queued up data, calling the
 83806  // buffered _write cb's as it consumes chunks.  If consuming a single
 83807  // written chunk would result in multiple output chunks, then the first
 83808  // outputted bit calls the readcb, and subsequent chunks just go into
 83809  // the read buffer, and will cause it to emit 'readable' if necessary.
 83810  //
 83811  // This way, back-pressure is actually determined by the reading side,
 83812  // since _read has to be called to start processing a new chunk.  However,
 83813  // a pathological inflate type of transform can cause excessive buffering
 83814  // here.  For example, imagine a stream where every byte of input is
 83815  // interpreted as an integer from 0-255, and then results in that many
 83816  // bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in
 83817  // 1kb of data being output.  In this case, you could write a very small
 83818  // amount of input, and end up with a very large amount of output.  In
 83819  // such a pathological inflating mechanism, there'd be no way to tell
 83820  // the system to stop doing the transform.  A single 4MB write could
 83821  // cause the system to run out of memory.
 83822  //
 83823  // However, even in such a pathological case, only a single written chunk
 83824  // would be consumed, and then the rest would wait (un-transformed) until
 83825  // the results of the previous transformed chunk were consumed.
 83826  
 83827  
 83828  
 83829  module.exports = Transform;
 83830  
 83831  var Duplex = __webpack_require__(116);
 83832  
 83833  /*<replacement>*/
 83834  var util = __webpack_require__(113);
 83835  util.inherits = __webpack_require__(61);
 83836  /*</replacement>*/
 83837  
 83838  util.inherits(Transform, Duplex);
 83839  
 83840  function afterTransform(er, data) {
 83841    var ts = this._transformState;
 83842    ts.transforming = false;
 83843  
 83844    var cb = ts.writecb;
 83845  
 83846    if (!cb) {
 83847      return this.emit('error', new Error('write callback called multiple times'));
 83848    }
 83849  
 83850    ts.writechunk = null;
 83851    ts.writecb = null;
 83852  
 83853    if (data != null) // single equals check for both `null` and `undefined`
 83854      this.push(data);
 83855  
 83856    cb(er);
 83857  
 83858    var rs = this._readableState;
 83859    rs.reading = false;
 83860    if (rs.needReadable || rs.length < rs.highWaterMark) {
 83861      this._read(rs.highWaterMark);
 83862    }
 83863  }
 83864  
 83865  function Transform(options) {
 83866    if (!(this instanceof Transform)) return new Transform(options);
 83867  
 83868    Duplex.call(this, options);
 83869  
 83870    this._transformState = {
 83871      afterTransform: afterTransform.bind(this),
 83872      needTransform: false,
 83873      transforming: false,
 83874      writecb: null,
 83875      writechunk: null,
 83876      writeencoding: null
 83877    };
 83878  
 83879    // start out asking for a readable event once data is transformed.
 83880    this._readableState.needReadable = true;
 83881  
 83882    // we have implemented the _read method, and done the other things
 83883    // that Readable wants before the first _read call, so unset the
 83884    // sync guard flag.
 83885    this._readableState.sync = false;
 83886  
 83887    if (options) {
 83888      if (typeof options.transform === 'function') this._transform = options.transform;
 83889  
 83890      if (typeof options.flush === 'function') this._flush = options.flush;
 83891    }
 83892  
 83893    // When the writable side finishes, then flush out anything remaining.
 83894    this.on('prefinish', prefinish);
 83895  }
 83896  
 83897  function prefinish() {
 83898    var _this = this;
 83899  
 83900    if (typeof this._flush === 'function') {
 83901      this._flush(function (er, data) {
 83902        done(_this, er, data);
 83903      });
 83904    } else {
 83905      done(this, null, null);
 83906    }
 83907  }
 83908  
 83909  Transform.prototype.push = function (chunk, encoding) {
 83910    this._transformState.needTransform = false;
 83911    return Duplex.prototype.push.call(this, chunk, encoding);
 83912  };
 83913  
 83914  // This is the part where you do stuff!
 83915  // override this function in implementation classes.
 83916  // 'chunk' is an input chunk.
 83917  //
 83918  // Call `push(newChunk)` to pass along transformed output
 83919  // to the readable side.  You may call 'push' zero or more times.
 83920  //
 83921  // Call `cb(err)` when you are done with this chunk.  If you pass
 83922  // an error, then that'll put the hurt on the whole operation.  If you
 83923  // never call cb(), then you'll never get another chunk.
 83924  Transform.prototype._transform = function (chunk, encoding, cb) {
 83925    throw new Error('_transform() is not implemented');
 83926  };
 83927  
 83928  Transform.prototype._write = function (chunk, encoding, cb) {
 83929    var ts = this._transformState;
 83930    ts.writecb = cb;
 83931    ts.writechunk = chunk;
 83932    ts.writeencoding = encoding;
 83933    if (!ts.transforming) {
 83934      var rs = this._readableState;
 83935      if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
 83936    }
 83937  };
 83938  
 83939  // Doesn't matter what the args are here.
 83940  // _transform does all the work.
 83941  // That we got here means that the readable side wants more data.
 83942  Transform.prototype._read = function (n) {
 83943    var ts = this._transformState;
 83944  
 83945    if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
 83946      ts.transforming = true;
 83947      this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
 83948    } else {
 83949      // mark that we need a transform, so that any data that comes in
 83950      // will get processed, now that we've asked for it.
 83951      ts.needTransform = true;
 83952    }
 83953  };
 83954  
 83955  Transform.prototype._destroy = function (err, cb) {
 83956    var _this2 = this;
 83957  
 83958    Duplex.prototype._destroy.call(this, err, function (err2) {
 83959      cb(err2);
 83960      _this2.emit('close');
 83961    });
 83962  };
 83963  
 83964  function done(stream, er, data) {
 83965    if (er) return stream.emit('error', er);
 83966  
 83967    if (data != null) // single equals check for both `null` and `undefined`
 83968      stream.push(data);
 83969  
 83970    // if there's nothing in the write buffer, then that means
 83971    // that nothing more will ever be provided
 83972    if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');
 83973  
 83974    if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');
 83975  
 83976    return stream.push(null);
 83977  }
 83978  
 83979  /***/ }),
 83980  /* 408 */
 83981  /***/ (function(module, exports, __webpack_require__) {
 83982  
 83983  "use strict";
 83984  // Copyright Joyent, Inc. and other Node contributors.
 83985  //
 83986  // Permission is hereby granted, free of charge, to any person obtaining a
 83987  // copy of this software and associated documentation files (the
 83988  // "Software"), to deal in the Software without restriction, including
 83989  // without limitation the rights to use, copy, modify, merge, publish,
 83990  // distribute, sublicense, and/or sell copies of the Software, and to permit
 83991  // persons to whom the Software is furnished to do so, subject to the
 83992  // following conditions:
 83993  //
 83994  // The above copyright notice and this permission notice shall be included
 83995  // in all copies or substantial portions of the Software.
 83996  //
 83997  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 83998  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 83999  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 84000  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 84001  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 84002  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 84003  // USE OR OTHER DEALINGS IN THE SOFTWARE.
 84004  
 84005  // A bit simpler than readable streams.
 84006  // Implement an async ._write(chunk, encoding, cb), and it'll handle all
 84007  // the drain event emission and buffering.
 84008  
 84009  
 84010  
 84011  /*<replacement>*/
 84012  
 84013  var pna = __webpack_require__(181);
 84014  /*</replacement>*/
 84015  
 84016  module.exports = Writable;
 84017  
 84018  /* <replacement> */
 84019  function WriteReq(chunk, encoding, cb) {
 84020    this.chunk = chunk;
 84021    this.encoding = encoding;
 84022    this.callback = cb;
 84023    this.next = null;
 84024  }
 84025  
 84026  // It seems a linked list but it is not
 84027  // there will be only 2 of these for each stream
 84028  function CorkedRequest(state) {
 84029    var _this = this;
 84030  
 84031    this.next = null;
 84032    this.entry = null;
 84033    this.finish = function () {
 84034      onCorkedFinish(_this, state);
 84035    };
 84036  }
 84037  /* </replacement> */
 84038  
 84039  /*<replacement>*/
 84040  var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;
 84041  /*</replacement>*/
 84042  
 84043  /*<replacement>*/
 84044  var Duplex;
 84045  /*</replacement>*/
 84046  
 84047  Writable.WritableState = WritableState;
 84048  
 84049  /*<replacement>*/
 84050  var util = __webpack_require__(113);
 84051  util.inherits = __webpack_require__(61);
 84052  /*</replacement>*/
 84053  
 84054  /*<replacement>*/
 84055  var internalUtil = {
 84056    deprecate: __webpack_require__(956)
 84057  };
 84058  /*</replacement>*/
 84059  
 84060  /*<replacement>*/
 84061  var Stream = __webpack_require__(410);
 84062  /*</replacement>*/
 84063  
 84064  /*<replacement>*/
 84065  
 84066  var Buffer = __webpack_require__(45).Buffer;
 84067  var OurUint8Array = global.Uint8Array || function () {};
 84068  function _uint8ArrayToBuffer(chunk) {
 84069    return Buffer.from(chunk);
 84070  }
 84071  function _isUint8Array(obj) {
 84072    return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
 84073  }
 84074  
 84075  /*</replacement>*/
 84076  
 84077  var destroyImpl = __webpack_require__(409);
 84078  
 84079  util.inherits(Writable, Stream);
 84080  
 84081  function nop() {}
 84082  
 84083  function WritableState(options, stream) {
 84084    Duplex = Duplex || __webpack_require__(116);
 84085  
 84086    options = options || {};
 84087  
 84088    // Duplex streams are both readable and writable, but share
 84089    // the same options object.
 84090    // However, some cases require setting options to different
 84091    // values for the readable and the writable sides of the duplex stream.
 84092    // These options can be provided separately as readableXXX and writableXXX.
 84093    var isDuplex = stream instanceof Duplex;
 84094  
 84095    // object stream flag to indicate whether or not this stream
 84096    // contains buffers or objects.
 84097    this.objectMode = !!options.objectMode;
 84098  
 84099    if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
 84100  
 84101    // the point at which write() starts returning false
 84102    // Note: 0 is a valid value, means that we always return false if
 84103    // the entire buffer is not flushed immediately on write()
 84104    var hwm = options.highWaterMark;
 84105    var writableHwm = options.writableHighWaterMark;
 84106    var defaultHwm = this.objectMode ? 16 : 16 * 1024;
 84107  
 84108    if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;
 84109  
 84110    // cast to ints.
 84111    this.highWaterMark = Math.floor(this.highWaterMark);
 84112  
 84113    // if _final has been called
 84114    this.finalCalled = false;
 84115  
 84116    // drain event flag.
 84117    this.needDrain = false;
 84118    // at the start of calling end()
 84119    this.ending = false;
 84120    // when end() has been called, and returned
 84121    this.ended = false;
 84122    // when 'finish' is emitted
 84123    this.finished = false;
 84124  
 84125    // has it been destroyed
 84126    this.destroyed = false;
 84127  
 84128    // should we decode strings into buffers before passing to _write?
 84129    // this is here so that some node-core streams can optimize string
 84130    // handling at a lower level.
 84131    var noDecode = options.decodeStrings === false;
 84132    this.decodeStrings = !noDecode;
 84133  
 84134    // Crypto is kind of old and crusty.  Historically, its default string
 84135    // encoding is 'binary' so we have to make this configurable.
 84136    // Everything else in the universe uses 'utf8', though.
 84137    this.defaultEncoding = options.defaultEncoding || 'utf8';
 84138  
 84139    // not an actual buffer we keep track of, but a measurement
 84140    // of how much we're waiting to get pushed to some underlying
 84141    // socket or file.
 84142    this.length = 0;
 84143  
 84144    // a flag to see when we're in the middle of a write.
 84145    this.writing = false;
 84146  
 84147    // when true all writes will be buffered until .uncork() call
 84148    this.corked = 0;
 84149  
 84150    // a flag to be able to tell if the onwrite cb is called immediately,
 84151    // or on a later tick.  We set this to true at first, because any
 84152    // actions that shouldn't happen until "later" should generally also
 84153    // not happen before the first write call.
 84154    this.sync = true;
 84155  
 84156    // a flag to know if we're processing previously buffered items, which
 84157    // may call the _write() callback in the same tick, so that we don't
 84158    // end up in an overlapped onwrite situation.
 84159    this.bufferProcessing = false;
 84160  
 84161    // the callback that's passed to _write(chunk,cb)
 84162    this.onwrite = function (er) {
 84163      onwrite(stream, er);
 84164    };
 84165  
 84166    // the callback that the user supplies to write(chunk,encoding,cb)
 84167    this.writecb = null;
 84168  
 84169    // the amount that is being written when _write is called.
 84170    this.writelen = 0;
 84171  
 84172    this.bufferedRequest = null;
 84173    this.lastBufferedRequest = null;
 84174  
 84175    // number of pending user-supplied write callbacks
 84176    // this must be 0 before 'finish' can be emitted
 84177    this.pendingcb = 0;
 84178  
 84179    // emit prefinish if the only thing we're waiting for is _write cbs
 84180    // This is relevant for synchronous Transform streams
 84181    this.prefinished = false;
 84182  
 84183    // True if the error was already emitted and should not be thrown again
 84184    this.errorEmitted = false;
 84185  
 84186    // count buffered requests
 84187    this.bufferedRequestCount = 0;
 84188  
 84189    // allocate the first CorkedRequest, there is always
 84190    // one allocated and free to use, and we maintain at most two
 84191    this.corkedRequestsFree = new CorkedRequest(this);
 84192  }
 84193  
 84194  WritableState.prototype.getBuffer = function getBuffer() {
 84195    var current = this.bufferedRequest;
 84196    var out = [];
 84197    while (current) {
 84198      out.push(current);
 84199      current = current.next;
 84200    }
 84201    return out;
 84202  };
 84203  
 84204  (function () {
 84205    try {
 84206      Object.defineProperty(WritableState.prototype, 'buffer', {
 84207        get: internalUtil.deprecate(function () {
 84208          return this.getBuffer();
 84209        }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
 84210      });
 84211    } catch (_) {}
 84212  })();
 84213  
 84214  // Test _writableState for inheritance to account for Duplex streams,
 84215  // whose prototype chain only points to Readable.
 84216  var realHasInstance;
 84217  if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
 84218    realHasInstance = Function.prototype[Symbol.hasInstance];
 84219    Object.defineProperty(Writable, Symbol.hasInstance, {
 84220      value: function (object) {
 84221        if (realHasInstance.call(this, object)) return true;
 84222        if (this !== Writable) return false;
 84223  
 84224        return object && object._writableState instanceof WritableState;
 84225      }
 84226    });
 84227  } else {
 84228    realHasInstance = function (object) {
 84229      return object instanceof this;
 84230    };
 84231  }
 84232  
 84233  function Writable(options) {
 84234    Duplex = Duplex || __webpack_require__(116);
 84235  
 84236    // Writable ctor is applied to Duplexes, too.
 84237    // `realHasInstance` is necessary because using plain `instanceof`
 84238    // would return false, as no `_writableState` property is attached.
 84239  
 84240    // Trying to use the custom `instanceof` for Writable here will also break the
 84241    // Node.js LazyTransform implementation, which has a non-trivial getter for
 84242    // `_writableState` that would lead to infinite recursion.
 84243    if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
 84244      return new Writable(options);
 84245    }
 84246  
 84247    this._writableState = new WritableState(options, this);
 84248  
 84249    // legacy.
 84250    this.writable = true;
 84251  
 84252    if (options) {
 84253      if (typeof options.write === 'function') this._write = options.write;
 84254  
 84255      if (typeof options.writev === 'function') this._writev = options.writev;
 84256  
 84257      if (typeof options.destroy === 'function') this._destroy = options.destroy;
 84258  
 84259      if (typeof options.final === 'function') this._final = options.final;
 84260    }
 84261  
 84262    Stream.call(this);
 84263  }
 84264  
 84265  // Otherwise people can pipe Writable streams, which is just wrong.
 84266  Writable.prototype.pipe = function () {
 84267    this.emit('error', new Error('Cannot pipe, not readable'));
 84268  };
 84269  
 84270  function writeAfterEnd(stream, cb) {
 84271    var er = new Error('write after end');
 84272    // TODO: defer error events consistently everywhere, not just the cb
 84273    stream.emit('error', er);
 84274    pna.nextTick(cb, er);
 84275  }
 84276  
 84277  // Checks that a user-supplied chunk is valid, especially for the particular
 84278  // mode the stream is in. Currently this means that `null` is never accepted
 84279  // and undefined/non-string values are only allowed in object mode.
 84280  function validChunk(stream, state, chunk, cb) {
 84281    var valid = true;
 84282    var er = false;
 84283  
 84284    if (chunk === null) {
 84285      er = new TypeError('May not write null values to stream');
 84286    } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
 84287      er = new TypeError('Invalid non-string/buffer chunk');
 84288    }
 84289    if (er) {
 84290      stream.emit('error', er);
 84291      pna.nextTick(cb, er);
 84292      valid = false;
 84293    }
 84294    return valid;
 84295  }
 84296  
 84297  Writable.prototype.write = function (chunk, encoding, cb) {
 84298    var state = this._writableState;
 84299    var ret = false;
 84300    var isBuf = !state.objectMode && _isUint8Array(chunk);
 84301  
 84302    if (isBuf && !Buffer.isBuffer(chunk)) {
 84303      chunk = _uint8ArrayToBuffer(chunk);
 84304    }
 84305  
 84306    if (typeof encoding === 'function') {
 84307      cb = encoding;
 84308      encoding = null;
 84309    }
 84310  
 84311    if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
 84312  
 84313    if (typeof cb !== 'function') cb = nop;
 84314  
 84315    if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
 84316      state.pendingcb++;
 84317      ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
 84318    }
 84319  
 84320    return ret;
 84321  };
 84322  
 84323  Writable.prototype.cork = function () {
 84324    var state = this._writableState;
 84325  
 84326    state.corked++;
 84327  };
 84328  
 84329  Writable.prototype.uncork = function () {
 84330    var state = this._writableState;
 84331  
 84332    if (state.corked) {
 84333      state.corked--;
 84334  
 84335      if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
 84336    }
 84337  };
 84338  
 84339  Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
 84340    // node::ParseEncoding() requires lower case.
 84341    if (typeof encoding === 'string') encoding = encoding.toLowerCase();
 84342    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);
 84343    this._writableState.defaultEncoding = encoding;
 84344    return this;
 84345  };
 84346  
 84347  function decodeChunk(state, chunk, encoding) {
 84348    if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
 84349      chunk = Buffer.from(chunk, encoding);
 84350    }
 84351    return chunk;
 84352  }
 84353  
 84354  Object.defineProperty(Writable.prototype, 'writableHighWaterMark', {
 84355    // making it explicit this property is not enumerable
 84356    // because otherwise some prototype manipulation in
 84357    // userland will fail
 84358    enumerable: false,
 84359    get: function () {
 84360      return this._writableState.highWaterMark;
 84361    }
 84362  });
 84363  
 84364  // if we're already writing something, then just put this
 84365  // in the queue, and wait our turn.  Otherwise, call _write
 84366  // If we return false, then we need a drain event, so set that flag.
 84367  function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
 84368    if (!isBuf) {
 84369      var newChunk = decodeChunk(state, chunk, encoding);
 84370      if (chunk !== newChunk) {
 84371        isBuf = true;
 84372        encoding = 'buffer';
 84373        chunk = newChunk;
 84374      }
 84375    }
 84376    var len = state.objectMode ? 1 : chunk.length;
 84377  
 84378    state.length += len;
 84379  
 84380    var ret = state.length < state.highWaterMark;
 84381    // we must ensure that previous needDrain will not be reset to false.
 84382    if (!ret) state.needDrain = true;
 84383  
 84384    if (state.writing || state.corked) {
 84385      var last = state.lastBufferedRequest;
 84386      state.lastBufferedRequest = {
 84387        chunk: chunk,
 84388        encoding: encoding,
 84389        isBuf: isBuf,
 84390        callback: cb,
 84391        next: null
 84392      };
 84393      if (last) {
 84394        last.next = state.lastBufferedRequest;
 84395      } else {
 84396        state.bufferedRequest = state.lastBufferedRequest;
 84397      }
 84398      state.bufferedRequestCount += 1;
 84399    } else {
 84400      doWrite(stream, state, false, len, chunk, encoding, cb);
 84401    }
 84402  
 84403    return ret;
 84404  }
 84405  
 84406  function doWrite(stream, state, writev, len, chunk, encoding, cb) {
 84407    state.writelen = len;
 84408    state.writecb = cb;
 84409    state.writing = true;
 84410    state.sync = true;
 84411    if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
 84412    state.sync = false;
 84413  }
 84414  
 84415  function onwriteError(stream, state, sync, er, cb) {
 84416    --state.pendingcb;
 84417  
 84418    if (sync) {
 84419      // defer the callback if we are being called synchronously
 84420      // to avoid piling up things on the stack
 84421      pna.nextTick(cb, er);
 84422      // this can emit finish, and it will always happen
 84423      // after error
 84424      pna.nextTick(finishMaybe, stream, state);
 84425      stream._writableState.errorEmitted = true;
 84426      stream.emit('error', er);
 84427    } else {
 84428      // the caller expect this to happen before if
 84429      // it is async
 84430      cb(er);
 84431      stream._writableState.errorEmitted = true;
 84432      stream.emit('error', er);
 84433      // this can emit finish, but finish must
 84434      // always follow error
 84435      finishMaybe(stream, state);
 84436    }
 84437  }
 84438  
 84439  function onwriteStateUpdate(state) {
 84440    state.writing = false;
 84441    state.writecb = null;
 84442    state.length -= state.writelen;
 84443    state.writelen = 0;
 84444  }
 84445  
 84446  function onwrite(stream, er) {
 84447    var state = stream._writableState;
 84448    var sync = state.sync;
 84449    var cb = state.writecb;
 84450  
 84451    onwriteStateUpdate(state);
 84452  
 84453    if (er) onwriteError(stream, state, sync, er, cb);else {
 84454      // Check if we're actually ready to finish, but don't emit yet
 84455      var finished = needFinish(state);
 84456  
 84457      if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
 84458        clearBuffer(stream, state);
 84459      }
 84460  
 84461      if (sync) {
 84462        /*<replacement>*/
 84463        asyncWrite(afterWrite, stream, state, finished, cb);
 84464        /*</replacement>*/
 84465      } else {
 84466        afterWrite(stream, state, finished, cb);
 84467      }
 84468    }
 84469  }
 84470  
 84471  function afterWrite(stream, state, finished, cb) {
 84472    if (!finished) onwriteDrain(stream, state);
 84473    state.pendingcb--;
 84474    cb();
 84475    finishMaybe(stream, state);
 84476  }
 84477  
 84478  // Must force callback to be called on nextTick, so that we don't
 84479  // emit 'drain' before the write() consumer gets the 'false' return
 84480  // value, and has a chance to attach a 'drain' listener.
 84481  function onwriteDrain(stream, state) {
 84482    if (state.length === 0 && state.needDrain) {
 84483      state.needDrain = false;
 84484      stream.emit('drain');
 84485    }
 84486  }
 84487  
 84488  // if there's something in the buffer waiting, then process it
 84489  function clearBuffer(stream, state) {
 84490    state.bufferProcessing = true;
 84491    var entry = state.bufferedRequest;
 84492  
 84493    if (stream._writev && entry && entry.next) {
 84494      // Fast case, write everything using _writev()
 84495      var l = state.bufferedRequestCount;
 84496      var buffer = new Array(l);
 84497      var holder = state.corkedRequestsFree;
 84498      holder.entry = entry;
 84499  
 84500      var count = 0;
 84501      var allBuffers = true;
 84502      while (entry) {
 84503        buffer[count] = entry;
 84504        if (!entry.isBuf) allBuffers = false;
 84505        entry = entry.next;
 84506        count += 1;
 84507      }
 84508      buffer.allBuffers = allBuffers;
 84509  
 84510      doWrite(stream, state, true, state.length, buffer, '', holder.finish);
 84511  
 84512      // doWrite is almost always async, defer these to save a bit of time
 84513      // as the hot path ends with doWrite
 84514      state.pendingcb++;
 84515      state.lastBufferedRequest = null;
 84516      if (holder.next) {
 84517        state.corkedRequestsFree = holder.next;
 84518        holder.next = null;
 84519      } else {
 84520        state.corkedRequestsFree = new CorkedRequest(state);
 84521      }
 84522      state.bufferedRequestCount = 0;
 84523    } else {
 84524      // Slow case, write chunks one-by-one
 84525      while (entry) {
 84526        var chunk = entry.chunk;
 84527        var encoding = entry.encoding;
 84528        var cb = entry.callback;
 84529        var len = state.objectMode ? 1 : chunk.length;
 84530  
 84531        doWrite(stream, state, false, len, chunk, encoding, cb);
 84532        entry = entry.next;
 84533        state.bufferedRequestCount--;
 84534        // if we didn't call the onwrite immediately, then
 84535        // it means that we need to wait until it does.
 84536        // also, that means that the chunk and cb are currently
 84537        // being processed, so move the buffer counter past them.
 84538        if (state.writing) {
 84539          break;
 84540        }
 84541      }
 84542  
 84543      if (entry === null) state.lastBufferedRequest = null;
 84544    }
 84545  
 84546    state.bufferedRequest = entry;
 84547    state.bufferProcessing = false;
 84548  }
 84549  
 84550  Writable.prototype._write = function (chunk, encoding, cb) {
 84551    cb(new Error('_write() is not implemented'));
 84552  };
 84553  
 84554  Writable.prototype._writev = null;
 84555  
 84556  Writable.prototype.end = function (chunk, encoding, cb) {
 84557    var state = this._writableState;
 84558  
 84559    if (typeof chunk === 'function') {
 84560      cb = chunk;
 84561      chunk = null;
 84562      encoding = null;
 84563    } else if (typeof encoding === 'function') {
 84564      cb = encoding;
 84565      encoding = null;
 84566    }
 84567  
 84568    if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
 84569  
 84570    // .end() fully uncorks
 84571    if (state.corked) {
 84572      state.corked = 1;
 84573      this.uncork();
 84574    }
 84575  
 84576    // ignore unnecessary end() calls.
 84577    if (!state.ending && !state.finished) endWritable(this, state, cb);
 84578  };
 84579  
 84580  function needFinish(state) {
 84581    return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
 84582  }
 84583  function callFinal(stream, state) {
 84584    stream._final(function (err) {
 84585      state.pendingcb--;
 84586      if (err) {
 84587        stream.emit('error', err);
 84588      }
 84589      state.prefinished = true;
 84590      stream.emit('prefinish');
 84591      finishMaybe(stream, state);
 84592    });
 84593  }
 84594  function prefinish(stream, state) {
 84595    if (!state.prefinished && !state.finalCalled) {
 84596      if (typeof stream._final === 'function') {
 84597        state.pendingcb++;
 84598        state.finalCalled = true;
 84599        pna.nextTick(callFinal, stream, state);
 84600      } else {
 84601        state.prefinished = true;
 84602        stream.emit('prefinish');
 84603      }
 84604    }
 84605  }
 84606  
 84607  function finishMaybe(stream, state) {
 84608    var need = needFinish(state);
 84609    if (need) {
 84610      prefinish(stream, state);
 84611      if (state.pendingcb === 0) {
 84612        state.finished = true;
 84613        stream.emit('finish');
 84614      }
 84615    }
 84616    return need;
 84617  }
 84618  
 84619  function endWritable(stream, state, cb) {
 84620    state.ending = true;
 84621    finishMaybe(stream, state);
 84622    if (cb) {
 84623      if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);
 84624    }
 84625    state.ended = true;
 84626    stream.writable = false;
 84627  }
 84628  
 84629  function onCorkedFinish(corkReq, state, err) {
 84630    var entry = corkReq.entry;
 84631    corkReq.entry = null;
 84632    while (entry) {
 84633      var cb = entry.callback;
 84634      state.pendingcb--;
 84635      cb(err);
 84636      entry = entry.next;
 84637    }
 84638    if (state.corkedRequestsFree) {
 84639      state.corkedRequestsFree.next = corkReq;
 84640    } else {
 84641      state.corkedRequestsFree = corkReq;
 84642    }
 84643  }
 84644  
 84645  Object.defineProperty(Writable.prototype, 'destroyed', {
 84646    get: function () {
 84647      if (this._writableState === undefined) {
 84648        return false;
 84649      }
 84650      return this._writableState.destroyed;
 84651    },
 84652    set: function (value) {
 84653      // we ignore the value if the stream
 84654      // has not been initialized yet
 84655      if (!this._writableState) {
 84656        return;
 84657      }
 84658  
 84659      // backward compatibility, the user is explicitly
 84660      // managing destroyed
 84661      this._writableState.destroyed = value;
 84662    }
 84663  });
 84664  
 84665  Writable.prototype.destroy = destroyImpl.destroy;
 84666  Writable.prototype._undestroy = destroyImpl.undestroy;
 84667  Writable.prototype._destroy = function (err, cb) {
 84668    this.end();
 84669    cb(err);
 84670  };
 84671  
 84672  /***/ }),
 84673  /* 409 */
 84674  /***/ (function(module, exports, __webpack_require__) {
 84675  
 84676  "use strict";
 84677  
 84678  
 84679  /*<replacement>*/
 84680  
 84681  var pna = __webpack_require__(181);
 84682  /*</replacement>*/
 84683  
 84684  // undocumented cb() API, needed for core, not for public API
 84685  function destroy(err, cb) {
 84686    var _this = this;
 84687  
 84688    var readableDestroyed = this._readableState && this._readableState.destroyed;
 84689    var writableDestroyed = this._writableState && this._writableState.destroyed;
 84690  
 84691    if (readableDestroyed || writableDestroyed) {
 84692      if (cb) {
 84693        cb(err);
 84694      } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
 84695        pna.nextTick(emitErrorNT, this, err);
 84696      }
 84697      return this;
 84698    }
 84699  
 84700    // we set destroyed to true before firing error callbacks in order
 84701    // to make it re-entrance safe in case destroy() is called within callbacks
 84702  
 84703    if (this._readableState) {
 84704      this._readableState.destroyed = true;
 84705    }
 84706  
 84707    // if this is a duplex stream mark the writable part as destroyed as well
 84708    if (this._writableState) {
 84709      this._writableState.destroyed = true;
 84710    }
 84711  
 84712    this._destroy(err || null, function (err) {
 84713      if (!cb && err) {
 84714        pna.nextTick(emitErrorNT, _this, err);
 84715        if (_this._writableState) {
 84716          _this._writableState.errorEmitted = true;
 84717        }
 84718      } else if (cb) {
 84719        cb(err);
 84720      }
 84721    });
 84722  
 84723    return this;
 84724  }
 84725  
 84726  function undestroy() {
 84727    if (this._readableState) {
 84728      this._readableState.destroyed = false;
 84729      this._readableState.reading = false;
 84730      this._readableState.ended = false;
 84731      this._readableState.endEmitted = false;
 84732    }
 84733  
 84734    if (this._writableState) {
 84735      this._writableState.destroyed = false;
 84736      this._writableState.ended = false;
 84737      this._writableState.ending = false;
 84738      this._writableState.finished = false;
 84739      this._writableState.errorEmitted = false;
 84740    }
 84741  }
 84742  
 84743  function emitErrorNT(self, err) {
 84744    self.emit('error', err);
 84745  }
 84746  
 84747  module.exports = {
 84748    destroy: destroy,
 84749    undestroy: undestroy
 84750  };
 84751  
 84752  /***/ }),
 84753  /* 410 */
 84754  /***/ (function(module, exports, __webpack_require__) {
 84755  
 84756  module.exports = __webpack_require__(23);
 84757  
 84758  
 84759  /***/ }),
 84760  /* 411 */
 84761  /***/ (function(module, exports, __webpack_require__) {
 84762  
 84763  "use strict";
 84764  /*!
 84765   * repeat-element <https://github.com/jonschlinkert/repeat-element>
 84766   *
 84767   * Copyright (c) 2015 Jon Schlinkert.
 84768   * Licensed under the MIT license.
 84769   */
 84770  
 84771  
 84772  
 84773  module.exports = function repeat(ele, num) {
 84774    var arr = new Array(num);
 84775  
 84776    for (var i = 0; i < num; i++) {
 84777      arr[i] = ele;
 84778    }
 84779  
 84780    return arr;
 84781  };
 84782  
 84783  
 84784  /***/ }),
 84785  /* 412 */
 84786  /***/ (function(module, exports, __webpack_require__) {
 84787  
 84788  "use strict";
 84789  
 84790  
 84791  var tough = __webpack_require__(810)
 84792  
 84793  var Cookie = tough.Cookie
 84794  var CookieJar = tough.CookieJar
 84795  
 84796  exports.parse = function (str) {
 84797    if (str && str.uri) {
 84798      str = str.uri
 84799    }
 84800    if (typeof str !== 'string') {
 84801      throw new Error('The cookie function only accepts STRING as param')
 84802    }
 84803    return Cookie.parse(str, {loose: true})
 84804  }
 84805  
 84806  // Adapt the sometimes-Async api of tough.CookieJar to our requirements
 84807  function RequestJar (store) {
 84808    var self = this
 84809    self._jar = new CookieJar(store, {looseMode: true})
 84810  }
 84811  RequestJar.prototype.setCookie = function (cookieOrStr, uri, options) {
 84812    var self = this
 84813    return self._jar.setCookieSync(cookieOrStr, uri, options || {})
 84814  }
 84815  RequestJar.prototype.getCookieString = function (uri) {
 84816    var self = this
 84817    return self._jar.getCookieStringSync(uri)
 84818  }
 84819  RequestJar.prototype.getCookies = function (uri) {
 84820    var self = this
 84821    return self._jar.getCookiesSync(uri)
 84822  }
 84823  
 84824  exports.jar = function (store) {
 84825    return new RequestJar(store)
 84826  }
 84827  
 84828  
 84829  /***/ }),
 84830  /* 413 */
 84831  /***/ (function(module, exports, __webpack_require__) {
 84832  
 84833  "use strict";
 84834  /*!
 84835   * Copyright (c) 2015, Salesforce.com, Inc.
 84836   * All rights reserved.
 84837   *
 84838   * Redistribution and use in source and binary forms, with or without
 84839   * modification, are permitted provided that the following conditions are met:
 84840   *
 84841   * 1. Redistributions of source code must retain the above copyright notice,
 84842   * this list of conditions and the following disclaimer.
 84843   *
 84844   * 2. Redistributions in binary form must reproduce the above copyright notice,
 84845   * this list of conditions and the following disclaimer in the documentation
 84846   * and/or other materials provided with the distribution.
 84847   *
 84848   * 3. Neither the name of Salesforce.com nor the names of its contributors may
 84849   * be used to endorse or promote products derived from this software without
 84850   * specific prior written permission.
 84851   *
 84852   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 84853   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 84854   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 84855   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 84856   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 84857   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 84858   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 84859   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 84860   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 84861   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 84862   * POSSIBILITY OF SUCH DAMAGE.
 84863   */
 84864  
 84865  /*
 84866   * "A request-path path-matches a given cookie-path if at least one of the
 84867   * following conditions holds:"
 84868   */
 84869  function pathMatch (reqPath, cookiePath) {
 84870    // "o  The cookie-path and the request-path are identical."
 84871    if (cookiePath === reqPath) {
 84872      return true;
 84873    }
 84874  
 84875    var idx = reqPath.indexOf(cookiePath);
 84876    if (idx === 0) {
 84877      // "o  The cookie-path is a prefix of the request-path, and the last
 84878      // character of the cookie-path is %x2F ("/")."
 84879      if (cookiePath.substr(-1) === "/") {
 84880        return true;
 84881      }
 84882  
 84883      // " o  The cookie-path is a prefix of the request-path, and the first
 84884      // character of the request-path that is not included in the cookie- path
 84885      // is a %x2F ("/") character."
 84886      if (reqPath.substr(cookiePath.length, 1) === "/") {
 84887        return true;
 84888      }
 84889    }
 84890  
 84891    return false;
 84892  }
 84893  
 84894  exports.pathMatch = pathMatch;
 84895  
 84896  
 84897  /***/ }),
 84898  /* 414 */
 84899  /***/ (function(module, exports, __webpack_require__) {
 84900  
 84901  "use strict";
 84902  /*!
 84903   * Copyright (c) 2015, Salesforce.com, Inc.
 84904   * All rights reserved.
 84905   *
 84906   * Redistribution and use in source and binary forms, with or without
 84907   * modification, are permitted provided that the following conditions are met:
 84908   *
 84909   * 1. Redistributions of source code must retain the above copyright notice,
 84910   * this list of conditions and the following disclaimer.
 84911   *
 84912   * 2. Redistributions in binary form must reproduce the above copyright notice,
 84913   * this list of conditions and the following disclaimer in the documentation
 84914   * and/or other materials provided with the distribution.
 84915   *
 84916   * 3. Neither the name of Salesforce.com nor the names of its contributors may
 84917   * be used to endorse or promote products derived from this software without
 84918   * specific prior written permission.
 84919   *
 84920   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 84921   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 84922   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 84923   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 84924   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 84925   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 84926   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 84927   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 84928   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 84929   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 84930   * POSSIBILITY OF SUCH DAMAGE.
 84931   */
 84932  
 84933  var pubsuffix = __webpack_require__(415);
 84934  
 84935  // Gives the permutation of all possible domainMatch()es of a given domain. The
 84936  // array is in shortest-to-longest order.  Handy for indexing.
 84937  function permuteDomain (domain) {
 84938    var pubSuf = pubsuffix.getPublicSuffix(domain);
 84939    if (!pubSuf) {
 84940      return null;
 84941    }
 84942    if (pubSuf == domain) {
 84943      return [domain];
 84944    }
 84945  
 84946    var prefix = domain.slice(0, -(pubSuf.length + 1)); // ".example.com"
 84947    var parts = prefix.split('.').reverse();
 84948    var cur = pubSuf;
 84949    var permutations = [cur];
 84950    while (parts.length) {
 84951      cur = parts.shift() + '.' + cur;
 84952      permutations.push(cur);
 84953    }
 84954    return permutations;
 84955  }
 84956  
 84957  exports.permuteDomain = permuteDomain;
 84958  
 84959  
 84960  /***/ }),
 84961  /* 415 */
 84962  /***/ (function(module, exports, __webpack_require__) {
 84963  
 84964  "use strict";
 84965  /****************************************************
 84966   * AUTOMATICALLY GENERATED by generate-pubsuffix.js *
 84967   *                  DO NOT EDIT!                    *
 84968   ****************************************************/
 84969  
 84970  
 84971  
 84972  var punycode = __webpack_require__(332);
 84973  
 84974  module.exports.getPublicSuffix = function getPublicSuffix(domain) {
 84975    /*!
 84976     * Copyright (c) 2015, Salesforce.com, Inc.
 84977     * All rights reserved.
 84978     *
 84979     * Redistribution and use in source and binary forms, with or without
 84980     * modification, are permitted provided that the following conditions are met:
 84981     *
 84982     * 1. Redistributions of source code must retain the above copyright notice,
 84983     * this list of conditions and the following disclaimer.
 84984     *
 84985     * 2. Redistributions in binary form must reproduce the above copyright notice,
 84986     * this list of conditions and the following disclaimer in the documentation
 84987     * and/or other materials provided with the distribution.
 84988     *
 84989     * 3. Neither the name of Salesforce.com nor the names of its contributors may
 84990     * be used to endorse or promote products derived from this software without
 84991     * specific prior written permission.
 84992     *
 84993     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 84994     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 84995     * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 84996     * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 84997     * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 84998     * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 84999     * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 85000     * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 85001     * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 85002     * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 85003     * POSSIBILITY OF SUCH DAMAGE.
 85004     */
 85005    if (!domain) {
 85006      return null;
 85007    }
 85008    if (domain.match(/^\./)) {
 85009      return null;
 85010    }
 85011    var asciiDomain = punycode.toASCII(domain);
 85012    var converted = false;
 85013    if (asciiDomain !== domain) {
 85014      domain = asciiDomain;
 85015      converted = true;
 85016    }
 85017    if (index[domain]) {
 85018      return null;
 85019    }
 85020  
 85021    domain = domain.toLowerCase();
 85022    var parts = domain.split('.').reverse();
 85023  
 85024    var suffix = '';
 85025    var suffixLen = 0;
 85026    for (var i=0; i<parts.length; i++) {
 85027      var part = parts[i];
 85028      var starstr = '*'+suffix;
 85029      var partstr = part+suffix;
 85030  
 85031      if (index[starstr]) { // star rule matches
 85032        suffixLen = i+1;
 85033        if (index[partstr] === false) { // exception rule matches (NB: false, not undefined)
 85034          suffixLen--;
 85035        }
 85036      } else if (index[partstr]) { // exact match, not exception
 85037        suffixLen = i+1;
 85038      }
 85039  
 85040      suffix = '.'+partstr;
 85041    }
 85042  
 85043    if (index['*'+suffix]) { // *.domain exists (e.g. *.kyoto.jp for domain='kyoto.jp');
 85044      return null;
 85045    }
 85046  
 85047    suffixLen = suffixLen || 1;
 85048    if (parts.length > suffixLen) {
 85049      var publicSuffix = parts.slice(0,suffixLen+1).reverse().join('.');
 85050      return converted ? punycode.toUnicode(publicSuffix) : publicSuffix;
 85051    }
 85052  
 85053    return null;
 85054  };
 85055  
 85056  // The following generated structure is used under the MPL version 2.0
 85057  // See public-suffix.txt for more information
 85058  
 85059  var index = module.exports.index = Object.freeze(
 85060  {"ac":true,"com.ac":true,"edu.ac":true,"gov.ac":true,"net.ac":true,"mil.ac":true,"org.ac":true,"ad":true,"nom.ad":true,"ae":true,"co.ae":true,"net.ae":true,"org.ae":true,"sch.ae":true,"ac.ae":true,"gov.ae":true,"mil.ae":true,"aero":true,"accident-investigation.aero":true,"accident-prevention.aero":true,"aerobatic.aero":true,"aeroclub.aero":true,"aerodrome.aero":true,"agents.aero":true,"aircraft.aero":true,"airline.aero":true,"airport.aero":true,"air-surveillance.aero":true,"airtraffic.aero":true,"air-traffic-control.aero":true,"ambulance.aero":true,"amusement.aero":true,"association.aero":true,"author.aero":true,"ballooning.aero":true,"broker.aero":true,"caa.aero":true,"cargo.aero":true,"catering.aero":true,"certification.aero":true,"championship.aero":true,"charter.aero":true,"civilaviation.aero":true,"club.aero":true,"conference.aero":true,"consultant.aero":true,"consulting.aero":true,"control.aero":true,"council.aero":true,"crew.aero":true,"design.aero":true,"dgca.aero":true,"educator.aero":true,"emergency.aero":true,"engine.aero":true,"engineer.aero":true,"entertainment.aero":true,"equipment.aero":true,"exchange.aero":true,"express.aero":true,"federation.aero":true,"flight.aero":true,"freight.aero":true,"fuel.aero":true,"gliding.aero":true,"government.aero":true,"groundhandling.aero":true,"group.aero":true,"hanggliding.aero":true,"homebuilt.aero":true,"insurance.aero":true,"journal.aero":true,"journalist.aero":true,"leasing.aero":true,"logistics.aero":true,"magazine.aero":true,"maintenance.aero":true,"media.aero":true,"microlight.aero":true,"modelling.aero":true,"navigation.aero":true,"parachuting.aero":true,"paragliding.aero":true,"passenger-association.aero":true,"pilot.aero":true,"press.aero":true,"production.aero":true,"recreation.aero":true,"repbody.aero":true,"res.aero":true,"research.aero":true,"rotorcraft.aero":true,"safety.aero":true,"scientist.aero":true,"services.aero":true,"show.aero":true,"skydiving.aero":true,"software.aero":true,"student.aero":true,"trader.aero":true,"trading.aero":true,"trainer.aero":true,"union.aero":true,"workinggroup.aero":true,"works.aero":true,"af":true,"gov.af":true,"com.af":true,"org.af":true,"net.af":true,"edu.af":true,"ag":true,"com.ag":true,"org.ag":true,"net.ag":true,"co.ag":true,"nom.ag":true,"ai":true,"off.ai":true,"com.ai":true,"net.ai":true,"org.ai":true,"al":true,"com.al":true,"edu.al":true,"gov.al":true,"mil.al":true,"net.al":true,"org.al":true,"am":true,"ao":true,"ed.ao":true,"gv.ao":true,"og.ao":true,"co.ao":true,"pb.ao":true,"it.ao":true,"aq":true,"ar":true,"com.ar":true,"edu.ar":true,"gob.ar":true,"gov.ar":true,"int.ar":true,"mil.ar":true,"musica.ar":true,"net.ar":true,"org.ar":true,"tur.ar":true,"arpa":true,"e164.arpa":true,"in-addr.arpa":true,"ip6.arpa":true,"iris.arpa":true,"uri.arpa":true,"urn.arpa":true,"as":true,"gov.as":true,"asia":true,"at":true,"ac.at":true,"co.at":true,"gv.at":true,"or.at":true,"au":true,"com.au":true,"net.au":true,"org.au":true,"edu.au":true,"gov.au":true,"asn.au":true,"id.au":true,"info.au":true,"conf.au":true,"oz.au":true,"act.au":true,"nsw.au":true,"nt.au":true,"qld.au":true,"sa.au":true,"tas.au":true,"vic.au":true,"wa.au":true,"act.edu.au":true,"nsw.edu.au":true,"nt.edu.au":true,"qld.edu.au":true,"sa.edu.au":true,"tas.edu.au":true,"vic.edu.au":true,"wa.edu.au":true,"qld.gov.au":true,"sa.gov.au":true,"tas.gov.au":true,"vic.gov.au":true,"wa.gov.au":true,"aw":true,"com.aw":true,"ax":true,"az":true,"com.az":true,"net.az":true,"int.az":true,"gov.az":true,"org.az":true,"edu.az":true,"info.az":true,"pp.az":true,"mil.az":true,"name.az":true,"pro.az":true,"biz.az":true,"ba":true,"com.ba":true,"edu.ba":true,"gov.ba":true,"mil.ba":true,"net.ba":true,"org.ba":true,"bb":true,"biz.bb":true,"co.bb":true,"com.bb":true,"edu.bb":true,"gov.bb":true,"info.bb":true,"net.bb":true,"org.bb":true,"store.bb":true,"tv.bb":true,"*.bd":true,"be":true,"ac.be":true,"bf":true,"gov.bf":true,"bg":true,"a.bg":true,"b.bg":true,"c.bg":true,"d.bg":true,"e.bg":true,"f.bg":true,"g.bg":true,"h.bg":true,"i.bg":true,"j.bg":true,"k.bg":true,"l.bg":true,"m.bg":true,"n.bg":true,"o.bg":true,"p.bg":true,"q.bg":true,"r.bg":true,"s.bg":true,"t.bg":true,"u.bg":true,"v.bg":true,"w.bg":true,"x.bg":true,"y.bg":true,"z.bg":true,"0.bg":true,"1.bg":true,"2.bg":true,"3.bg":true,"4.bg":true,"5.bg":true,"6.bg":true,"7.bg":true,"8.bg":true,"9.bg":true,"bh":true,"com.bh":true,"edu.bh":true,"net.bh":true,"org.bh":true,"gov.bh":true,"bi":true,"co.bi":true,"com.bi":true,"edu.bi":true,"or.bi":true,"org.bi":true,"biz":true,"bj":true,"asso.bj":true,"barreau.bj":true,"gouv.bj":true,"bm":true,"com.bm":true,"edu.bm":true,"gov.bm":true,"net.bm":true,"org.bm":true,"*.bn":true,"bo":true,"com.bo":true,"edu.bo":true,"gob.bo":true,"int.bo":true,"org.bo":true,"net.bo":true,"mil.bo":true,"tv.bo":true,"web.bo":true,"academia.bo":true,"agro.bo":true,"arte.bo":true,"blog.bo":true,"bolivia.bo":true,"ciencia.bo":true,"cooperativa.bo":true,"democracia.bo":true,"deporte.bo":true,"ecologia.bo":true,"economia.bo":true,"empresa.bo":true,"indigena.bo":true,"industria.bo":true,"info.bo":true,"medicina.bo":true,"movimiento.bo":true,"musica.bo":true,"natural.bo":true,"nombre.bo":true,"noticias.bo":true,"patria.bo":true,"politica.bo":true,"profesional.bo":true,"plurinacional.bo":true,"pueblo.bo":true,"revista.bo":true,"salud.bo":true,"tecnologia.bo":true,"tksat.bo":true,"transporte.bo":true,"wiki.bo":true,"br":true,"9guacu.br":true,"abc.br":true,"adm.br":true,"adv.br":true,"agr.br":true,"aju.br":true,"am.br":true,"anani.br":true,"aparecida.br":true,"arq.br":true,"art.br":true,"ato.br":true,"b.br":true,"belem.br":true,"bhz.br":true,"bio.br":true,"blog.br":true,"bmd.br":true,"boavista.br":true,"bsb.br":true,"campinagrande.br":true,"campinas.br":true,"caxias.br":true,"cim.br":true,"cng.br":true,"cnt.br":true,"com.br":true,"contagem.br":true,"coop.br":true,"cri.br":true,"cuiaba.br":true,"curitiba.br":true,"def.br":true,"ecn.br":true,"eco.br":true,"edu.br":true,"emp.br":true,"eng.br":true,"esp.br":true,"etc.br":true,"eti.br":true,"far.br":true,"feira.br":true,"flog.br":true,"floripa.br":true,"fm.br":true,"fnd.br":true,"fortal.br":true,"fot.br":true,"foz.br":true,"fst.br":true,"g12.br":true,"ggf.br":true,"goiania.br":true,"gov.br":true,"ac.gov.br":true,"al.gov.br":true,"am.gov.br":true,"ap.gov.br":true,"ba.gov.br":true,"ce.gov.br":true,"df.gov.br":true,"es.gov.br":true,"go.gov.br":true,"ma.gov.br":true,"mg.gov.br":true,"ms.gov.br":true,"mt.gov.br":true,"pa.gov.br":true,"pb.gov.br":true,"pe.gov.br":true,"pi.gov.br":true,"pr.gov.br":true,"rj.gov.br":true,"rn.gov.br":true,"ro.gov.br":true,"rr.gov.br":true,"rs.gov.br":true,"sc.gov.br":true,"se.gov.br":true,"sp.gov.br":true,"to.gov.br":true,"gru.br":true,"imb.br":true,"ind.br":true,"inf.br":true,"jab.br":true,"jampa.br":true,"jdf.br":true,"joinville.br":true,"jor.br":true,"jus.br":true,"leg.br":true,"lel.br":true,"londrina.br":true,"macapa.br":true,"maceio.br":true,"manaus.br":true,"maringa.br":true,"mat.br":true,"med.br":true,"mil.br":true,"morena.br":true,"mp.br":true,"mus.br":true,"natal.br":true,"net.br":true,"niteroi.br":true,"*.nom.br":true,"not.br":true,"ntr.br":true,"odo.br":true,"org.br":true,"osasco.br":true,"palmas.br":true,"poa.br":true,"ppg.br":true,"pro.br":true,"psc.br":true,"psi.br":true,"pvh.br":true,"qsl.br":true,"radio.br":true,"rec.br":true,"recife.br":true,"ribeirao.br":true,"rio.br":true,"riobranco.br":true,"riopreto.br":true,"salvador.br":true,"sampa.br":true,"santamaria.br":true,"santoandre.br":true,"saobernardo.br":true,"saogonca.br":true,"sjc.br":true,"slg.br":true,"slz.br":true,"sorocaba.br":true,"srv.br":true,"taxi.br":true,"teo.br":true,"the.br":true,"tmp.br":true,"trd.br":true,"tur.br":true,"tv.br":true,"udi.br":true,"vet.br":true,"vix.br":true,"vlog.br":true,"wiki.br":true,"zlg.br":true,"bs":true,"com.bs":true,"net.bs":true,"org.bs":true,"edu.bs":true,"gov.bs":true,"bt":true,"com.bt":true,"edu.bt":true,"gov.bt":true,"net.bt":true,"org.bt":true,"bv":true,"bw":true,"co.bw":true,"org.bw":true,"by":true,"gov.by":true,"mil.by":true,"com.by":true,"of.by":true,"bz":true,"com.bz":true,"net.bz":true,"org.bz":true,"edu.bz":true,"gov.bz":true,"ca":true,"ab.ca":true,"bc.ca":true,"mb.ca":true,"nb.ca":true,"nf.ca":true,"nl.ca":true,"ns.ca":true,"nt.ca":true,"nu.ca":true,"on.ca":true,"pe.ca":true,"qc.ca":true,"sk.ca":true,"yk.ca":true,"gc.ca":true,"cat":true,"cc":true,"cd":true,"gov.cd":true,"cf":true,"cg":true,"ch":true,"ci":true,"org.ci":true,"or.ci":true,"com.ci":true,"co.ci":true,"edu.ci":true,"ed.ci":true,"ac.ci":true,"net.ci":true,"go.ci":true,"asso.ci":true,"xn--aroport-bya.ci":true,"int.ci":true,"presse.ci":true,"md.ci":true,"gouv.ci":true,"*.ck":true,"www.ck":false,"cl":true,"gov.cl":true,"gob.cl":true,"co.cl":true,"mil.cl":true,"cm":true,"co.cm":true,"com.cm":true,"gov.cm":true,"net.cm":true,"cn":true,"ac.cn":true,"com.cn":true,"edu.cn":true,"gov.cn":true,"net.cn":true,"org.cn":true,"mil.cn":true,"xn--55qx5d.cn":true,"xn--io0a7i.cn":true,"xn--od0alg.cn":true,"ah.cn":true,"bj.cn":true,"cq.cn":true,"fj.cn":true,"gd.cn":true,"gs.cn":true,"gz.cn":true,"gx.cn":true,"ha.cn":true,"hb.cn":true,"he.cn":true,"hi.cn":true,"hl.cn":true,"hn.cn":true,"jl.cn":true,"js.cn":true,"jx.cn":true,"ln.cn":true,"nm.cn":true,"nx.cn":true,"qh.cn":true,"sc.cn":true,"sd.cn":true,"sh.cn":true,"sn.cn":true,"sx.cn":true,"tj.cn":true,"xj.cn":true,"xz.cn":true,"yn.cn":true,"zj.cn":true,"hk.cn":true,"mo.cn":true,"tw.cn":true,"co":true,"arts.co":true,"com.co":true,"edu.co":true,"firm.co":true,"gov.co":true,"info.co":true,"int.co":true,"mil.co":true,"net.co":true,"nom.co":true,"org.co":true,"rec.co":true,"web.co":true,"com":true,"coop":true,"cr":true,"ac.cr":true,"co.cr":true,"ed.cr":true,"fi.cr":true,"go.cr":true,"or.cr":true,"sa.cr":true,"cu":true,"com.cu":true,"edu.cu":true,"org.cu":true,"net.cu":true,"gov.cu":true,"inf.cu":true,"cv":true,"cw":true,"com.cw":true,"edu.cw":true,"net.cw":true,"org.cw":true,"cx":true,"gov.cx":true,"cy":true,"ac.cy":true,"biz.cy":true,"com.cy":true,"ekloges.cy":true,"gov.cy":true,"ltd.cy":true,"name.cy":true,"net.cy":true,"org.cy":true,"parliament.cy":true,"press.cy":true,"pro.cy":true,"tm.cy":true,"cz":true,"de":true,"dj":true,"dk":true,"dm":true,"com.dm":true,"net.dm":true,"org.dm":true,"edu.dm":true,"gov.dm":true,"do":true,"art.do":true,"com.do":true,"edu.do":true,"gob.do":true,"gov.do":true,"mil.do":true,"net.do":true,"org.do":true,"sld.do":true,"web.do":true,"dz":true,"com.dz":true,"org.dz":true,"net.dz":true,"gov.dz":true,"edu.dz":true,"asso.dz":true,"pol.dz":true,"art.dz":true,"ec":true,"com.ec":true,"info.ec":true,"net.ec":true,"fin.ec":true,"k12.ec":true,"med.ec":true,"pro.ec":true,"org.ec":true,"edu.ec":true,"gov.ec":true,"gob.ec":true,"mil.ec":true,"edu":true,"ee":true,"edu.ee":true,"gov.ee":true,"riik.ee":true,"lib.ee":true,"med.ee":true,"com.ee":true,"pri.ee":true,"aip.ee":true,"org.ee":true,"fie.ee":true,"eg":true,"com.eg":true,"edu.eg":true,"eun.eg":true,"gov.eg":true,"mil.eg":true,"name.eg":true,"net.eg":true,"org.eg":true,"sci.eg":true,"*.er":true,"es":true,"com.es":true,"nom.es":true,"org.es":true,"gob.es":true,"edu.es":true,"et":true,"com.et":true,"gov.et":true,"org.et":true,"edu.et":true,"biz.et":true,"name.et":true,"info.et":true,"net.et":true,"eu":true,"fi":true,"aland.fi":true,"*.fj":true,"*.fk":true,"fm":true,"fo":true,"fr":true,"com.fr":true,"asso.fr":true,"nom.fr":true,"prd.fr":true,"presse.fr":true,"tm.fr":true,"aeroport.fr":true,"assedic.fr":true,"avocat.fr":true,"avoues.fr":true,"cci.fr":true,"chambagri.fr":true,"chirurgiens-dentistes.fr":true,"experts-comptables.fr":true,"geometre-expert.fr":true,"gouv.fr":true,"greta.fr":true,"huissier-justice.fr":true,"medecin.fr":true,"notaires.fr":true,"pharmacien.fr":true,"port.fr":true,"veterinaire.fr":true,"ga":true,"gb":true,"gd":true,"ge":true,"com.ge":true,"edu.ge":true,"gov.ge":true,"org.ge":true,"mil.ge":true,"net.ge":true,"pvt.ge":true,"gf":true,"gg":true,"co.gg":true,"net.gg":true,"org.gg":true,"gh":true,"com.gh":true,"edu.gh":true,"gov.gh":true,"org.gh":true,"mil.gh":true,"gi":true,"com.gi":true,"ltd.gi":true,"gov.gi":true,"mod.gi":true,"edu.gi":true,"org.gi":true,"gl":true,"co.gl":true,"com.gl":true,"edu.gl":true,"net.gl":true,"org.gl":true,"gm":true,"gn":true,"ac.gn":true,"com.gn":true,"edu.gn":true,"gov.gn":true,"org.gn":true,"net.gn":true,"gov":true,"gp":true,"com.gp":true,"net.gp":true,"mobi.gp":true,"edu.gp":true,"org.gp":true,"asso.gp":true,"gq":true,"gr":true,"com.gr":true,"edu.gr":true,"net.gr":true,"org.gr":true,"gov.gr":true,"gs":true,"gt":true,"com.gt":true,"edu.gt":true,"gob.gt":true,"ind.gt":true,"mil.gt":true,"net.gt":true,"org.gt":true,"*.gu":true,"gw":true,"gy":true,"co.gy":true,"com.gy":true,"edu.gy":true,"gov.gy":true,"net.gy":true,"org.gy":true,"hk":true,"com.hk":true,"edu.hk":true,"gov.hk":true,"idv.hk":true,"net.hk":true,"org.hk":true,"xn--55qx5d.hk":true,"xn--wcvs22d.hk":true,"xn--lcvr32d.hk":true,"xn--mxtq1m.hk":true,"xn--gmqw5a.hk":true,"xn--ciqpn.hk":true,"xn--gmq050i.hk":true,"xn--zf0avx.hk":true,"xn--io0a7i.hk":true,"xn--mk0axi.hk":true,"xn--od0alg.hk":true,"xn--od0aq3b.hk":true,"xn--tn0ag.hk":true,"xn--uc0atv.hk":true,"xn--uc0ay4a.hk":true,"hm":true,"hn":true,"com.hn":true,"edu.hn":true,"org.hn":true,"net.hn":true,"mil.hn":true,"gob.hn":true,"hr":true,"iz.hr":true,"from.hr":true,"name.hr":true,"com.hr":true,"ht":true,"com.ht":true,"shop.ht":true,"firm.ht":true,"info.ht":true,"adult.ht":true,"net.ht":true,"pro.ht":true,"org.ht":true,"med.ht":true,"art.ht":true,"coop.ht":true,"pol.ht":true,"asso.ht":true,"edu.ht":true,"rel.ht":true,"gouv.ht":true,"perso.ht":true,"hu":true,"co.hu":true,"info.hu":true,"org.hu":true,"priv.hu":true,"sport.hu":true,"tm.hu":true,"2000.hu":true,"agrar.hu":true,"bolt.hu":true,"casino.hu":true,"city.hu":true,"erotica.hu":true,"erotika.hu":true,"film.hu":true,"forum.hu":true,"games.hu":true,"hotel.hu":true,"ingatlan.hu":true,"jogasz.hu":true,"konyvelo.hu":true,"lakas.hu":true,"media.hu":true,"news.hu":true,"reklam.hu":true,"sex.hu":true,"shop.hu":true,"suli.hu":true,"szex.hu":true,"tozsde.hu":true,"utazas.hu":true,"video.hu":true,"id":true,"ac.id":true,"biz.id":true,"co.id":true,"desa.id":true,"go.id":true,"mil.id":true,"my.id":true,"net.id":true,"or.id":true,"sch.id":true,"web.id":true,"ie":true,"gov.ie":true,"il":true,"ac.il":true,"co.il":true,"gov.il":true,"idf.il":true,"k12.il":true,"muni.il":true,"net.il":true,"org.il":true,"im":true,"ac.im":true,"co.im":true,"com.im":true,"ltd.co.im":true,"net.im":true,"org.im":true,"plc.co.im":true,"tt.im":true,"tv.im":true,"in":true,"co.in":true,"firm.in":true,"net.in":true,"org.in":true,"gen.in":true,"ind.in":true,"nic.in":true,"ac.in":true,"edu.in":true,"res.in":true,"gov.in":true,"mil.in":true,"info":true,"int":true,"eu.int":true,"io":true,"com.io":true,"iq":true,"gov.iq":true,"edu.iq":true,"mil.iq":true,"com.iq":true,"org.iq":true,"net.iq":true,"ir":true,"ac.ir":true,"co.ir":true,"gov.ir":true,"id.ir":true,"net.ir":true,"org.ir":true,"sch.ir":true,"xn--mgba3a4f16a.ir":true,"xn--mgba3a4fra.ir":true,"is":true,"net.is":true,"com.is":true,"edu.is":true,"gov.is":true,"org.is":true,"int.is":true,"it":true,"gov.it":true,"edu.it":true,"abr.it":true,"abruzzo.it":true,"aosta-valley.it":true,"aostavalley.it":true,"bas.it":true,"basilicata.it":true,"cal.it":true,"calabria.it":true,"cam.it":true,"campania.it":true,"emilia-romagna.it":true,"emiliaromagna.it":true,"emr.it":true,"friuli-v-giulia.it":true,"friuli-ve-giulia.it":true,"friuli-vegiulia.it":true,"friuli-venezia-giulia.it":true,"friuli-veneziagiulia.it":true,"friuli-vgiulia.it":true,"friuliv-giulia.it":true,"friulive-giulia.it":true,"friulivegiulia.it":true,"friulivenezia-giulia.it":true,"friuliveneziagiulia.it":true,"friulivgiulia.it":true,"fvg.it":true,"laz.it":true,"lazio.it":true,"lig.it":true,"liguria.it":true,"lom.it":true,"lombardia.it":true,"lombardy.it":true,"lucania.it":true,"mar.it":true,"marche.it":true,"mol.it":true,"molise.it":true,"piedmont.it":true,"piemonte.it":true,"pmn.it":true,"pug.it":true,"puglia.it":true,"sar.it":true,"sardegna.it":true,"sardinia.it":true,"sic.it":true,"sicilia.it":true,"sicily.it":true,"taa.it":true,"tos.it":true,"toscana.it":true,"trentino-a-adige.it":true,"trentino-aadige.it":true,"trentino-alto-adige.it":true,"trentino-altoadige.it":true,"trentino-s-tirol.it":true,"trentino-stirol.it":true,"trentino-sud-tirol.it":true,"trentino-sudtirol.it":true,"trentino-sued-tirol.it":true,"trentino-suedtirol.it":true,"trentinoa-adige.it":true,"trentinoaadige.it":true,"trentinoalto-adige.it":true,"trentinoaltoadige.it":true,"trentinos-tirol.it":true,"trentinostirol.it":true,"trentinosud-tirol.it":true,"trentinosudtirol.it":true,"trentinosued-tirol.it":true,"trentinosuedtirol.it":true,"tuscany.it":true,"umb.it":true,"umbria.it":true,"val-d-aosta.it":true,"val-daosta.it":true,"vald-aosta.it":true,"valdaosta.it":true,"valle-aosta.it":true,"valle-d-aosta.it":true,"valle-daosta.it":true,"valleaosta.it":true,"valled-aosta.it":true,"valledaosta.it":true,"vallee-aoste.it":true,"valleeaoste.it":true,"vao.it":true,"vda.it":true,"ven.it":true,"veneto.it":true,"ag.it":true,"agrigento.it":true,"al.it":true,"alessandria.it":true,"alto-adige.it":true,"altoadige.it":true,"an.it":true,"ancona.it":true,"andria-barletta-trani.it":true,"andria-trani-barletta.it":true,"andriabarlettatrani.it":true,"andriatranibarletta.it":true,"ao.it":true,"aosta.it":true,"aoste.it":true,"ap.it":true,"aq.it":true,"aquila.it":true,"ar.it":true,"arezzo.it":true,"ascoli-piceno.it":true,"ascolipiceno.it":true,"asti.it":true,"at.it":true,"av.it":true,"avellino.it":true,"ba.it":true,"balsan.it":true,"bari.it":true,"barletta-trani-andria.it":true,"barlettatraniandria.it":true,"belluno.it":true,"benevento.it":true,"bergamo.it":true,"bg.it":true,"bi.it":true,"biella.it":true,"bl.it":true,"bn.it":true,"bo.it":true,"bologna.it":true,"bolzano.it":true,"bozen.it":true,"br.it":true,"brescia.it":true,"brindisi.it":true,"bs.it":true,"bt.it":true,"bz.it":true,"ca.it":true,"cagliari.it":true,"caltanissetta.it":true,"campidano-medio.it":true,"campidanomedio.it":true,"campobasso.it":true,"carbonia-iglesias.it":true,"carboniaiglesias.it":true,"carrara-massa.it":true,"carraramassa.it":true,"caserta.it":true,"catania.it":true,"catanzaro.it":true,"cb.it":true,"ce.it":true,"cesena-forli.it":true,"cesenaforli.it":true,"ch.it":true,"chieti.it":true,"ci.it":true,"cl.it":true,"cn.it":true,"co.it":true,"como.it":true,"cosenza.it":true,"cr.it":true,"cremona.it":true,"crotone.it":true,"cs.it":true,"ct.it":true,"cuneo.it":true,"cz.it":true,"dell-ogliastra.it":true,"dellogliastra.it":true,"en.it":true,"enna.it":true,"fc.it":true,"fe.it":true,"fermo.it":true,"ferrara.it":true,"fg.it":true,"fi.it":true,"firenze.it":true,"florence.it":true,"fm.it":true,"foggia.it":true,"forli-cesena.it":true,"forlicesena.it":true,"fr.it":true,"frosinone.it":true,"ge.it":true,"genoa.it":true,"genova.it":true,"go.it":true,"gorizia.it":true,"gr.it":true,"grosseto.it":true,"iglesias-carbonia.it":true,"iglesiascarbonia.it":true,"im.it":true,"imperia.it":true,"is.it":true,"isernia.it":true,"kr.it":true,"la-spezia.it":true,"laquila.it":true,"laspezia.it":true,"latina.it":true,"lc.it":true,"le.it":true,"lecce.it":true,"lecco.it":true,"li.it":true,"livorno.it":true,"lo.it":true,"lodi.it":true,"lt.it":true,"lu.it":true,"lucca.it":true,"macerata.it":true,"mantova.it":true,"massa-carrara.it":true,"massacarrara.it":true,"matera.it":true,"mb.it":true,"mc.it":true,"me.it":true,"medio-campidano.it":true,"mediocampidano.it":true,"messina.it":true,"mi.it":true,"milan.it":true,"milano.it":true,"mn.it":true,"mo.it":true,"modena.it":true,"monza-brianza.it":true,"monza-e-della-brianza.it":true,"monza.it":true,"monzabrianza.it":true,"monzaebrianza.it":true,"monzaedellabrianza.it":true,"ms.it":true,"mt.it":true,"na.it":true,"naples.it":true,"napoli.it":true,"no.it":true,"novara.it":true,"nu.it":true,"nuoro.it":true,"og.it":true,"ogliastra.it":true,"olbia-tempio.it":true,"olbiatempio.it":true,"or.it":true,"oristano.it":true,"ot.it":true,"pa.it":true,"padova.it":true,"padua.it":true,"palermo.it":true,"parma.it":true,"pavia.it":true,"pc.it":true,"pd.it":true,"pe.it":true,"perugia.it":true,"pesaro-urbino.it":true,"pesarourbino.it":true,"pescara.it":true,"pg.it":true,"pi.it":true,"piacenza.it":true,"pisa.it":true,"pistoia.it":true,"pn.it":true,"po.it":true,"pordenone.it":true,"potenza.it":true,"pr.it":true,"prato.it":true,"pt.it":true,"pu.it":true,"pv.it":true,"pz.it":true,"ra.it":true,"ragusa.it":true,"ravenna.it":true,"rc.it":true,"re.it":true,"reggio-calabria.it":true,"reggio-emilia.it":true,"reggiocalabria.it":true,"reggioemilia.it":true,"rg.it":true,"ri.it":true,"rieti.it":true,"rimini.it":true,"rm.it":true,"rn.it":true,"ro.it":true,"roma.it":true,"rome.it":true,"rovigo.it":true,"sa.it":true,"salerno.it":true,"sassari.it":true,"savona.it":true,"si.it":true,"siena.it":true,"siracusa.it":true,"so.it":true,"sondrio.it":true,"sp.it":true,"sr.it":true,"ss.it":true,"suedtirol.it":true,"sv.it":true,"ta.it":true,"taranto.it":true,"te.it":true,"tempio-olbia.it":true,"tempioolbia.it":true,"teramo.it":true,"terni.it":true,"tn.it":true,"to.it":true,"torino.it":true,"tp.it":true,"tr.it":true,"trani-andria-barletta.it":true,"trani-barletta-andria.it":true,"traniandriabarletta.it":true,"tranibarlettaandria.it":true,"trapani.it":true,"trentino.it":true,"trento.it":true,"treviso.it":true,"trieste.it":true,"ts.it":true,"turin.it":true,"tv.it":true,"ud.it":true,"udine.it":true,"urbino-pesaro.it":true,"urbinopesaro.it":true,"va.it":true,"varese.it":true,"vb.it":true,"vc.it":true,"ve.it":true,"venezia.it":true,"venice.it":true,"verbania.it":true,"vercelli.it":true,"verona.it":true,"vi.it":true,"vibo-valentia.it":true,"vibovalentia.it":true,"vicenza.it":true,"viterbo.it":true,"vr.it":true,"vs.it":true,"vt.it":true,"vv.it":true,"je":true,"co.je":true,"net.je":true,"org.je":true,"*.jm":true,"jo":true,"com.jo":true,"org.jo":true,"net.jo":true,"edu.jo":true,"sch.jo":true,"gov.jo":true,"mil.jo":true,"name.jo":true,"jobs":true,"jp":true,"ac.jp":true,"ad.jp":true,"co.jp":true,"ed.jp":true,"go.jp":true,"gr.jp":true,"lg.jp":true,"ne.jp":true,"or.jp":true,"aichi.jp":true,"akita.jp":true,"aomori.jp":true,"chiba.jp":true,"ehime.jp":true,"fukui.jp":true,"fukuoka.jp":true,"fukushima.jp":true,"gifu.jp":true,"gunma.jp":true,"hiroshima.jp":true,"hokkaido.jp":true,"hyogo.jp":true,"ibaraki.jp":true,"ishikawa.jp":true,"iwate.jp":true,"kagawa.jp":true,"kagoshima.jp":true,"kanagawa.jp":true,"kochi.jp":true,"kumamoto.jp":true,"kyoto.jp":true,"mie.jp":true,"miyagi.jp":true,"miyazaki.jp":true,"nagano.jp":true,"nagasaki.jp":true,"nara.jp":true,"niigata.jp":true,"oita.jp":true,"okayama.jp":true,"okinawa.jp":true,"osaka.jp":true,"saga.jp":true,"saitama.jp":true,"shiga.jp":true,"shimane.jp":true,"shizuoka.jp":true,"tochigi.jp":true,"tokushima.jp":true,"tokyo.jp":true,"tottori.jp":true,"toyama.jp":true,"wakayama.jp":true,"yamagata.jp":true,"yamaguchi.jp":true,"yamanashi.jp":true,"xn--4pvxs.jp":true,"xn--vgu402c.jp":true,"xn--c3s14m.jp":true,"xn--f6qx53a.jp":true,"xn--8pvr4u.jp":true,"xn--uist22h.jp":true,"xn--djrs72d6uy.jp":true,"xn--mkru45i.jp":true,"xn--0trq7p7nn.jp":true,"xn--8ltr62k.jp":true,"xn--2m4a15e.jp":true,"xn--efvn9s.jp":true,"xn--32vp30h.jp":true,"xn--4it797k.jp":true,"xn--1lqs71d.jp":true,"xn--5rtp49c.jp":true,"xn--5js045d.jp":true,"xn--ehqz56n.jp":true,"xn--1lqs03n.jp":true,"xn--qqqt11m.jp":true,"xn--kbrq7o.jp":true,"xn--pssu33l.jp":true,"xn--ntsq17g.jp":true,"xn--uisz3g.jp":true,"xn--6btw5a.jp":true,"xn--1ctwo.jp":true,"xn--6orx2r.jp":true,"xn--rht61e.jp":true,"xn--rht27z.jp":true,"xn--djty4k.jp":true,"xn--nit225k.jp":true,"xn--rht3d.jp":true,"xn--klty5x.jp":true,"xn--kltx9a.jp":true,"xn--kltp7d.jp":true,"xn--uuwu58a.jp":true,"xn--zbx025d.jp":true,"xn--ntso0iqx3a.jp":true,"xn--elqq16h.jp":true,"xn--4it168d.jp":true,"xn--klt787d.jp":true,"xn--rny31h.jp":true,"xn--7t0a264c.jp":true,"xn--5rtq34k.jp":true,"xn--k7yn95e.jp":true,"xn--tor131o.jp":true,"xn--d5qv7z876c.jp":true,"*.kawasaki.jp":true,"*.kitakyushu.jp":true,"*.kobe.jp":true,"*.nagoya.jp":true,"*.sapporo.jp":true,"*.sendai.jp":true,"*.yokohama.jp":true,"city.kawasaki.jp":false,"city.kitakyushu.jp":false,"city.kobe.jp":false,"city.nagoya.jp":false,"city.sapporo.jp":false,"city.sendai.jp":false,"city.yokohama.jp":false,"aisai.aichi.jp":true,"ama.aichi.jp":true,"anjo.aichi.jp":true,"asuke.aichi.jp":true,"chiryu.aichi.jp":true,"chita.aichi.jp":true,"fuso.aichi.jp":true,"gamagori.aichi.jp":true,"handa.aichi.jp":true,"hazu.aichi.jp":true,"hekinan.aichi.jp":true,"higashiura.aichi.jp":true,"ichinomiya.aichi.jp":true,"inazawa.aichi.jp":true,"inuyama.aichi.jp":true,"isshiki.aichi.jp":true,"iwakura.aichi.jp":true,"kanie.aichi.jp":true,"kariya.aichi.jp":true,"kasugai.aichi.jp":true,"kira.aichi.jp":true,"kiyosu.aichi.jp":true,"komaki.aichi.jp":true,"konan.aichi.jp":true,"kota.aichi.jp":true,"mihama.aichi.jp":true,"miyoshi.aichi.jp":true,"nishio.aichi.jp":true,"nisshin.aichi.jp":true,"obu.aichi.jp":true,"oguchi.aichi.jp":true,"oharu.aichi.jp":true,"okazaki.aichi.jp":true,"owariasahi.aichi.jp":true,"seto.aichi.jp":true,"shikatsu.aichi.jp":true,"shinshiro.aichi.jp":true,"shitara.aichi.jp":true,"tahara.aichi.jp":true,"takahama.aichi.jp":true,"tobishima.aichi.jp":true,"toei.aichi.jp":true,"togo.aichi.jp":true,"tokai.aichi.jp":true,"tokoname.aichi.jp":true,"toyoake.aichi.jp":true,"toyohashi.aichi.jp":true,"toyokawa.aichi.jp":true,"toyone.aichi.jp":true,"toyota.aichi.jp":true,"tsushima.aichi.jp":true,"yatomi.aichi.jp":true,"akita.akita.jp":true,"daisen.akita.jp":true,"fujisato.akita.jp":true,"gojome.akita.jp":true,"hachirogata.akita.jp":true,"happou.akita.jp":true,"higashinaruse.akita.jp":true,"honjo.akita.jp":true,"honjyo.akita.jp":true,"ikawa.akita.jp":true,"kamikoani.akita.jp":true,"kamioka.akita.jp":true,"katagami.akita.jp":true,"kazuno.akita.jp":true,"kitaakita.akita.jp":true,"kosaka.akita.jp":true,"kyowa.akita.jp":true,"misato.akita.jp":true,"mitane.akita.jp":true,"moriyoshi.akita.jp":true,"nikaho.akita.jp":true,"noshiro.akita.jp":true,"odate.akita.jp":true,"oga.akita.jp":true,"ogata.akita.jp":true,"semboku.akita.jp":true,"yokote.akita.jp":true,"yurihonjo.akita.jp":true,"aomori.aomori.jp":true,"gonohe.aomori.jp":true,"hachinohe.aomori.jp":true,"hashikami.aomori.jp":true,"hiranai.aomori.jp":true,"hirosaki.aomori.jp":true,"itayanagi.aomori.jp":true,"kuroishi.aomori.jp":true,"misawa.aomori.jp":true,"mutsu.aomori.jp":true,"nakadomari.aomori.jp":true,"noheji.aomori.jp":true,"oirase.aomori.jp":true,"owani.aomori.jp":true,"rokunohe.aomori.jp":true,"sannohe.aomori.jp":true,"shichinohe.aomori.jp":true,"shingo.aomori.jp":true,"takko.aomori.jp":true,"towada.aomori.jp":true,"tsugaru.aomori.jp":true,"tsuruta.aomori.jp":true,"abiko.chiba.jp":true,"asahi.chiba.jp":true,"chonan.chiba.jp":true,"chosei.chiba.jp":true,"choshi.chiba.jp":true,"chuo.chiba.jp":true,"funabashi.chiba.jp":true,"futtsu.chiba.jp":true,"hanamigawa.chiba.jp":true,"ichihara.chiba.jp":true,"ichikawa.chiba.jp":true,"ichinomiya.chiba.jp":true,"inzai.chiba.jp":true,"isumi.chiba.jp":true,"kamagaya.chiba.jp":true,"kamogawa.chiba.jp":true,"kashiwa.chiba.jp":true,"katori.chiba.jp":true,"katsuura.chiba.jp":true,"kimitsu.chiba.jp":true,"kisarazu.chiba.jp":true,"kozaki.chiba.jp":true,"kujukuri.chiba.jp":true,"kyonan.chiba.jp":true,"matsudo.chiba.jp":true,"midori.chiba.jp":true,"mihama.chiba.jp":true,"minamiboso.chiba.jp":true,"mobara.chiba.jp":true,"mutsuzawa.chiba.jp":true,"nagara.chiba.jp":true,"nagareyama.chiba.jp":true,"narashino.chiba.jp":true,"narita.chiba.jp":true,"noda.chiba.jp":true,"oamishirasato.chiba.jp":true,"omigawa.chiba.jp":true,"onjuku.chiba.jp":true,"otaki.chiba.jp":true,"sakae.chiba.jp":true,"sakura.chiba.jp":true,"shimofusa.chiba.jp":true,"shirako.chiba.jp":true,"shiroi.chiba.jp":true,"shisui.chiba.jp":true,"sodegaura.chiba.jp":true,"sosa.chiba.jp":true,"tako.chiba.jp":true,"tateyama.chiba.jp":true,"togane.chiba.jp":true,"tohnosho.chiba.jp":true,"tomisato.chiba.jp":true,"urayasu.chiba.jp":true,"yachimata.chiba.jp":true,"yachiyo.chiba.jp":true,"yokaichiba.chiba.jp":true,"yokoshibahikari.chiba.jp":true,"yotsukaido.chiba.jp":true,"ainan.ehime.jp":true,"honai.ehime.jp":true,"ikata.ehime.jp":true,"imabari.ehime.jp":true,"iyo.ehime.jp":true,"kamijima.ehime.jp":true,"kihoku.ehime.jp":true,"kumakogen.ehime.jp":true,"masaki.ehime.jp":true,"matsuno.ehime.jp":true,"matsuyama.ehime.jp":true,"namikata.ehime.jp":true,"niihama.ehime.jp":true,"ozu.ehime.jp":true,"saijo.ehime.jp":true,"seiyo.ehime.jp":true,"shikokuchuo.ehime.jp":true,"tobe.ehime.jp":true,"toon.ehime.jp":true,"uchiko.ehime.jp":true,"uwajima.ehime.jp":true,"yawatahama.ehime.jp":true,"echizen.fukui.jp":true,"eiheiji.fukui.jp":true,"fukui.fukui.jp":true,"ikeda.fukui.jp":true,"katsuyama.fukui.jp":true,"mihama.fukui.jp":true,"minamiechizen.fukui.jp":true,"obama.fukui.jp":true,"ohi.fukui.jp":true,"ono.fukui.jp":true,"sabae.fukui.jp":true,"sakai.fukui.jp":true,"takahama.fukui.jp":true,"tsuruga.fukui.jp":true,"wakasa.fukui.jp":true,"ashiya.fukuoka.jp":true,"buzen.fukuoka.jp":true,"chikugo.fukuoka.jp":true,"chikuho.fukuoka.jp":true,"chikujo.fukuoka.jp":true,"chikushino.fukuoka.jp":true,"chikuzen.fukuoka.jp":true,"chuo.fukuoka.jp":true,"dazaifu.fukuoka.jp":true,"fukuchi.fukuoka.jp":true,"hakata.fukuoka.jp":true,"higashi.fukuoka.jp":true,"hirokawa.fukuoka.jp":true,"hisayama.fukuoka.jp":true,"iizuka.fukuoka.jp":true,"inatsuki.fukuoka.jp":true,"kaho.fukuoka.jp":true,"kasuga.fukuoka.jp":true,"kasuya.fukuoka.jp":true,"kawara.fukuoka.jp":true,"keisen.fukuoka.jp":true,"koga.fukuoka.jp":true,"kurate.fukuoka.jp":true,"kurogi.fukuoka.jp":true,"kurume.fukuoka.jp":true,"minami.fukuoka.jp":true,"miyako.fukuoka.jp":true,"miyama.fukuoka.jp":true,"miyawaka.fukuoka.jp":true,"mizumaki.fukuoka.jp":true,"munakata.fukuoka.jp":true,"nakagawa.fukuoka.jp":true,"nakama.fukuoka.jp":true,"nishi.fukuoka.jp":true,"nogata.fukuoka.jp":true,"ogori.fukuoka.jp":true,"okagaki.fukuoka.jp":true,"okawa.fukuoka.jp":true,"oki.fukuoka.jp":true,"omuta.fukuoka.jp":true,"onga.fukuoka.jp":true,"onojo.fukuoka.jp":true,"oto.fukuoka.jp":true,"saigawa.fukuoka.jp":true,"sasaguri.fukuoka.jp":true,"shingu.fukuoka.jp":true,"shinyoshitomi.fukuoka.jp":true,"shonai.fukuoka.jp":true,"soeda.fukuoka.jp":true,"sue.fukuoka.jp":true,"tachiarai.fukuoka.jp":true,"tagawa.fukuoka.jp":true,"takata.fukuoka.jp":true,"toho.fukuoka.jp":true,"toyotsu.fukuoka.jp":true,"tsuiki.fukuoka.jp":true,"ukiha.fukuoka.jp":true,"umi.fukuoka.jp":true,"usui.fukuoka.jp":true,"yamada.fukuoka.jp":true,"yame.fukuoka.jp":true,"yanagawa.fukuoka.jp":true,"yukuhashi.fukuoka.jp":true,"aizubange.fukushima.jp":true,"aizumisato.fukushima.jp":true,"aizuwakamatsu.fukushima.jp":true,"asakawa.fukushima.jp":true,"bandai.fukushima.jp":true,"date.fukushima.jp":true,"fukushima.fukushima.jp":true,"furudono.fukushima.jp":true,"futaba.fukushima.jp":true,"hanawa.fukushima.jp":true,"higashi.fukushima.jp":true,"hirata.fukushima.jp":true,"hirono.fukushima.jp":true,"iitate.fukushima.jp":true,"inawashiro.fukushima.jp":true,"ishikawa.fukushima.jp":true,"iwaki.fukushima.jp":true,"izumizaki.fukushima.jp":true,"kagamiishi.fukushima.jp":true,"kaneyama.fukushima.jp":true,"kawamata.fukushima.jp":true,"kitakata.fukushima.jp":true,"kitashiobara.fukushima.jp":true,"koori.fukushima.jp":true,"koriyama.fukushima.jp":true,"kunimi.fukushima.jp":true,"miharu.fukushima.jp":true,"mishima.fukushima.jp":true,"namie.fukushima.jp":true,"nango.fukushima.jp":true,"nishiaizu.fukushima.jp":true,"nishigo.fukushima.jp":true,"okuma.fukushima.jp":true,"omotego.fukushima.jp":true,"ono.fukushima.jp":true,"otama.fukushima.jp":true,"samegawa.fukushima.jp":true,"shimogo.fukushima.jp":true,"shirakawa.fukushima.jp":true,"showa.fukushima.jp":true,"soma.fukushima.jp":true,"sukagawa.fukushima.jp":true,"taishin.fukushima.jp":true,"tamakawa.fukushima.jp":true,"tanagura.fukushima.jp":true,"tenei.fukushima.jp":true,"yabuki.fukushima.jp":true,"yamato.fukushima.jp":true,"yamatsuri.fukushima.jp":true,"yanaizu.fukushima.jp":true,"yugawa.fukushima.jp":true,"anpachi.gifu.jp":true,"ena.gifu.jp":true,"gifu.gifu.jp":true,"ginan.gifu.jp":true,"godo.gifu.jp":true,"gujo.gifu.jp":true,"hashima.gifu.jp":true,"hichiso.gifu.jp":true,"hida.gifu.jp":true,"higashishirakawa.gifu.jp":true,"ibigawa.gifu.jp":true,"ikeda.gifu.jp":true,"kakamigahara.gifu.jp":true,"kani.gifu.jp":true,"kasahara.gifu.jp":true,"kasamatsu.gifu.jp":true,"kawaue.gifu.jp":true,"kitagata.gifu.jp":true,"mino.gifu.jp":true,"minokamo.gifu.jp":true,"mitake.gifu.jp":true,"mizunami.gifu.jp":true,"motosu.gifu.jp":true,"nakatsugawa.gifu.jp":true,"ogaki.gifu.jp":true,"sakahogi.gifu.jp":true,"seki.gifu.jp":true,"sekigahara.gifu.jp":true,"shirakawa.gifu.jp":true,"tajimi.gifu.jp":true,"takayama.gifu.jp":true,"tarui.gifu.jp":true,"toki.gifu.jp":true,"tomika.gifu.jp":true,"wanouchi.gifu.jp":true,"yamagata.gifu.jp":true,"yaotsu.gifu.jp":true,"yoro.gifu.jp":true,"annaka.gunma.jp":true,"chiyoda.gunma.jp":true,"fujioka.gunma.jp":true,"higashiagatsuma.gunma.jp":true,"isesaki.gunma.jp":true,"itakura.gunma.jp":true,"kanna.gunma.jp":true,"kanra.gunma.jp":true,"katashina.gunma.jp":true,"kawaba.gunma.jp":true,"kiryu.gunma.jp":true,"kusatsu.gunma.jp":true,"maebashi.gunma.jp":true,"meiwa.gunma.jp":true,"midori.gunma.jp":true,"minakami.gunma.jp":true,"naganohara.gunma.jp":true,"nakanojo.gunma.jp":true,"nanmoku.gunma.jp":true,"numata.gunma.jp":true,"oizumi.gunma.jp":true,"ora.gunma.jp":true,"ota.gunma.jp":true,"shibukawa.gunma.jp":true,"shimonita.gunma.jp":true,"shinto.gunma.jp":true,"showa.gunma.jp":true,"takasaki.gunma.jp":true,"takayama.gunma.jp":true,"tamamura.gunma.jp":true,"tatebayashi.gunma.jp":true,"tomioka.gunma.jp":true,"tsukiyono.gunma.jp":true,"tsumagoi.gunma.jp":true,"ueno.gunma.jp":true,"yoshioka.gunma.jp":true,"asaminami.hiroshima.jp":true,"daiwa.hiroshima.jp":true,"etajima.hiroshima.jp":true,"fuchu.hiroshima.jp":true,"fukuyama.hiroshima.jp":true,"hatsukaichi.hiroshima.jp":true,"higashihiroshima.hiroshima.jp":true,"hongo.hiroshima.jp":true,"jinsekikogen.hiroshima.jp":true,"kaita.hiroshima.jp":true,"kui.hiroshima.jp":true,"kumano.hiroshima.jp":true,"kure.hiroshima.jp":true,"mihara.hiroshima.jp":true,"miyoshi.hiroshima.jp":true,"naka.hiroshima.jp":true,"onomichi.hiroshima.jp":true,"osakikamijima.hiroshima.jp":true,"otake.hiroshima.jp":true,"saka.hiroshima.jp":true,"sera.hiroshima.jp":true,"seranishi.hiroshima.jp":true,"shinichi.hiroshima.jp":true,"shobara.hiroshima.jp":true,"takehara.hiroshima.jp":true,"abashiri.hokkaido.jp":true,"abira.hokkaido.jp":true,"aibetsu.hokkaido.jp":true,"akabira.hokkaido.jp":true,"akkeshi.hokkaido.jp":true,"asahikawa.hokkaido.jp":true,"ashibetsu.hokkaido.jp":true,"ashoro.hokkaido.jp":true,"assabu.hokkaido.jp":true,"atsuma.hokkaido.jp":true,"bibai.hokkaido.jp":true,"biei.hokkaido.jp":true,"bifuka.hokkaido.jp":true,"bihoro.hokkaido.jp":true,"biratori.hokkaido.jp":true,"chippubetsu.hokkaido.jp":true,"chitose.hokkaido.jp":true,"date.hokkaido.jp":true,"ebetsu.hokkaido.jp":true,"embetsu.hokkaido.jp":true,"eniwa.hokkaido.jp":true,"erimo.hokkaido.jp":true,"esan.hokkaido.jp":true,"esashi.hokkaido.jp":true,"fukagawa.hokkaido.jp":true,"fukushima.hokkaido.jp":true,"furano.hokkaido.jp":true,"furubira.hokkaido.jp":true,"haboro.hokkaido.jp":true,"hakodate.hokkaido.jp":true,"hamatonbetsu.hokkaido.jp":true,"hidaka.hokkaido.jp":true,"higashikagura.hokkaido.jp":true,"higashikawa.hokkaido.jp":true,"hiroo.hokkaido.jp":true,"hokuryu.hokkaido.jp":true,"hokuto.hokkaido.jp":true,"honbetsu.hokkaido.jp":true,"horokanai.hokkaido.jp":true,"horonobe.hokkaido.jp":true,"ikeda.hokkaido.jp":true,"imakane.hokkaido.jp":true,"ishikari.hokkaido.jp":true,"iwamizawa.hokkaido.jp":true,"iwanai.hokkaido.jp":true,"kamifurano.hokkaido.jp":true,"kamikawa.hokkaido.jp":true,"kamishihoro.hokkaido.jp":true,"kamisunagawa.hokkaido.jp":true,"kamoenai.hokkaido.jp":true,"kayabe.hokkaido.jp":true,"kembuchi.hokkaido.jp":true,"kikonai.hokkaido.jp":true,"kimobetsu.hokkaido.jp":true,"kitahiroshima.hokkaido.jp":true,"kitami.hokkaido.jp":true,"kiyosato.hokkaido.jp":true,"koshimizu.hokkaido.jp":true,"kunneppu.hokkaido.jp":true,"kuriyama.hokkaido.jp":true,"kuromatsunai.hokkaido.jp":true,"kushiro.hokkaido.jp":true,"kutchan.hokkaido.jp":true,"kyowa.hokkaido.jp":true,"mashike.hokkaido.jp":true,"matsumae.hokkaido.jp":true,"mikasa.hokkaido.jp":true,"minamifurano.hokkaido.jp":true,"mombetsu.hokkaido.jp":true,"moseushi.hokkaido.jp":true,"mukawa.hokkaido.jp":true,"muroran.hokkaido.jp":true,"naie.hokkaido.jp":true,"nakagawa.hokkaido.jp":true,"nakasatsunai.hokkaido.jp":true,"nakatombetsu.hokkaido.jp":true,"nanae.hokkaido.jp":true,"nanporo.hokkaido.jp":true,"nayoro.hokkaido.jp":true,"nemuro.hokkaido.jp":true,"niikappu.hokkaido.jp":true,"niki.hokkaido.jp":true,"nishiokoppe.hokkaido.jp":true,"noboribetsu.hokkaido.jp":true,"numata.hokkaido.jp":true,"obihiro.hokkaido.jp":true,"obira.hokkaido.jp":true,"oketo.hokkaido.jp":true,"okoppe.hokkaido.jp":true,"otaru.hokkaido.jp":true,"otobe.hokkaido.jp":true,"otofuke.hokkaido.jp":true,"otoineppu.hokkaido.jp":true,"oumu.hokkaido.jp":true,"ozora.hokkaido.jp":true,"pippu.hokkaido.jp":true,"rankoshi.hokkaido.jp":true,"rebun.hokkaido.jp":true,"rikubetsu.hokkaido.jp":true,"rishiri.hokkaido.jp":true,"rishirifuji.hokkaido.jp":true,"saroma.hokkaido.jp":true,"sarufutsu.hokkaido.jp":true,"shakotan.hokkaido.jp":true,"shari.hokkaido.jp":true,"shibecha.hokkaido.jp":true,"shibetsu.hokkaido.jp":true,"shikabe.hokkaido.jp":true,"shikaoi.hokkaido.jp":true,"shimamaki.hokkaido.jp":true,"shimizu.hokkaido.jp":true,"shimokawa.hokkaido.jp":true,"shinshinotsu.hokkaido.jp":true,"shintoku.hokkaido.jp":true,"shiranuka.hokkaido.jp":true,"shiraoi.hokkaido.jp":true,"shiriuchi.hokkaido.jp":true,"sobetsu.hokkaido.jp":true,"sunagawa.hokkaido.jp":true,"taiki.hokkaido.jp":true,"takasu.hokkaido.jp":true,"takikawa.hokkaido.jp":true,"takinoue.hokkaido.jp":true,"teshikaga.hokkaido.jp":true,"tobetsu.hokkaido.jp":true,"tohma.hokkaido.jp":true,"tomakomai.hokkaido.jp":true,"tomari.hokkaido.jp":true,"toya.hokkaido.jp":true,"toyako.hokkaido.jp":true,"toyotomi.hokkaido.jp":true,"toyoura.hokkaido.jp":true,"tsubetsu.hokkaido.jp":true,"tsukigata.hokkaido.jp":true,"urakawa.hokkaido.jp":true,"urausu.hokkaido.jp":true,"uryu.hokkaido.jp":true,"utashinai.hokkaido.jp":true,"wakkanai.hokkaido.jp":true,"wassamu.hokkaido.jp":true,"yakumo.hokkaido.jp":true,"yoichi.hokkaido.jp":true,"aioi.hyogo.jp":true,"akashi.hyogo.jp":true,"ako.hyogo.jp":true,"amagasaki.hyogo.jp":true,"aogaki.hyogo.jp":true,"asago.hyogo.jp":true,"ashiya.hyogo.jp":true,"awaji.hyogo.jp":true,"fukusaki.hyogo.jp":true,"goshiki.hyogo.jp":true,"harima.hyogo.jp":true,"himeji.hyogo.jp":true,"ichikawa.hyogo.jp":true,"inagawa.hyogo.jp":true,"itami.hyogo.jp":true,"kakogawa.hyogo.jp":true,"kamigori.hyogo.jp":true,"kamikawa.hyogo.jp":true,"kasai.hyogo.jp":true,"kasuga.hyogo.jp":true,"kawanishi.hyogo.jp":true,"miki.hyogo.jp":true,"minamiawaji.hyogo.jp":true,"nishinomiya.hyogo.jp":true,"nishiwaki.hyogo.jp":true,"ono.hyogo.jp":true,"sanda.hyogo.jp":true,"sannan.hyogo.jp":true,"sasayama.hyogo.jp":true,"sayo.hyogo.jp":true,"shingu.hyogo.jp":true,"shinonsen.hyogo.jp":true,"shiso.hyogo.jp":true,"sumoto.hyogo.jp":true,"taishi.hyogo.jp":true,"taka.hyogo.jp":true,"takarazuka.hyogo.jp":true,"takasago.hyogo.jp":true,"takino.hyogo.jp":true,"tamba.hyogo.jp":true,"tatsuno.hyogo.jp":true,"toyooka.hyogo.jp":true,"yabu.hyogo.jp":true,"yashiro.hyogo.jp":true,"yoka.hyogo.jp":true,"yokawa.hyogo.jp":true,"ami.ibaraki.jp":true,"asahi.ibaraki.jp":true,"bando.ibaraki.jp":true,"chikusei.ibaraki.jp":true,"daigo.ibaraki.jp":true,"fujishiro.ibaraki.jp":true,"hitachi.ibaraki.jp":true,"hitachinaka.ibaraki.jp":true,"hitachiomiya.ibaraki.jp":true,"hitachiota.ibaraki.jp":true,"ibaraki.ibaraki.jp":true,"ina.ibaraki.jp":true,"inashiki.ibaraki.jp":true,"itako.ibaraki.jp":true,"iwama.ibaraki.jp":true,"joso.ibaraki.jp":true,"kamisu.ibaraki.jp":true,"kasama.ibaraki.jp":true,"kashima.ibaraki.jp":true,"kasumigaura.ibaraki.jp":true,"koga.ibaraki.jp":true,"miho.ibaraki.jp":true,"mito.ibaraki.jp":true,"moriya.ibaraki.jp":true,"naka.ibaraki.jp":true,"namegata.ibaraki.jp":true,"oarai.ibaraki.jp":true,"ogawa.ibaraki.jp":true,"omitama.ibaraki.jp":true,"ryugasaki.ibaraki.jp":true,"sakai.ibaraki.jp":true,"sakuragawa.ibaraki.jp":true,"shimodate.ibaraki.jp":true,"shimotsuma.ibaraki.jp":true,"shirosato.ibaraki.jp":true,"sowa.ibaraki.jp":true,"suifu.ibaraki.jp":true,"takahagi.ibaraki.jp":true,"tamatsukuri.ibaraki.jp":true,"tokai.ibaraki.jp":true,"tomobe.ibaraki.jp":true,"tone.ibaraki.jp":true,"toride.ibaraki.jp":true,"tsuchiura.ibaraki.jp":true,"tsukuba.ibaraki.jp":true,"uchihara.ibaraki.jp":true,"ushiku.ibaraki.jp":true,"yachiyo.ibaraki.jp":true,"yamagata.ibaraki.jp":true,"yawara.ibaraki.jp":true,"yuki.ibaraki.jp":true,"anamizu.ishikawa.jp":true,"hakui.ishikawa.jp":true,"hakusan.ishikawa.jp":true,"kaga.ishikawa.jp":true,"kahoku.ishikawa.jp":true,"kanazawa.ishikawa.jp":true,"kawakita.ishikawa.jp":true,"komatsu.ishikawa.jp":true,"nakanoto.ishikawa.jp":true,"nanao.ishikawa.jp":true,"nomi.ishikawa.jp":true,"nonoichi.ishikawa.jp":true,"noto.ishikawa.jp":true,"shika.ishikawa.jp":true,"suzu.ishikawa.jp":true,"tsubata.ishikawa.jp":true,"tsurugi.ishikawa.jp":true,"uchinada.ishikawa.jp":true,"wajima.ishikawa.jp":true,"fudai.iwate.jp":true,"fujisawa.iwate.jp":true,"hanamaki.iwate.jp":true,"hiraizumi.iwate.jp":true,"hirono.iwate.jp":true,"ichinohe.iwate.jp":true,"ichinoseki.iwate.jp":true,"iwaizumi.iwate.jp":true,"iwate.iwate.jp":true,"joboji.iwate.jp":true,"kamaishi.iwate.jp":true,"kanegasaki.iwate.jp":true,"karumai.iwate.jp":true,"kawai.iwate.jp":true,"kitakami.iwate.jp":true,"kuji.iwate.jp":true,"kunohe.iwate.jp":true,"kuzumaki.iwate.jp":true,"miyako.iwate.jp":true,"mizusawa.iwate.jp":true,"morioka.iwate.jp":true,"ninohe.iwate.jp":true,"noda.iwate.jp":true,"ofunato.iwate.jp":true,"oshu.iwate.jp":true,"otsuchi.iwate.jp":true,"rikuzentakata.iwate.jp":true,"shiwa.iwate.jp":true,"shizukuishi.iwate.jp":true,"sumita.iwate.jp":true,"tanohata.iwate.jp":true,"tono.iwate.jp":true,"yahaba.iwate.jp":true,"yamada.iwate.jp":true,"ayagawa.kagawa.jp":true,"higashikagawa.kagawa.jp":true,"kanonji.kagawa.jp":true,"kotohira.kagawa.jp":true,"manno.kagawa.jp":true,"marugame.kagawa.jp":true,"mitoyo.kagawa.jp":true,"naoshima.kagawa.jp":true,"sanuki.kagawa.jp":true,"tadotsu.kagawa.jp":true,"takamatsu.kagawa.jp":true,"tonosho.kagawa.jp":true,"uchinomi.kagawa.jp":true,"utazu.kagawa.jp":true,"zentsuji.kagawa.jp":true,"akune.kagoshima.jp":true,"amami.kagoshima.jp":true,"hioki.kagoshima.jp":true,"isa.kagoshima.jp":true,"isen.kagoshima.jp":true,"izumi.kagoshima.jp":true,"kagoshima.kagoshima.jp":true,"kanoya.kagoshima.jp":true,"kawanabe.kagoshima.jp":true,"kinko.kagoshima.jp":true,"kouyama.kagoshima.jp":true,"makurazaki.kagoshima.jp":true,"matsumoto.kagoshima.jp":true,"minamitane.kagoshima.jp":true,"nakatane.kagoshima.jp":true,"nishinoomote.kagoshima.jp":true,"satsumasendai.kagoshima.jp":true,"soo.kagoshima.jp":true,"tarumizu.kagoshima.jp":true,"yusui.kagoshima.jp":true,"aikawa.kanagawa.jp":true,"atsugi.kanagawa.jp":true,"ayase.kanagawa.jp":true,"chigasaki.kanagawa.jp":true,"ebina.kanagawa.jp":true,"fujisawa.kanagawa.jp":true,"hadano.kanagawa.jp":true,"hakone.kanagawa.jp":true,"hiratsuka.kanagawa.jp":true,"isehara.kanagawa.jp":true,"kaisei.kanagawa.jp":true,"kamakura.kanagawa.jp":true,"kiyokawa.kanagawa.jp":true,"matsuda.kanagawa.jp":true,"minamiashigara.kanagawa.jp":true,"miura.kanagawa.jp":true,"nakai.kanagawa.jp":true,"ninomiya.kanagawa.jp":true,"odawara.kanagawa.jp":true,"oi.kanagawa.jp":true,"oiso.kanagawa.jp":true,"sagamihara.kanagawa.jp":true,"samukawa.kanagawa.jp":true,"tsukui.kanagawa.jp":true,"yamakita.kanagawa.jp":true,"yamato.kanagawa.jp":true,"yokosuka.kanagawa.jp":true,"yugawara.kanagawa.jp":true,"zama.kanagawa.jp":true,"zushi.kanagawa.jp":true,"aki.kochi.jp":true,"geisei.kochi.jp":true,"hidaka.kochi.jp":true,"higashitsuno.kochi.jp":true,"ino.kochi.jp":true,"kagami.kochi.jp":true,"kami.kochi.jp":true,"kitagawa.kochi.jp":true,"kochi.kochi.jp":true,"mihara.kochi.jp":true,"motoyama.kochi.jp":true,"muroto.kochi.jp":true,"nahari.kochi.jp":true,"nakamura.kochi.jp":true,"nankoku.kochi.jp":true,"nishitosa.kochi.jp":true,"niyodogawa.kochi.jp":true,"ochi.kochi.jp":true,"okawa.kochi.jp":true,"otoyo.kochi.jp":true,"otsuki.kochi.jp":true,"sakawa.kochi.jp":true,"sukumo.kochi.jp":true,"susaki.kochi.jp":true,"tosa.kochi.jp":true,"tosashimizu.kochi.jp":true,"toyo.kochi.jp":true,"tsuno.kochi.jp":true,"umaji.kochi.jp":true,"yasuda.kochi.jp":true,"yusuhara.kochi.jp":true,"amakusa.kumamoto.jp":true,"arao.kumamoto.jp":true,"aso.kumamoto.jp":true,"choyo.kumamoto.jp":true,"gyokuto.kumamoto.jp":true,"kamiamakusa.kumamoto.jp":true,"kikuchi.kumamoto.jp":true,"kumamoto.kumamoto.jp":true,"mashiki.kumamoto.jp":true,"mifune.kumamoto.jp":true,"minamata.kumamoto.jp":true,"minamioguni.kumamoto.jp":true,"nagasu.kumamoto.jp":true,"nishihara.kumamoto.jp":true,"oguni.kumamoto.jp":true,"ozu.kumamoto.jp":true,"sumoto.kumamoto.jp":true,"takamori.kumamoto.jp":true,"uki.kumamoto.jp":true,"uto.kumamoto.jp":true,"yamaga.kumamoto.jp":true,"yamato.kumamoto.jp":true,"yatsushiro.kumamoto.jp":true,"ayabe.kyoto.jp":true,"fukuchiyama.kyoto.jp":true,"higashiyama.kyoto.jp":true,"ide.kyoto.jp":true,"ine.kyoto.jp":true,"joyo.kyoto.jp":true,"kameoka.kyoto.jp":true,"kamo.kyoto.jp":true,"kita.kyoto.jp":true,"kizu.kyoto.jp":true,"kumiyama.kyoto.jp":true,"kyotamba.kyoto.jp":true,"kyotanabe.kyoto.jp":true,"kyotango.kyoto.jp":true,"maizuru.kyoto.jp":true,"minami.kyoto.jp":true,"minamiyamashiro.kyoto.jp":true,"miyazu.kyoto.jp":true,"muko.kyoto.jp":true,"nagaokakyo.kyoto.jp":true,"nakagyo.kyoto.jp":true,"nantan.kyoto.jp":true,"oyamazaki.kyoto.jp":true,"sakyo.kyoto.jp":true,"seika.kyoto.jp":true,"tanabe.kyoto.jp":true,"uji.kyoto.jp":true,"ujitawara.kyoto.jp":true,"wazuka.kyoto.jp":true,"yamashina.kyoto.jp":true,"yawata.kyoto.jp":true,"asahi.mie.jp":true,"inabe.mie.jp":true,"ise.mie.jp":true,"kameyama.mie.jp":true,"kawagoe.mie.jp":true,"kiho.mie.jp":true,"kisosaki.mie.jp":true,"kiwa.mie.jp":true,"komono.mie.jp":true,"kumano.mie.jp":true,"kuwana.mie.jp":true,"matsusaka.mie.jp":true,"meiwa.mie.jp":true,"mihama.mie.jp":true,"minamiise.mie.jp":true,"misugi.mie.jp":true,"miyama.mie.jp":true,"nabari.mie.jp":true,"shima.mie.jp":true,"suzuka.mie.jp":true,"tado.mie.jp":true,"taiki.mie.jp":true,"taki.mie.jp":true,"tamaki.mie.jp":true,"toba.mie.jp":true,"tsu.mie.jp":true,"udono.mie.jp":true,"ureshino.mie.jp":true,"watarai.mie.jp":true,"yokkaichi.mie.jp":true,"furukawa.miyagi.jp":true,"higashimatsushima.miyagi.jp":true,"ishinomaki.miyagi.jp":true,"iwanuma.miyagi.jp":true,"kakuda.miyagi.jp":true,"kami.miyagi.jp":true,"kawasaki.miyagi.jp":true,"marumori.miyagi.jp":true,"matsushima.miyagi.jp":true,"minamisanriku.miyagi.jp":true,"misato.miyagi.jp":true,"murata.miyagi.jp":true,"natori.miyagi.jp":true,"ogawara.miyagi.jp":true,"ohira.miyagi.jp":true,"onagawa.miyagi.jp":true,"osaki.miyagi.jp":true,"rifu.miyagi.jp":true,"semine.miyagi.jp":true,"shibata.miyagi.jp":true,"shichikashuku.miyagi.jp":true,"shikama.miyagi.jp":true,"shiogama.miyagi.jp":true,"shiroishi.miyagi.jp":true,"tagajo.miyagi.jp":true,"taiwa.miyagi.jp":true,"tome.miyagi.jp":true,"tomiya.miyagi.jp":true,"wakuya.miyagi.jp":true,"watari.miyagi.jp":true,"yamamoto.miyagi.jp":true,"zao.miyagi.jp":true,"aya.miyazaki.jp":true,"ebino.miyazaki.jp":true,"gokase.miyazaki.jp":true,"hyuga.miyazaki.jp":true,"kadogawa.miyazaki.jp":true,"kawaminami.miyazaki.jp":true,"kijo.miyazaki.jp":true,"kitagawa.miyazaki.jp":true,"kitakata.miyazaki.jp":true,"kitaura.miyazaki.jp":true,"kobayashi.miyazaki.jp":true,"kunitomi.miyazaki.jp":true,"kushima.miyazaki.jp":true,"mimata.miyazaki.jp":true,"miyakonojo.miyazaki.jp":true,"miyazaki.miyazaki.jp":true,"morotsuka.miyazaki.jp":true,"nichinan.miyazaki.jp":true,"nishimera.miyazaki.jp":true,"nobeoka.miyazaki.jp":true,"saito.miyazaki.jp":true,"shiiba.miyazaki.jp":true,"shintomi.miyazaki.jp":true,"takaharu.miyazaki.jp":true,"takanabe.miyazaki.jp":true,"takazaki.miyazaki.jp":true,"tsuno.miyazaki.jp":true,"achi.nagano.jp":true,"agematsu.nagano.jp":true,"anan.nagano.jp":true,"aoki.nagano.jp":true,"asahi.nagano.jp":true,"azumino.nagano.jp":true,"chikuhoku.nagano.jp":true,"chikuma.nagano.jp":true,"chino.nagano.jp":true,"fujimi.nagano.jp":true,"hakuba.nagano.jp":true,"hara.nagano.jp":true,"hiraya.nagano.jp":true,"iida.nagano.jp":true,"iijima.nagano.jp":true,"iiyama.nagano.jp":true,"iizuna.nagano.jp":true,"ikeda.nagano.jp":true,"ikusaka.nagano.jp":true,"ina.nagano.jp":true,"karuizawa.nagano.jp":true,"kawakami.nagano.jp":true,"kiso.nagano.jp":true,"kisofukushima.nagano.jp":true,"kitaaiki.nagano.jp":true,"komagane.nagano.jp":true,"komoro.nagano.jp":true,"matsukawa.nagano.jp":true,"matsumoto.nagano.jp":true,"miasa.nagano.jp":true,"minamiaiki.nagano.jp":true,"minamimaki.nagano.jp":true,"minamiminowa.nagano.jp":true,"minowa.nagano.jp":true,"miyada.nagano.jp":true,"miyota.nagano.jp":true,"mochizuki.nagano.jp":true,"nagano.nagano.jp":true,"nagawa.nagano.jp":true,"nagiso.nagano.jp":true,"nakagawa.nagano.jp":true,"nakano.nagano.jp":true,"nozawaonsen.nagano.jp":true,"obuse.nagano.jp":true,"ogawa.nagano.jp":true,"okaya.nagano.jp":true,"omachi.nagano.jp":true,"omi.nagano.jp":true,"ookuwa.nagano.jp":true,"ooshika.nagano.jp":true,"otaki.nagano.jp":true,"otari.nagano.jp":true,"sakae.nagano.jp":true,"sakaki.nagano.jp":true,"saku.nagano.jp":true,"sakuho.nagano.jp":true,"shimosuwa.nagano.jp":true,"shinanomachi.nagano.jp":true,"shiojiri.nagano.jp":true,"suwa.nagano.jp":true,"suzaka.nagano.jp":true,"takagi.nagano.jp":true,"takamori.nagano.jp":true,"takayama.nagano.jp":true,"tateshina.nagano.jp":true,"tatsuno.nagano.jp":true,"togakushi.nagano.jp":true,"togura.nagano.jp":true,"tomi.nagano.jp":true,"ueda.nagano.jp":true,"wada.nagano.jp":true,"yamagata.nagano.jp":true,"yamanouchi.nagano.jp":true,"yasaka.nagano.jp":true,"yasuoka.nagano.jp":true,"chijiwa.nagasaki.jp":true,"futsu.nagasaki.jp":true,"goto.nagasaki.jp":true,"hasami.nagasaki.jp":true,"hirado.nagasaki.jp":true,"iki.nagasaki.jp":true,"isahaya.nagasaki.jp":true,"kawatana.nagasaki.jp":true,"kuchinotsu.nagasaki.jp":true,"matsuura.nagasaki.jp":true,"nagasaki.nagasaki.jp":true,"obama.nagasaki.jp":true,"omura.nagasaki.jp":true,"oseto.nagasaki.jp":true,"saikai.nagasaki.jp":true,"sasebo.nagasaki.jp":true,"seihi.nagasaki.jp":true,"shimabara.nagasaki.jp":true,"shinkamigoto.nagasaki.jp":true,"togitsu.nagasaki.jp":true,"tsushima.nagasaki.jp":true,"unzen.nagasaki.jp":true,"ando.nara.jp":true,"gose.nara.jp":true,"heguri.nara.jp":true,"higashiyoshino.nara.jp":true,"ikaruga.nara.jp":true,"ikoma.nara.jp":true,"kamikitayama.nara.jp":true,"kanmaki.nara.jp":true,"kashiba.nara.jp":true,"kashihara.nara.jp":true,"katsuragi.nara.jp":true,"kawai.nara.jp":true,"kawakami.nara.jp":true,"kawanishi.nara.jp":true,"koryo.nara.jp":true,"kurotaki.nara.jp":true,"mitsue.nara.jp":true,"miyake.nara.jp":true,"nara.nara.jp":true,"nosegawa.nara.jp":true,"oji.nara.jp":true,"ouda.nara.jp":true,"oyodo.nara.jp":true,"sakurai.nara.jp":true,"sango.nara.jp":true,"shimoichi.nara.jp":true,"shimokitayama.nara.jp":true,"shinjo.nara.jp":true,"soni.nara.jp":true,"takatori.nara.jp":true,"tawaramoto.nara.jp":true,"tenkawa.nara.jp":true,"tenri.nara.jp":true,"uda.nara.jp":true,"yamatokoriyama.nara.jp":true,"yamatotakada.nara.jp":true,"yamazoe.nara.jp":true,"yoshino.nara.jp":true,"aga.niigata.jp":true,"agano.niigata.jp":true,"gosen.niigata.jp":true,"itoigawa.niigata.jp":true,"izumozaki.niigata.jp":true,"joetsu.niigata.jp":true,"kamo.niigata.jp":true,"kariwa.niigata.jp":true,"kashiwazaki.niigata.jp":true,"minamiuonuma.niigata.jp":true,"mitsuke.niigata.jp":true,"muika.niigata.jp":true,"murakami.niigata.jp":true,"myoko.niigata.jp":true,"nagaoka.niigata.jp":true,"niigata.niigata.jp":true,"ojiya.niigata.jp":true,"omi.niigata.jp":true,"sado.niigata.jp":true,"sanjo.niigata.jp":true,"seiro.niigata.jp":true,"seirou.niigata.jp":true,"sekikawa.niigata.jp":true,"shibata.niigata.jp":true,"tagami.niigata.jp":true,"tainai.niigata.jp":true,"tochio.niigata.jp":true,"tokamachi.niigata.jp":true,"tsubame.niigata.jp":true,"tsunan.niigata.jp":true,"uonuma.niigata.jp":true,"yahiko.niigata.jp":true,"yoita.niigata.jp":true,"yuzawa.niigata.jp":true,"beppu.oita.jp":true,"bungoono.oita.jp":true,"bungotakada.oita.jp":true,"hasama.oita.jp":true,"hiji.oita.jp":true,"himeshima.oita.jp":true,"hita.oita.jp":true,"kamitsue.oita.jp":true,"kokonoe.oita.jp":true,"kuju.oita.jp":true,"kunisaki.oita.jp":true,"kusu.oita.jp":true,"oita.oita.jp":true,"saiki.oita.jp":true,"taketa.oita.jp":true,"tsukumi.oita.jp":true,"usa.oita.jp":true,"usuki.oita.jp":true,"yufu.oita.jp":true,"akaiwa.okayama.jp":true,"asakuchi.okayama.jp":true,"bizen.okayama.jp":true,"hayashima.okayama.jp":true,"ibara.okayama.jp":true,"kagamino.okayama.jp":true,"kasaoka.okayama.jp":true,"kibichuo.okayama.jp":true,"kumenan.okayama.jp":true,"kurashiki.okayama.jp":true,"maniwa.okayama.jp":true,"misaki.okayama.jp":true,"nagi.okayama.jp":true,"niimi.okayama.jp":true,"nishiawakura.okayama.jp":true,"okayama.okayama.jp":true,"satosho.okayama.jp":true,"setouchi.okayama.jp":true,"shinjo.okayama.jp":true,"shoo.okayama.jp":true,"soja.okayama.jp":true,"takahashi.okayama.jp":true,"tamano.okayama.jp":true,"tsuyama.okayama.jp":true,"wake.okayama.jp":true,"yakage.okayama.jp":true,"aguni.okinawa.jp":true,"ginowan.okinawa.jp":true,"ginoza.okinawa.jp":true,"gushikami.okinawa.jp":true,"haebaru.okinawa.jp":true,"higashi.okinawa.jp":true,"hirara.okinawa.jp":true,"iheya.okinawa.jp":true,"ishigaki.okinawa.jp":true,"ishikawa.okinawa.jp":true,"itoman.okinawa.jp":true,"izena.okinawa.jp":true,"kadena.okinawa.jp":true,"kin.okinawa.jp":true,"kitadaito.okinawa.jp":true,"kitanakagusuku.okinawa.jp":true,"kumejima.okinawa.jp":true,"kunigami.okinawa.jp":true,"minamidaito.okinawa.jp":true,"motobu.okinawa.jp":true,"nago.okinawa.jp":true,"naha.okinawa.jp":true,"nakagusuku.okinawa.jp":true,"nakijin.okinawa.jp":true,"nanjo.okinawa.jp":true,"nishihara.okinawa.jp":true,"ogimi.okinawa.jp":true,"okinawa.okinawa.jp":true,"onna.okinawa.jp":true,"shimoji.okinawa.jp":true,"taketomi.okinawa.jp":true,"tarama.okinawa.jp":true,"tokashiki.okinawa.jp":true,"tomigusuku.okinawa.jp":true,"tonaki.okinawa.jp":true,"urasoe.okinawa.jp":true,"uruma.okinawa.jp":true,"yaese.okinawa.jp":true,"yomitan.okinawa.jp":true,"yonabaru.okinawa.jp":true,"yonaguni.okinawa.jp":true,"zamami.okinawa.jp":true,"abeno.osaka.jp":true,"chihayaakasaka.osaka.jp":true,"chuo.osaka.jp":true,"daito.osaka.jp":true,"fujiidera.osaka.jp":true,"habikino.osaka.jp":true,"hannan.osaka.jp":true,"higashiosaka.osaka.jp":true,"higashisumiyoshi.osaka.jp":true,"higashiyodogawa.osaka.jp":true,"hirakata.osaka.jp":true,"ibaraki.osaka.jp":true,"ikeda.osaka.jp":true,"izumi.osaka.jp":true,"izumiotsu.osaka.jp":true,"izumisano.osaka.jp":true,"kadoma.osaka.jp":true,"kaizuka.osaka.jp":true,"kanan.osaka.jp":true,"kashiwara.osaka.jp":true,"katano.osaka.jp":true,"kawachinagano.osaka.jp":true,"kishiwada.osaka.jp":true,"kita.osaka.jp":true,"kumatori.osaka.jp":true,"matsubara.osaka.jp":true,"minato.osaka.jp":true,"minoh.osaka.jp":true,"misaki.osaka.jp":true,"moriguchi.osaka.jp":true,"neyagawa.osaka.jp":true,"nishi.osaka.jp":true,"nose.osaka.jp":true,"osakasayama.osaka.jp":true,"sakai.osaka.jp":true,"sayama.osaka.jp":true,"sennan.osaka.jp":true,"settsu.osaka.jp":true,"shijonawate.osaka.jp":true,"shimamoto.osaka.jp":true,"suita.osaka.jp":true,"tadaoka.osaka.jp":true,"taishi.osaka.jp":true,"tajiri.osaka.jp":true,"takaishi.osaka.jp":true,"takatsuki.osaka.jp":true,"tondabayashi.osaka.jp":true,"toyonaka.osaka.jp":true,"toyono.osaka.jp":true,"yao.osaka.jp":true,"ariake.saga.jp":true,"arita.saga.jp":true,"fukudomi.saga.jp":true,"genkai.saga.jp":true,"hamatama.saga.jp":true,"hizen.saga.jp":true,"imari.saga.jp":true,"kamimine.saga.jp":true,"kanzaki.saga.jp":true,"karatsu.saga.jp":true,"kashima.saga.jp":true,"kitagata.saga.jp":true,"kitahata.saga.jp":true,"kiyama.saga.jp":true,"kouhoku.saga.jp":true,"kyuragi.saga.jp":true,"nishiarita.saga.jp":true,"ogi.saga.jp":true,"omachi.saga.jp":true,"ouchi.saga.jp":true,"saga.saga.jp":true,"shiroishi.saga.jp":true,"taku.saga.jp":true,"tara.saga.jp":true,"tosu.saga.jp":true,"yoshinogari.saga.jp":true,"arakawa.saitama.jp":true,"asaka.saitama.jp":true,"chichibu.saitama.jp":true,"fujimi.saitama.jp":true,"fujimino.saitama.jp":true,"fukaya.saitama.jp":true,"hanno.saitama.jp":true,"hanyu.saitama.jp":true,"hasuda.saitama.jp":true,"hatogaya.saitama.jp":true,"hatoyama.saitama.jp":true,"hidaka.saitama.jp":true,"higashichichibu.saitama.jp":true,"higashimatsuyama.saitama.jp":true,"honjo.saitama.jp":true,"ina.saitama.jp":true,"iruma.saitama.jp":true,"iwatsuki.saitama.jp":true,"kamiizumi.saitama.jp":true,"kamikawa.saitama.jp":true,"kamisato.saitama.jp":true,"kasukabe.saitama.jp":true,"kawagoe.saitama.jp":true,"kawaguchi.saitama.jp":true,"kawajima.saitama.jp":true,"kazo.saitama.jp":true,"kitamoto.saitama.jp":true,"koshigaya.saitama.jp":true,"kounosu.saitama.jp":true,"kuki.saitama.jp":true,"kumagaya.saitama.jp":true,"matsubushi.saitama.jp":true,"minano.saitama.jp":true,"misato.saitama.jp":true,"miyashiro.saitama.jp":true,"miyoshi.saitama.jp":true,"moroyama.saitama.jp":true,"nagatoro.saitama.jp":true,"namegawa.saitama.jp":true,"niiza.saitama.jp":true,"ogano.saitama.jp":true,"ogawa.saitama.jp":true,"ogose.saitama.jp":true,"okegawa.saitama.jp":true,"omiya.saitama.jp":true,"otaki.saitama.jp":true,"ranzan.saitama.jp":true,"ryokami.saitama.jp":true,"saitama.saitama.jp":true,"sakado.saitama.jp":true,"satte.saitama.jp":true,"sayama.saitama.jp":true,"shiki.saitama.jp":true,"shiraoka.saitama.jp":true,"soka.saitama.jp":true,"sugito.saitama.jp":true,"toda.saitama.jp":true,"tokigawa.saitama.jp":true,"tokorozawa.saitama.jp":true,"tsurugashima.saitama.jp":true,"urawa.saitama.jp":true,"warabi.saitama.jp":true,"yashio.saitama.jp":true,"yokoze.saitama.jp":true,"yono.saitama.jp":true,"yorii.saitama.jp":true,"yoshida.saitama.jp":true,"yoshikawa.saitama.jp":true,"yoshimi.saitama.jp":true,"aisho.shiga.jp":true,"gamo.shiga.jp":true,"higashiomi.shiga.jp":true,"hikone.shiga.jp":true,"koka.shiga.jp":true,"konan.shiga.jp":true,"kosei.shiga.jp":true,"koto.shiga.jp":true,"kusatsu.shiga.jp":true,"maibara.shiga.jp":true,"moriyama.shiga.jp":true,"nagahama.shiga.jp":true,"nishiazai.shiga.jp":true,"notogawa.shiga.jp":true,"omihachiman.shiga.jp":true,"otsu.shiga.jp":true,"ritto.shiga.jp":true,"ryuoh.shiga.jp":true,"takashima.shiga.jp":true,"takatsuki.shiga.jp":true,"torahime.shiga.jp":true,"toyosato.shiga.jp":true,"yasu.shiga.jp":true,"akagi.shimane.jp":true,"ama.shimane.jp":true,"gotsu.shimane.jp":true,"hamada.shimane.jp":true,"higashiizumo.shimane.jp":true,"hikawa.shimane.jp":true,"hikimi.shimane.jp":true,"izumo.shimane.jp":true,"kakinoki.shimane.jp":true,"masuda.shimane.jp":true,"matsue.shimane.jp":true,"misato.shimane.jp":true,"nishinoshima.shimane.jp":true,"ohda.shimane.jp":true,"okinoshima.shimane.jp":true,"okuizumo.shimane.jp":true,"shimane.shimane.jp":true,"tamayu.shimane.jp":true,"tsuwano.shimane.jp":true,"unnan.shimane.jp":true,"yakumo.shimane.jp":true,"yasugi.shimane.jp":true,"yatsuka.shimane.jp":true,"arai.shizuoka.jp":true,"atami.shizuoka.jp":true,"fuji.shizuoka.jp":true,"fujieda.shizuoka.jp":true,"fujikawa.shizuoka.jp":true,"fujinomiya.shizuoka.jp":true,"fukuroi.shizuoka.jp":true,"gotemba.shizuoka.jp":true,"haibara.shizuoka.jp":true,"hamamatsu.shizuoka.jp":true,"higashiizu.shizuoka.jp":true,"ito.shizuoka.jp":true,"iwata.shizuoka.jp":true,"izu.shizuoka.jp":true,"izunokuni.shizuoka.jp":true,"kakegawa.shizuoka.jp":true,"kannami.shizuoka.jp":true,"kawanehon.shizuoka.jp":true,"kawazu.shizuoka.jp":true,"kikugawa.shizuoka.jp":true,"kosai.shizuoka.jp":true,"makinohara.shizuoka.jp":true,"matsuzaki.shizuoka.jp":true,"minamiizu.shizuoka.jp":true,"mishima.shizuoka.jp":true,"morimachi.shizuoka.jp":true,"nishiizu.shizuoka.jp":true,"numazu.shizuoka.jp":true,"omaezaki.shizuoka.jp":true,"shimada.shizuoka.jp":true,"shimizu.shizuoka.jp":true,"shimoda.shizuoka.jp":true,"shizuoka.shizuoka.jp":true,"susono.shizuoka.jp":true,"yaizu.shizuoka.jp":true,"yoshida.shizuoka.jp":true,"ashikaga.tochigi.jp":true,"bato.tochigi.jp":true,"haga.tochigi.jp":true,"ichikai.tochigi.jp":true,"iwafune.tochigi.jp":true,"kaminokawa.tochigi.jp":true,"kanuma.tochigi.jp":true,"karasuyama.tochigi.jp":true,"kuroiso.tochigi.jp":true,"mashiko.tochigi.jp":true,"mibu.tochigi.jp":true,"moka.tochigi.jp":true,"motegi.tochigi.jp":true,"nasu.tochigi.jp":true,"nasushiobara.tochigi.jp":true,"nikko.tochigi.jp":true,"nishikata.tochigi.jp":true,"nogi.tochigi.jp":true,"ohira.tochigi.jp":true,"ohtawara.tochigi.jp":true,"oyama.tochigi.jp":true,"sakura.tochigi.jp":true,"sano.tochigi.jp":true,"shimotsuke.tochigi.jp":true,"shioya.tochigi.jp":true,"takanezawa.tochigi.jp":true,"tochigi.tochigi.jp":true,"tsuga.tochigi.jp":true,"ujiie.tochigi.jp":true,"utsunomiya.tochigi.jp":true,"yaita.tochigi.jp":true,"aizumi.tokushima.jp":true,"anan.tokushima.jp":true,"ichiba.tokushima.jp":true,"itano.tokushima.jp":true,"kainan.tokushima.jp":true,"komatsushima.tokushima.jp":true,"matsushige.tokushima.jp":true,"mima.tokushima.jp":true,"minami.tokushima.jp":true,"miyoshi.tokushima.jp":true,"mugi.tokushima.jp":true,"nakagawa.tokushima.jp":true,"naruto.tokushima.jp":true,"sanagochi.tokushima.jp":true,"shishikui.tokushima.jp":true,"tokushima.tokushima.jp":true,"wajiki.tokushima.jp":true,"adachi.tokyo.jp":true,"akiruno.tokyo.jp":true,"akishima.tokyo.jp":true,"aogashima.tokyo.jp":true,"arakawa.tokyo.jp":true,"bunkyo.tokyo.jp":true,"chiyoda.tokyo.jp":true,"chofu.tokyo.jp":true,"chuo.tokyo.jp":true,"edogawa.tokyo.jp":true,"fuchu.tokyo.jp":true,"fussa.tokyo.jp":true,"hachijo.tokyo.jp":true,"hachioji.tokyo.jp":true,"hamura.tokyo.jp":true,"higashikurume.tokyo.jp":true,"higashimurayama.tokyo.jp":true,"higashiyamato.tokyo.jp":true,"hino.tokyo.jp":true,"hinode.tokyo.jp":true,"hinohara.tokyo.jp":true,"inagi.tokyo.jp":true,"itabashi.tokyo.jp":true,"katsushika.tokyo.jp":true,"kita.tokyo.jp":true,"kiyose.tokyo.jp":true,"kodaira.tokyo.jp":true,"koganei.tokyo.jp":true,"kokubunji.tokyo.jp":true,"komae.tokyo.jp":true,"koto.tokyo.jp":true,"kouzushima.tokyo.jp":true,"kunitachi.tokyo.jp":true,"machida.tokyo.jp":true,"meguro.tokyo.jp":true,"minato.tokyo.jp":true,"mitaka.tokyo.jp":true,"mizuho.tokyo.jp":true,"musashimurayama.tokyo.jp":true,"musashino.tokyo.jp":true,"nakano.tokyo.jp":true,"nerima.tokyo.jp":true,"ogasawara.tokyo.jp":true,"okutama.tokyo.jp":true,"ome.tokyo.jp":true,"oshima.tokyo.jp":true,"ota.tokyo.jp":true,"setagaya.tokyo.jp":true,"shibuya.tokyo.jp":true,"shinagawa.tokyo.jp":true,"shinjuku.tokyo.jp":true,"suginami.tokyo.jp":true,"sumida.tokyo.jp":true,"tachikawa.tokyo.jp":true,"taito.tokyo.jp":true,"tama.tokyo.jp":true,"toshima.tokyo.jp":true,"chizu.tottori.jp":true,"hino.tottori.jp":true,"kawahara.tottori.jp":true,"koge.tottori.jp":true,"kotoura.tottori.jp":true,"misasa.tottori.jp":true,"nanbu.tottori.jp":true,"nichinan.tottori.jp":true,"sakaiminato.tottori.jp":true,"tottori.tottori.jp":true,"wakasa.tottori.jp":true,"yazu.tottori.jp":true,"yonago.tottori.jp":true,"asahi.toyama.jp":true,"fuchu.toyama.jp":true,"fukumitsu.toyama.jp":true,"funahashi.toyama.jp":true,"himi.toyama.jp":true,"imizu.toyama.jp":true,"inami.toyama.jp":true,"johana.toyama.jp":true,"kamiichi.toyama.jp":true,"kurobe.toyama.jp":true,"nakaniikawa.toyama.jp":true,"namerikawa.toyama.jp":true,"nanto.toyama.jp":true,"nyuzen.toyama.jp":true,"oyabe.toyama.jp":true,"taira.toyama.jp":true,"takaoka.toyama.jp":true,"tateyama.toyama.jp":true,"toga.toyama.jp":true,"tonami.toyama.jp":true,"toyama.toyama.jp":true,"unazuki.toyama.jp":true,"uozu.toyama.jp":true,"yamada.toyama.jp":true,"arida.wakayama.jp":true,"aridagawa.wakayama.jp":true,"gobo.wakayama.jp":true,"hashimoto.wakayama.jp":true,"hidaka.wakayama.jp":true,"hirogawa.wakayama.jp":true,"inami.wakayama.jp":true,"iwade.wakayama.jp":true,"kainan.wakayama.jp":true,"kamitonda.wakayama.jp":true,"katsuragi.wakayama.jp":true,"kimino.wakayama.jp":true,"kinokawa.wakayama.jp":true,"kitayama.wakayama.jp":true,"koya.wakayama.jp":true,"koza.wakayama.jp":true,"kozagawa.wakayama.jp":true,"kudoyama.wakayama.jp":true,"kushimoto.wakayama.jp":true,"mihama.wakayama.jp":true,"misato.wakayama.jp":true,"nachikatsuura.wakayama.jp":true,"shingu.wakayama.jp":true,"shirahama.wakayama.jp":true,"taiji.wakayama.jp":true,"tanabe.wakayama.jp":true,"wakayama.wakayama.jp":true,"yuasa.wakayama.jp":true,"yura.wakayama.jp":true,"asahi.yamagata.jp":true,"funagata.yamagata.jp":true,"higashine.yamagata.jp":true,"iide.yamagata.jp":true,"kahoku.yamagata.jp":true,"kaminoyama.yamagata.jp":true,"kaneyama.yamagata.jp":true,"kawanishi.yamagata.jp":true,"mamurogawa.yamagata.jp":true,"mikawa.yamagata.jp":true,"murayama.yamagata.jp":true,"nagai.yamagata.jp":true,"nakayama.yamagata.jp":true,"nanyo.yamagata.jp":true,"nishikawa.yamagata.jp":true,"obanazawa.yamagata.jp":true,"oe.yamagata.jp":true,"oguni.yamagata.jp":true,"ohkura.yamagata.jp":true,"oishida.yamagata.jp":true,"sagae.yamagata.jp":true,"sakata.yamagata.jp":true,"sakegawa.yamagata.jp":true,"shinjo.yamagata.jp":true,"shirataka.yamagata.jp":true,"shonai.yamagata.jp":true,"takahata.yamagata.jp":true,"tendo.yamagata.jp":true,"tozawa.yamagata.jp":true,"tsuruoka.yamagata.jp":true,"yamagata.yamagata.jp":true,"yamanobe.yamagata.jp":true,"yonezawa.yamagata.jp":true,"yuza.yamagata.jp":true,"abu.yamaguchi.jp":true,"hagi.yamaguchi.jp":true,"hikari.yamaguchi.jp":true,"hofu.yamaguchi.jp":true,"iwakuni.yamaguchi.jp":true,"kudamatsu.yamaguchi.jp":true,"mitou.yamaguchi.jp":true,"nagato.yamaguchi.jp":true,"oshima.yamaguchi.jp":true,"shimonoseki.yamaguchi.jp":true,"shunan.yamaguchi.jp":true,"tabuse.yamaguchi.jp":true,"tokuyama.yamaguchi.jp":true,"toyota.yamaguchi.jp":true,"ube.yamaguchi.jp":true,"yuu.yamaguchi.jp":true,"chuo.yamanashi.jp":true,"doshi.yamanashi.jp":true,"fuefuki.yamanashi.jp":true,"fujikawa.yamanashi.jp":true,"fujikawaguchiko.yamanashi.jp":true,"fujiyoshida.yamanashi.jp":true,"hayakawa.yamanashi.jp":true,"hokuto.yamanashi.jp":true,"ichikawamisato.yamanashi.jp":true,"kai.yamanashi.jp":true,"kofu.yamanashi.jp":true,"koshu.yamanashi.jp":true,"kosuge.yamanashi.jp":true,"minami-alps.yamanashi.jp":true,"minobu.yamanashi.jp":true,"nakamichi.yamanashi.jp":true,"nanbu.yamanashi.jp":true,"narusawa.yamanashi.jp":true,"nirasaki.yamanashi.jp":true,"nishikatsura.yamanashi.jp":true,"oshino.yamanashi.jp":true,"otsuki.yamanashi.jp":true,"showa.yamanashi.jp":true,"tabayama.yamanashi.jp":true,"tsuru.yamanashi.jp":true,"uenohara.yamanashi.jp":true,"yamanakako.yamanashi.jp":true,"yamanashi.yamanashi.jp":true,"ke":true,"ac.ke":true,"co.ke":true,"go.ke":true,"info.ke":true,"me.ke":true,"mobi.ke":true,"ne.ke":true,"or.ke":true,"sc.ke":true,"kg":true,"org.kg":true,"net.kg":true,"com.kg":true,"edu.kg":true,"gov.kg":true,"mil.kg":true,"*.kh":true,"ki":true,"edu.ki":true,"biz.ki":true,"net.ki":true,"org.ki":true,"gov.ki":true,"info.ki":true,"com.ki":true,"km":true,"org.km":true,"nom.km":true,"gov.km":true,"prd.km":true,"tm.km":true,"edu.km":true,"mil.km":true,"ass.km":true,"com.km":true,"coop.km":true,"asso.km":true,"presse.km":true,"medecin.km":true,"notaires.km":true,"pharmaciens.km":true,"veterinaire.km":true,"gouv.km":true,"kn":true,"net.kn":true,"org.kn":true,"edu.kn":true,"gov.kn":true,"kp":true,"com.kp":true,"edu.kp":true,"gov.kp":true,"org.kp":true,"rep.kp":true,"tra.kp":true,"kr":true,"ac.kr":true,"co.kr":true,"es.kr":true,"go.kr":true,"hs.kr":true,"kg.kr":true,"mil.kr":true,"ms.kr":true,"ne.kr":true,"or.kr":true,"pe.kr":true,"re.kr":true,"sc.kr":true,"busan.kr":true,"chungbuk.kr":true,"chungnam.kr":true,"daegu.kr":true,"daejeon.kr":true,"gangwon.kr":true,"gwangju.kr":true,"gyeongbuk.kr":true,"gyeonggi.kr":true,"gyeongnam.kr":true,"incheon.kr":true,"jeju.kr":true,"jeonbuk.kr":true,"jeonnam.kr":true,"seoul.kr":true,"ulsan.kr":true,"*.kw":true,"ky":true,"edu.ky":true,"gov.ky":true,"com.ky":true,"org.ky":true,"net.ky":true,"kz":true,"org.kz":true,"edu.kz":true,"net.kz":true,"gov.kz":true,"mil.kz":true,"com.kz":true,"la":true,"int.la":true,"net.la":true,"info.la":true,"edu.la":true,"gov.la":true,"per.la":true,"com.la":true,"org.la":true,"lb":true,"com.lb":true,"edu.lb":true,"gov.lb":true,"net.lb":true,"org.lb":true,"lc":true,"com.lc":true,"net.lc":true,"co.lc":true,"org.lc":true,"edu.lc":true,"gov.lc":true,"li":true,"lk":true,"gov.lk":true,"sch.lk":true,"net.lk":true,"int.lk":true,"com.lk":true,"org.lk":true,"edu.lk":true,"ngo.lk":true,"soc.lk":true,"web.lk":true,"ltd.lk":true,"assn.lk":true,"grp.lk":true,"hotel.lk":true,"ac.lk":true,"lr":true,"com.lr":true,"edu.lr":true,"gov.lr":true,"org.lr":true,"net.lr":true,"ls":true,"co.ls":true,"org.ls":true,"lt":true,"gov.lt":true,"lu":true,"lv":true,"com.lv":true,"edu.lv":true,"gov.lv":true,"org.lv":true,"mil.lv":true,"id.lv":true,"net.lv":true,"asn.lv":true,"conf.lv":true,"ly":true,"com.ly":true,"net.ly":true,"gov.ly":true,"plc.ly":true,"edu.ly":true,"sch.ly":true,"med.ly":true,"org.ly":true,"id.ly":true,"ma":true,"co.ma":true,"net.ma":true,"gov.ma":true,"org.ma":true,"ac.ma":true,"press.ma":true,"mc":true,"tm.mc":true,"asso.mc":true,"md":true,"me":true,"co.me":true,"net.me":true,"org.me":true,"edu.me":true,"ac.me":true,"gov.me":true,"its.me":true,"priv.me":true,"mg":true,"org.mg":true,"nom.mg":true,"gov.mg":true,"prd.mg":true,"tm.mg":true,"edu.mg":true,"mil.mg":true,"com.mg":true,"co.mg":true,"mh":true,"mil":true,"mk":true,"com.mk":true,"org.mk":true,"net.mk":true,"edu.mk":true,"gov.mk":true,"inf.mk":true,"name.mk":true,"ml":true,"com.ml":true,"edu.ml":true,"gouv.ml":true,"gov.ml":true,"net.ml":true,"org.ml":true,"presse.ml":true,"*.mm":true,"mn":true,"gov.mn":true,"edu.mn":true,"org.mn":true,"mo":true,"com.mo":true,"net.mo":true,"org.mo":true,"edu.mo":true,"gov.mo":true,"mobi":true,"mp":true,"mq":true,"mr":true,"gov.mr":true,"ms":true,"com.ms":true,"edu.ms":true,"gov.ms":true,"net.ms":true,"org.ms":true,"mt":true,"com.mt":true,"edu.mt":true,"net.mt":true,"org.mt":true,"mu":true,"com.mu":true,"net.mu":true,"org.mu":true,"gov.mu":true,"ac.mu":true,"co.mu":true,"or.mu":true,"museum":true,"academy.museum":true,"agriculture.museum":true,"air.museum":true,"airguard.museum":true,"alabama.museum":true,"alaska.museum":true,"amber.museum":true,"ambulance.museum":true,"american.museum":true,"americana.museum":true,"americanantiques.museum":true,"americanart.museum":true,"amsterdam.museum":true,"and.museum":true,"annefrank.museum":true,"anthro.museum":true,"anthropology.museum":true,"antiques.museum":true,"aquarium.museum":true,"arboretum.museum":true,"archaeological.museum":true,"archaeology.museum":true,"architecture.museum":true,"art.museum":true,"artanddesign.museum":true,"artcenter.museum":true,"artdeco.museum":true,"arteducation.museum":true,"artgallery.museum":true,"arts.museum":true,"artsandcrafts.museum":true,"asmatart.museum":true,"assassination.museum":true,"assisi.museum":true,"association.museum":true,"astronomy.museum":true,"atlanta.museum":true,"austin.museum":true,"australia.museum":true,"automotive.museum":true,"aviation.museum":true,"axis.museum":true,"badajoz.museum":true,"baghdad.museum":true,"bahn.museum":true,"bale.museum":true,"baltimore.museum":true,"barcelona.museum":true,"baseball.museum":true,"basel.museum":true,"baths.museum":true,"bauern.museum":true,"beauxarts.museum":true,"beeldengeluid.museum":true,"bellevue.museum":true,"bergbau.museum":true,"berkeley.museum":true,"berlin.museum":true,"bern.museum":true,"bible.museum":true,"bilbao.museum":true,"bill.museum":true,"birdart.museum":true,"birthplace.museum":true,"bonn.museum":true,"boston.museum":true,"botanical.museum":true,"botanicalgarden.museum":true,"botanicgarden.museum":true,"botany.museum":true,"brandywinevalley.museum":true,"brasil.museum":true,"bristol.museum":true,"british.museum":true,"britishcolumbia.museum":true,"broadcast.museum":true,"brunel.museum":true,"brussel.museum":true,"brussels.museum":true,"bruxelles.museum":true,"building.museum":true,"burghof.museum":true,"bus.museum":true,"bushey.museum":true,"cadaques.museum":true,"california.museum":true,"cambridge.museum":true,"can.museum":true,"canada.museum":true,"capebreton.museum":true,"carrier.museum":true,"cartoonart.museum":true,"casadelamoneda.museum":true,"castle.museum":true,"castres.museum":true,"celtic.museum":true,"center.museum":true,"chattanooga.museum":true,"cheltenham.museum":true,"chesapeakebay.museum":true,"chicago.museum":true,"children.museum":true,"childrens.museum":true,"childrensgarden.museum":true,"chiropractic.museum":true,"chocolate.museum":true,"christiansburg.museum":true,"cincinnati.museum":true,"cinema.museum":true,"circus.museum":true,"civilisation.museum":true,"civilization.museum":true,"civilwar.museum":true,"clinton.museum":true,"clock.museum":true,"coal.museum":true,"coastaldefence.museum":true,"cody.museum":true,"coldwar.museum":true,"collection.museum":true,"colonialwilliamsburg.museum":true,"coloradoplateau.museum":true,"columbia.museum":true,"columbus.museum":true,"communication.museum":true,"communications.museum":true,"community.museum":true,"computer.museum":true,"computerhistory.museum":true,"xn--comunicaes-v6a2o.museum":true,"contemporary.museum":true,"contemporaryart.museum":true,"convent.museum":true,"copenhagen.museum":true,"corporation.museum":true,"xn--correios-e-telecomunicaes-ghc29a.museum":true,"corvette.museum":true,"costume.museum":true,"countryestate.museum":true,"county.museum":true,"crafts.museum":true,"cranbrook.museum":true,"creation.museum":true,"cultural.museum":true,"culturalcenter.museum":true,"culture.museum":true,"cyber.museum":true,"cymru.museum":true,"dali.museum":true,"dallas.museum":true,"database.museum":true,"ddr.museum":true,"decorativearts.museum":true,"delaware.museum":true,"delmenhorst.museum":true,"denmark.museum":true,"depot.museum":true,"design.museum":true,"detroit.museum":true,"dinosaur.museum":true,"discovery.museum":true,"dolls.museum":true,"donostia.museum":true,"durham.museum":true,"eastafrica.museum":true,"eastcoast.museum":true,"education.museum":true,"educational.museum":true,"egyptian.museum":true,"eisenbahn.museum":true,"elburg.museum":true,"elvendrell.museum":true,"embroidery.museum":true,"encyclopedic.museum":true,"england.museum":true,"entomology.museum":true,"environment.museum":true,"environmentalconservation.museum":true,"epilepsy.museum":true,"essex.museum":true,"estate.museum":true,"ethnology.museum":true,"exeter.museum":true,"exhibition.museum":true,"family.museum":true,"farm.museum":true,"farmequipment.museum":true,"farmers.museum":true,"farmstead.museum":true,"field.museum":true,"figueres.museum":true,"filatelia.museum":true,"film.museum":true,"fineart.museum":true,"finearts.museum":true,"finland.museum":true,"flanders.museum":true,"florida.museum":true,"force.museum":true,"fortmissoula.museum":true,"fortworth.museum":true,"foundation.museum":true,"francaise.museum":true,"frankfurt.museum":true,"franziskaner.museum":true,"freemasonry.museum":true,"freiburg.museum":true,"fribourg.museum":true,"frog.museum":true,"fundacio.museum":true,"furniture.museum":true,"gallery.museum":true,"garden.museum":true,"gateway.museum":true,"geelvinck.museum":true,"gemological.museum":true,"geology.museum":true,"georgia.museum":true,"giessen.museum":true,"glas.museum":true,"glass.museum":true,"gorge.museum":true,"grandrapids.museum":true,"graz.museum":true,"guernsey.museum":true,"halloffame.museum":true,"hamburg.museum":true,"handson.museum":true,"harvestcelebration.museum":true,"hawaii.museum":true,"health.museum":true,"heimatunduhren.museum":true,"hellas.museum":true,"helsinki.museum":true,"hembygdsforbund.museum":true,"heritage.museum":true,"histoire.museum":true,"historical.museum":true,"historicalsociety.museum":true,"historichouses.museum":true,"historisch.museum":true,"historisches.museum":true,"history.museum":true,"historyofscience.museum":true,"horology.museum":true,"house.museum":true,"humanities.museum":true,"illustration.museum":true,"imageandsound.museum":true,"indian.museum":true,"indiana.museum":true,"indianapolis.museum":true,"indianmarket.museum":true,"intelligence.museum":true,"interactive.museum":true,"iraq.museum":true,"iron.museum":true,"isleofman.museum":true,"jamison.museum":true,"jefferson.museum":true,"jerusalem.museum":true,"jewelry.museum":true,"jewish.museum":true,"jewishart.museum":true,"jfk.museum":true,"journalism.museum":true,"judaica.museum":true,"judygarland.museum":true,"juedisches.museum":true,"juif.museum":true,"karate.museum":true,"karikatur.museum":true,"kids.museum":true,"koebenhavn.museum":true,"koeln.museum":true,"kunst.museum":true,"kunstsammlung.museum":true,"kunstunddesign.museum":true,"labor.museum":true,"labour.museum":true,"lajolla.museum":true,"lancashire.museum":true,"landes.museum":true,"lans.museum":true,"xn--lns-qla.museum":true,"larsson.museum":true,"lewismiller.museum":true,"lincoln.museum":true,"linz.museum":true,"living.museum":true,"livinghistory.museum":true,"localhistory.museum":true,"london.museum":true,"losangeles.museum":true,"louvre.museum":true,"loyalist.museum":true,"lucerne.museum":true,"luxembourg.museum":true,"luzern.museum":true,"mad.museum":true,"madrid.museum":true,"mallorca.museum":true,"manchester.museum":true,"mansion.museum":true,"mansions.museum":true,"manx.museum":true,"marburg.museum":true,"maritime.museum":true,"maritimo.museum":true,"maryland.museum":true,"marylhurst.museum":true,"media.museum":true,"medical.museum":true,"medizinhistorisches.museum":true,"meeres.museum":true,"memorial.museum":true,"mesaverde.museum":true,"michigan.museum":true,"midatlantic.museum":true,"military.museum":true,"mill.museum":true,"miners.museum":true,"mining.museum":true,"minnesota.museum":true,"missile.museum":true,"missoula.museum":true,"modern.museum":true,"moma.museum":true,"money.museum":true,"monmouth.museum":true,"monticello.museum":true,"montreal.museum":true,"moscow.museum":true,"motorcycle.museum":true,"muenchen.museum":true,"muenster.museum":true,"mulhouse.museum":true,"muncie.museum":true,"museet.museum":true,"museumcenter.museum":true,"museumvereniging.museum":true,"music.museum":true,"national.museum":true,"nationalfirearms.museum":true,"nationalheritage.museum":true,"nativeamerican.museum":true,"naturalhistory.museum":true,"naturalhistorymuseum.museum":true,"naturalsciences.museum":true,"nature.museum":true,"naturhistorisches.museum":true,"natuurwetenschappen.museum":true,"naumburg.museum":true,"naval.museum":true,"nebraska.museum":true,"neues.museum":true,"newhampshire.museum":true,"newjersey.museum":true,"newmexico.museum":true,"newport.museum":true,"newspaper.museum":true,"newyork.museum":true,"niepce.museum":true,"norfolk.museum":true,"north.museum":true,"nrw.museum":true,"nuernberg.museum":true,"nuremberg.museum":true,"nyc.museum":true,"nyny.museum":true,"oceanographic.museum":true,"oceanographique.museum":true,"omaha.museum":true,"online.museum":true,"ontario.museum":true,"openair.museum":true,"oregon.museum":true,"oregontrail.museum":true,"otago.museum":true,"oxford.museum":true,"pacific.museum":true,"paderborn.museum":true,"palace.museum":true,"paleo.museum":true,"palmsprings.museum":true,"panama.museum":true,"paris.museum":true,"pasadena.museum":true,"pharmacy.museum":true,"philadelphia.museum":true,"philadelphiaarea.museum":true,"philately.museum":true,"phoenix.museum":true,"photography.museum":true,"pilots.museum":true,"pittsburgh.museum":true,"planetarium.museum":true,"plantation.museum":true,"plants.museum":true,"plaza.museum":true,"portal.museum":true,"portland.museum":true,"portlligat.museum":true,"posts-and-telecommunications.museum":true,"preservation.museum":true,"presidio.museum":true,"press.museum":true,"project.museum":true,"public.museum":true,"pubol.museum":true,"quebec.museum":true,"railroad.museum":true,"railway.museum":true,"research.museum":true,"resistance.museum":true,"riodejaneiro.museum":true,"rochester.museum":true,"rockart.museum":true,"roma.museum":true,"russia.museum":true,"saintlouis.museum":true,"salem.museum":true,"salvadordali.museum":true,"salzburg.museum":true,"sandiego.museum":true,"sanfrancisco.museum":true,"santabarbara.museum":true,"santacruz.museum":true,"santafe.museum":true,"saskatchewan.museum":true,"satx.museum":true,"savannahga.museum":true,"schlesisches.museum":true,"schoenbrunn.museum":true,"schokoladen.museum":true,"school.museum":true,"schweiz.museum":true,"science.museum":true,"scienceandhistory.museum":true,"scienceandindustry.museum":true,"sciencecenter.museum":true,"sciencecenters.museum":true,"science-fiction.museum":true,"sciencehistory.museum":true,"sciences.museum":true,"sciencesnaturelles.museum":true,"scotland.museum":true,"seaport.museum":true,"settlement.museum":true,"settlers.museum":true,"shell.museum":true,"sherbrooke.museum":true,"sibenik.museum":true,"silk.museum":true,"ski.museum":true,"skole.museum":true,"society.museum":true,"sologne.museum":true,"soundandvision.museum":true,"southcarolina.museum":true,"southwest.museum":true,"space.museum":true,"spy.museum":true,"square.museum":true,"stadt.museum":true,"stalbans.museum":true,"starnberg.museum":true,"state.museum":true,"stateofdelaware.museum":true,"station.museum":true,"steam.museum":true,"steiermark.museum":true,"stjohn.museum":true,"stockholm.museum":true,"stpetersburg.museum":true,"stuttgart.museum":true,"suisse.museum":true,"surgeonshall.museum":true,"surrey.museum":true,"svizzera.museum":true,"sweden.museum":true,"sydney.museum":true,"tank.museum":true,"tcm.museum":true,"technology.museum":true,"telekommunikation.museum":true,"television.museum":true,"texas.museum":true,"textile.museum":true,"theater.museum":true,"time.museum":true,"timekeeping.museum":true,"topology.museum":true,"torino.museum":true,"touch.museum":true,"town.museum":true,"transport.museum":true,"tree.museum":true,"trolley.museum":true,"trust.museum":true,"trustee.museum":true,"uhren.museum":true,"ulm.museum":true,"undersea.museum":true,"university.museum":true,"usa.museum":true,"usantiques.museum":true,"usarts.museum":true,"uscountryestate.museum":true,"usculture.museum":true,"usdecorativearts.museum":true,"usgarden.museum":true,"ushistory.museum":true,"ushuaia.museum":true,"uslivinghistory.museum":true,"utah.museum":true,"uvic.museum":true,"valley.museum":true,"vantaa.museum":true,"versailles.museum":true,"viking.museum":true,"village.museum":true,"virginia.museum":true,"virtual.museum":true,"virtuel.museum":true,"vlaanderen.museum":true,"volkenkunde.museum":true,"wales.museum":true,"wallonie.museum":true,"war.museum":true,"washingtondc.museum":true,"watchandclock.museum":true,"watch-and-clock.museum":true,"western.museum":true,"westfalen.museum":true,"whaling.museum":true,"wildlife.museum":true,"williamsburg.museum":true,"windmill.museum":true,"workshop.museum":true,"york.museum":true,"yorkshire.museum":true,"yosemite.museum":true,"youth.museum":true,"zoological.museum":true,"zoology.museum":true,"xn--9dbhblg6di.museum":true,"xn--h1aegh.museum":true,"mv":true,"aero.mv":true,"biz.mv":true,"com.mv":true,"coop.mv":true,"edu.mv":true,"gov.mv":true,"info.mv":true,"int.mv":true,"mil.mv":true,"museum.mv":true,"name.mv":true,"net.mv":true,"org.mv":true,"pro.mv":true,"mw":true,"ac.mw":true,"biz.mw":true,"co.mw":true,"com.mw":true,"coop.mw":true,"edu.mw":true,"gov.mw":true,"int.mw":true,"museum.mw":true,"net.mw":true,"org.mw":true,"mx":true,"com.mx":true,"org.mx":true,"gob.mx":true,"edu.mx":true,"net.mx":true,"my":true,"com.my":true,"net.my":true,"org.my":true,"gov.my":true,"edu.my":true,"mil.my":true,"name.my":true,"mz":true,"ac.mz":true,"adv.mz":true,"co.mz":true,"edu.mz":true,"gov.mz":true,"mil.mz":true,"net.mz":true,"org.mz":true,"na":true,"info.na":true,"pro.na":true,"name.na":true,"school.na":true,"or.na":true,"dr.na":true,"us.na":true,"mx.na":true,"ca.na":true,"in.na":true,"cc.na":true,"tv.na":true,"ws.na":true,"mobi.na":true,"co.na":true,"com.na":true,"org.na":true,"name":true,"nc":true,"asso.nc":true,"nom.nc":true,"ne":true,"net":true,"nf":true,"com.nf":true,"net.nf":true,"per.nf":true,"rec.nf":true,"web.nf":true,"arts.nf":true,"firm.nf":true,"info.nf":true,"other.nf":true,"store.nf":true,"ng":true,"com.ng":true,"edu.ng":true,"gov.ng":true,"i.ng":true,"mil.ng":true,"mobi.ng":true,"name.ng":true,"net.ng":true,"org.ng":true,"sch.ng":true,"ni":true,"ac.ni":true,"biz.ni":true,"co.ni":true,"com.ni":true,"edu.ni":true,"gob.ni":true,"in.ni":true,"info.ni":true,"int.ni":true,"mil.ni":true,"net.ni":true,"nom.ni":true,"org.ni":true,"web.ni":true,"nl":true,"bv.nl":true,"no":true,"fhs.no":true,"vgs.no":true,"fylkesbibl.no":true,"folkebibl.no":true,"museum.no":true,"idrett.no":true,"priv.no":true,"mil.no":true,"stat.no":true,"dep.no":true,"kommune.no":true,"herad.no":true,"aa.no":true,"ah.no":true,"bu.no":true,"fm.no":true,"hl.no":true,"hm.no":true,"jan-mayen.no":true,"mr.no":true,"nl.no":true,"nt.no":true,"of.no":true,"ol.no":true,"oslo.no":true,"rl.no":true,"sf.no":true,"st.no":true,"svalbard.no":true,"tm.no":true,"tr.no":true,"va.no":true,"vf.no":true,"gs.aa.no":true,"gs.ah.no":true,"gs.bu.no":true,"gs.fm.no":true,"gs.hl.no":true,"gs.hm.no":true,"gs.jan-mayen.no":true,"gs.mr.no":true,"gs.nl.no":true,"gs.nt.no":true,"gs.of.no":true,"gs.ol.no":true,"gs.oslo.no":true,"gs.rl.no":true,"gs.sf.no":true,"gs.st.no":true,"gs.svalbard.no":true,"gs.tm.no":true,"gs.tr.no":true,"gs.va.no":true,"gs.vf.no":true,"akrehamn.no":true,"xn--krehamn-dxa.no":true,"algard.no":true,"xn--lgrd-poac.no":true,"arna.no":true,"brumunddal.no":true,"bryne.no":true,"bronnoysund.no":true,"xn--brnnysund-m8ac.no":true,"drobak.no":true,"xn--drbak-wua.no":true,"egersund.no":true,"fetsund.no":true,"floro.no":true,"xn--flor-jra.no":true,"fredrikstad.no":true,"hokksund.no":true,"honefoss.no":true,"xn--hnefoss-q1a.no":true,"jessheim.no":true,"jorpeland.no":true,"xn--jrpeland-54a.no":true,"kirkenes.no":true,"kopervik.no":true,"krokstadelva.no":true,"langevag.no":true,"xn--langevg-jxa.no":true,"leirvik.no":true,"mjondalen.no":true,"xn--mjndalen-64a.no":true,"mo-i-rana.no":true,"mosjoen.no":true,"xn--mosjen-eya.no":true,"nesoddtangen.no":true,"orkanger.no":true,"osoyro.no":true,"xn--osyro-wua.no":true,"raholt.no":true,"xn--rholt-mra.no":true,"sandnessjoen.no":true,"xn--sandnessjen-ogb.no":true,"skedsmokorset.no":true,"slattum.no":true,"spjelkavik.no":true,"stathelle.no":true,"stavern.no":true,"stjordalshalsen.no":true,"xn--stjrdalshalsen-sqb.no":true,"tananger.no":true,"tranby.no":true,"vossevangen.no":true,"afjord.no":true,"xn--fjord-lra.no":true,"agdenes.no":true,"al.no":true,"xn--l-1fa.no":true,"alesund.no":true,"xn--lesund-hua.no":true,"alstahaug.no":true,"alta.no":true,"xn--lt-liac.no":true,"alaheadju.no":true,"xn--laheadju-7ya.no":true,"alvdal.no":true,"amli.no":true,"xn--mli-tla.no":true,"amot.no":true,"xn--mot-tla.no":true,"andebu.no":true,"andoy.no":true,"xn--andy-ira.no":true,"andasuolo.no":true,"ardal.no":true,"xn--rdal-poa.no":true,"aremark.no":true,"arendal.no":true,"xn--s-1fa.no":true,"aseral.no":true,"xn--seral-lra.no":true,"asker.no":true,"askim.no":true,"askvoll.no":true,"askoy.no":true,"xn--asky-ira.no":true,"asnes.no":true,"xn--snes-poa.no":true,"audnedaln.no":true,"aukra.no":true,"aure.no":true,"aurland.no":true,"aurskog-holand.no":true,"xn--aurskog-hland-jnb.no":true,"austevoll.no":true,"austrheim.no":true,"averoy.no":true,"xn--avery-yua.no":true,"balestrand.no":true,"ballangen.no":true,"balat.no":true,"xn--blt-elab.no":true,"balsfjord.no":true,"bahccavuotna.no":true,"xn--bhccavuotna-k7a.no":true,"bamble.no":true,"bardu.no":true,"beardu.no":true,"beiarn.no":true,"bajddar.no":true,"xn--bjddar-pta.no":true,"baidar.no":true,"xn--bidr-5nac.no":true,"berg.no":true,"bergen.no":true,"berlevag.no":true,"xn--berlevg-jxa.no":true,"bearalvahki.no":true,"xn--bearalvhki-y4a.no":true,"bindal.no":true,"birkenes.no":true,"bjarkoy.no":true,"xn--bjarky-fya.no":true,"bjerkreim.no":true,"bjugn.no":true,"bodo.no":true,"xn--bod-2na.no":true,"badaddja.no":true,"xn--bdddj-mrabd.no":true,"budejju.no":true,"bokn.no":true,"bremanger.no":true,"bronnoy.no":true,"xn--brnny-wuac.no":true,"bygland.no":true,"bykle.no":true,"barum.no":true,"xn--brum-voa.no":true,"bo.telemark.no":true,"xn--b-5ga.telemark.no":true,"bo.nordland.no":true,"xn--b-5ga.nordland.no":true,"bievat.no":true,"xn--bievt-0qa.no":true,"bomlo.no":true,"xn--bmlo-gra.no":true,"batsfjord.no":true,"xn--btsfjord-9za.no":true,"bahcavuotna.no":true,"xn--bhcavuotna-s4a.no":true,"dovre.no":true,"drammen.no":true,"drangedal.no":true,"dyroy.no":true,"xn--dyry-ira.no":true,"donna.no":true,"xn--dnna-gra.no":true,"eid.no":true,"eidfjord.no":true,"eidsberg.no":true,"eidskog.no":true,"eidsvoll.no":true,"eigersund.no":true,"elverum.no":true,"enebakk.no":true,"engerdal.no":true,"etne.no":true,"etnedal.no":true,"evenes.no":true,"evenassi.no":true,"xn--eveni-0qa01ga.no":true,"evje-og-hornnes.no":true,"farsund.no":true,"fauske.no":true,"fuossko.no":true,"fuoisku.no":true,"fedje.no":true,"fet.no":true,"finnoy.no":true,"xn--finny-yua.no":true,"fitjar.no":true,"fjaler.no":true,"fjell.no":true,"flakstad.no":true,"flatanger.no":true,"flekkefjord.no":true,"flesberg.no":true,"flora.no":true,"fla.no":true,"xn--fl-zia.no":true,"folldal.no":true,"forsand.no":true,"fosnes.no":true,"frei.no":true,"frogn.no":true,"froland.no":true,"frosta.no":true,"frana.no":true,"xn--frna-woa.no":true,"froya.no":true,"xn--frya-hra.no":true,"fusa.no":true,"fyresdal.no":true,"forde.no":true,"xn--frde-gra.no":true,"gamvik.no":true,"gangaviika.no":true,"xn--ggaviika-8ya47h.no":true,"gaular.no":true,"gausdal.no":true,"gildeskal.no":true,"xn--gildeskl-g0a.no":true,"giske.no":true,"gjemnes.no":true,"gjerdrum.no":true,"gjerstad.no":true,"gjesdal.no":true,"gjovik.no":true,"xn--gjvik-wua.no":true,"gloppen.no":true,"gol.no":true,"gran.no":true,"grane.no":true,"granvin.no":true,"gratangen.no":true,"grimstad.no":true,"grong.no":true,"kraanghke.no":true,"xn--kranghke-b0a.no":true,"grue.no":true,"gulen.no":true,"hadsel.no":true,"halden.no":true,"halsa.no":true,"hamar.no":true,"hamaroy.no":true,"habmer.no":true,"xn--hbmer-xqa.no":true,"hapmir.no":true,"xn--hpmir-xqa.no":true,"hammerfest.no":true,"hammarfeasta.no":true,"xn--hmmrfeasta-s4ac.no":true,"haram.no":true,"hareid.no":true,"harstad.no":true,"hasvik.no":true,"aknoluokta.no":true,"xn--koluokta-7ya57h.no":true,"hattfjelldal.no":true,"aarborte.no":true,"haugesund.no":true,"hemne.no":true,"hemnes.no":true,"hemsedal.no":true,"heroy.more-og-romsdal.no":true,"xn--hery-ira.xn--mre-og-romsdal-qqb.no":true,"heroy.nordland.no":true,"xn--hery-ira.nordland.no":true,"hitra.no":true,"hjartdal.no":true,"hjelmeland.no":true,"hobol.no":true,"xn--hobl-ira.no":true,"hof.no":true,"hol.no":true,"hole.no":true,"holmestrand.no":true,"holtalen.no":true,"xn--holtlen-hxa.no":true,"hornindal.no":true,"horten.no":true,"hurdal.no":true,"hurum.no":true,"hvaler.no":true,"hyllestad.no":true,"hagebostad.no":true,"xn--hgebostad-g3a.no":true,"hoyanger.no":true,"xn--hyanger-q1a.no":true,"hoylandet.no":true,"xn--hylandet-54a.no":true,"ha.no":true,"xn--h-2fa.no":true,"ibestad.no":true,"inderoy.no":true,"xn--indery-fya.no":true,"iveland.no":true,"jevnaker.no":true,"jondal.no":true,"jolster.no":true,"xn--jlster-bya.no":true,"karasjok.no":true,"karasjohka.no":true,"xn--krjohka-hwab49j.no":true,"karlsoy.no":true,"galsa.no":true,"xn--gls-elac.no":true,"karmoy.no":true,"xn--karmy-yua.no":true,"kautokeino.no":true,"guovdageaidnu.no":true,"klepp.no":true,"klabu.no":true,"xn--klbu-woa.no":true,"kongsberg.no":true,"kongsvinger.no":true,"kragero.no":true,"xn--krager-gya.no":true,"kristiansand.no":true,"kristiansund.no":true,"krodsherad.no":true,"xn--krdsherad-m8a.no":true,"kvalsund.no":true,"rahkkeravju.no":true,"xn--rhkkervju-01af.no":true,"kvam.no":true,"kvinesdal.no":true,"kvinnherad.no":true,"kviteseid.no":true,"kvitsoy.no":true,"xn--kvitsy-fya.no":true,"kvafjord.no":true,"xn--kvfjord-nxa.no":true,"giehtavuoatna.no":true,"kvanangen.no":true,"xn--kvnangen-k0a.no":true,"navuotna.no":true,"xn--nvuotna-hwa.no":true,"kafjord.no":true,"xn--kfjord-iua.no":true,"gaivuotna.no":true,"xn--givuotna-8ya.no":true,"larvik.no":true,"lavangen.no":true,"lavagis.no":true,"loabat.no":true,"xn--loabt-0qa.no":true,"lebesby.no":true,"davvesiida.no":true,"leikanger.no":true,"leirfjord.no":true,"leka.no":true,"leksvik.no":true,"lenvik.no":true,"leangaviika.no":true,"xn--leagaviika-52b.no":true,"lesja.no":true,"levanger.no":true,"lier.no":true,"lierne.no":true,"lillehammer.no":true,"lillesand.no":true,"lindesnes.no":true,"lindas.no":true,"xn--linds-pra.no":true,"lom.no":true,"loppa.no":true,"lahppi.no":true,"xn--lhppi-xqa.no":true,"lund.no":true,"lunner.no":true,"luroy.no":true,"xn--lury-ira.no":true,"luster.no":true,"lyngdal.no":true,"lyngen.no":true,"ivgu.no":true,"lardal.no":true,"lerdal.no":true,"xn--lrdal-sra.no":true,"lodingen.no":true,"xn--ldingen-q1a.no":true,"lorenskog.no":true,"xn--lrenskog-54a.no":true,"loten.no":true,"xn--lten-gra.no":true,"malvik.no":true,"masoy.no":true,"xn--msy-ula0h.no":true,"muosat.no":true,"xn--muost-0qa.no":true,"mandal.no":true,"marker.no":true,"marnardal.no":true,"masfjorden.no":true,"meland.no":true,"meldal.no":true,"melhus.no":true,"meloy.no":true,"xn--mely-ira.no":true,"meraker.no":true,"xn--merker-kua.no":true,"moareke.no":true,"xn--moreke-jua.no":true,"midsund.no":true,"midtre-gauldal.no":true,"modalen.no":true,"modum.no":true,"molde.no":true,"moskenes.no":true,"moss.no":true,"mosvik.no":true,"malselv.no":true,"xn--mlselv-iua.no":true,"malatvuopmi.no":true,"xn--mlatvuopmi-s4a.no":true,"namdalseid.no":true,"aejrie.no":true,"namsos.no":true,"namsskogan.no":true,"naamesjevuemie.no":true,"xn--nmesjevuemie-tcba.no":true,"laakesvuemie.no":true,"nannestad.no":true,"narvik.no":true,"narviika.no":true,"naustdal.no":true,"nedre-eiker.no":true,"nes.akershus.no":true,"nes.buskerud.no":true,"nesna.no":true,"nesodden.no":true,"nesseby.no":true,"unjarga.no":true,"xn--unjrga-rta.no":true,"nesset.no":true,"nissedal.no":true,"nittedal.no":true,"nord-aurdal.no":true,"nord-fron.no":true,"nord-odal.no":true,"norddal.no":true,"nordkapp.no":true,"davvenjarga.no":true,"xn--davvenjrga-y4a.no":true,"nordre-land.no":true,"nordreisa.no":true,"raisa.no":true,"xn--risa-5na.no":true,"nore-og-uvdal.no":true,"notodden.no":true,"naroy.no":true,"xn--nry-yla5g.no":true,"notteroy.no":true,"xn--nttery-byae.no":true,"odda.no":true,"oksnes.no":true,"xn--ksnes-uua.no":true,"oppdal.no":true,"oppegard.no":true,"xn--oppegrd-ixa.no":true,"orkdal.no":true,"orland.no":true,"xn--rland-uua.no":true,"orskog.no":true,"xn--rskog-uua.no":true,"orsta.no":true,"xn--rsta-fra.no":true,"os.hedmark.no":true,"os.hordaland.no":true,"osen.no":true,"osteroy.no":true,"xn--ostery-fya.no":true,"ostre-toten.no":true,"xn--stre-toten-zcb.no":true,"overhalla.no":true,"ovre-eiker.no":true,"xn--vre-eiker-k8a.no":true,"oyer.no":true,"xn--yer-zna.no":true,"oygarden.no":true,"xn--ygarden-p1a.no":true,"oystre-slidre.no":true,"xn--ystre-slidre-ujb.no":true,"porsanger.no":true,"porsangu.no":true,"xn--porsgu-sta26f.no":true,"porsgrunn.no":true,"radoy.no":true,"xn--rady-ira.no":true,"rakkestad.no":true,"rana.no":true,"ruovat.no":true,"randaberg.no":true,"rauma.no":true,"rendalen.no":true,"rennebu.no":true,"rennesoy.no":true,"xn--rennesy-v1a.no":true,"rindal.no":true,"ringebu.no":true,"ringerike.no":true,"ringsaker.no":true,"rissa.no":true,"risor.no":true,"xn--risr-ira.no":true,"roan.no":true,"rollag.no":true,"rygge.no":true,"ralingen.no":true,"xn--rlingen-mxa.no":true,"rodoy.no":true,"xn--rdy-0nab.no":true,"romskog.no":true,"xn--rmskog-bya.no":true,"roros.no":true,"xn--rros-gra.no":true,"rost.no":true,"xn--rst-0na.no":true,"royken.no":true,"xn--ryken-vua.no":true,"royrvik.no":true,"xn--ryrvik-bya.no":true,"rade.no":true,"xn--rde-ula.no":true,"salangen.no":true,"siellak.no":true,"saltdal.no":true,"salat.no":true,"xn--slt-elab.no":true,"xn--slat-5na.no":true,"samnanger.no":true,"sande.more-og-romsdal.no":true,"sande.xn--mre-og-romsdal-qqb.no":true,"sande.vestfold.no":true,"sandefjord.no":true,"sandnes.no":true,"sandoy.no":true,"xn--sandy-yua.no":true,"sarpsborg.no":true,"sauda.no":true,"sauherad.no":true,"sel.no":true,"selbu.no":true,"selje.no":true,"seljord.no":true,"sigdal.no":true,"siljan.no":true,"sirdal.no":true,"skaun.no":true,"skedsmo.no":true,"ski.no":true,"skien.no":true,"skiptvet.no":true,"skjervoy.no":true,"xn--skjervy-v1a.no":true,"skierva.no":true,"xn--skierv-uta.no":true,"skjak.no":true,"xn--skjk-soa.no":true,"skodje.no":true,"skanland.no":true,"xn--sknland-fxa.no":true,"skanit.no":true,"xn--sknit-yqa.no":true,"smola.no":true,"xn--smla-hra.no":true,"snillfjord.no":true,"snasa.no":true,"xn--snsa-roa.no":true,"snoasa.no":true,"snaase.no":true,"xn--snase-nra.no":true,"sogndal.no":true,"sokndal.no":true,"sola.no":true,"solund.no":true,"songdalen.no":true,"sortland.no":true,"spydeberg.no":true,"stange.no":true,"stavanger.no":true,"steigen.no":true,"steinkjer.no":true,"stjordal.no":true,"xn--stjrdal-s1a.no":true,"stokke.no":true,"stor-elvdal.no":true,"stord.no":true,"stordal.no":true,"storfjord.no":true,"omasvuotna.no":true,"strand.no":true,"stranda.no":true,"stryn.no":true,"sula.no":true,"suldal.no":true,"sund.no":true,"sunndal.no":true,"surnadal.no":true,"sveio.no":true,"svelvik.no":true,"sykkylven.no":true,"sogne.no":true,"xn--sgne-gra.no":true,"somna.no":true,"xn--smna-gra.no":true,"sondre-land.no":true,"xn--sndre-land-0cb.no":true,"sor-aurdal.no":true,"xn--sr-aurdal-l8a.no":true,"sor-fron.no":true,"xn--sr-fron-q1a.no":true,"sor-odal.no":true,"xn--sr-odal-q1a.no":true,"sor-varanger.no":true,"xn--sr-varanger-ggb.no":true,"matta-varjjat.no":true,"xn--mtta-vrjjat-k7af.no":true,"sorfold.no":true,"xn--srfold-bya.no":true,"sorreisa.no":true,"xn--srreisa-q1a.no":true,"sorum.no":true,"xn--srum-gra.no":true,"tana.no":true,"deatnu.no":true,"time.no":true,"tingvoll.no":true,"tinn.no":true,"tjeldsund.no":true,"dielddanuorri.no":true,"tjome.no":true,"xn--tjme-hra.no":true,"tokke.no":true,"tolga.no":true,"torsken.no":true,"tranoy.no":true,"xn--trany-yua.no":true,"tromso.no":true,"xn--troms-zua.no":true,"tromsa.no":true,"romsa.no":true,"trondheim.no":true,"troandin.no":true,"trysil.no":true,"trana.no":true,"xn--trna-woa.no":true,"trogstad.no":true,"xn--trgstad-r1a.no":true,"tvedestrand.no":true,"tydal.no":true,"tynset.no":true,"tysfjord.no":true,"divtasvuodna.no":true,"divttasvuotna.no":true,"tysnes.no":true,"tysvar.no":true,"xn--tysvr-vra.no":true,"tonsberg.no":true,"xn--tnsberg-q1a.no":true,"ullensaker.no":true,"ullensvang.no":true,"ulvik.no":true,"utsira.no":true,"vadso.no":true,"xn--vads-jra.no":true,"cahcesuolo.no":true,"xn--hcesuolo-7ya35b.no":true,"vaksdal.no":true,"valle.no":true,"vang.no":true,"vanylven.no":true,"vardo.no":true,"xn--vard-jra.no":true,"varggat.no":true,"xn--vrggt-xqad.no":true,"vefsn.no":true,"vaapste.no":true,"vega.no":true,"vegarshei.no":true,"xn--vegrshei-c0a.no":true,"vennesla.no":true,"verdal.no":true,"verran.no":true,"vestby.no":true,"vestnes.no":true,"vestre-slidre.no":true,"vestre-toten.no":true,"vestvagoy.no":true,"xn--vestvgy-ixa6o.no":true,"vevelstad.no":true,"vik.no":true,"vikna.no":true,"vindafjord.no":true,"volda.no":true,"voss.no":true,"varoy.no":true,"xn--vry-yla5g.no":true,"vagan.no":true,"xn--vgan-qoa.no":true,"voagat.no":true,"vagsoy.no":true,"xn--vgsy-qoa0j.no":true,"vaga.no":true,"xn--vg-yiab.no":true,"valer.ostfold.no":true,"xn--vler-qoa.xn--stfold-9xa.no":true,"valer.hedmark.no":true,"xn--vler-qoa.hedmark.no":true,"*.np":true,"nr":true,"biz.nr":true,"info.nr":true,"gov.nr":true,"edu.nr":true,"org.nr":true,"net.nr":true,"com.nr":true,"nu":true,"nz":true,"ac.nz":true,"co.nz":true,"cri.nz":true,"geek.nz":true,"gen.nz":true,"govt.nz":true,"health.nz":true,"iwi.nz":true,"kiwi.nz":true,"maori.nz":true,"mil.nz":true,"xn--mori-qsa.nz":true,"net.nz":true,"org.nz":true,"parliament.nz":true,"school.nz":true,"om":true,"co.om":true,"com.om":true,"edu.om":true,"gov.om":true,"med.om":true,"museum.om":true,"net.om":true,"org.om":true,"pro.om":true,"onion":true,"org":true,"pa":true,"ac.pa":true,"gob.pa":true,"com.pa":true,"org.pa":true,"sld.pa":true,"edu.pa":true,"net.pa":true,"ing.pa":true,"abo.pa":true,"med.pa":true,"nom.pa":true,"pe":true,"edu.pe":true,"gob.pe":true,"nom.pe":true,"mil.pe":true,"org.pe":true,"com.pe":true,"net.pe":true,"pf":true,"com.pf":true,"org.pf":true,"edu.pf":true,"*.pg":true,"ph":true,"com.ph":true,"net.ph":true,"org.ph":true,"gov.ph":true,"edu.ph":true,"ngo.ph":true,"mil.ph":true,"i.ph":true,"pk":true,"com.pk":true,"net.pk":true,"edu.pk":true,"org.pk":true,"fam.pk":true,"biz.pk":true,"web.pk":true,"gov.pk":true,"gob.pk":true,"gok.pk":true,"gon.pk":true,"gop.pk":true,"gos.pk":true,"info.pk":true,"pl":true,"com.pl":true,"net.pl":true,"org.pl":true,"aid.pl":true,"agro.pl":true,"atm.pl":true,"auto.pl":true,"biz.pl":true,"edu.pl":true,"gmina.pl":true,"gsm.pl":true,"info.pl":true,"mail.pl":true,"miasta.pl":true,"media.pl":true,"mil.pl":true,"nieruchomosci.pl":true,"nom.pl":true,"pc.pl":true,"powiat.pl":true,"priv.pl":true,"realestate.pl":true,"rel.pl":true,"sex.pl":true,"shop.pl":true,"sklep.pl":true,"sos.pl":true,"szkola.pl":true,"targi.pl":true,"tm.pl":true,"tourism.pl":true,"travel.pl":true,"turystyka.pl":true,"gov.pl":true,"ap.gov.pl":true,"ic.gov.pl":true,"is.gov.pl":true,"us.gov.pl":true,"kmpsp.gov.pl":true,"kppsp.gov.pl":true,"kwpsp.gov.pl":true,"psp.gov.pl":true,"wskr.gov.pl":true,"kwp.gov.pl":true,"mw.gov.pl":true,"ug.gov.pl":true,"um.gov.pl":true,"umig.gov.pl":true,"ugim.gov.pl":true,"upow.gov.pl":true,"uw.gov.pl":true,"starostwo.gov.pl":true,"pa.gov.pl":true,"po.gov.pl":true,"psse.gov.pl":true,"pup.gov.pl":true,"rzgw.gov.pl":true,"sa.gov.pl":true,"so.gov.pl":true,"sr.gov.pl":true,"wsa.gov.pl":true,"sko.gov.pl":true,"uzs.gov.pl":true,"wiih.gov.pl":true,"winb.gov.pl":true,"pinb.gov.pl":true,"wios.gov.pl":true,"witd.gov.pl":true,"wzmiuw.gov.pl":true,"piw.gov.pl":true,"wiw.gov.pl":true,"griw.gov.pl":true,"wif.gov.pl":true,"oum.gov.pl":true,"sdn.gov.pl":true,"zp.gov.pl":true,"uppo.gov.pl":true,"mup.gov.pl":true,"wuoz.gov.pl":true,"konsulat.gov.pl":true,"oirm.gov.pl":true,"augustow.pl":true,"babia-gora.pl":true,"bedzin.pl":true,"beskidy.pl":true,"bialowieza.pl":true,"bialystok.pl":true,"bielawa.pl":true,"bieszczady.pl":true,"boleslawiec.pl":true,"bydgoszcz.pl":true,"bytom.pl":true,"cieszyn.pl":true,"czeladz.pl":true,"czest.pl":true,"dlugoleka.pl":true,"elblag.pl":true,"elk.pl":true,"glogow.pl":true,"gniezno.pl":true,"gorlice.pl":true,"grajewo.pl":true,"ilawa.pl":true,"jaworzno.pl":true,"jelenia-gora.pl":true,"jgora.pl":true,"kalisz.pl":true,"kazimierz-dolny.pl":true,"karpacz.pl":true,"kartuzy.pl":true,"kaszuby.pl":true,"katowice.pl":true,"kepno.pl":true,"ketrzyn.pl":true,"klodzko.pl":true,"kobierzyce.pl":true,"kolobrzeg.pl":true,"konin.pl":true,"konskowola.pl":true,"kutno.pl":true,"lapy.pl":true,"lebork.pl":true,"legnica.pl":true,"lezajsk.pl":true,"limanowa.pl":true,"lomza.pl":true,"lowicz.pl":true,"lubin.pl":true,"lukow.pl":true,"malbork.pl":true,"malopolska.pl":true,"mazowsze.pl":true,"mazury.pl":true,"mielec.pl":true,"mielno.pl":true,"mragowo.pl":true,"naklo.pl":true,"nowaruda.pl":true,"nysa.pl":true,"olawa.pl":true,"olecko.pl":true,"olkusz.pl":true,"olsztyn.pl":true,"opoczno.pl":true,"opole.pl":true,"ostroda.pl":true,"ostroleka.pl":true,"ostrowiec.pl":true,"ostrowwlkp.pl":true,"pila.pl":true,"pisz.pl":true,"podhale.pl":true,"podlasie.pl":true,"polkowice.pl":true,"pomorze.pl":true,"pomorskie.pl":true,"prochowice.pl":true,"pruszkow.pl":true,"przeworsk.pl":true,"pulawy.pl":true,"radom.pl":true,"rawa-maz.pl":true,"rybnik.pl":true,"rzeszow.pl":true,"sanok.pl":true,"sejny.pl":true,"slask.pl":true,"slupsk.pl":true,"sosnowiec.pl":true,"stalowa-wola.pl":true,"skoczow.pl":true,"starachowice.pl":true,"stargard.pl":true,"suwalki.pl":true,"swidnica.pl":true,"swiebodzin.pl":true,"swinoujscie.pl":true,"szczecin.pl":true,"szczytno.pl":true,"tarnobrzeg.pl":true,"tgory.pl":true,"turek.pl":true,"tychy.pl":true,"ustka.pl":true,"walbrzych.pl":true,"warmia.pl":true,"warszawa.pl":true,"waw.pl":true,"wegrow.pl":true,"wielun.pl":true,"wlocl.pl":true,"wloclawek.pl":true,"wodzislaw.pl":true,"wolomin.pl":true,"wroclaw.pl":true,"zachpomor.pl":true,"zagan.pl":true,"zarow.pl":true,"zgora.pl":true,"zgorzelec.pl":true,"pm":true,"pn":true,"gov.pn":true,"co.pn":true,"org.pn":true,"edu.pn":true,"net.pn":true,"post":true,"pr":true,"com.pr":true,"net.pr":true,"org.pr":true,"gov.pr":true,"edu.pr":true,"isla.pr":true,"pro.pr":true,"biz.pr":true,"info.pr":true,"name.pr":true,"est.pr":true,"prof.pr":true,"ac.pr":true,"pro":true,"aaa.pro":true,"aca.pro":true,"acct.pro":true,"avocat.pro":true,"bar.pro":true,"cpa.pro":true,"eng.pro":true,"jur.pro":true,"law.pro":true,"med.pro":true,"recht.pro":true,"ps":true,"edu.ps":true,"gov.ps":true,"sec.ps":true,"plo.ps":true,"com.ps":true,"org.ps":true,"net.ps":true,"pt":true,"net.pt":true,"gov.pt":true,"org.pt":true,"edu.pt":true,"int.pt":true,"publ.pt":true,"com.pt":true,"nome.pt":true,"pw":true,"co.pw":true,"ne.pw":true,"or.pw":true,"ed.pw":true,"go.pw":true,"belau.pw":true,"py":true,"com.py":true,"coop.py":true,"edu.py":true,"gov.py":true,"mil.py":true,"net.py":true,"org.py":true,"qa":true,"com.qa":true,"edu.qa":true,"gov.qa":true,"mil.qa":true,"name.qa":true,"net.qa":true,"org.qa":true,"sch.qa":true,"re":true,"asso.re":true,"com.re":true,"nom.re":true,"ro":true,"arts.ro":true,"com.ro":true,"firm.ro":true,"info.ro":true,"nom.ro":true,"nt.ro":true,"org.ro":true,"rec.ro":true,"store.ro":true,"tm.ro":true,"www.ro":true,"rs":true,"ac.rs":true,"co.rs":true,"edu.rs":true,"gov.rs":true,"in.rs":true,"org.rs":true,"ru":true,"ac.ru":true,"edu.ru":true,"gov.ru":true,"int.ru":true,"mil.ru":true,"test.ru":true,"rw":true,"gov.rw":true,"net.rw":true,"edu.rw":true,"ac.rw":true,"com.rw":true,"co.rw":true,"int.rw":true,"mil.rw":true,"gouv.rw":true,"sa":true,"com.sa":true,"net.sa":true,"org.sa":true,"gov.sa":true,"med.sa":true,"pub.sa":true,"edu.sa":true,"sch.sa":true,"sb":true,"com.sb":true,"edu.sb":true,"gov.sb":true,"net.sb":true,"org.sb":true,"sc":true,"com.sc":true,"gov.sc":true,"net.sc":true,"org.sc":true,"edu.sc":true,"sd":true,"com.sd":true,"net.sd":true,"org.sd":true,"edu.sd":true,"med.sd":true,"tv.sd":true,"gov.sd":true,"info.sd":true,"se":true,"a.se":true,"ac.se":true,"b.se":true,"bd.se":true,"brand.se":true,"c.se":true,"d.se":true,"e.se":true,"f.se":true,"fh.se":true,"fhsk.se":true,"fhv.se":true,"g.se":true,"h.se":true,"i.se":true,"k.se":true,"komforb.se":true,"kommunalforbund.se":true,"komvux.se":true,"l.se":true,"lanbib.se":true,"m.se":true,"n.se":true,"naturbruksgymn.se":true,"o.se":true,"org.se":true,"p.se":true,"parti.se":true,"pp.se":true,"press.se":true,"r.se":true,"s.se":true,"t.se":true,"tm.se":true,"u.se":true,"w.se":true,"x.se":true,"y.se":true,"z.se":true,"sg":true,"com.sg":true,"net.sg":true,"org.sg":true,"gov.sg":true,"edu.sg":true,"per.sg":true,"sh":true,"com.sh":true,"net.sh":true,"gov.sh":true,"org.sh":true,"mil.sh":true,"si":true,"sj":true,"sk":true,"sl":true,"com.sl":true,"net.sl":true,"edu.sl":true,"gov.sl":true,"org.sl":true,"sm":true,"sn":true,"art.sn":true,"com.sn":true,"edu.sn":true,"gouv.sn":true,"org.sn":true,"perso.sn":true,"univ.sn":true,"so":true,"com.so":true,"net.so":true,"org.so":true,"sr":true,"st":true,"co.st":true,"com.st":true,"consulado.st":true,"edu.st":true,"embaixada.st":true,"gov.st":true,"mil.st":true,"net.st":true,"org.st":true,"principe.st":true,"saotome.st":true,"store.st":true,"su":true,"sv":true,"com.sv":true,"edu.sv":true,"gob.sv":true,"org.sv":true,"red.sv":true,"sx":true,"gov.sx":true,"sy":true,"edu.sy":true,"gov.sy":true,"net.sy":true,"mil.sy":true,"com.sy":true,"org.sy":true,"sz":true,"co.sz":true,"ac.sz":true,"org.sz":true,"tc":true,"td":true,"tel":true,"tf":true,"tg":true,"th":true,"ac.th":true,"co.th":true,"go.th":true,"in.th":true,"mi.th":true,"net.th":true,"or.th":true,"tj":true,"ac.tj":true,"biz.tj":true,"co.tj":true,"com.tj":true,"edu.tj":true,"go.tj":true,"gov.tj":true,"int.tj":true,"mil.tj":true,"name.tj":true,"net.tj":true,"nic.tj":true,"org.tj":true,"test.tj":true,"web.tj":true,"tk":true,"tl":true,"gov.tl":true,"tm":true,"com.tm":true,"co.tm":true,"org.tm":true,"net.tm":true,"nom.tm":true,"gov.tm":true,"mil.tm":true,"edu.tm":true,"tn":true,"com.tn":true,"ens.tn":true,"fin.tn":true,"gov.tn":true,"ind.tn":true,"intl.tn":true,"nat.tn":true,"net.tn":true,"org.tn":true,"info.tn":true,"perso.tn":true,"tourism.tn":true,"edunet.tn":true,"rnrt.tn":true,"rns.tn":true,"rnu.tn":true,"mincom.tn":true,"agrinet.tn":true,"defense.tn":true,"turen.tn":true,"to":true,"com.to":true,"gov.to":true,"net.to":true,"org.to":true,"edu.to":true,"mil.to":true,"tr":true,"com.tr":true,"info.tr":true,"biz.tr":true,"net.tr":true,"org.tr":true,"web.tr":true,"gen.tr":true,"tv.tr":true,"av.tr":true,"dr.tr":true,"bbs.tr":true,"name.tr":true,"tel.tr":true,"gov.tr":true,"bel.tr":true,"pol.tr":true,"mil.tr":true,"k12.tr":true,"edu.tr":true,"kep.tr":true,"nc.tr":true,"gov.nc.tr":true,"travel":true,"tt":true,"co.tt":true,"com.tt":true,"org.tt":true,"net.tt":true,"biz.tt":true,"info.tt":true,"pro.tt":true,"int.tt":true,"coop.tt":true,"jobs.tt":true,"mobi.tt":true,"travel.tt":true,"museum.tt":true,"aero.tt":true,"name.tt":true,"gov.tt":true,"edu.tt":true,"tv":true,"tw":true,"edu.tw":true,"gov.tw":true,"mil.tw":true,"com.tw":true,"net.tw":true,"org.tw":true,"idv.tw":true,"game.tw":true,"ebiz.tw":true,"club.tw":true,"xn--zf0ao64a.tw":true,"xn--uc0atv.tw":true,"xn--czrw28b.tw":true,"tz":true,"ac.tz":true,"co.tz":true,"go.tz":true,"hotel.tz":true,"info.tz":true,"me.tz":true,"mil.tz":true,"mobi.tz":true,"ne.tz":true,"or.tz":true,"sc.tz":true,"tv.tz":true,"ua":true,"com.ua":true,"edu.ua":true,"gov.ua":true,"in.ua":true,"net.ua":true,"org.ua":true,"cherkassy.ua":true,"cherkasy.ua":true,"chernigov.ua":true,"chernihiv.ua":true,"chernivtsi.ua":true,"chernovtsy.ua":true,"ck.ua":true,"cn.ua":true,"cr.ua":true,"crimea.ua":true,"cv.ua":true,"dn.ua":true,"dnepropetrovsk.ua":true,"dnipropetrovsk.ua":true,"dominic.ua":true,"donetsk.ua":true,"dp.ua":true,"if.ua":true,"ivano-frankivsk.ua":true,"kh.ua":true,"kharkiv.ua":true,"kharkov.ua":true,"kherson.ua":true,"khmelnitskiy.ua":true,"khmelnytskyi.ua":true,"kiev.ua":true,"kirovograd.ua":true,"km.ua":true,"kr.ua":true,"krym.ua":true,"ks.ua":true,"kv.ua":true,"kyiv.ua":true,"lg.ua":true,"lt.ua":true,"lugansk.ua":true,"lutsk.ua":true,"lv.ua":true,"lviv.ua":true,"mk.ua":true,"mykolaiv.ua":true,"nikolaev.ua":true,"od.ua":true,"odesa.ua":true,"odessa.ua":true,"pl.ua":true,"poltava.ua":true,"rivne.ua":true,"rovno.ua":true,"rv.ua":true,"sb.ua":true,"sebastopol.ua":true,"sevastopol.ua":true,"sm.ua":true,"sumy.ua":true,"te.ua":true,"ternopil.ua":true,"uz.ua":true,"uzhgorod.ua":true,"vinnica.ua":true,"vinnytsia.ua":true,"vn.ua":true,"volyn.ua":true,"yalta.ua":true,"zaporizhzhe.ua":true,"zaporizhzhia.ua":true,"zhitomir.ua":true,"zhytomyr.ua":true,"zp.ua":true,"zt.ua":true,"ug":true,"co.ug":true,"or.ug":true,"ac.ug":true,"sc.ug":true,"go.ug":true,"ne.ug":true,"com.ug":true,"org.ug":true,"uk":true,"ac.uk":true,"co.uk":true,"gov.uk":true,"ltd.uk":true,"me.uk":true,"net.uk":true,"nhs.uk":true,"org.uk":true,"plc.uk":true,"police.uk":true,"*.sch.uk":true,"us":true,"dni.us":true,"fed.us":true,"isa.us":true,"kids.us":true,"nsn.us":true,"ak.us":true,"al.us":true,"ar.us":true,"as.us":true,"az.us":true,"ca.us":true,"co.us":true,"ct.us":true,"dc.us":true,"de.us":true,"fl.us":true,"ga.us":true,"gu.us":true,"hi.us":true,"ia.us":true,"id.us":true,"il.us":true,"in.us":true,"ks.us":true,"ky.us":true,"la.us":true,"ma.us":true,"md.us":true,"me.us":true,"mi.us":true,"mn.us":true,"mo.us":true,"ms.us":true,"mt.us":true,"nc.us":true,"nd.us":true,"ne.us":true,"nh.us":true,"nj.us":true,"nm.us":true,"nv.us":true,"ny.us":true,"oh.us":true,"ok.us":true,"or.us":true,"pa.us":true,"pr.us":true,"ri.us":true,"sc.us":true,"sd.us":true,"tn.us":true,"tx.us":true,"ut.us":true,"vi.us":true,"vt.us":true,"va.us":true,"wa.us":true,"wi.us":true,"wv.us":true,"wy.us":true,"k12.ak.us":true,"k12.al.us":true,"k12.ar.us":true,"k12.as.us":true,"k12.az.us":true,"k12.ca.us":true,"k12.co.us":true,"k12.ct.us":true,"k12.dc.us":true,"k12.de.us":true,"k12.fl.us":true,"k12.ga.us":true,"k12.gu.us":true,"k12.ia.us":true,"k12.id.us":true,"k12.il.us":true,"k12.in.us":true,"k12.ks.us":true,"k12.ky.us":true,"k12.la.us":true,"k12.ma.us":true,"k12.md.us":true,"k12.me.us":true,"k12.mi.us":true,"k12.mn.us":true,"k12.mo.us":true,"k12.ms.us":true,"k12.mt.us":true,"k12.nc.us":true,"k12.ne.us":true,"k12.nh.us":true,"k12.nj.us":true,"k12.nm.us":true,"k12.nv.us":true,"k12.ny.us":true,"k12.oh.us":true,"k12.ok.us":true,"k12.or.us":true,"k12.pa.us":true,"k12.pr.us":true,"k12.ri.us":true,"k12.sc.us":true,"k12.tn.us":true,"k12.tx.us":true,"k12.ut.us":true,"k12.vi.us":true,"k12.vt.us":true,"k12.va.us":true,"k12.wa.us":true,"k12.wi.us":true,"k12.wy.us":true,"cc.ak.us":true,"cc.al.us":true,"cc.ar.us":true,"cc.as.us":true,"cc.az.us":true,"cc.ca.us":true,"cc.co.us":true,"cc.ct.us":true,"cc.dc.us":true,"cc.de.us":true,"cc.fl.us":true,"cc.ga.us":true,"cc.gu.us":true,"cc.hi.us":true,"cc.ia.us":true,"cc.id.us":true,"cc.il.us":true,"cc.in.us":true,"cc.ks.us":true,"cc.ky.us":true,"cc.la.us":true,"cc.ma.us":true,"cc.md.us":true,"cc.me.us":true,"cc.mi.us":true,"cc.mn.us":true,"cc.mo.us":true,"cc.ms.us":true,"cc.mt.us":true,"cc.nc.us":true,"cc.nd.us":true,"cc.ne.us":true,"cc.nh.us":true,"cc.nj.us":true,"cc.nm.us":true,"cc.nv.us":true,"cc.ny.us":true,"cc.oh.us":true,"cc.ok.us":true,"cc.or.us":true,"cc.pa.us":true,"cc.pr.us":true,"cc.ri.us":true,"cc.sc.us":true,"cc.sd.us":true,"cc.tn.us":true,"cc.tx.us":true,"cc.ut.us":true,"cc.vi.us":true,"cc.vt.us":true,"cc.va.us":true,"cc.wa.us":true,"cc.wi.us":true,"cc.wv.us":true,"cc.wy.us":true,"lib.ak.us":true,"lib.al.us":true,"lib.ar.us":true,"lib.as.us":true,"lib.az.us":true,"lib.ca.us":true,"lib.co.us":true,"lib.ct.us":true,"lib.dc.us":true,"lib.fl.us":true,"lib.ga.us":true,"lib.gu.us":true,"lib.hi.us":true,"lib.ia.us":true,"lib.id.us":true,"lib.il.us":true,"lib.in.us":true,"lib.ks.us":true,"lib.ky.us":true,"lib.la.us":true,"lib.ma.us":true,"lib.md.us":true,"lib.me.us":true,"lib.mi.us":true,"lib.mn.us":true,"lib.mo.us":true,"lib.ms.us":true,"lib.mt.us":true,"lib.nc.us":true,"lib.nd.us":true,"lib.ne.us":true,"lib.nh.us":true,"lib.nj.us":true,"lib.nm.us":true,"lib.nv.us":true,"lib.ny.us":true,"lib.oh.us":true,"lib.ok.us":true,"lib.or.us":true,"lib.pa.us":true,"lib.pr.us":true,"lib.ri.us":true,"lib.sc.us":true,"lib.sd.us":true,"lib.tn.us":true,"lib.tx.us":true,"lib.ut.us":true,"lib.vi.us":true,"lib.vt.us":true,"lib.va.us":true,"lib.wa.us":true,"lib.wi.us":true,"lib.wy.us":true,"pvt.k12.ma.us":true,"chtr.k12.ma.us":true,"paroch.k12.ma.us":true,"ann-arbor.mi.us":true,"cog.mi.us":true,"dst.mi.us":true,"eaton.mi.us":true,"gen.mi.us":true,"mus.mi.us":true,"tec.mi.us":true,"washtenaw.mi.us":true,"uy":true,"com.uy":true,"edu.uy":true,"gub.uy":true,"mil.uy":true,"net.uy":true,"org.uy":true,"uz":true,"co.uz":true,"com.uz":true,"net.uz":true,"org.uz":true,"va":true,"vc":true,"com.vc":true,"net.vc":true,"org.vc":true,"gov.vc":true,"mil.vc":true,"edu.vc":true,"ve":true,"arts.ve":true,"co.ve":true,"com.ve":true,"e12.ve":true,"edu.ve":true,"firm.ve":true,"gob.ve":true,"gov.ve":true,"info.ve":true,"int.ve":true,"mil.ve":true,"net.ve":true,"org.ve":true,"rec.ve":true,"store.ve":true,"tec.ve":true,"web.ve":true,"vg":true,"vi":true,"co.vi":true,"com.vi":true,"k12.vi":true,"net.vi":true,"org.vi":true,"vn":true,"com.vn":true,"net.vn":true,"org.vn":true,"edu.vn":true,"gov.vn":true,"int.vn":true,"ac.vn":true,"biz.vn":true,"info.vn":true,"name.vn":true,"pro.vn":true,"health.vn":true,"vu":true,"com.vu":true,"edu.vu":true,"net.vu":true,"org.vu":true,"wf":true,"ws":true,"com.ws":true,"net.ws":true,"org.ws":true,"gov.ws":true,"edu.ws":true,"yt":true,"xn--mgbaam7a8h":true,"xn--y9a3aq":true,"xn--54b7fta0cc":true,"xn--90ae":true,"xn--90ais":true,"xn--fiqs8s":true,"xn--fiqz9s":true,"xn--lgbbat1ad8j":true,"xn--wgbh1c":true,"xn--e1a4c":true,"xn--node":true,"xn--qxam":true,"xn--j6w193g":true,"xn--2scrj9c":true,"xn--3hcrj9c":true,"xn--45br5cyl":true,"xn--h2breg3eve":true,"xn--h2brj9c8c":true,"xn--mgbgu82a":true,"xn--rvc1e0am3e":true,"xn--h2brj9c":true,"xn--mgbbh1a71e":true,"xn--fpcrj9c3d":true,"xn--gecrj9c":true,"xn--s9brj9c":true,"xn--45brj9c":true,"xn--xkc2dl3a5ee0h":true,"xn--mgba3a4f16a":true,"xn--mgba3a4fra":true,"xn--mgbtx2b":true,"xn--mgbayh7gpa":true,"xn--3e0b707e":true,"xn--80ao21a":true,"xn--fzc2c9e2c":true,"xn--xkc2al3hye2a":true,"xn--mgbc0a9azcg":true,"xn--d1alf":true,"xn--l1acc":true,"xn--mix891f":true,"xn--mix082f":true,"xn--mgbx4cd0ab":true,"xn--mgb9awbf":true,"xn--mgbai9azgqp6j":true,"xn--mgbai9a5eva00b":true,"xn--ygbi2ammx":true,"xn--90a3ac":true,"xn--o1ac.xn--90a3ac":true,"xn--c1avg.xn--90a3ac":true,"xn--90azh.xn--90a3ac":true,"xn--d1at.xn--90a3ac":true,"xn--o1ach.xn--90a3ac":true,"xn--80au.xn--90a3ac":true,"xn--p1ai":true,"xn--wgbl6a":true,"xn--mgberp4a5d4ar":true,"xn--mgberp4a5d4a87g":true,"xn--mgbqly7c0a67fbc":true,"xn--mgbqly7cvafr":true,"xn--mgbpl2fh":true,"xn--yfro4i67o":true,"xn--clchc0ea0b2g2a9gcd":true,"xn--ogbpf8fl":true,"xn--mgbtf8fl":true,"xn--o3cw4h":true,"xn--12c1fe0br.xn--o3cw4h":true,"xn--12co0c3b4eva.xn--o3cw4h":true,"xn--h3cuzk1di.xn--o3cw4h":true,"xn--o3cyx2a.xn--o3cw4h":true,"xn--m3ch0j3a.xn--o3cw4h":true,"xn--12cfi8ixb8l.xn--o3cw4h":true,"xn--pgbs0dh":true,"xn--kpry57d":true,"xn--kprw13d":true,"xn--nnx388a":true,"xn--j1amh":true,"xn--mgb2ddes":true,"xxx":true,"*.ye":true,"ac.za":true,"agric.za":true,"alt.za":true,"co.za":true,"edu.za":true,"gov.za":true,"grondar.za":true,"law.za":true,"mil.za":true,"net.za":true,"ngo.za":true,"nis.za":true,"nom.za":true,"org.za":true,"school.za":true,"tm.za":true,"web.za":true,"zm":true,"ac.zm":true,"biz.zm":true,"co.zm":true,"com.zm":true,"edu.zm":true,"gov.zm":true,"info.zm":true,"mil.zm":true,"net.zm":true,"org.zm":true,"sch.zm":true,"zw":true,"ac.zw":true,"co.zw":true,"gov.zw":true,"mil.zw":true,"org.zw":true,"aaa":true,"aarp":true,"abarth":true,"abb":true,"abbott":true,"abbvie":true,"abc":true,"able":true,"abogado":true,"abudhabi":true,"academy":true,"accenture":true,"accountant":true,"accountants":true,"aco":true,"active":true,"actor":true,"adac":true,"ads":true,"adult":true,"aeg":true,"aetna":true,"afamilycompany":true,"afl":true,"africa":true,"agakhan":true,"agency":true,"aig":true,"aigo":true,"airbus":true,"airforce":true,"airtel":true,"akdn":true,"alfaromeo":true,"alibaba":true,"alipay":true,"allfinanz":true,"allstate":true,"ally":true,"alsace":true,"alstom":true,"americanexpress":true,"americanfamily":true,"amex":true,"amfam":true,"amica":true,"amsterdam":true,"analytics":true,"android":true,"anquan":true,"anz":true,"aol":true,"apartments":true,"app":true,"apple":true,"aquarelle":true,"arab":true,"aramco":true,"archi":true,"army":true,"art":true,"arte":true,"asda":true,"associates":true,"athleta":true,"attorney":true,"auction":true,"audi":true,"audible":true,"audio":true,"auspost":true,"author":true,"auto":true,"autos":true,"avianca":true,"aws":true,"axa":true,"azure":true,"baby":true,"baidu":true,"banamex":true,"bananarepublic":true,"band":true,"bank":true,"bar":true,"barcelona":true,"barclaycard":true,"barclays":true,"barefoot":true,"bargains":true,"baseball":true,"basketball":true,"bauhaus":true,"bayern":true,"bbc":true,"bbt":true,"bbva":true,"bcg":true,"bcn":true,"beats":true,"beauty":true,"beer":true,"bentley":true,"berlin":true,"best":true,"bestbuy":true,"bet":true,"bharti":true,"bible":true,"bid":true,"bike":true,"bing":true,"bingo":true,"bio":true,"black":true,"blackfriday":true,"blanco":true,"blockbuster":true,"blog":true,"bloomberg":true,"blue":true,"bms":true,"bmw":true,"bnl":true,"bnpparibas":true,"boats":true,"boehringer":true,"bofa":true,"bom":true,"bond":true,"boo":true,"book":true,"booking":true,"boots":true,"bosch":true,"bostik":true,"boston":true,"bot":true,"boutique":true,"box":true,"bradesco":true,"bridgestone":true,"broadway":true,"broker":true,"brother":true,"brussels":true,"budapest":true,"bugatti":true,"build":true,"builders":true,"business":true,"buy":true,"buzz":true,"bzh":true,"cab":true,"cafe":true,"cal":true,"call":true,"calvinklein":true,"cam":true,"camera":true,"camp":true,"cancerresearch":true,"canon":true,"capetown":true,"capital":true,"capitalone":true,"car":true,"caravan":true,"cards":true,"care":true,"career":true,"careers":true,"cars":true,"cartier":true,"casa":true,"case":true,"caseih":true,"cash":true,"casino":true,"catering":true,"catholic":true,"cba":true,"cbn":true,"cbre":true,"cbs":true,"ceb":true,"center":true,"ceo":true,"cern":true,"cfa":true,"cfd":true,"chanel":true,"channel":true,"chase":true,"chat":true,"cheap":true,"chintai":true,"christmas":true,"chrome":true,"chrysler":true,"church":true,"cipriani":true,"circle":true,"cisco":true,"citadel":true,"citi":true,"citic":true,"city":true,"cityeats":true,"claims":true,"cleaning":true,"click":true,"clinic":true,"clinique":true,"clothing":true,"cloud":true,"club":true,"clubmed":true,"coach":true,"codes":true,"coffee":true,"college":true,"cologne":true,"comcast":true,"commbank":true,"community":true,"company":true,"compare":true,"computer":true,"comsec":true,"condos":true,"construction":true,"consulting":true,"contact":true,"contractors":true,"cooking":true,"cookingchannel":true,"cool":true,"corsica":true,"country":true,"coupon":true,"coupons":true,"courses":true,"credit":true,"creditcard":true,"creditunion":true,"cricket":true,"crown":true,"crs":true,"cruise":true,"cruises":true,"csc":true,"cuisinella":true,"cymru":true,"cyou":true,"dabur":true,"dad":true,"dance":true,"data":true,"date":true,"dating":true,"datsun":true,"day":true,"dclk":true,"dds":true,"deal":true,"dealer":true,"deals":true,"degree":true,"delivery":true,"dell":true,"deloitte":true,"delta":true,"democrat":true,"dental":true,"dentist":true,"desi":true,"design":true,"dev":true,"dhl":true,"diamonds":true,"diet":true,"digital":true,"direct":true,"directory":true,"discount":true,"discover":true,"dish":true,"diy":true,"dnp":true,"docs":true,"doctor":true,"dodge":true,"dog":true,"doha":true,"domains":true,"dot":true,"download":true,"drive":true,"dtv":true,"dubai":true,"duck":true,"dunlop":true,"duns":true,"dupont":true,"durban":true,"dvag":true,"dvr":true,"earth":true,"eat":true,"eco":true,"edeka":true,"education":true,"email":true,"emerck":true,"energy":true,"engineer":true,"engineering":true,"enterprises":true,"epost":true,"epson":true,"equipment":true,"ericsson":true,"erni":true,"esq":true,"estate":true,"esurance":true,"etisalat":true,"eurovision":true,"eus":true,"events":true,"everbank":true,"exchange":true,"expert":true,"exposed":true,"express":true,"extraspace":true,"fage":true,"fail":true,"fairwinds":true,"faith":true,"family":true,"fan":true,"fans":true,"farm":true,"farmers":true,"fashion":true,"fast":true,"fedex":true,"feedback":true,"ferrari":true,"ferrero":true,"fiat":true,"fidelity":true,"fido":true,"film":true,"final":true,"finance":true,"financial":true,"fire":true,"firestone":true,"firmdale":true,"fish":true,"fishing":true,"fit":true,"fitness":true,"flickr":true,"flights":true,"flir":true,"florist":true,"flowers":true,"fly":true,"foo":true,"food":true,"foodnetwork":true,"football":true,"ford":true,"forex":true,"forsale":true,"forum":true,"foundation":true,"fox":true,"free":true,"fresenius":true,"frl":true,"frogans":true,"frontdoor":true,"frontier":true,"ftr":true,"fujitsu":true,"fujixerox":true,"fun":true,"fund":true,"furniture":true,"futbol":true,"fyi":true,"gal":true,"gallery":true,"gallo":true,"gallup":true,"game":true,"games":true,"gap":true,"garden":true,"gbiz":true,"gdn":true,"gea":true,"gent":true,"genting":true,"george":true,"ggee":true,"gift":true,"gifts":true,"gives":true,"giving":true,"glade":true,"glass":true,"gle":true,"global":true,"globo":true,"gmail":true,"gmbh":true,"gmo":true,"gmx":true,"godaddy":true,"gold":true,"goldpoint":true,"golf":true,"goo":true,"goodhands":true,"goodyear":true,"goog":true,"google":true,"gop":true,"got":true,"grainger":true,"graphics":true,"gratis":true,"green":true,"gripe":true,"grocery":true,"group":true,"guardian":true,"gucci":true,"guge":true,"guide":true,"guitars":true,"guru":true,"hair":true,"hamburg":true,"hangout":true,"haus":true,"hbo":true,"hdfc":true,"hdfcbank":true,"health":true,"healthcare":true,"help":true,"helsinki":true,"here":true,"hermes":true,"hgtv":true,"hiphop":true,"hisamitsu":true,"hitachi":true,"hiv":true,"hkt":true,"hockey":true,"holdings":true,"holiday":true,"homedepot":true,"homegoods":true,"homes":true,"homesense":true,"honda":true,"honeywell":true,"horse":true,"hospital":true,"host":true,"hosting":true,"hot":true,"hoteles":true,"hotels":true,"hotmail":true,"house":true,"how":true,"hsbc":true,"hughes":true,"hyatt":true,"hyundai":true,"ibm":true,"icbc":true,"ice":true,"icu":true,"ieee":true,"ifm":true,"ikano":true,"imamat":true,"imdb":true,"immo":true,"immobilien":true,"industries":true,"infiniti":true,"ing":true,"ink":true,"institute":true,"insurance":true,"insure":true,"intel":true,"international":true,"intuit":true,"investments":true,"ipiranga":true,"irish":true,"iselect":true,"ismaili":true,"ist":true,"istanbul":true,"itau":true,"itv":true,"iveco":true,"iwc":true,"jaguar":true,"java":true,"jcb":true,"jcp":true,"jeep":true,"jetzt":true,"jewelry":true,"jio":true,"jlc":true,"jll":true,"jmp":true,"jnj":true,"joburg":true,"jot":true,"joy":true,"jpmorgan":true,"jprs":true,"juegos":true,"juniper":true,"kaufen":true,"kddi":true,"kerryhotels":true,"kerrylogistics":true,"kerryproperties":true,"kfh":true,"kia":true,"kim":true,"kinder":true,"kindle":true,"kitchen":true,"kiwi":true,"koeln":true,"komatsu":true,"kosher":true,"kpmg":true,"kpn":true,"krd":true,"kred":true,"kuokgroup":true,"kyoto":true,"lacaixa":true,"ladbrokes":true,"lamborghini":true,"lamer":true,"lancaster":true,"lancia":true,"lancome":true,"land":true,"landrover":true,"lanxess":true,"lasalle":true,"lat":true,"latino":true,"latrobe":true,"law":true,"lawyer":true,"lds":true,"lease":true,"leclerc":true,"lefrak":true,"legal":true,"lego":true,"lexus":true,"lgbt":true,"liaison":true,"lidl":true,"life":true,"lifeinsurance":true,"lifestyle":true,"lighting":true,"like":true,"lilly":true,"limited":true,"limo":true,"lincoln":true,"linde":true,"link":true,"lipsy":true,"live":true,"living":true,"lixil":true,"loan":true,"loans":true,"locker":true,"locus":true,"loft":true,"lol":true,"london":true,"lotte":true,"lotto":true,"love":true,"lpl":true,"lplfinancial":true,"ltd":true,"ltda":true,"lundbeck":true,"lupin":true,"luxe":true,"luxury":true,"macys":true,"madrid":true,"maif":true,"maison":true,"makeup":true,"man":true,"management":true,"mango":true,"map":true,"market":true,"marketing":true,"markets":true,"marriott":true,"marshalls":true,"maserati":true,"mattel":true,"mba":true,"mckinsey":true,"med":true,"media":true,"meet":true,"melbourne":true,"meme":true,"memorial":true,"men":true,"menu":true,"meo":true,"merckmsd":true,"metlife":true,"miami":true,"microsoft":true,"mini":true,"mint":true,"mit":true,"mitsubishi":true,"mlb":true,"mls":true,"mma":true,"mobile":true,"mobily":true,"moda":true,"moe":true,"moi":true,"mom":true,"monash":true,"money":true,"monster":true,"mopar":true,"mormon":true,"mortgage":true,"moscow":true,"moto":true,"motorcycles":true,"mov":true,"movie":true,"movistar":true,"msd":true,"mtn":true,"mtpc":true,"mtr":true,"mutual":true,"nab":true,"nadex":true,"nagoya":true,"nationwide":true,"natura":true,"navy":true,"nba":true,"nec":true,"netbank":true,"netflix":true,"network":true,"neustar":true,"new":true,"newholland":true,"news":true,"next":true,"nextdirect":true,"nexus":true,"nfl":true,"ngo":true,"nhk":true,"nico":true,"nike":true,"nikon":true,"ninja":true,"nissan":true,"nissay":true,"nokia":true,"northwesternmutual":true,"norton":true,"now":true,"nowruz":true,"nowtv":true,"nra":true,"nrw":true,"ntt":true,"nyc":true,"obi":true,"observer":true,"off":true,"office":true,"okinawa":true,"olayan":true,"olayangroup":true,"oldnavy":true,"ollo":true,"omega":true,"one":true,"ong":true,"onl":true,"online":true,"onyourside":true,"ooo":true,"open":true,"oracle":true,"orange":true,"organic":true,"origins":true,"osaka":true,"otsuka":true,"ott":true,"ovh":true,"page":true,"panasonic":true,"panerai":true,"paris":true,"pars":true,"partners":true,"parts":true,"party":true,"passagens":true,"pay":true,"pccw":true,"pet":true,"pfizer":true,"pharmacy":true,"phd":true,"philips":true,"phone":true,"photo":true,"photography":true,"photos":true,"physio":true,"piaget":true,"pics":true,"pictet":true,"pictures":true,"pid":true,"pin":true,"ping":true,"pink":true,"pioneer":true,"pizza":true,"place":true,"play":true,"playstation":true,"plumbing":true,"plus":true,"pnc":true,"pohl":true,"poker":true,"politie":true,"porn":true,"pramerica":true,"praxi":true,"press":true,"prime":true,"prod":true,"productions":true,"prof":true,"progressive":true,"promo":true,"properties":true,"property":true,"protection":true,"pru":true,"prudential":true,"pub":true,"pwc":true,"qpon":true,"quebec":true,"quest":true,"qvc":true,"racing":true,"radio":true,"raid":true,"read":true,"realestate":true,"realtor":true,"realty":true,"recipes":true,"red":true,"redstone":true,"redumbrella":true,"rehab":true,"reise":true,"reisen":true,"reit":true,"reliance":true,"ren":true,"rent":true,"rentals":true,"repair":true,"report":true,"republican":true,"rest":true,"restaurant":true,"review":true,"reviews":true,"rexroth":true,"rich":true,"richardli":true,"ricoh":true,"rightathome":true,"ril":true,"rio":true,"rip":true,"rmit":true,"rocher":true,"rocks":true,"rodeo":true,"rogers":true,"room":true,"rsvp":true,"rugby":true,"ruhr":true,"run":true,"rwe":true,"ryukyu":true,"saarland":true,"safe":true,"safety":true,"sakura":true,"sale":true,"salon":true,"samsclub":true,"samsung":true,"sandvik":true,"sandvikcoromant":true,"sanofi":true,"sap":true,"sapo":true,"sarl":true,"sas":true,"save":true,"saxo":true,"sbi":true,"sbs":true,"sca":true,"scb":true,"schaeffler":true,"schmidt":true,"scholarships":true,"school":true,"schule":true,"schwarz":true,"science":true,"scjohnson":true,"scor":true,"scot":true,"search":true,"seat":true,"secure":true,"security":true,"seek":true,"select":true,"sener":true,"services":true,"ses":true,"seven":true,"sew":true,"sex":true,"sexy":true,"sfr":true,"shangrila":true,"sharp":true,"shaw":true,"shell":true,"shia":true,"shiksha":true,"shoes":true,"shop":true,"shopping":true,"shouji":true,"show":true,"showtime":true,"shriram":true,"silk":true,"sina":true,"singles":true,"site":true,"ski":true,"skin":true,"sky":true,"skype":true,"sling":true,"smart":true,"smile":true,"sncf":true,"soccer":true,"social":true,"softbank":true,"software":true,"sohu":true,"solar":true,"solutions":true,"song":true,"sony":true,"soy":true,"space":true,"spiegel":true,"spot":true,"spreadbetting":true,"srl":true,"srt":true,"stada":true,"staples":true,"star":true,"starhub":true,"statebank":true,"statefarm":true,"statoil":true,"stc":true,"stcgroup":true,"stockholm":true,"storage":true,"store":true,"stream":true,"studio":true,"study":true,"style":true,"sucks":true,"supplies":true,"supply":true,"support":true,"surf":true,"surgery":true,"suzuki":true,"swatch":true,"swiftcover":true,"swiss":true,"sydney":true,"symantec":true,"systems":true,"tab":true,"taipei":true,"talk":true,"taobao":true,"target":true,"tatamotors":true,"tatar":true,"tattoo":true,"tax":true,"taxi":true,"tci":true,"tdk":true,"team":true,"tech":true,"technology":true,"telecity":true,"telefonica":true,"temasek":true,"tennis":true,"teva":true,"thd":true,"theater":true,"theatre":true,"tiaa":true,"tickets":true,"tienda":true,"tiffany":true,"tips":true,"tires":true,"tirol":true,"tjmaxx":true,"tjx":true,"tkmaxx":true,"tmall":true,"today":true,"tokyo":true,"tools":true,"top":true,"toray":true,"toshiba":true,"total":true,"tours":true,"town":true,"toyota":true,"toys":true,"trade":true,"trading":true,"training":true,"travelchannel":true,"travelers":true,"travelersinsurance":true,"trust":true,"trv":true,"tube":true,"tui":true,"tunes":true,"tushu":true,"tvs":true,"ubank":true,"ubs":true,"uconnect":true,"unicom":true,"university":true,"uno":true,"uol":true,"ups":true,"vacations":true,"vana":true,"vanguard":true,"vegas":true,"ventures":true,"verisign":true,"versicherung":true,"vet":true,"viajes":true,"video":true,"vig":true,"viking":true,"villas":true,"vin":true,"vip":true,"virgin":true,"visa":true,"vision":true,"vista":true,"vistaprint":true,"viva":true,"vivo":true,"vlaanderen":true,"vodka":true,"volkswagen":true,"volvo":true,"vote":true,"voting":true,"voto":true,"voyage":true,"vuelos":true,"wales":true,"walmart":true,"walter":true,"wang":true,"wanggou":true,"warman":true,"watch":true,"watches":true,"weather":true,"weatherchannel":true,"webcam":true,"weber":true,"website":true,"wed":true,"wedding":true,"weibo":true,"weir":true,"whoswho":true,"wien":true,"wiki":true,"williamhill":true,"win":true,"windows":true,"wine":true,"winners":true,"wme":true,"wolterskluwer":true,"woodside":true,"work":true,"works":true,"world":true,"wow":true,"wtc":true,"wtf":true,"xbox":true,"xerox":true,"xfinity":true,"xihuan":true,"xin":true,"xn--11b4c3d":true,"xn--1ck2e1b":true,"xn--1qqw23a":true,"xn--30rr7y":true,"xn--3bst00m":true,"xn--3ds443g":true,"xn--3oq18vl8pn36a":true,"xn--3pxu8k":true,"xn--42c2d9a":true,"xn--45q11c":true,"xn--4gbrim":true,"xn--55qw42g":true,"xn--55qx5d":true,"xn--5su34j936bgsg":true,"xn--5tzm5g":true,"xn--6frz82g":true,"xn--6qq986b3xl":true,"xn--80adxhks":true,"xn--80aqecdr1a":true,"xn--80asehdb":true,"xn--80aswg":true,"xn--8y0a063a":true,"xn--9dbq2a":true,"xn--9et52u":true,"xn--9krt00a":true,"xn--b4w605ferd":true,"xn--bck1b9a5dre4c":true,"xn--c1avg":true,"xn--c2br7g":true,"xn--cck2b3b":true,"xn--cg4bki":true,"xn--czr694b":true,"xn--czrs0t":true,"xn--czru2d":true,"xn--d1acj3b":true,"xn--eckvdtc9d":true,"xn--efvy88h":true,"xn--estv75g":true,"xn--fct429k":true,"xn--fhbei":true,"xn--fiq228c5hs":true,"xn--fiq64b":true,"xn--fjq720a":true,"xn--flw351e":true,"xn--fzys8d69uvgm":true,"xn--g2xx48c":true,"xn--gckr3f0f":true,"xn--gk3at1e":true,"xn--hxt814e":true,"xn--i1b6b1a6a2e":true,"xn--imr513n":true,"xn--io0a7i":true,"xn--j1aef":true,"xn--jlq61u9w7b":true,"xn--jvr189m":true,"xn--kcrx77d1x4a":true,"xn--kpu716f":true,"xn--kput3i":true,"xn--mgba3a3ejt":true,"xn--mgba7c0bbn0a":true,"xn--mgbaakc7dvf":true,"xn--mgbab2bd":true,"xn--mgbb9fbpob":true,"xn--mgbca7dzdo":true,"xn--mgbi4ecexp":true,"xn--mgbt3dhd":true,"xn--mk1bu44c":true,"xn--mxtq1m":true,"xn--ngbc5azd":true,"xn--ngbe9e0a":true,"xn--ngbrx":true,"xn--nqv7f":true,"xn--nqv7fs00ema":true,"xn--nyqy26a":true,"xn--p1acf":true,"xn--pbt977c":true,"xn--pssy2u":true,"xn--q9jyb4c":true,"xn--qcka1pmc":true,"xn--rhqv96g":true,"xn--rovu88b":true,"xn--ses554g":true,"xn--t60b56a":true,"xn--tckwe":true,"xn--tiq49xqyj":true,"xn--unup4y":true,"xn--vermgensberater-ctb":true,"xn--vermgensberatung-pwb":true,"xn--vhquv":true,"xn--vuq861b":true,"xn--w4r85el8fhu5dnra":true,"xn--w4rs40l":true,"xn--xhq521b":true,"xn--zfr164b":true,"xperia":true,"xyz":true,"yachts":true,"yahoo":true,"yamaxun":true,"yandex":true,"yodobashi":true,"yoga":true,"yokohama":true,"you":true,"youtube":true,"yun":true,"zappos":true,"zara":true,"zero":true,"zip":true,"zippo":true,"zone":true,"zuerich":true,"cc.ua":true,"inf.ua":true,"ltd.ua":true,"1password.ca":true,"1password.com":true,"1password.eu":true,"beep.pl":true,"*.compute.estate":true,"*.alces.network":true,"alwaysdata.net":true,"cloudfront.net":true,"*.compute.amazonaws.com":true,"*.compute-1.amazonaws.com":true,"*.compute.amazonaws.com.cn":true,"us-east-1.amazonaws.com":true,"cn-north-1.eb.amazonaws.com.cn":true,"elasticbeanstalk.com":true,"ap-northeast-1.elasticbeanstalk.com":true,"ap-northeast-2.elasticbeanstalk.com":true,"ap-south-1.elasticbeanstalk.com":true,"ap-southeast-1.elasticbeanstalk.com":true,"ap-southeast-2.elasticbeanstalk.com":true,"ca-central-1.elasticbeanstalk.com":true,"eu-central-1.elasticbeanstalk.com":true,"eu-west-1.elasticbeanstalk.com":true,"eu-west-2.elasticbeanstalk.com":true,"eu-west-3.elasticbeanstalk.com":true,"sa-east-1.elasticbeanstalk.com":true,"us-east-1.elasticbeanstalk.com":true,"us-east-2.elasticbeanstalk.com":true,"us-gov-west-1.elasticbeanstalk.com":true,"us-west-1.elasticbeanstalk.com":true,"us-west-2.elasticbeanstalk.com":true,"*.elb.amazonaws.com":true,"*.elb.amazonaws.com.cn":true,"s3.amazonaws.com":true,"s3-ap-northeast-1.amazonaws.com":true,"s3-ap-northeast-2.amazonaws.com":true,"s3-ap-south-1.amazonaws.com":true,"s3-ap-southeast-1.amazonaws.com":true,"s3-ap-southeast-2.amazonaws.com":true,"s3-ca-central-1.amazonaws.com":true,"s3-eu-central-1.amazonaws.com":true,"s3-eu-west-1.amazonaws.com":true,"s3-eu-west-2.amazonaws.com":true,"s3-eu-west-3.amazonaws.com":true,"s3-external-1.amazonaws.com":true,"s3-fips-us-gov-west-1.amazonaws.com":true,"s3-sa-east-1.amazonaws.com":true,"s3-us-gov-west-1.amazonaws.com":true,"s3-us-east-2.amazonaws.com":true,"s3-us-west-1.amazonaws.com":true,"s3-us-west-2.amazonaws.com":true,"s3.ap-northeast-2.amazonaws.com":true,"s3.ap-south-1.amazonaws.com":true,"s3.cn-north-1.amazonaws.com.cn":true,"s3.ca-central-1.amazonaws.com":true,"s3.eu-central-1.amazonaws.com":true,"s3.eu-west-2.amazonaws.com":true,"s3.eu-west-3.amazonaws.com":true,"s3.us-east-2.amazonaws.com":true,"s3.dualstack.ap-northeast-1.amazonaws.com":true,"s3.dualstack.ap-northeast-2.amazonaws.com":true,"s3.dualstack.ap-south-1.amazonaws.com":true,"s3.dualstack.ap-southeast-1.amazonaws.com":true,"s3.dualstack.ap-southeast-2.amazonaws.com":true,"s3.dualstack.ca-central-1.amazonaws.com":true,"s3.dualstack.eu-central-1.amazonaws.com":true,"s3.dualstack.eu-west-1.amazonaws.com":true,"s3.dualstack.eu-west-2.amazonaws.com":true,"s3.dualstack.eu-west-3.amazonaws.com":true,"s3.dualstack.sa-east-1.amazonaws.com":true,"s3.dualstack.us-east-1.amazonaws.com":true,"s3.dualstack.us-east-2.amazonaws.com":true,"s3-website-us-east-1.amazonaws.com":true,"s3-website-us-west-1.amazonaws.com":true,"s3-website-us-west-2.amazonaws.com":true,"s3-website-ap-northeast-1.amazonaws.com":true,"s3-website-ap-southeast-1.amazonaws.com":true,"s3-website-ap-southeast-2.amazonaws.com":true,"s3-website-eu-west-1.amazonaws.com":true,"s3-website-sa-east-1.amazonaws.com":true,"s3-website.ap-northeast-2.amazonaws.com":true,"s3-website.ap-south-1.amazonaws.com":true,"s3-website.ca-central-1.amazonaws.com":true,"s3-website.eu-central-1.amazonaws.com":true,"s3-website.eu-west-2.amazonaws.com":true,"s3-website.eu-west-3.amazonaws.com":true,"s3-website.us-east-2.amazonaws.com":true,"t3l3p0rt.net":true,"tele.amune.org":true,"on-aptible.com":true,"user.party.eus":true,"pimienta.org":true,"poivron.org":true,"potager.org":true,"sweetpepper.org":true,"myasustor.com":true,"myfritz.net":true,"*.awdev.ca":true,"*.advisor.ws":true,"backplaneapp.io":true,"betainabox.com":true,"bnr.la":true,"boomla.net":true,"boxfuse.io":true,"square7.ch":true,"bplaced.com":true,"bplaced.de":true,"square7.de":true,"bplaced.net":true,"square7.net":true,"browsersafetymark.io":true,"mycd.eu":true,"ae.org":true,"ar.com":true,"br.com":true,"cn.com":true,"com.de":true,"com.se":true,"de.com":true,"eu.com":true,"gb.com":true,"gb.net":true,"hu.com":true,"hu.net":true,"jp.net":true,"jpn.com":true,"kr.com":true,"mex.com":true,"no.com":true,"qc.com":true,"ru.com":true,"sa.com":true,"se.com":true,"se.net":true,"uk.com":true,"uk.net":true,"us.com":true,"uy.com":true,"za.bz":true,"za.com":true,"africa.com":true,"gr.com":true,"in.net":true,"us.org":true,"co.com":true,"c.la":true,"certmgr.org":true,"xenapponazure.com":true,"virtueeldomein.nl":true,"c66.me":true,"cloud66.ws":true,"jdevcloud.com":true,"wpdevcloud.com":true,"cloudaccess.host":true,"freesite.host":true,"cloudaccess.net":true,"cloudcontrolled.com":true,"cloudcontrolapp.com":true,"co.ca":true,"co.cz":true,"c.cdn77.org":true,"cdn77-ssl.net":true,"r.cdn77.net":true,"rsc.cdn77.org":true,"ssl.origin.cdn77-secure.org":true,"cloudns.asia":true,"cloudns.biz":true,"cloudns.club":true,"cloudns.cc":true,"cloudns.eu":true,"cloudns.in":true,"cloudns.info":true,"cloudns.org":true,"cloudns.pro":true,"cloudns.pw":true,"cloudns.us":true,"co.nl":true,"co.no":true,"webhosting.be":true,"hosting-cluster.nl":true,"dyn.cosidns.de":true,"dynamisches-dns.de":true,"dnsupdater.de":true,"internet-dns.de":true,"l-o-g-i-n.de":true,"dynamic-dns.info":true,"feste-ip.net":true,"knx-server.net":true,"static-access.net":true,"realm.cz":true,"*.cryptonomic.net":true,"cupcake.is":true,"cyon.link":true,"cyon.site":true,"daplie.me":true,"localhost.daplie.me":true,"biz.dk":true,"co.dk":true,"firm.dk":true,"reg.dk":true,"store.dk":true,"debian.net":true,"dedyn.io":true,"dnshome.de":true,"drayddns.com":true,"dreamhosters.com":true,"mydrobo.com":true,"drud.io":true,"drud.us":true,"duckdns.org":true,"dy.fi":true,"tunk.org":true,"dyndns-at-home.com":true,"dyndns-at-work.com":true,"dyndns-blog.com":true,"dyndns-free.com":true,"dyndns-home.com":true,"dyndns-ip.com":true,"dyndns-mail.com":true,"dyndns-office.com":true,"dyndns-pics.com":true,"dyndns-remote.com":true,"dyndns-server.com":true,"dyndns-web.com":true,"dyndns-wiki.com":true,"dyndns-work.com":true,"dyndns.biz":true,"dyndns.info":true,"dyndns.org":true,"dyndns.tv":true,"at-band-camp.net":true,"ath.cx":true,"barrel-of-knowledge.info":true,"barrell-of-knowledge.info":true,"better-than.tv":true,"blogdns.com":true,"blogdns.net":true,"blogdns.org":true,"blogsite.org":true,"boldlygoingnowhere.org":true,"broke-it.net":true,"buyshouses.net":true,"cechire.com":true,"dnsalias.com":true,"dnsalias.net":true,"dnsalias.org":true,"dnsdojo.com":true,"dnsdojo.net":true,"dnsdojo.org":true,"does-it.net":true,"doesntexist.com":true,"doesntexist.org":true,"dontexist.com":true,"dontexist.net":true,"dontexist.org":true,"doomdns.com":true,"doomdns.org":true,"dvrdns.org":true,"dyn-o-saur.com":true,"dynalias.com":true,"dynalias.net":true,"dynalias.org":true,"dynathome.net":true,"dyndns.ws":true,"endofinternet.net":true,"endofinternet.org":true,"endoftheinternet.org":true,"est-a-la-maison.com":true,"est-a-la-masion.com":true,"est-le-patron.com":true,"est-mon-blogueur.com":true,"for-better.biz":true,"for-more.biz":true,"for-our.info":true,"for-some.biz":true,"for-the.biz":true,"forgot.her.name":true,"forgot.his.name":true,"from-ak.com":true,"from-al.com":true,"from-ar.com":true,"from-az.net":true,"from-ca.com":true,"from-co.net":true,"from-ct.com":true,"from-dc.com":true,"from-de.com":true,"from-fl.com":true,"from-ga.com":true,"from-hi.com":true,"from-ia.com":true,"from-id.com":true,"from-il.com":true,"from-in.com":true,"from-ks.com":true,"from-ky.com":true,"from-la.net":true,"from-ma.com":true,"from-md.com":true,"from-me.org":true,"from-mi.com":true,"from-mn.com":true,"from-mo.com":true,"from-ms.com":true,"from-mt.com":true,"from-nc.com":true,"from-nd.com":true,"from-ne.com":true,"from-nh.com":true,"from-nj.com":true,"from-nm.com":true,"from-nv.com":true,"from-ny.net":true,"from-oh.com":true,"from-ok.com":true,"from-or.com":true,"from-pa.com":true,"from-pr.com":true,"from-ri.com":true,"from-sc.com":true,"from-sd.com":true,"from-tn.com":true,"from-tx.com":true,"from-ut.com":true,"from-va.com":true,"from-vt.com":true,"from-wa.com":true,"from-wi.com":true,"from-wv.com":true,"from-wy.com":true,"ftpaccess.cc":true,"fuettertdasnetz.de":true,"game-host.org":true,"game-server.cc":true,"getmyip.com":true,"gets-it.net":true,"go.dyndns.org":true,"gotdns.com":true,"gotdns.org":true,"groks-the.info":true,"groks-this.info":true,"ham-radio-op.net":true,"here-for-more.info":true,"hobby-site.com":true,"hobby-site.org":true,"home.dyndns.org":true,"homedns.org":true,"homeftp.net":true,"homeftp.org":true,"homeip.net":true,"homelinux.com":true,"homelinux.net":true,"homelinux.org":true,"homeunix.com":true,"homeunix.net":true,"homeunix.org":true,"iamallama.com":true,"in-the-band.net":true,"is-a-anarchist.com":true,"is-a-blogger.com":true,"is-a-bookkeeper.com":true,"is-a-bruinsfan.org":true,"is-a-bulls-fan.com":true,"is-a-candidate.org":true,"is-a-caterer.com":true,"is-a-celticsfan.org":true,"is-a-chef.com":true,"is-a-chef.net":true,"is-a-chef.org":true,"is-a-conservative.com":true,"is-a-cpa.com":true,"is-a-cubicle-slave.com":true,"is-a-democrat.com":true,"is-a-designer.com":true,"is-a-doctor.com":true,"is-a-financialadvisor.com":true,"is-a-geek.com":true,"is-a-geek.net":true,"is-a-geek.org":true,"is-a-green.com":true,"is-a-guru.com":true,"is-a-hard-worker.com":true,"is-a-hunter.com":true,"is-a-knight.org":true,"is-a-landscaper.com":true,"is-a-lawyer.com":true,"is-a-liberal.com":true,"is-a-libertarian.com":true,"is-a-linux-user.org":true,"is-a-llama.com":true,"is-a-musician.com":true,"is-a-nascarfan.com":true,"is-a-nurse.com":true,"is-a-painter.com":true,"is-a-patsfan.org":true,"is-a-personaltrainer.com":true,"is-a-photographer.com":true,"is-a-player.com":true,"is-a-republican.com":true,"is-a-rockstar.com":true,"is-a-socialist.com":true,"is-a-soxfan.org":true,"is-a-student.com":true,"is-a-teacher.com":true,"is-a-techie.com":true,"is-a-therapist.com":true,"is-an-accountant.com":true,"is-an-actor.com":true,"is-an-actress.com":true,"is-an-anarchist.com":true,"is-an-artist.com":true,"is-an-engineer.com":true,"is-an-entertainer.com":true,"is-by.us":true,"is-certified.com":true,"is-found.org":true,"is-gone.com":true,"is-into-anime.com":true,"is-into-cars.com":true,"is-into-cartoons.com":true,"is-into-games.com":true,"is-leet.com":true,"is-lost.org":true,"is-not-certified.com":true,"is-saved.org":true,"is-slick.com":true,"is-uberleet.com":true,"is-very-bad.org":true,"is-very-evil.org":true,"is-very-good.org":true,"is-very-nice.org":true,"is-very-sweet.org":true,"is-with-theband.com":true,"isa-geek.com":true,"isa-geek.net":true,"isa-geek.org":true,"isa-hockeynut.com":true,"issmarterthanyou.com":true,"isteingeek.de":true,"istmein.de":true,"kicks-ass.net":true,"kicks-ass.org":true,"knowsitall.info":true,"land-4-sale.us":true,"lebtimnetz.de":true,"leitungsen.de":true,"likes-pie.com":true,"likescandy.com":true,"merseine.nu":true,"mine.nu":true,"misconfused.org":true,"mypets.ws":true,"myphotos.cc":true,"neat-url.com":true,"office-on-the.net":true,"on-the-web.tv":true,"podzone.net":true,"podzone.org":true,"readmyblog.org":true,"saves-the-whales.com":true,"scrapper-site.net":true,"scrapping.cc":true,"selfip.biz":true,"selfip.com":true,"selfip.info":true,"selfip.net":true,"selfip.org":true,"sells-for-less.com":true,"sells-for-u.com":true,"sells-it.net":true,"sellsyourhome.org":true,"servebbs.com":true,"servebbs.net":true,"servebbs.org":true,"serveftp.net":true,"serveftp.org":true,"servegame.org":true,"shacknet.nu":true,"simple-url.com":true,"space-to-rent.com":true,"stuff-4-sale.org":true,"stuff-4-sale.us":true,"teaches-yoga.com":true,"thruhere.net":true,"traeumtgerade.de":true,"webhop.biz":true,"webhop.info":true,"webhop.net":true,"webhop.org":true,"worse-than.tv":true,"writesthisblog.com":true,"ddnss.de":true,"dyn.ddnss.de":true,"dyndns.ddnss.de":true,"dyndns1.de":true,"dyn-ip24.de":true,"home-webserver.de":true,"dyn.home-webserver.de":true,"myhome-server.de":true,"ddnss.org":true,"definima.net":true,"definima.io":true,"ddnsfree.com":true,"ddnsgeek.com":true,"giize.com":true,"gleeze.com":true,"kozow.com":true,"loseyourip.com":true,"ooguy.com":true,"theworkpc.com":true,"casacam.net":true,"dynu.net":true,"accesscam.org":true,"camdvr.org":true,"freeddns.org":true,"mywire.org":true,"webredirect.org":true,"myddns.rocks":true,"blogsite.xyz":true,"dynv6.net":true,"e4.cz":true,"mytuleap.com":true,"enonic.io":true,"customer.enonic.io":true,"eu.org":true,"al.eu.org":true,"asso.eu.org":true,"at.eu.org":true,"au.eu.org":true,"be.eu.org":true,"bg.eu.org":true,"ca.eu.org":true,"cd.eu.org":true,"ch.eu.org":true,"cn.eu.org":true,"cy.eu.org":true,"cz.eu.org":true,"de.eu.org":true,"dk.eu.org":true,"edu.eu.org":true,"ee.eu.org":true,"es.eu.org":true,"fi.eu.org":true,"fr.eu.org":true,"gr.eu.org":true,"hr.eu.org":true,"hu.eu.org":true,"ie.eu.org":true,"il.eu.org":true,"in.eu.org":true,"int.eu.org":true,"is.eu.org":true,"it.eu.org":true,"jp.eu.org":true,"kr.eu.org":true,"lt.eu.org":true,"lu.eu.org":true,"lv.eu.org":true,"mc.eu.org":true,"me.eu.org":true,"mk.eu.org":true,"mt.eu.org":true,"my.eu.org":true,"net.eu.org":true,"ng.eu.org":true,"nl.eu.org":true,"no.eu.org":true,"nz.eu.org":true,"paris.eu.org":true,"pl.eu.org":true,"pt.eu.org":true,"q-a.eu.org":true,"ro.eu.org":true,"ru.eu.org":true,"se.eu.org":true,"si.eu.org":true,"sk.eu.org":true,"tr.eu.org":true,"uk.eu.org":true,"us.eu.org":true,"eu-1.evennode.com":true,"eu-2.evennode.com":true,"eu-3.evennode.com":true,"eu-4.evennode.com":true,"us-1.evennode.com":true,"us-2.evennode.com":true,"us-3.evennode.com":true,"us-4.evennode.com":true,"twmail.cc":true,"twmail.net":true,"twmail.org":true,"mymailer.com.tw":true,"url.tw":true,"apps.fbsbx.com":true,"ru.net":true,"adygeya.ru":true,"bashkiria.ru":true,"bir.ru":true,"cbg.ru":true,"com.ru":true,"dagestan.ru":true,"grozny.ru":true,"kalmykia.ru":true,"kustanai.ru":true,"marine.ru":true,"mordovia.ru":true,"msk.ru":true,"mytis.ru":true,"nalchik.ru":true,"nov.ru":true,"pyatigorsk.ru":true,"spb.ru":true,"vladikavkaz.ru":true,"vladimir.ru":true,"abkhazia.su":true,"adygeya.su":true,"aktyubinsk.su":true,"arkhangelsk.su":true,"armenia.su":true,"ashgabad.su":true,"azerbaijan.su":true,"balashov.su":true,"bashkiria.su":true,"bryansk.su":true,"bukhara.su":true,"chimkent.su":true,"dagestan.su":true,"east-kazakhstan.su":true,"exnet.su":true,"georgia.su":true,"grozny.su":true,"ivanovo.su":true,"jambyl.su":true,"kalmykia.su":true,"kaluga.su":true,"karacol.su":true,"karaganda.su":true,"karelia.su":true,"khakassia.su":true,"krasnodar.su":true,"kurgan.su":true,"kustanai.su":true,"lenug.su":true,"mangyshlak.su":true,"mordovia.su":true,"msk.su":true,"murmansk.su":true,"nalchik.su":true,"navoi.su":true,"north-kazakhstan.su":true,"nov.su":true,"obninsk.su":true,"penza.su":true,"pokrovsk.su":true,"sochi.su":true,"spb.su":true,"tashkent.su":true,"termez.su":true,"togliatti.su":true,"troitsk.su":true,"tselinograd.su":true,"tula.su":true,"tuva.su":true,"vladikavkaz.su":true,"vladimir.su":true,"vologda.su":true,"channelsdvr.net":true,"fastlylb.net":true,"map.fastlylb.net":true,"freetls.fastly.net":true,"map.fastly.net":true,"a.prod.fastly.net":true,"global.prod.fastly.net":true,"a.ssl.fastly.net":true,"b.ssl.fastly.net":true,"global.ssl.fastly.net":true,"fhapp.xyz":true,"fedorainfracloud.org":true,"fedorapeople.org":true,"cloud.fedoraproject.org":true,"app.os.fedoraproject.org":true,"app.os.stg.fedoraproject.org":true,"filegear.me":true,"firebaseapp.com":true,"flynnhub.com":true,"flynnhosting.net":true,"freebox-os.com":true,"freeboxos.com":true,"fbx-os.fr":true,"fbxos.fr":true,"freebox-os.fr":true,"freeboxos.fr":true,"*.futurecms.at":true,"futurehosting.at":true,"futuremailing.at":true,"*.ex.ortsinfo.at":true,"*.kunden.ortsinfo.at":true,"*.statics.cloud":true,"service.gov.uk":true,"github.io":true,"githubusercontent.com":true,"gitlab.io":true,"homeoffice.gov.uk":true,"ro.im":true,"shop.ro":true,"goip.de":true,"*.0emm.com":true,"appspot.com":true,"blogspot.ae":true,"blogspot.al":true,"blogspot.am":true,"blogspot.ba":true,"blogspot.be":true,"blogspot.bg":true,"blogspot.bj":true,"blogspot.ca":true,"blogspot.cf":true,"blogspot.ch":true,"blogspot.cl":true,"blogspot.co.at":true,"blogspot.co.id":true,"blogspot.co.il":true,"blogspot.co.ke":true,"blogspot.co.nz":true,"blogspot.co.uk":true,"blogspot.co.za":true,"blogspot.com":true,"blogspot.com.ar":true,"blogspot.com.au":true,"blogspot.com.br":true,"blogspot.com.by":true,"blogspot.com.co":true,"blogspot.com.cy":true,"blogspot.com.ee":true,"blogspot.com.eg":true,"blogspot.com.es":true,"blogspot.com.mt":true,"blogspot.com.ng":true,"blogspot.com.tr":true,"blogspot.com.uy":true,"blogspot.cv":true,"blogspot.cz":true,"blogspot.de":true,"blogspot.dk":true,"blogspot.fi":true,"blogspot.fr":true,"blogspot.gr":true,"blogspot.hk":true,"blogspot.hr":true,"blogspot.hu":true,"blogspot.ie":true,"blogspot.in":true,"blogspot.is":true,"blogspot.it":true,"blogspot.jp":true,"blogspot.kr":true,"blogspot.li":true,"blogspot.lt":true,"blogspot.lu":true,"blogspot.md":true,"blogspot.mk":true,"blogspot.mr":true,"blogspot.mx":true,"blogspot.my":true,"blogspot.nl":true,"blogspot.no":true,"blogspot.pe":true,"blogspot.pt":true,"blogspot.qa":true,"blogspot.re":true,"blogspot.ro":true,"blogspot.rs":true,"blogspot.ru":true,"blogspot.se":true,"blogspot.sg":true,"blogspot.si":true,"blogspot.sk":true,"blogspot.sn":true,"blogspot.td":true,"blogspot.tw":true,"blogspot.ug":true,"blogspot.vn":true,"cloudfunctions.net":true,"cloud.goog":true,"codespot.com":true,"googleapis.com":true,"googlecode.com":true,"pagespeedmobilizer.com":true,"publishproxy.com":true,"withgoogle.com":true,"withyoutube.com":true,"hashbang.sh":true,"hasura-app.io":true,"hepforge.org":true,"herokuapp.com":true,"herokussl.com":true,"moonscale.net":true,"iki.fi":true,"biz.at":true,"info.at":true,"info.cx":true,"ac.leg.br":true,"al.leg.br":true,"am.leg.br":true,"ap.leg.br":true,"ba.leg.br":true,"ce.leg.br":true,"df.leg.br":true,"es.leg.br":true,"go.leg.br":true,"ma.leg.br":true,"mg.leg.br":true,"ms.leg.br":true,"mt.leg.br":true,"pa.leg.br":true,"pb.leg.br":true,"pe.leg.br":true,"pi.leg.br":true,"pr.leg.br":true,"rj.leg.br":true,"rn.leg.br":true,"ro.leg.br":true,"rr.leg.br":true,"rs.leg.br":true,"sc.leg.br":true,"se.leg.br":true,"sp.leg.br":true,"to.leg.br":true,"pixolino.com":true,"ipifony.net":true,"*.triton.zone":true,"*.cns.joyent.com":true,"js.org":true,"keymachine.de":true,"knightpoint.systems":true,"co.krd":true,"edu.krd":true,"git-repos.de":true,"lcube-server.de":true,"svn-repos.de":true,"linkyard.cloud":true,"linkyard-cloud.ch":true,"we.bs":true,"barsy.bg":true,"barsyonline.com":true,"barsy.de":true,"barsy.eu":true,"barsy.in":true,"barsy.net":true,"barsy.online":true,"barsy.support":true,"*.magentosite.cloud":true,"hb.cldmail.ru":true,"cloud.metacentrum.cz":true,"custom.metacentrum.cz":true,"meteorapp.com":true,"eu.meteorapp.com":true,"co.pl":true,"azurewebsites.net":true,"azure-mobile.net":true,"cloudapp.net":true,"mozilla-iot.org":true,"bmoattachments.org":true,"net.ru":true,"org.ru":true,"pp.ru":true,"bitballoon.com":true,"netlify.com":true,"4u.com":true,"ngrok.io":true,"nh-serv.co.uk":true,"nfshost.com":true,"nsupdate.info":true,"nerdpol.ovh":true,"blogsyte.com":true,"brasilia.me":true,"cable-modem.org":true,"ciscofreak.com":true,"collegefan.org":true,"couchpotatofries.org":true,"damnserver.com":true,"ddns.me":true,"ditchyourip.com":true,"dnsfor.me":true,"dnsiskinky.com":true,"dvrcam.info":true,"dynns.com":true,"eating-organic.net":true,"fantasyleague.cc":true,"geekgalaxy.com":true,"golffan.us":true,"health-carereform.com":true,"homesecuritymac.com":true,"homesecuritypc.com":true,"hopto.me":true,"ilovecollege.info":true,"loginto.me":true,"mlbfan.org":true,"mmafan.biz":true,"myactivedirectory.com":true,"mydissent.net":true,"myeffect.net":true,"mymediapc.net":true,"mypsx.net":true,"mysecuritycamera.com":true,"mysecuritycamera.net":true,"mysecuritycamera.org":true,"net-freaks.com":true,"nflfan.org":true,"nhlfan.net":true,"no-ip.ca":true,"no-ip.co.uk":true,"no-ip.net":true,"noip.us":true,"onthewifi.com":true,"pgafan.net":true,"point2this.com":true,"pointto.us":true,"privatizehealthinsurance.net":true,"quicksytes.com":true,"read-books.org":true,"securitytactics.com":true,"serveexchange.com":true,"servehumour.com":true,"servep2p.com":true,"servesarcasm.com":true,"stufftoread.com":true,"ufcfan.org":true,"unusualperson.com":true,"workisboring.com":true,"3utilities.com":true,"bounceme.net":true,"ddns.net":true,"ddnsking.com":true,"gotdns.ch":true,"hopto.org":true,"myftp.biz":true,"myftp.org":true,"myvnc.com":true,"no-ip.biz":true,"no-ip.info":true,"no-ip.org":true,"noip.me":true,"redirectme.net":true,"servebeer.com":true,"serveblog.net":true,"servecounterstrike.com":true,"serveftp.com":true,"servegame.com":true,"servehalflife.com":true,"servehttp.com":true,"serveirc.com":true,"serveminecraft.net":true,"servemp3.com":true,"servepics.com":true,"servequake.com":true,"sytes.net":true,"webhop.me":true,"zapto.org":true,"stage.nodeart.io":true,"nodum.co":true,"nodum.io":true,"nyc.mn":true,"nom.ae":true,"nom.ai":true,"nom.al":true,"nym.by":true,"nym.bz":true,"nom.cl":true,"nom.gd":true,"nom.gl":true,"nym.gr":true,"nom.gt":true,"nom.hn":true,"nom.im":true,"nym.kz":true,"nym.la":true,"nom.li":true,"nym.li":true,"nym.lt":true,"nym.lu":true,"nym.me":true,"nom.mk":true,"nym.mx":true,"nom.nu":true,"nym.nz":true,"nym.pe":true,"nym.pt":true,"nom.pw":true,"nom.qa":true,"nom.rs":true,"nom.si":true,"nym.sk":true,"nym.su":true,"nym.sx":true,"nym.tw":true,"nom.ug":true,"nom.uy":true,"nom.vc":true,"nom.vg":true,"cya.gg":true,"nid.io":true,"opencraft.hosting":true,"operaunite.com":true,"outsystemscloud.com":true,"ownprovider.com":true,"oy.lc":true,"pgfog.com":true,"pagefrontapp.com":true,"art.pl":true,"gliwice.pl":true,"krakow.pl":true,"poznan.pl":true,"wroc.pl":true,"zakopane.pl":true,"pantheonsite.io":true,"gotpantheon.com":true,"mypep.link":true,"on-web.fr":true,"*.platform.sh":true,"*.platformsh.site":true,"xen.prgmr.com":true,"priv.at":true,"protonet.io":true,"chirurgiens-dentistes-en-france.fr":true,"byen.site":true,"qa2.com":true,"dev-myqnapcloud.com":true,"alpha-myqnapcloud.com":true,"myqnapcloud.com":true,"*.quipelements.com":true,"vapor.cloud":true,"vaporcloud.io":true,"rackmaze.com":true,"rackmaze.net":true,"rhcloud.com":true,"resindevice.io":true,"devices.resinstaging.io":true,"hzc.io":true,"wellbeingzone.eu":true,"ptplus.fit":true,"wellbeingzone.co.uk":true,"sandcats.io":true,"logoip.de":true,"logoip.com":true,"schokokeks.net":true,"scrysec.com":true,"firewall-gateway.com":true,"firewall-gateway.de":true,"my-gateway.de":true,"my-router.de":true,"spdns.de":true,"spdns.eu":true,"firewall-gateway.net":true,"my-firewall.org":true,"myfirewall.org":true,"spdns.org":true,"*.s5y.io":true,"*.sensiosite.cloud":true,"biz.ua":true,"co.ua":true,"pp.ua":true,"shiftedit.io":true,"myshopblocks.com":true,"1kapp.com":true,"appchizi.com":true,"applinzi.com":true,"sinaapp.com":true,"vipsinaapp.com":true,"bounty-full.com":true,"alpha.bounty-full.com":true,"beta.bounty-full.com":true,"static.land":true,"dev.static.land":true,"sites.static.land":true,"apps.lair.io":true,"*.stolos.io":true,"spacekit.io":true,"stackspace.space":true,"storj.farm":true,"temp-dns.com":true,"diskstation.me":true,"dscloud.biz":true,"dscloud.me":true,"dscloud.mobi":true,"dsmynas.com":true,"dsmynas.net":true,"dsmynas.org":true,"familyds.com":true,"familyds.net":true,"familyds.org":true,"i234.me":true,"myds.me":true,"synology.me":true,"vpnplus.to":true,"taifun-dns.de":true,"gda.pl":true,"gdansk.pl":true,"gdynia.pl":true,"med.pl":true,"sopot.pl":true,"cust.dev.thingdust.io":true,"cust.disrec.thingdust.io":true,"cust.prod.thingdust.io":true,"cust.testing.thingdust.io":true,"bloxcms.com":true,"townnews-staging.com":true,"12hp.at":true,"2ix.at":true,"4lima.at":true,"lima-city.at":true,"12hp.ch":true,"2ix.ch":true,"4lima.ch":true,"lima-city.ch":true,"trafficplex.cloud":true,"de.cool":true,"12hp.de":true,"2ix.de":true,"4lima.de":true,"lima-city.de":true,"1337.pictures":true,"clan.rip":true,"lima-city.rocks":true,"webspace.rocks":true,"lima.zone":true,"*.transurl.be":true,"*.transurl.eu":true,"*.transurl.nl":true,"tuxfamily.org":true,"dd-dns.de":true,"diskstation.eu":true,"diskstation.org":true,"dray-dns.de":true,"draydns.de":true,"dyn-vpn.de":true,"dynvpn.de":true,"mein-vigor.de":true,"my-vigor.de":true,"my-wan.de":true,"syno-ds.de":true,"synology-diskstation.de":true,"synology-ds.de":true,"uber.space":true,"hk.com":true,"hk.org":true,"ltd.hk":true,"inc.hk":true,"lib.de.us":true,"2038.io":true,"router.management":true,"v-info.info":true,"wedeploy.io":true,"wedeploy.me":true,"wedeploy.sh":true,"remotewd.com":true,"wmflabs.org":true,"cistron.nl":true,"demon.nl":true,"xs4all.space":true,"official.academy":true,"yolasite.com":true,"ybo.faith":true,"yombo.me":true,"homelink.one":true,"ybo.party":true,"ybo.review":true,"ybo.science":true,"ybo.trade":true,"za.net":true,"za.org":true,"now.sh":true});
 85061  
 85062  // END of automatically generated file
 85063  
 85064  
 85065  /***/ }),
 85066  /* 416 */
 85067  /***/ (function(module, exports, __webpack_require__) {
 85068  
 85069  "use strict";
 85070  /*!
 85071   * Copyright (c) 2015, Salesforce.com, Inc.
 85072   * All rights reserved.
 85073   *
 85074   * Redistribution and use in source and binary forms, with or without
 85075   * modification, are permitted provided that the following conditions are met:
 85076   *
 85077   * 1. Redistributions of source code must retain the above copyright notice,
 85078   * this list of conditions and the following disclaimer.
 85079   *
 85080   * 2. Redistributions in binary form must reproduce the above copyright notice,
 85081   * this list of conditions and the following disclaimer in the documentation
 85082   * and/or other materials provided with the distribution.
 85083   *
 85084   * 3. Neither the name of Salesforce.com nor the names of its contributors may
 85085   * be used to endorse or promote products derived from this software without
 85086   * specific prior written permission.
 85087   *
 85088   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 85089   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 85090   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 85091   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 85092   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 85093   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 85094   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 85095   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 85096   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 85097   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 85098   * POSSIBILITY OF SUCH DAMAGE.
 85099   */
 85100  
 85101  /*jshint unused:false */
 85102  
 85103  function Store() {
 85104  }
 85105  exports.Store = Store;
 85106  
 85107  // Stores may be synchronous, but are still required to use a
 85108  // Continuation-Passing Style API.  The CookieJar itself will expose a "*Sync"
 85109  // API that converts from synchronous-callbacks to imperative style.
 85110  Store.prototype.synchronous = false;
 85111  
 85112  Store.prototype.findCookie = function(domain, path, key, cb) {
 85113    throw new Error('findCookie is not implemented');
 85114  };
 85115  
 85116  Store.prototype.findCookies = function(domain, path, cb) {
 85117    throw new Error('findCookies is not implemented');
 85118  };
 85119  
 85120  Store.prototype.putCookie = function(cookie, cb) {
 85121    throw new Error('putCookie is not implemented');
 85122  };
 85123  
 85124  Store.prototype.updateCookie = function(oldCookie, newCookie, cb) {
 85125    // recommended default implementation:
 85126    // return this.putCookie(newCookie, cb);
 85127    throw new Error('updateCookie is not implemented');
 85128  };
 85129  
 85130  Store.prototype.removeCookie = function(domain, path, key, cb) {
 85131    throw new Error('removeCookie is not implemented');
 85132  };
 85133  
 85134  Store.prototype.removeCookies = function(domain, path, cb) {
 85135    throw new Error('removeCookies is not implemented');
 85136  };
 85137  
 85138  Store.prototype.getAllCookies = function(cb) {
 85139    throw new Error('getAllCookies is not implemented (therefore jar cannot be serialized)');
 85140  };
 85141  
 85142  
 85143  /***/ }),
 85144  /* 417 */
 85145  /***/ (function(module, exports) {
 85146  
 85147  module.exports = function () {
 85148      // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi
 85149      var origPrepareStackTrace = Error.prepareStackTrace;
 85150      Error.prepareStackTrace = function (_, stack) { return stack; };
 85151      var stack = (new Error()).stack;
 85152      Error.prepareStackTrace = origPrepareStackTrace;
 85153      return stack[2].getFileName();
 85154  };
 85155  
 85156  
 85157  /***/ }),
 85158  /* 418 */
 85159  /***/ (function(module, exports, __webpack_require__) {
 85160  
 85161  var path = __webpack_require__(0);
 85162  var fs = __webpack_require__(4);
 85163  var parse = path.parse || __webpack_require__(774);
 85164  
 85165  module.exports = function nodeModulesPaths(start, opts) {
 85166      var modules = opts && opts.moduleDirectory
 85167          ? [].concat(opts.moduleDirectory)
 85168          : ['node_modules'];
 85169  
 85170      // ensure that `start` is an absolute path at this point,
 85171      // resolving against the process' current working directory
 85172      var absoluteStart = path.resolve(start);
 85173  
 85174      if (opts && opts.preserveSymlinks === false) {
 85175          try {
 85176              absoluteStart = fs.realpathSync(absoluteStart);
 85177          } catch (err) {
 85178              if (err.code !== 'ENOENT') {
 85179                  throw err;
 85180              }
 85181          }
 85182      }
 85183  
 85184      var prefix = '/';
 85185      if (/^([A-Za-z]:)/.test(absoluteStart)) {
 85186          prefix = '';
 85187      } else if (/^\\\\/.test(absoluteStart)) {
 85188          prefix = '\\\\';
 85189      }
 85190  
 85191      var paths = [absoluteStart];
 85192      var parsed = parse(absoluteStart);
 85193      while (parsed.dir !== paths[paths.length - 1]) {
 85194          paths.push(parsed.dir);
 85195          parsed = parse(parsed.dir);
 85196      }
 85197  
 85198      var dirs = paths.reduce(function (dirs, aPath) {
 85199          return dirs.concat(modules.map(function (moduleDir) {
 85200              return path.join(prefix, aPath, moduleDir);
 85201          }));
 85202      }, []);
 85203  
 85204      return opts && opts.paths ? dirs.concat(opts.paths) : dirs;
 85205  };
 85206  
 85207  
 85208  /***/ }),
 85209  /* 419 */
 85210  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 85211  
 85212  "use strict";
 85213  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return BehaviorSubject; });
 85214  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 85215  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subject__ = __webpack_require__(36);
 85216  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_ObjectUnsubscribedError__ = __webpack_require__(190);
 85217  /** PURE_IMPORTS_START tslib,_Subject,_util_ObjectUnsubscribedError PURE_IMPORTS_END */
 85218  
 85219  
 85220  
 85221  var BehaviorSubject = /*@__PURE__*/ (function (_super) {
 85222      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](BehaviorSubject, _super);
 85223      function BehaviorSubject(_value) {
 85224          var _this = _super.call(this) || this;
 85225          _this._value = _value;
 85226          return _this;
 85227      }
 85228      Object.defineProperty(BehaviorSubject.prototype, "value", {
 85229          get: function () {
 85230              return this.getValue();
 85231          },
 85232          enumerable: true,
 85233          configurable: true
 85234      });
 85235      BehaviorSubject.prototype._subscribe = function (subscriber) {
 85236          var subscription = _super.prototype._subscribe.call(this, subscriber);
 85237          if (subscription && !subscription.closed) {
 85238              subscriber.next(this._value);
 85239          }
 85240          return subscription;
 85241      };
 85242      BehaviorSubject.prototype.getValue = function () {
 85243          if (this.hasError) {
 85244              throw this.thrownError;
 85245          }
 85246          else if (this.closed) {
 85247              throw new __WEBPACK_IMPORTED_MODULE_2__util_ObjectUnsubscribedError__["a" /* ObjectUnsubscribedError */]();
 85248          }
 85249          else {
 85250              return this._value;
 85251          }
 85252      };
 85253      BehaviorSubject.prototype.next = function (value) {
 85254          _super.prototype.next.call(this, this._value = value);
 85255      };
 85256      return BehaviorSubject;
 85257  }(__WEBPACK_IMPORTED_MODULE_1__Subject__["a" /* Subject */]));
 85258  
 85259  //# sourceMappingURL=BehaviorSubject.js.map
 85260  
 85261  
 85262  /***/ }),
 85263  /* 420 */
 85264  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 85265  
 85266  "use strict";
 85267  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return empty; });
 85268  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__config__ = __webpack_require__(186);
 85269  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_hostReportError__ = __webpack_require__(323);
 85270  /** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */
 85271  
 85272  
 85273  var empty = {
 85274      closed: true,
 85275      next: function (value) { },
 85276      error: function (err) {
 85277          if (__WEBPACK_IMPORTED_MODULE_0__config__["a" /* config */].useDeprecatedSynchronousErrorHandling) {
 85278              throw err;
 85279          }
 85280          else {
 85281              __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_hostReportError__["a" /* hostReportError */])(err);
 85282          }
 85283      },
 85284      complete: function () { }
 85285  };
 85286  //# sourceMappingURL=Observer.js.map
 85287  
 85288  
 85289  /***/ }),
 85290  /* 421 */
 85291  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 85292  
 85293  "use strict";
 85294  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Scheduler; });
 85295  var Scheduler = /*@__PURE__*/ (function () {
 85296      function Scheduler(SchedulerAction, now) {
 85297          if (now === void 0) {
 85298              now = Scheduler.now;
 85299          }
 85300          this.SchedulerAction = SchedulerAction;
 85301          this.now = now;
 85302      }
 85303      Scheduler.prototype.schedule = function (work, delay, state) {
 85304          if (delay === void 0) {
 85305              delay = 0;
 85306          }
 85307          return new this.SchedulerAction(this, work).schedule(state, delay);
 85308      };
 85309      Scheduler.now = function () { return Date.now(); };
 85310      return Scheduler;
 85311  }());
 85312  
 85313  //# sourceMappingURL=Scheduler.js.map
 85314  
 85315  
 85316  /***/ }),
 85317  /* 422 */
 85318  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 85319  
 85320  "use strict";
 85321  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SubjectSubscription; });
 85322  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 85323  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscription__ = __webpack_require__(25);
 85324  /** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */
 85325  
 85326  
 85327  var SubjectSubscription = /*@__PURE__*/ (function (_super) {
 85328      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SubjectSubscription, _super);
 85329      function SubjectSubscription(subject, subscriber) {
 85330          var _this = _super.call(this) || this;
 85331          _this.subject = subject;
 85332          _this.subscriber = subscriber;
 85333          _this.closed = false;
 85334          return _this;
 85335      }
 85336      SubjectSubscription.prototype.unsubscribe = function () {
 85337          if (this.closed) {
 85338              return;
 85339          }
 85340          this.closed = true;
 85341          var subject = this.subject;
 85342          var observers = subject.observers;
 85343          this.subject = null;
 85344          if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {
 85345              return;
 85346          }
 85347          var subscriberIndex = observers.indexOf(this.subscriber);
 85348          if (subscriberIndex !== -1) {
 85349              observers.splice(subscriberIndex, 1);
 85350          }
 85351      };
 85352      return SubjectSubscription;
 85353  }(__WEBPACK_IMPORTED_MODULE_1__Subscription__["a" /* Subscription */]));
 85354  
 85355  //# sourceMappingURL=SubjectSubscription.js.map
 85356  
 85357  
 85358  /***/ }),
 85359  /* 423 */
 85360  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 85361  
 85362  "use strict";
 85363  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ConnectableObservable; });
 85364  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return connectableObservableDescriptor; });
 85365  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 85366  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subject__ = __webpack_require__(36);
 85367  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Observable__ = __webpack_require__(12);
 85368  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscriber__ = __webpack_require__(7);
 85369  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__Subscription__ = __webpack_require__(25);
 85370  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__operators_refCount__ = __webpack_require__(316);
 85371  /** PURE_IMPORTS_START tslib,_Subject,_Observable,_Subscriber,_Subscription,_operators_refCount PURE_IMPORTS_END */
 85372  
 85373  
 85374  
 85375  
 85376  
 85377  
 85378  var ConnectableObservable = /*@__PURE__*/ (function (_super) {
 85379      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](ConnectableObservable, _super);
 85380      function ConnectableObservable(source, subjectFactory) {
 85381          var _this = _super.call(this) || this;
 85382          _this.source = source;
 85383          _this.subjectFactory = subjectFactory;
 85384          _this._refCount = 0;
 85385          _this._isComplete = false;
 85386          return _this;
 85387      }
 85388      ConnectableObservable.prototype._subscribe = function (subscriber) {
 85389          return this.getSubject().subscribe(subscriber);
 85390      };
 85391      ConnectableObservable.prototype.getSubject = function () {
 85392          var subject = this._subject;
 85393          if (!subject || subject.isStopped) {
 85394              this._subject = this.subjectFactory();
 85395          }
 85396          return this._subject;
 85397      };
 85398      ConnectableObservable.prototype.connect = function () {
 85399          var connection = this._connection;
 85400          if (!connection) {
 85401              this._isComplete = false;
 85402              connection = this._connection = new __WEBPACK_IMPORTED_MODULE_4__Subscription__["a" /* Subscription */]();
 85403              connection.add(this.source
 85404                  .subscribe(new ConnectableSubscriber(this.getSubject(), this)));
 85405              if (connection.closed) {
 85406                  this._connection = null;
 85407                  connection = __WEBPACK_IMPORTED_MODULE_4__Subscription__["a" /* Subscription */].EMPTY;
 85408              }
 85409              else {
 85410                  this._connection = connection;
 85411              }
 85412          }
 85413          return connection;
 85414      };
 85415      ConnectableObservable.prototype.refCount = function () {
 85416          return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__operators_refCount__["a" /* refCount */])()(this);
 85417      };
 85418      return ConnectableObservable;
 85419  }(__WEBPACK_IMPORTED_MODULE_2__Observable__["a" /* Observable */]));
 85420  
 85421  var connectableProto = ConnectableObservable.prototype;
 85422  var connectableObservableDescriptor = {
 85423      operator: { value: null },
 85424      _refCount: { value: 0, writable: true },
 85425      _subject: { value: null, writable: true },
 85426      _connection: { value: null, writable: true },
 85427      _subscribe: { value: connectableProto._subscribe },
 85428      _isComplete: { value: connectableProto._isComplete, writable: true },
 85429      getSubject: { value: connectableProto.getSubject },
 85430      connect: { value: connectableProto.connect },
 85431      refCount: { value: connectableProto.refCount }
 85432  };
 85433  var ConnectableSubscriber = /*@__PURE__*/ (function (_super) {
 85434      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](ConnectableSubscriber, _super);
 85435      function ConnectableSubscriber(destination, connectable) {
 85436          var _this = _super.call(this, destination) || this;
 85437          _this.connectable = connectable;
 85438          return _this;
 85439      }
 85440      ConnectableSubscriber.prototype._error = function (err) {
 85441          this._unsubscribe();
 85442          _super.prototype._error.call(this, err);
 85443      };
 85444      ConnectableSubscriber.prototype._complete = function () {
 85445          this.connectable._isComplete = true;
 85446          this._unsubscribe();
 85447          _super.prototype._complete.call(this);
 85448      };
 85449      ConnectableSubscriber.prototype._unsubscribe = function () {
 85450          var connectable = this.connectable;
 85451          if (connectable) {
 85452              this.connectable = null;
 85453              var connection = connectable._connection;
 85454              connectable._refCount = 0;
 85455              connectable._subject = null;
 85456              connectable._connection = null;
 85457              if (connection) {
 85458                  connection.unsubscribe();
 85459              }
 85460          }
 85461      };
 85462      return ConnectableSubscriber;
 85463  }(__WEBPACK_IMPORTED_MODULE_1__Subject__["b" /* SubjectSubscriber */]));
 85464  var RefCountOperator = /*@__PURE__*/ (function () {
 85465      function RefCountOperator(connectable) {
 85466          this.connectable = connectable;
 85467      }
 85468      RefCountOperator.prototype.call = function (subscriber, source) {
 85469          var connectable = this.connectable;
 85470          connectable._refCount++;
 85471          var refCounter = new RefCountSubscriber(subscriber, connectable);
 85472          var subscription = source.subscribe(refCounter);
 85473          if (!refCounter.closed) {
 85474              refCounter.connection = connectable.connect();
 85475          }
 85476          return subscription;
 85477      };
 85478      return RefCountOperator;
 85479  }());
 85480  var RefCountSubscriber = /*@__PURE__*/ (function (_super) {
 85481      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](RefCountSubscriber, _super);
 85482      function RefCountSubscriber(destination, connectable) {
 85483          var _this = _super.call(this, destination) || this;
 85484          _this.connectable = connectable;
 85485          return _this;
 85486      }
 85487      RefCountSubscriber.prototype._unsubscribe = function () {
 85488          var connectable = this.connectable;
 85489          if (!connectable) {
 85490              this.connection = null;
 85491              return;
 85492          }
 85493          this.connectable = null;
 85494          var refCount = connectable._refCount;
 85495          if (refCount <= 0) {
 85496              this.connection = null;
 85497              return;
 85498          }
 85499          connectable._refCount = refCount - 1;
 85500          if (refCount > 1) {
 85501              this.connection = null;
 85502              return;
 85503          }
 85504          var connection = this.connection;
 85505          var sharedConnection = connectable._connection;
 85506          this.connection = null;
 85507          if (sharedConnection && (!connection || sharedConnection === connection)) {
 85508              sharedConnection.unsubscribe();
 85509          }
 85510      };
 85511      return RefCountSubscriber;
 85512  }(__WEBPACK_IMPORTED_MODULE_3__Subscriber__["a" /* Subscriber */]));
 85513  //# sourceMappingURL=ConnectableObservable.js.map
 85514  
 85515  
 85516  /***/ }),
 85517  /* 424 */
 85518  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 85519  
 85520  "use strict";
 85521  /* harmony export (immutable) */ __webpack_exports__["a"] = merge;
 85522  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
 85523  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isScheduler__ = __webpack_require__(49);
 85524  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__operators_mergeAll__ = __webpack_require__(315);
 85525  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__fromArray__ = __webpack_require__(85);
 85526  /** PURE_IMPORTS_START _Observable,_util_isScheduler,_operators_mergeAll,_fromArray PURE_IMPORTS_END */
 85527  
 85528  
 85529  
 85530  
 85531  function merge() {
 85532      var observables = [];
 85533      for (var _i = 0; _i < arguments.length; _i++) {
 85534          observables[_i] = arguments[_i];
 85535      }
 85536      var concurrent = Number.POSITIVE_INFINITY;
 85537      var scheduler = null;
 85538      var last = observables[observables.length - 1];
 85539      if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_isScheduler__["a" /* isScheduler */])(last)) {
 85540          scheduler = observables.pop();
 85541          if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {
 85542              concurrent = observables.pop();
 85543          }
 85544      }
 85545      else if (typeof last === 'number') {
 85546          concurrent = observables.pop();
 85547      }
 85548      if (scheduler === null && observables.length === 1 && observables[0] instanceof __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */]) {
 85549          return observables[0];
 85550      }
 85551      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__operators_mergeAll__["a" /* mergeAll */])(concurrent)(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__fromArray__["a" /* fromArray */])(observables, scheduler));
 85552  }
 85553  //# sourceMappingURL=merge.js.map
 85554  
 85555  
 85556  /***/ }),
 85557  /* 425 */
 85558  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 85559  
 85560  "use strict";
 85561  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return NEVER; });
 85562  /* harmony export (immutable) */ __webpack_exports__["a"] = never;
 85563  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
 85564  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_noop__ = __webpack_require__(192);
 85565  /** PURE_IMPORTS_START _Observable,_util_noop PURE_IMPORTS_END */
 85566  
 85567  
 85568  var NEVER = /*@__PURE__*/ new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](__WEBPACK_IMPORTED_MODULE_1__util_noop__["a" /* noop */]);
 85569  function never() {
 85570      return NEVER;
 85571  }
 85572  //# sourceMappingURL=never.js.map
 85573  
 85574  
 85575  /***/ }),
 85576  /* 426 */
 85577  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 85578  
 85579  "use strict";
 85580  /* harmony export (immutable) */ __webpack_exports__["a"] = race;
 85581  /* unused harmony export RaceOperator */
 85582  /* unused harmony export RaceSubscriber */
 85583  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 85584  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isArray__ = __webpack_require__(41);
 85585  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__fromArray__ = __webpack_require__(85);
 85586  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__OuterSubscriber__ = __webpack_require__(13);
 85587  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_subscribeToResult__ = __webpack_require__(14);
 85588  /** PURE_IMPORTS_START tslib,_util_isArray,_fromArray,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
 85589  
 85590  
 85591  
 85592  
 85593  
 85594  function race() {
 85595      var observables = [];
 85596      for (var _i = 0; _i < arguments.length; _i++) {
 85597          observables[_i] = arguments[_i];
 85598      }
 85599      if (observables.length === 1) {
 85600          if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_isArray__["a" /* isArray */])(observables[0])) {
 85601              observables = observables[0];
 85602          }
 85603          else {
 85604              return observables[0];
 85605          }
 85606      }
 85607      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__fromArray__["a" /* fromArray */])(observables, undefined).lift(new RaceOperator());
 85608  }
 85609  var RaceOperator = /*@__PURE__*/ (function () {
 85610      function RaceOperator() {
 85611      }
 85612      RaceOperator.prototype.call = function (subscriber, source) {
 85613          return source.subscribe(new RaceSubscriber(subscriber));
 85614      };
 85615      return RaceOperator;
 85616  }());
 85617  
 85618  var RaceSubscriber = /*@__PURE__*/ (function (_super) {
 85619      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](RaceSubscriber, _super);
 85620      function RaceSubscriber(destination) {
 85621          var _this = _super.call(this, destination) || this;
 85622          _this.hasFirst = false;
 85623          _this.observables = [];
 85624          _this.subscriptions = [];
 85625          return _this;
 85626      }
 85627      RaceSubscriber.prototype._next = function (observable) {
 85628          this.observables.push(observable);
 85629      };
 85630      RaceSubscriber.prototype._complete = function () {
 85631          var observables = this.observables;
 85632          var len = observables.length;
 85633          if (len === 0) {
 85634              this.destination.complete();
 85635          }
 85636          else {
 85637              for (var i = 0; i < len && !this.hasFirst; i++) {
 85638                  var observable = observables[i];
 85639                  var subscription = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util_subscribeToResult__["a" /* subscribeToResult */])(this, observable, observable, i);
 85640                  if (this.subscriptions) {
 85641                      this.subscriptions.push(subscription);
 85642                  }
 85643                  this.add(subscription);
 85644              }
 85645              this.observables = null;
 85646          }
 85647      };
 85648      RaceSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
 85649          if (!this.hasFirst) {
 85650              this.hasFirst = true;
 85651              for (var i = 0; i < this.subscriptions.length; i++) {
 85652                  if (i !== outerIndex) {
 85653                      var subscription = this.subscriptions[i];
 85654                      subscription.unsubscribe();
 85655                      this.remove(subscription);
 85656                  }
 85657              }
 85658              this.subscriptions = null;
 85659          }
 85660          this.destination.next(innerValue);
 85661      };
 85662      return RaceSubscriber;
 85663  }(__WEBPACK_IMPORTED_MODULE_3__OuterSubscriber__["a" /* OuterSubscriber */]));
 85664  
 85665  //# sourceMappingURL=race.js.map
 85666  
 85667  
 85668  /***/ }),
 85669  /* 427 */
 85670  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 85671  
 85672  "use strict";
 85673  /* harmony export (immutable) */ __webpack_exports__["a"] = timer;
 85674  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
 85675  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__scheduler_async__ = __webpack_require__(40);
 85676  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isNumeric__ = __webpack_require__(191);
 85677  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_isScheduler__ = __webpack_require__(49);
 85678  /** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */
 85679  
 85680  
 85681  
 85682  
 85683  function timer(dueTime, periodOrScheduler, scheduler) {
 85684      if (dueTime === void 0) {
 85685          dueTime = 0;
 85686      }
 85687      var period = -1;
 85688      if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_isNumeric__["a" /* isNumeric */])(periodOrScheduler)) {
 85689          period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);
 85690      }
 85691      else if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_isScheduler__["a" /* isScheduler */])(periodOrScheduler)) {
 85692          scheduler = periodOrScheduler;
 85693      }
 85694      if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_isScheduler__["a" /* isScheduler */])(scheduler)) {
 85695          scheduler = __WEBPACK_IMPORTED_MODULE_1__scheduler_async__["a" /* async */];
 85696      }
 85697      return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) {
 85698          var due = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_isNumeric__["a" /* isNumeric */])(dueTime)
 85699              ? dueTime
 85700              : (+dueTime - scheduler.now());
 85701          return scheduler.schedule(dispatch, due, {
 85702              index: 0, period: period, subscriber: subscriber
 85703          });
 85704      });
 85705  }
 85706  function dispatch(state) {
 85707      var index = state.index, period = state.period, subscriber = state.subscriber;
 85708      subscriber.next(index);
 85709      if (subscriber.closed) {
 85710          return;
 85711      }
 85712      else if (period === -1) {
 85713          return subscriber.complete();
 85714      }
 85715      state.index = index + 1;
 85716      this.schedule(state, period);
 85717  }
 85718  //# sourceMappingURL=timer.js.map
 85719  
 85720  
 85721  /***/ }),
 85722  /* 428 */
 85723  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 85724  
 85725  "use strict";
 85726  /* harmony export (immutable) */ __webpack_exports__["a"] = audit;
 85727  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 85728  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_tryCatch__ = __webpack_require__(57);
 85729  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_errorObject__ = __webpack_require__(48);
 85730  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__OuterSubscriber__ = __webpack_require__(13);
 85731  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_subscribeToResult__ = __webpack_require__(14);
 85732  /** PURE_IMPORTS_START tslib,_util_tryCatch,_util_errorObject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
 85733  
 85734  
 85735  
 85736  
 85737  
 85738  function audit(durationSelector) {
 85739      return function auditOperatorFunction(source) {
 85740          return source.lift(new AuditOperator(durationSelector));
 85741      };
 85742  }
 85743  var AuditOperator = /*@__PURE__*/ (function () {
 85744      function AuditOperator(durationSelector) {
 85745          this.durationSelector = durationSelector;
 85746      }
 85747      AuditOperator.prototype.call = function (subscriber, source) {
 85748          return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector));
 85749      };
 85750      return AuditOperator;
 85751  }());
 85752  var AuditSubscriber = /*@__PURE__*/ (function (_super) {
 85753      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](AuditSubscriber, _super);
 85754      function AuditSubscriber(destination, durationSelector) {
 85755          var _this = _super.call(this, destination) || this;
 85756          _this.durationSelector = durationSelector;
 85757          _this.hasValue = false;
 85758          return _this;
 85759      }
 85760      AuditSubscriber.prototype._next = function (value) {
 85761          this.value = value;
 85762          this.hasValue = true;
 85763          if (!this.throttled) {
 85764              var duration = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_tryCatch__["a" /* tryCatch */])(this.durationSelector)(value);
 85765              if (duration === __WEBPACK_IMPORTED_MODULE_2__util_errorObject__["a" /* errorObject */]) {
 85766                  this.destination.error(__WEBPACK_IMPORTED_MODULE_2__util_errorObject__["a" /* errorObject */].e);
 85767              }
 85768              else {
 85769                  var innerSubscription = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util_subscribeToResult__["a" /* subscribeToResult */])(this, duration);
 85770                  if (!innerSubscription || innerSubscription.closed) {
 85771                      this.clearThrottle();
 85772                  }
 85773                  else {
 85774                      this.add(this.throttled = innerSubscription);
 85775                  }
 85776              }
 85777          }
 85778      };
 85779      AuditSubscriber.prototype.clearThrottle = function () {
 85780          var _a = this, value = _a.value, hasValue = _a.hasValue, throttled = _a.throttled;
 85781          if (throttled) {
 85782              this.remove(throttled);
 85783              this.throttled = null;
 85784              throttled.unsubscribe();
 85785          }
 85786          if (hasValue) {
 85787              this.value = null;
 85788              this.hasValue = false;
 85789              this.destination.next(value);
 85790          }
 85791      };
 85792      AuditSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex) {
 85793          this.clearThrottle();
 85794      };
 85795      AuditSubscriber.prototype.notifyComplete = function () {
 85796          this.clearThrottle();
 85797      };
 85798      return AuditSubscriber;
 85799  }(__WEBPACK_IMPORTED_MODULE_3__OuterSubscriber__["a" /* OuterSubscriber */]));
 85800  //# sourceMappingURL=audit.js.map
 85801  
 85802  
 85803  /***/ }),
 85804  /* 429 */
 85805  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 85806  
 85807  "use strict";
 85808  /* harmony export (immutable) */ __webpack_exports__["a"] = concatAll;
 85809  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__mergeAll__ = __webpack_require__(315);
 85810  /** PURE_IMPORTS_START _mergeAll PURE_IMPORTS_END */
 85811  
 85812  function concatAll() {
 85813      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__mergeAll__["a" /* mergeAll */])(1);
 85814  }
 85815  //# sourceMappingURL=concatAll.js.map
 85816  
 85817  
 85818  /***/ }),
 85819  /* 430 */
 85820  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 85821  
 85822  "use strict";
 85823  /* harmony export (immutable) */ __webpack_exports__["a"] = concatMap;
 85824  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__mergeMap__ = __webpack_require__(148);
 85825  /** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */
 85826  
 85827  function concatMap(project, resultSelector) {
 85828      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__mergeMap__["a" /* mergeMap */])(project, resultSelector, 1);
 85829  }
 85830  //# sourceMappingURL=concatMap.js.map
 85831  
 85832  
 85833  /***/ }),
 85834  /* 431 */
 85835  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 85836  
 85837  "use strict";
 85838  /* harmony export (immutable) */ __webpack_exports__["a"] = distinctUntilChanged;
 85839  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 85840  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
 85841  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_tryCatch__ = __webpack_require__(57);
 85842  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_errorObject__ = __webpack_require__(48);
 85843  /** PURE_IMPORTS_START tslib,_Subscriber,_util_tryCatch,_util_errorObject PURE_IMPORTS_END */
 85844  
 85845  
 85846  
 85847  
 85848  function distinctUntilChanged(compare, keySelector) {
 85849      return function (source) { return source.lift(new DistinctUntilChangedOperator(compare, keySelector)); };
 85850  }
 85851  var DistinctUntilChangedOperator = /*@__PURE__*/ (function () {
 85852      function DistinctUntilChangedOperator(compare, keySelector) {
 85853          this.compare = compare;
 85854          this.keySelector = keySelector;
 85855      }
 85856      DistinctUntilChangedOperator.prototype.call = function (subscriber, source) {
 85857          return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));
 85858      };
 85859      return DistinctUntilChangedOperator;
 85860  }());
 85861  var DistinctUntilChangedSubscriber = /*@__PURE__*/ (function (_super) {
 85862      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](DistinctUntilChangedSubscriber, _super);
 85863      function DistinctUntilChangedSubscriber(destination, compare, keySelector) {
 85864          var _this = _super.call(this, destination) || this;
 85865          _this.keySelector = keySelector;
 85866          _this.hasKey = false;
 85867          if (typeof compare === 'function') {
 85868              _this.compare = compare;
 85869          }
 85870          return _this;
 85871      }
 85872      DistinctUntilChangedSubscriber.prototype.compare = function (x, y) {
 85873          return x === y;
 85874      };
 85875      DistinctUntilChangedSubscriber.prototype._next = function (value) {
 85876          var keySelector = this.keySelector;
 85877          var key = value;
 85878          if (keySelector) {
 85879              key = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_tryCatch__["a" /* tryCatch */])(this.keySelector)(value);
 85880              if (key === __WEBPACK_IMPORTED_MODULE_3__util_errorObject__["a" /* errorObject */]) {
 85881                  return this.destination.error(__WEBPACK_IMPORTED_MODULE_3__util_errorObject__["a" /* errorObject */].e);
 85882              }
 85883          }
 85884          var result = false;
 85885          if (this.hasKey) {
 85886              result = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_tryCatch__["a" /* tryCatch */])(this.compare)(this.key, key);
 85887              if (result === __WEBPACK_IMPORTED_MODULE_3__util_errorObject__["a" /* errorObject */]) {
 85888                  return this.destination.error(__WEBPACK_IMPORTED_MODULE_3__util_errorObject__["a" /* errorObject */].e);
 85889              }
 85890          }
 85891          else {
 85892              this.hasKey = true;
 85893          }
 85894          if (Boolean(result) === false) {
 85895              this.key = key;
 85896              this.destination.next(value);
 85897          }
 85898      };
 85899      return DistinctUntilChangedSubscriber;
 85900  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
 85901  //# sourceMappingURL=distinctUntilChanged.js.map
 85902  
 85903  
 85904  /***/ }),
 85905  /* 432 */
 85906  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 85907  
 85908  "use strict";
 85909  /* harmony export (immutable) */ __webpack_exports__["a"] = find;
 85910  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return FindValueOperator; });
 85911  /* unused harmony export FindValueSubscriber */
 85912  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 85913  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
 85914  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
 85915  
 85916  
 85917  function find(predicate, thisArg) {
 85918      if (typeof predicate !== 'function') {
 85919          throw new TypeError('predicate is not a function');
 85920      }
 85921      return function (source) { return source.lift(new FindValueOperator(predicate, source, false, thisArg)); };
 85922  }
 85923  var FindValueOperator = /*@__PURE__*/ (function () {
 85924      function FindValueOperator(predicate, source, yieldIndex, thisArg) {
 85925          this.predicate = predicate;
 85926          this.source = source;
 85927          this.yieldIndex = yieldIndex;
 85928          this.thisArg = thisArg;
 85929      }
 85930      FindValueOperator.prototype.call = function (observer, source) {
 85931          return source.subscribe(new FindValueSubscriber(observer, this.predicate, this.source, this.yieldIndex, this.thisArg));
 85932      };
 85933      return FindValueOperator;
 85934  }());
 85935  
 85936  var FindValueSubscriber = /*@__PURE__*/ (function (_super) {
 85937      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](FindValueSubscriber, _super);
 85938      function FindValueSubscriber(destination, predicate, source, yieldIndex, thisArg) {
 85939          var _this = _super.call(this, destination) || this;
 85940          _this.predicate = predicate;
 85941          _this.source = source;
 85942          _this.yieldIndex = yieldIndex;
 85943          _this.thisArg = thisArg;
 85944          _this.index = 0;
 85945          return _this;
 85946      }
 85947      FindValueSubscriber.prototype.notifyComplete = function (value) {
 85948          var destination = this.destination;
 85949          destination.next(value);
 85950          destination.complete();
 85951          this.unsubscribe();
 85952      };
 85953      FindValueSubscriber.prototype._next = function (value) {
 85954          var _a = this, predicate = _a.predicate, thisArg = _a.thisArg;
 85955          var index = this.index++;
 85956          try {
 85957              var result = predicate.call(thisArg || this, value, index, this.source);
 85958              if (result) {
 85959                  this.notifyComplete(this.yieldIndex ? index : value);
 85960              }
 85961          }
 85962          catch (err) {
 85963              this.destination.error(err);
 85964          }
 85965      };
 85966      FindValueSubscriber.prototype._complete = function () {
 85967          this.notifyComplete(this.yieldIndex ? -1 : undefined);
 85968      };
 85969      return FindValueSubscriber;
 85970  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
 85971  
 85972  //# sourceMappingURL=find.js.map
 85973  
 85974  
 85975  /***/ }),
 85976  /* 433 */
 85977  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 85978  
 85979  "use strict";
 85980  /* harmony export (immutable) */ __webpack_exports__["b"] = groupBy;
 85981  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return GroupedObservable; });
 85982  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 85983  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
 85984  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Subscription__ = __webpack_require__(25);
 85985  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Observable__ = __webpack_require__(12);
 85986  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__Subject__ = __webpack_require__(36);
 85987  /** PURE_IMPORTS_START tslib,_Subscriber,_Subscription,_Observable,_Subject PURE_IMPORTS_END */
 85988  
 85989  
 85990  
 85991  
 85992  
 85993  function groupBy(keySelector, elementSelector, durationSelector, subjectSelector) {
 85994      return function (source) {
 85995          return source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector));
 85996      };
 85997  }
 85998  var GroupByOperator = /*@__PURE__*/ (function () {
 85999      function GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector) {
 86000          this.keySelector = keySelector;
 86001          this.elementSelector = elementSelector;
 86002          this.durationSelector = durationSelector;
 86003          this.subjectSelector = subjectSelector;
 86004      }
 86005      GroupByOperator.prototype.call = function (subscriber, source) {
 86006          return source.subscribe(new GroupBySubscriber(subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector));
 86007      };
 86008      return GroupByOperator;
 86009  }());
 86010  var GroupBySubscriber = /*@__PURE__*/ (function (_super) {
 86011      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](GroupBySubscriber, _super);
 86012      function GroupBySubscriber(destination, keySelector, elementSelector, durationSelector, subjectSelector) {
 86013          var _this = _super.call(this, destination) || this;
 86014          _this.keySelector = keySelector;
 86015          _this.elementSelector = elementSelector;
 86016          _this.durationSelector = durationSelector;
 86017          _this.subjectSelector = subjectSelector;
 86018          _this.groups = null;
 86019          _this.attemptedToUnsubscribe = false;
 86020          _this.count = 0;
 86021          return _this;
 86022      }
 86023      GroupBySubscriber.prototype._next = function (value) {
 86024          var key;
 86025          try {
 86026              key = this.keySelector(value);
 86027          }
 86028          catch (err) {
 86029              this.error(err);
 86030              return;
 86031          }
 86032          this._group(value, key);
 86033      };
 86034      GroupBySubscriber.prototype._group = function (value, key) {
 86035          var groups = this.groups;
 86036          if (!groups) {
 86037              groups = this.groups = new Map();
 86038          }
 86039          var group = groups.get(key);
 86040          var element;
 86041          if (this.elementSelector) {
 86042              try {
 86043                  element = this.elementSelector(value);
 86044              }
 86045              catch (err) {
 86046                  this.error(err);
 86047              }
 86048          }
 86049          else {
 86050              element = value;
 86051          }
 86052          if (!group) {
 86053              group = (this.subjectSelector ? this.subjectSelector() : new __WEBPACK_IMPORTED_MODULE_4__Subject__["a" /* Subject */]());
 86054              groups.set(key, group);
 86055              var groupedObservable = new GroupedObservable(key, group, this);
 86056              this.destination.next(groupedObservable);
 86057              if (this.durationSelector) {
 86058                  var duration = void 0;
 86059                  try {
 86060                      duration = this.durationSelector(new GroupedObservable(key, group));
 86061                  }
 86062                  catch (err) {
 86063                      this.error(err);
 86064                      return;
 86065                  }
 86066                  this.add(duration.subscribe(new GroupDurationSubscriber(key, group, this)));
 86067              }
 86068          }
 86069          if (!group.closed) {
 86070              group.next(element);
 86071          }
 86072      };
 86073      GroupBySubscriber.prototype._error = function (err) {
 86074          var groups = this.groups;
 86075          if (groups) {
 86076              groups.forEach(function (group, key) {
 86077                  group.error(err);
 86078              });
 86079              groups.clear();
 86080          }
 86081          this.destination.error(err);
 86082      };
 86083      GroupBySubscriber.prototype._complete = function () {
 86084          var groups = this.groups;
 86085          if (groups) {
 86086              groups.forEach(function (group, key) {
 86087                  group.complete();
 86088              });
 86089              groups.clear();
 86090          }
 86091          this.destination.complete();
 86092      };
 86093      GroupBySubscriber.prototype.removeGroup = function (key) {
 86094          this.groups.delete(key);
 86095      };
 86096      GroupBySubscriber.prototype.unsubscribe = function () {
 86097          if (!this.closed) {
 86098              this.attemptedToUnsubscribe = true;
 86099              if (this.count === 0) {
 86100                  _super.prototype.unsubscribe.call(this);
 86101              }
 86102          }
 86103      };
 86104      return GroupBySubscriber;
 86105  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
 86106  var GroupDurationSubscriber = /*@__PURE__*/ (function (_super) {
 86107      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](GroupDurationSubscriber, _super);
 86108      function GroupDurationSubscriber(key, group, parent) {
 86109          var _this = _super.call(this, group) || this;
 86110          _this.key = key;
 86111          _this.group = group;
 86112          _this.parent = parent;
 86113          return _this;
 86114      }
 86115      GroupDurationSubscriber.prototype._next = function (value) {
 86116          this.complete();
 86117      };
 86118      GroupDurationSubscriber.prototype._unsubscribe = function () {
 86119          var _a = this, parent = _a.parent, key = _a.key;
 86120          this.key = this.parent = null;
 86121          if (parent) {
 86122              parent.removeGroup(key);
 86123          }
 86124      };
 86125      return GroupDurationSubscriber;
 86126  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
 86127  var GroupedObservable = /*@__PURE__*/ (function (_super) {
 86128      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](GroupedObservable, _super);
 86129      function GroupedObservable(key, groupSubject, refCountSubscription) {
 86130          var _this = _super.call(this) || this;
 86131          _this.key = key;
 86132          _this.groupSubject = groupSubject;
 86133          _this.refCountSubscription = refCountSubscription;
 86134          return _this;
 86135      }
 86136      GroupedObservable.prototype._subscribe = function (subscriber) {
 86137          var subscription = new __WEBPACK_IMPORTED_MODULE_2__Subscription__["a" /* Subscription */]();
 86138          var _a = this, refCountSubscription = _a.refCountSubscription, groupSubject = _a.groupSubject;
 86139          if (refCountSubscription && !refCountSubscription.closed) {
 86140              subscription.add(new InnerRefCountSubscription(refCountSubscription));
 86141          }
 86142          subscription.add(groupSubject.subscribe(subscriber));
 86143          return subscription;
 86144      };
 86145      return GroupedObservable;
 86146  }(__WEBPACK_IMPORTED_MODULE_3__Observable__["a" /* Observable */]));
 86147  
 86148  var InnerRefCountSubscription = /*@__PURE__*/ (function (_super) {
 86149      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](InnerRefCountSubscription, _super);
 86150      function InnerRefCountSubscription(parent) {
 86151          var _this = _super.call(this) || this;
 86152          _this.parent = parent;
 86153          parent.count++;
 86154          return _this;
 86155      }
 86156      InnerRefCountSubscription.prototype.unsubscribe = function () {
 86157          var parent = this.parent;
 86158          if (!parent.closed && !this.closed) {
 86159              _super.prototype.unsubscribe.call(this);
 86160              parent.count -= 1;
 86161              if (parent.count === 0 && parent.attemptedToUnsubscribe) {
 86162                  parent.unsubscribe();
 86163              }
 86164          }
 86165      };
 86166      return InnerRefCountSubscription;
 86167  }(__WEBPACK_IMPORTED_MODULE_2__Subscription__["a" /* Subscription */]));
 86168  //# sourceMappingURL=groupBy.js.map
 86169  
 86170  
 86171  /***/ }),
 86172  /* 434 */
 86173  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 86174  
 86175  "use strict";
 86176  /* harmony export (immutable) */ __webpack_exports__["b"] = observeOn;
 86177  /* unused harmony export ObserveOnOperator */
 86178  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ObserveOnSubscriber; });
 86179  /* unused harmony export ObserveOnMessage */
 86180  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 86181  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
 86182  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Notification__ = __webpack_require__(185);
 86183  /** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */
 86184  
 86185  
 86186  
 86187  function observeOn(scheduler, delay) {
 86188      if (delay === void 0) {
 86189          delay = 0;
 86190      }
 86191      return function observeOnOperatorFunction(source) {
 86192          return source.lift(new ObserveOnOperator(scheduler, delay));
 86193      };
 86194  }
 86195  var ObserveOnOperator = /*@__PURE__*/ (function () {
 86196      function ObserveOnOperator(scheduler, delay) {
 86197          if (delay === void 0) {
 86198              delay = 0;
 86199          }
 86200          this.scheduler = scheduler;
 86201          this.delay = delay;
 86202      }
 86203      ObserveOnOperator.prototype.call = function (subscriber, source) {
 86204          return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));
 86205      };
 86206      return ObserveOnOperator;
 86207  }());
 86208  
 86209  var ObserveOnSubscriber = /*@__PURE__*/ (function (_super) {
 86210      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](ObserveOnSubscriber, _super);
 86211      function ObserveOnSubscriber(destination, scheduler, delay) {
 86212          if (delay === void 0) {
 86213              delay = 0;
 86214          }
 86215          var _this = _super.call(this, destination) || this;
 86216          _this.scheduler = scheduler;
 86217          _this.delay = delay;
 86218          return _this;
 86219      }
 86220      ObserveOnSubscriber.dispatch = function (arg) {
 86221          var notification = arg.notification, destination = arg.destination;
 86222          notification.observe(destination);
 86223          this.unsubscribe();
 86224      };
 86225      ObserveOnSubscriber.prototype.scheduleMessage = function (notification) {
 86226          var destination = this.destination;
 86227          destination.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));
 86228      };
 86229      ObserveOnSubscriber.prototype._next = function (value) {
 86230          this.scheduleMessage(__WEBPACK_IMPORTED_MODULE_2__Notification__["a" /* Notification */].createNext(value));
 86231      };
 86232      ObserveOnSubscriber.prototype._error = function (err) {
 86233          this.scheduleMessage(__WEBPACK_IMPORTED_MODULE_2__Notification__["a" /* Notification */].createError(err));
 86234          this.unsubscribe();
 86235      };
 86236      ObserveOnSubscriber.prototype._complete = function () {
 86237          this.scheduleMessage(__WEBPACK_IMPORTED_MODULE_2__Notification__["a" /* Notification */].createComplete());
 86238          this.unsubscribe();
 86239      };
 86240      return ObserveOnSubscriber;
 86241  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
 86242  
 86243  var ObserveOnMessage = /*@__PURE__*/ (function () {
 86244      function ObserveOnMessage(notification, destination) {
 86245          this.notification = notification;
 86246          this.destination = destination;
 86247      }
 86248      return ObserveOnMessage;
 86249  }());
 86250  
 86251  //# sourceMappingURL=observeOn.js.map
 86252  
 86253  
 86254  /***/ }),
 86255  /* 435 */
 86256  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 86257  
 86258  "use strict";
 86259  /* harmony export (immutable) */ __webpack_exports__["a"] = tap;
 86260  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 86261  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
 86262  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_noop__ = __webpack_require__(192);
 86263  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_isFunction__ = __webpack_require__(154);
 86264  /** PURE_IMPORTS_START tslib,_Subscriber,_util_noop,_util_isFunction PURE_IMPORTS_END */
 86265  
 86266  
 86267  
 86268  
 86269  function tap(nextOrObserver, error, complete) {
 86270      return function tapOperatorFunction(source) {
 86271          return source.lift(new DoOperator(nextOrObserver, error, complete));
 86272      };
 86273  }
 86274  var DoOperator = /*@__PURE__*/ (function () {
 86275      function DoOperator(nextOrObserver, error, complete) {
 86276          this.nextOrObserver = nextOrObserver;
 86277          this.error = error;
 86278          this.complete = complete;
 86279      }
 86280      DoOperator.prototype.call = function (subscriber, source) {
 86281          return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));
 86282      };
 86283      return DoOperator;
 86284  }());
 86285  var TapSubscriber = /*@__PURE__*/ (function (_super) {
 86286      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](TapSubscriber, _super);
 86287      function TapSubscriber(destination, observerOrNext, error, complete) {
 86288          var _this = _super.call(this, destination) || this;
 86289          _this._tapNext = __WEBPACK_IMPORTED_MODULE_2__util_noop__["a" /* noop */];
 86290          _this._tapError = __WEBPACK_IMPORTED_MODULE_2__util_noop__["a" /* noop */];
 86291          _this._tapComplete = __WEBPACK_IMPORTED_MODULE_2__util_noop__["a" /* noop */];
 86292          _this._tapError = error || __WEBPACK_IMPORTED_MODULE_2__util_noop__["a" /* noop */];
 86293          _this._tapComplete = complete || __WEBPACK_IMPORTED_MODULE_2__util_noop__["a" /* noop */];
 86294          if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_isFunction__["a" /* isFunction */])(observerOrNext)) {
 86295              _this._context = _this;
 86296              _this._tapNext = observerOrNext;
 86297          }
 86298          else if (observerOrNext) {
 86299              _this._context = observerOrNext;
 86300              _this._tapNext = observerOrNext.next || __WEBPACK_IMPORTED_MODULE_2__util_noop__["a" /* noop */];
 86301              _this._tapError = observerOrNext.error || __WEBPACK_IMPORTED_MODULE_2__util_noop__["a" /* noop */];
 86302              _this._tapComplete = observerOrNext.complete || __WEBPACK_IMPORTED_MODULE_2__util_noop__["a" /* noop */];
 86303          }
 86304          return _this;
 86305      }
 86306      TapSubscriber.prototype._next = function (value) {
 86307          try {
 86308              this._tapNext.call(this._context, value);
 86309          }
 86310          catch (err) {
 86311              this.destination.error(err);
 86312              return;
 86313          }
 86314          this.destination.next(value);
 86315      };
 86316      TapSubscriber.prototype._error = function (err) {
 86317          try {
 86318              this._tapError.call(this._context, err);
 86319          }
 86320          catch (err) {
 86321              this.destination.error(err);
 86322              return;
 86323          }
 86324          this.destination.error(err);
 86325      };
 86326      TapSubscriber.prototype._complete = function () {
 86327          try {
 86328              this._tapComplete.call(this._context);
 86329          }
 86330          catch (err) {
 86331              this.destination.error(err);
 86332              return;
 86333          }
 86334          return this.destination.complete();
 86335      };
 86336      return TapSubscriber;
 86337  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
 86338  //# sourceMappingURL=tap.js.map
 86339  
 86340  
 86341  /***/ }),
 86342  /* 436 */
 86343  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 86344  
 86345  "use strict";
 86346  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return defaultThrottleConfig; });
 86347  /* harmony export (immutable) */ __webpack_exports__["a"] = throttle;
 86348  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 86349  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__ = __webpack_require__(13);
 86350  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__ = __webpack_require__(14);
 86351  /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
 86352  
 86353  
 86354  
 86355  var defaultThrottleConfig = {
 86356      leading: true,
 86357      trailing: false
 86358  };
 86359  function throttle(durationSelector, config) {
 86360      if (config === void 0) {
 86361          config = defaultThrottleConfig;
 86362      }
 86363      return function (source) { return source.lift(new ThrottleOperator(durationSelector, config.leading, config.trailing)); };
 86364  }
 86365  var ThrottleOperator = /*@__PURE__*/ (function () {
 86366      function ThrottleOperator(durationSelector, leading, trailing) {
 86367          this.durationSelector = durationSelector;
 86368          this.leading = leading;
 86369          this.trailing = trailing;
 86370      }
 86371      ThrottleOperator.prototype.call = function (subscriber, source) {
 86372          return source.subscribe(new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing));
 86373      };
 86374      return ThrottleOperator;
 86375  }());
 86376  var ThrottleSubscriber = /*@__PURE__*/ (function (_super) {
 86377      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](ThrottleSubscriber, _super);
 86378      function ThrottleSubscriber(destination, durationSelector, _leading, _trailing) {
 86379          var _this = _super.call(this, destination) || this;
 86380          _this.destination = destination;
 86381          _this.durationSelector = durationSelector;
 86382          _this._leading = _leading;
 86383          _this._trailing = _trailing;
 86384          _this._hasValue = false;
 86385          return _this;
 86386      }
 86387      ThrottleSubscriber.prototype._next = function (value) {
 86388          this._hasValue = true;
 86389          this._sendValue = value;
 86390          if (!this._throttled) {
 86391              if (this._leading) {
 86392                  this.send();
 86393              }
 86394              else {
 86395                  this.throttle(value);
 86396              }
 86397          }
 86398      };
 86399      ThrottleSubscriber.prototype.send = function () {
 86400          var _a = this, _hasValue = _a._hasValue, _sendValue = _a._sendValue;
 86401          if (_hasValue) {
 86402              this.destination.next(_sendValue);
 86403              this.throttle(_sendValue);
 86404          }
 86405          this._hasValue = false;
 86406          this._sendValue = null;
 86407      };
 86408      ThrottleSubscriber.prototype.throttle = function (value) {
 86409          var duration = this.tryDurationSelector(value);
 86410          if (duration) {
 86411              this.add(this._throttled = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__["a" /* subscribeToResult */])(this, duration));
 86412          }
 86413      };
 86414      ThrottleSubscriber.prototype.tryDurationSelector = function (value) {
 86415          try {
 86416              return this.durationSelector(value);
 86417          }
 86418          catch (err) {
 86419              this.destination.error(err);
 86420              return null;
 86421          }
 86422      };
 86423      ThrottleSubscriber.prototype.throttlingDone = function () {
 86424          var _a = this, _throttled = _a._throttled, _trailing = _a._trailing;
 86425          if (_throttled) {
 86426              _throttled.unsubscribe();
 86427          }
 86428          this._throttled = null;
 86429          if (_trailing) {
 86430              this.send();
 86431          }
 86432      };
 86433      ThrottleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
 86434          this.throttlingDone();
 86435      };
 86436      ThrottleSubscriber.prototype.notifyComplete = function () {
 86437          this.throttlingDone();
 86438      };
 86439      return ThrottleSubscriber;
 86440  }(__WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__["a" /* OuterSubscriber */]));
 86441  //# sourceMappingURL=throttle.js.map
 86442  
 86443  
 86444  /***/ }),
 86445  /* 437 */
 86446  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 86447  
 86448  "use strict";
 86449  /* harmony export (immutable) */ __webpack_exports__["a"] = timeoutWith;
 86450  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
 86451  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__scheduler_async__ = __webpack_require__(40);
 86452  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isDate__ = __webpack_require__(443);
 86453  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__OuterSubscriber__ = __webpack_require__(13);
 86454  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_subscribeToResult__ = __webpack_require__(14);
 86455  /** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
 86456  
 86457  
 86458  
 86459  
 86460  
 86461  function timeoutWith(due, withObservable, scheduler) {
 86462      if (scheduler === void 0) {
 86463          scheduler = __WEBPACK_IMPORTED_MODULE_1__scheduler_async__["a" /* async */];
 86464      }
 86465      return function (source) {
 86466          var absoluteTimeout = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_isDate__["a" /* isDate */])(due);
 86467          var waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due);
 86468          return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler));
 86469      };
 86470  }
 86471  var TimeoutWithOperator = /*@__PURE__*/ (function () {
 86472      function TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler) {
 86473          this.waitFor = waitFor;
 86474          this.absoluteTimeout = absoluteTimeout;
 86475          this.withObservable = withObservable;
 86476          this.scheduler = scheduler;
 86477      }
 86478      TimeoutWithOperator.prototype.call = function (subscriber, source) {
 86479          return source.subscribe(new TimeoutWithSubscriber(subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler));
 86480      };
 86481      return TimeoutWithOperator;
 86482  }());
 86483  var TimeoutWithSubscriber = /*@__PURE__*/ (function (_super) {
 86484      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](TimeoutWithSubscriber, _super);
 86485      function TimeoutWithSubscriber(destination, absoluteTimeout, waitFor, withObservable, scheduler) {
 86486          var _this = _super.call(this, destination) || this;
 86487          _this.absoluteTimeout = absoluteTimeout;
 86488          _this.waitFor = waitFor;
 86489          _this.withObservable = withObservable;
 86490          _this.scheduler = scheduler;
 86491          _this.action = null;
 86492          _this.scheduleTimeout();
 86493          return _this;
 86494      }
 86495      TimeoutWithSubscriber.dispatchTimeout = function (subscriber) {
 86496          var withObservable = subscriber.withObservable;
 86497          subscriber._unsubscribeAndRecycle();
 86498          subscriber.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util_subscribeToResult__["a" /* subscribeToResult */])(subscriber, withObservable));
 86499      };
 86500      TimeoutWithSubscriber.prototype.scheduleTimeout = function () {
 86501          var action = this.action;
 86502          if (action) {
 86503              this.action = action.schedule(this, this.waitFor);
 86504          }
 86505          else {
 86506              this.add(this.action = this.scheduler.schedule(TimeoutWithSubscriber.dispatchTimeout, this.waitFor, this));
 86507          }
 86508      };
 86509      TimeoutWithSubscriber.prototype._next = function (value) {
 86510          if (!this.absoluteTimeout) {
 86511              this.scheduleTimeout();
 86512          }
 86513          _super.prototype._next.call(this, value);
 86514      };
 86515      TimeoutWithSubscriber.prototype._unsubscribe = function () {
 86516          this.action = null;
 86517          this.scheduler = null;
 86518          this.withObservable = null;
 86519      };
 86520      return TimeoutWithSubscriber;
 86521  }(__WEBPACK_IMPORTED_MODULE_3__OuterSubscriber__["a" /* OuterSubscriber */]));
 86522  //# sourceMappingURL=timeoutWith.js.map
 86523  
 86524  
 86525  /***/ }),
 86526  /* 438 */
 86527  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 86528  
 86529  "use strict";
 86530  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return asap; });
 86531  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__AsapAction__ = __webpack_require__(921);
 86532  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__AsapScheduler__ = __webpack_require__(922);
 86533  /** PURE_IMPORTS_START _AsapAction,_AsapScheduler PURE_IMPORTS_END */
 86534  
 86535  
 86536  var asap = /*@__PURE__*/ new __WEBPACK_IMPORTED_MODULE_1__AsapScheduler__["a" /* AsapScheduler */](__WEBPACK_IMPORTED_MODULE_0__AsapAction__["a" /* AsapAction */]);
 86537  //# sourceMappingURL=asap.js.map
 86538  
 86539  
 86540  /***/ }),
 86541  /* 439 */
 86542  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 86543  
 86544  "use strict";
 86545  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return queue; });
 86546  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__QueueAction__ = __webpack_require__(923);
 86547  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__QueueScheduler__ = __webpack_require__(924);
 86548  /** PURE_IMPORTS_START _QueueAction,_QueueScheduler PURE_IMPORTS_END */
 86549  
 86550  
 86551  var queue = /*@__PURE__*/ new __WEBPACK_IMPORTED_MODULE_1__QueueScheduler__["a" /* QueueScheduler */](__WEBPACK_IMPORTED_MODULE_0__QueueAction__["a" /* QueueAction */]);
 86552  //# sourceMappingURL=queue.js.map
 86553  
 86554  
 86555  /***/ }),
 86556  /* 440 */
 86557  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 86558  
 86559  "use strict";
 86560  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TimeoutError; });
 86561  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 86562  function TimeoutErrorImpl() {
 86563      Error.call(this);
 86564      this.message = 'Timeout has occurred';
 86565      this.name = 'TimeoutError';
 86566      return this;
 86567  }
 86568  TimeoutErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);
 86569  var TimeoutError = TimeoutErrorImpl;
 86570  //# sourceMappingURL=TimeoutError.js.map
 86571  
 86572  
 86573  /***/ }),
 86574  /* 441 */
 86575  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 86576  
 86577  "use strict";
 86578  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return UnsubscriptionError; });
 86579  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 86580  function UnsubscriptionErrorImpl(errors) {
 86581      Error.call(this);
 86582      this.message = errors ?
 86583          errors.length + " errors occurred during unsubscription:\n" + errors.map(function (err, i) { return i + 1 + ") " + err.toString(); }).join('\n  ') : '';
 86584      this.name = 'UnsubscriptionError';
 86585      this.errors = errors;
 86586      return this;
 86587  }
 86588  UnsubscriptionErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);
 86589  var UnsubscriptionError = UnsubscriptionErrorImpl;
 86590  //# sourceMappingURL=UnsubscriptionError.js.map
 86591  
 86592  
 86593  /***/ }),
 86594  /* 442 */
 86595  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 86596  
 86597  "use strict";
 86598  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isArrayLike; });
 86599  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 86600  var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });
 86601  //# sourceMappingURL=isArrayLike.js.map
 86602  
 86603  
 86604  /***/ }),
 86605  /* 443 */
 86606  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 86607  
 86608  "use strict";
 86609  /* harmony export (immutable) */ __webpack_exports__["a"] = isDate;
 86610  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 86611  function isDate(value) {
 86612      return value instanceof Date && !isNaN(+value);
 86613  }
 86614  //# sourceMappingURL=isDate.js.map
 86615  
 86616  
 86617  /***/ }),
 86618  /* 444 */
 86619  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 86620  
 86621  "use strict";
 86622  /* harmony export (immutable) */ __webpack_exports__["a"] = isObject;
 86623  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 86624  function isObject(x) {
 86625      return x != null && typeof x === 'object';
 86626  }
 86627  //# sourceMappingURL=isObject.js.map
 86628  
 86629  
 86630  /***/ }),
 86631  /* 445 */
 86632  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 86633  
 86634  "use strict";
 86635  /* harmony export (immutable) */ __webpack_exports__["a"] = isPromise;
 86636  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 86637  function isPromise(value) {
 86638      return value && typeof value.subscribe !== 'function' && typeof value.then === 'function';
 86639  }
 86640  //# sourceMappingURL=isPromise.js.map
 86641  
 86642  
 86643  /***/ }),
 86644  /* 446 */
 86645  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 86646  
 86647  "use strict";
 86648  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return subscribeTo; });
 86649  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
 86650  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__subscribeToArray__ = __webpack_require__(447);
 86651  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__subscribeToPromise__ = __webpack_require__(450);
 86652  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__subscribeToIterable__ = __webpack_require__(448);
 86653  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__subscribeToObservable__ = __webpack_require__(449);
 86654  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__isArrayLike__ = __webpack_require__(442);
 86655  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__isPromise__ = __webpack_require__(445);
 86656  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__isObject__ = __webpack_require__(444);
 86657  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__symbol_iterator__ = __webpack_require__(151);
 86658  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__symbol_observable__ = __webpack_require__(118);
 86659  /** PURE_IMPORTS_START _Observable,_subscribeToArray,_subscribeToPromise,_subscribeToIterable,_subscribeToObservable,_isArrayLike,_isPromise,_isObject,_symbol_iterator,_symbol_observable PURE_IMPORTS_END */
 86660  
 86661  
 86662  
 86663  
 86664  
 86665  
 86666  
 86667  
 86668  
 86669  
 86670  var subscribeTo = function (result) {
 86671      if (result instanceof __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */]) {
 86672          return function (subscriber) {
 86673              if (result._isScalar) {
 86674                  subscriber.next(result.value);
 86675                  subscriber.complete();
 86676                  return undefined;
 86677              }
 86678              else {
 86679                  return result.subscribe(subscriber);
 86680              }
 86681          };
 86682      }
 86683      else if (result && typeof result[__WEBPACK_IMPORTED_MODULE_9__symbol_observable__["a" /* observable */]] === 'function') {
 86684          return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__subscribeToObservable__["a" /* subscribeToObservable */])(result);
 86685      }
 86686      else if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__isArrayLike__["a" /* isArrayLike */])(result)) {
 86687          return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__subscribeToArray__["a" /* subscribeToArray */])(result);
 86688      }
 86689      else if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__isPromise__["a" /* isPromise */])(result)) {
 86690          return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__subscribeToPromise__["a" /* subscribeToPromise */])(result);
 86691      }
 86692      else if (result && typeof result[__WEBPACK_IMPORTED_MODULE_8__symbol_iterator__["a" /* iterator */]] === 'function') {
 86693          return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__subscribeToIterable__["a" /* subscribeToIterable */])(result);
 86694      }
 86695      else {
 86696          var value = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_7__isObject__["a" /* isObject */])(result) ? 'an invalid object' : "'" + result + "'";
 86697          var msg = "You provided " + value + " where a stream was expected."
 86698              + ' You can provide an Observable, Promise, Array, or Iterable.';
 86699          throw new TypeError(msg);
 86700      }
 86701  };
 86702  //# sourceMappingURL=subscribeTo.js.map
 86703  
 86704  
 86705  /***/ }),
 86706  /* 447 */
 86707  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 86708  
 86709  "use strict";
 86710  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return subscribeToArray; });
 86711  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
 86712  var subscribeToArray = function (array) {
 86713      return function (subscriber) {
 86714          for (var i = 0, len = array.length; i < len && !subscriber.closed; i++) {
 86715              subscriber.next(array[i]);
 86716          }
 86717          if (!subscriber.closed) {
 86718              subscriber.complete();
 86719          }
 86720      };
 86721  };
 86722  //# sourceMappingURL=subscribeToArray.js.map
 86723  
 86724  
 86725  /***/ }),
 86726  /* 448 */
 86727  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 86728  
 86729  "use strict";
 86730  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return subscribeToIterable; });
 86731  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__symbol_iterator__ = __webpack_require__(151);
 86732  /** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */
 86733  
 86734  var subscribeToIterable = function (iterable) {
 86735      return function (subscriber) {
 86736          var iterator = iterable[__WEBPACK_IMPORTED_MODULE_0__symbol_iterator__["a" /* iterator */]]();
 86737          do {
 86738              var item = iterator.next();
 86739              if (item.done) {
 86740                  subscriber.complete();
 86741                  break;
 86742              }
 86743              subscriber.next(item.value);
 86744              if (subscriber.closed) {
 86745                  break;
 86746              }
 86747          } while (true);
 86748          if (typeof iterator.return === 'function') {
 86749              subscriber.add(function () {
 86750                  if (iterator.return) {
 86751                      iterator.return();
 86752                  }
 86753              });
 86754          }
 86755          return subscriber;
 86756      };
 86757  };
 86758  //# sourceMappingURL=subscribeToIterable.js.map
 86759  
 86760  
 86761  /***/ }),
 86762  /* 449 */
 86763  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 86764  
 86765  "use strict";
 86766  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return subscribeToObservable; });
 86767  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__symbol_observable__ = __webpack_require__(118);
 86768  /** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */
 86769  
 86770  var subscribeToObservable = function (obj) {
 86771      return function (subscriber) {
 86772          var obs = obj[__WEBPACK_IMPORTED_MODULE_0__symbol_observable__["a" /* observable */]]();
 86773          if (typeof obs.subscribe !== 'function') {
 86774              throw new TypeError('Provided object does not correctly implement Symbol.observable');
 86775          }
 86776          else {
 86777              return obs.subscribe(subscriber);
 86778          }
 86779      };
 86780  };
 86781  //# sourceMappingURL=subscribeToObservable.js.map
 86782  
 86783  
 86784  /***/ }),
 86785  /* 450 */
 86786  /***/ (function(module, __webpack_exports__, __webpack_require__) {
 86787  
 86788  "use strict";
 86789  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return subscribeToPromise; });
 86790  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__hostReportError__ = __webpack_require__(323);
 86791  /** PURE_IMPORTS_START _hostReportError PURE_IMPORTS_END */
 86792  
 86793  var subscribeToPromise = function (promise) {
 86794      return function (subscriber) {
 86795          promise.then(function (value) {
 86796              if (!subscriber.closed) {
 86797                  subscriber.next(value);
 86798                  subscriber.complete();
 86799              }
 86800          }, function (err) { return subscriber.error(err); })
 86801              .then(null, __WEBPACK_IMPORTED_MODULE_0__hostReportError__["a" /* hostReportError */]);
 86802          return subscriber;
 86803      };
 86804  };
 86805  //# sourceMappingURL=subscribeToPromise.js.map
 86806  
 86807  
 86808  /***/ }),
 86809  /* 451 */
 86810  /***/ (function(module, exports, __webpack_require__) {
 86811  
 86812  // Note: since nyc uses this module to output coverage, any lines
 86813  // that are in the direct sync flow of nyc's outputCoverage are
 86814  // ignored, since we can never get coverage for them.
 86815  var assert = __webpack_require__(28)
 86816  var signals = __webpack_require__(933)
 86817  
 86818  var EE = __webpack_require__(77)
 86819  /* istanbul ignore if */
 86820  if (typeof EE !== 'function') {
 86821    EE = EE.EventEmitter
 86822  }
 86823  
 86824  var emitter
 86825  if (process.__signal_exit_emitter__) {
 86826    emitter = process.__signal_exit_emitter__
 86827  } else {
 86828    emitter = process.__signal_exit_emitter__ = new EE()
 86829    emitter.count = 0
 86830    emitter.emitted = {}
 86831  }
 86832  
 86833  // Because this emitter is a global, we have to check to see if a
 86834  // previous version of this library failed to enable infinite listeners.
 86835  // I know what you're about to say.  But literally everything about
 86836  // signal-exit is a compromise with evil.  Get used to it.
 86837  if (!emitter.infinite) {
 86838    emitter.setMaxListeners(Infinity)
 86839    emitter.infinite = true
 86840  }
 86841  
 86842  module.exports = function (cb, opts) {
 86843    assert.equal(typeof cb, 'function', 'a callback must be provided for exit handler')
 86844  
 86845    if (loaded === false) {
 86846      load()
 86847    }
 86848  
 86849    var ev = 'exit'
 86850    if (opts && opts.alwaysLast) {
 86851      ev = 'afterexit'
 86852    }
 86853  
 86854    var remove = function () {
 86855      emitter.removeListener(ev, cb)
 86856      if (emitter.listeners('exit').length === 0 &&
 86857          emitter.listeners('afterexit').length === 0) {
 86858        unload()
 86859      }
 86860    }
 86861    emitter.on(ev, cb)
 86862  
 86863    return remove
 86864  }
 86865  
 86866  module.exports.unload = unload
 86867  function unload () {
 86868    if (!loaded) {
 86869      return
 86870    }
 86871    loaded = false
 86872  
 86873    signals.forEach(function (sig) {
 86874      try {
 86875        process.removeListener(sig, sigListeners[sig])
 86876      } catch (er) {}
 86877    })
 86878    process.emit = originalProcessEmit
 86879    process.reallyExit = originalProcessReallyExit
 86880    emitter.count -= 1
 86881  }
 86882  
 86883  function emit (event, code, signal) {
 86884    if (emitter.emitted[event]) {
 86885      return
 86886    }
 86887    emitter.emitted[event] = true
 86888    emitter.emit(event, code, signal)
 86889  }
 86890  
 86891  // { <signal>: <listener fn>, ... }
 86892  var sigListeners = {}
 86893  signals.forEach(function (sig) {
 86894    sigListeners[sig] = function listener () {
 86895      // If there are no other listeners, an exit is coming!
 86896      // Simplest way: remove us and then re-send the signal.
 86897      // We know that this will kill the process, so we can
 86898      // safely emit now.
 86899      var listeners = process.listeners(sig)
 86900      if (listeners.length === emitter.count) {
 86901        unload()
 86902        emit('exit', null, sig)
 86903        /* istanbul ignore next */
 86904        emit('afterexit', null, sig)
 86905        /* istanbul ignore next */
 86906        process.kill(process.pid, sig)
 86907      }
 86908    }
 86909  })
 86910  
 86911  module.exports.signals = function () {
 86912    return signals
 86913  }
 86914  
 86915  module.exports.load = load
 86916  
 86917  var loaded = false
 86918  
 86919  function load () {
 86920    if (loaded) {
 86921      return
 86922    }
 86923    loaded = true
 86924  
 86925    // This is the number of onSignalExit's that are in play.
 86926    // It's important so that we can count the correct number of
 86927    // listeners on signals, and don't wait for the other one to
 86928    // handle it instead of us.
 86929    emitter.count += 1
 86930  
 86931    signals = signals.filter(function (sig) {
 86932      try {
 86933        process.on(sig, sigListeners[sig])
 86934        return true
 86935      } catch (er) {
 86936        return false
 86937      }
 86938    })
 86939  
 86940    process.emit = processEmit
 86941    process.reallyExit = processReallyExit
 86942  }
 86943  
 86944  var originalProcessReallyExit = process.reallyExit
 86945  function processReallyExit (code) {
 86946    process.exitCode = code || 0
 86947    emit('exit', process.exitCode, null)
 86948    /* istanbul ignore next */
 86949    emit('afterexit', process.exitCode, null)
 86950    /* istanbul ignore next */
 86951    originalProcessReallyExit.call(process, process.exitCode)
 86952  }
 86953  
 86954  var originalProcessEmit = process.emit
 86955  function processEmit (ev, arg) {
 86956    if (ev === 'exit') {
 86957      if (arg !== undefined) {
 86958        process.exitCode = arg
 86959      }
 86960      var ret = originalProcessEmit.apply(this, arguments)
 86961      emit('exit', process.exitCode, null)
 86962      /* istanbul ignore next */
 86963      emit('afterexit', process.exitCode, null)
 86964      return ret
 86965    } else {
 86966      return originalProcessEmit.apply(this, arguments)
 86967    }
 86968  }
 86969  
 86970  
 86971  /***/ }),
 86972  /* 452 */
 86973  /***/ (function(module, exports, __webpack_require__) {
 86974  
 86975  "use strict";
 86976  
 86977  
 86978  var scan = __webpack_require__(938)
 86979  var parse = __webpack_require__(937)
 86980  
 86981  module.exports = function (source) {
 86982    return parse(scan(source))
 86983  }
 86984  
 86985  
 86986  /***/ }),
 86987  /* 453 */
 86988  /***/ (function(module, exports) {
 86989  
 86990  module.exports = ["0BSD","AAL","Abstyles","Adobe-2006","Adobe-Glyph","ADSL","AFL-1.1","AFL-1.2","AFL-2.0","AFL-2.1","AFL-3.0","Afmparse","AGPL-1.0","AGPL-3.0-only","AGPL-3.0-or-later","Aladdin","AMDPLPA","AML","AMPAS","ANTLR-PD","Apache-1.0","Apache-1.1","Apache-2.0","APAFML","APL-1.0","APSL-1.0","APSL-1.1","APSL-1.2","APSL-2.0","Artistic-1.0-cl8","Artistic-1.0-Perl","Artistic-1.0","Artistic-2.0","Bahyph","Barr","Beerware","BitTorrent-1.0","BitTorrent-1.1","Borceux","BSD-1-Clause","BSD-2-Clause-FreeBSD","BSD-2-Clause-NetBSD","BSD-2-Clause-Patent","BSD-2-Clause","BSD-3-Clause-Attribution","BSD-3-Clause-Clear","BSD-3-Clause-LBNL","BSD-3-Clause-No-Nuclear-License-2014","BSD-3-Clause-No-Nuclear-License","BSD-3-Clause-No-Nuclear-Warranty","BSD-3-Clause","BSD-4-Clause-UC","BSD-4-Clause","BSD-Protection","BSD-Source-Code","BSL-1.0","bzip2-1.0.5","bzip2-1.0.6","Caldera","CATOSL-1.1","CC-BY-1.0","CC-BY-2.0","CC-BY-2.5","CC-BY-3.0","CC-BY-4.0","CC-BY-NC-1.0","CC-BY-NC-2.0","CC-BY-NC-2.5","CC-BY-NC-3.0","CC-BY-NC-4.0","CC-BY-NC-ND-1.0","CC-BY-NC-ND-2.0","CC-BY-NC-ND-2.5","CC-BY-NC-ND-3.0","CC-BY-NC-ND-4.0","CC-BY-NC-SA-1.0","CC-BY-NC-SA-2.0","CC-BY-NC-SA-2.5","CC-BY-NC-SA-3.0","CC-BY-NC-SA-4.0","CC-BY-ND-1.0","CC-BY-ND-2.0","CC-BY-ND-2.5","CC-BY-ND-3.0","CC-BY-ND-4.0","CC-BY-SA-1.0","CC-BY-SA-2.0","CC-BY-SA-2.5","CC-BY-SA-3.0","CC-BY-SA-4.0","CC0-1.0","CDDL-1.0","CDDL-1.1","CDLA-Permissive-1.0","CDLA-Sharing-1.0","CECILL-1.0","CECILL-1.1","CECILL-2.0","CECILL-2.1","CECILL-B","CECILL-C","ClArtistic","CNRI-Jython","CNRI-Python-GPL-Compatible","CNRI-Python","Condor-1.1","CPAL-1.0","CPL-1.0","CPOL-1.02","Crossword","CrystalStacker","CUA-OPL-1.0","Cube","curl","D-FSL-1.0","diffmark","DOC","Dotseqn","DSDP","dvipdfm","ECL-1.0","ECL-2.0","EFL-1.0","EFL-2.0","eGenix","Entessa","EPL-1.0","EPL-2.0","ErlPL-1.1","EUDatagrid","EUPL-1.0","EUPL-1.1","EUPL-1.2","Eurosym","Fair","Frameworx-1.0","FreeImage","FSFAP","FSFUL","FSFULLR","FTL","GFDL-1.1-only","GFDL-1.1-or-later","GFDL-1.2-only","GFDL-1.2-or-later","GFDL-1.3-only","GFDL-1.3-or-later","Giftware","GL2PS","Glide","Glulxe","gnuplot","GPL-1.0-only","GPL-1.0-or-later","GPL-2.0-only","GPL-2.0-or-later","GPL-3.0-only","GPL-3.0-or-later","gSOAP-1.3b","HaskellReport","HPND","IBM-pibs","ICU","IJG","ImageMagick","iMatix","Imlib2","Info-ZIP","Intel-ACPI","Intel","Interbase-1.0","IPA","IPL-1.0","ISC","JasPer-2.0","JSON","LAL-1.2","LAL-1.3","Latex2e","Leptonica","LGPL-2.0-only","LGPL-2.0-or-later","LGPL-2.1-only","LGPL-2.1-or-later","LGPL-3.0-only","LGPL-3.0-or-later","LGPLLR","Libpng","libtiff","LiLiQ-P-1.1","LiLiQ-R-1.1","LiLiQ-Rplus-1.1","LPL-1.0","LPL-1.02","LPPL-1.0","LPPL-1.1","LPPL-1.2","LPPL-1.3a","LPPL-1.3c","MakeIndex","MirOS","MIT-advertising","MIT-CMU","MIT-enna","MIT-feh","MIT","MITNFA","Motosoto","mpich2","MPL-1.0","MPL-1.1","MPL-2.0-no-copyleft-exception","MPL-2.0","MS-PL","MS-RL","MTLL","Multics","Mup","NASA-1.3","Naumen","NBPL-1.0","NCSA","Net-SNMP","NetCDF","Newsletr","NGPL","NLOD-1.0","NLPL","Nokia","NOSL","Noweb","NPL-1.0","NPL-1.1","NPOSL-3.0","NRL","NTP","OCCT-PL","OCLC-2.0","ODbL-1.0","OFL-1.0","OFL-1.1","OGTSL","OLDAP-1.1","OLDAP-1.2","OLDAP-1.3","OLDAP-1.4","OLDAP-2.0.1","OLDAP-2.0","OLDAP-2.1","OLDAP-2.2.1","OLDAP-2.2.2","OLDAP-2.2","OLDAP-2.3","OLDAP-2.4","OLDAP-2.5","OLDAP-2.6","OLDAP-2.7","OLDAP-2.8","OML","OpenSSL","OPL-1.0","OSET-PL-2.1","OSL-1.0","OSL-1.1","OSL-2.0","OSL-2.1","OSL-3.0","PDDL-1.0","PHP-3.0","PHP-3.01","Plexus","PostgreSQL","psfrag","psutils","Python-2.0","Qhull","QPL-1.0","Rdisc","RHeCos-1.1","RPL-1.1","RPL-1.5","RPSL-1.0","RSA-MD","RSCPL","Ruby","SAX-PD","Saxpath","SCEA","Sendmail","SGI-B-1.0","SGI-B-1.1","SGI-B-2.0","SimPL-2.0","SISSL-1.2","SISSL","Sleepycat","SMLNJ","SMPPL","SNIA","Spencer-86","Spencer-94","Spencer-99","SPL-1.0","SugarCRM-1.1.3","SWL","TCL","TCP-wrappers","TMate","TORQUE-1.1","TOSL","Unicode-DFS-2015","Unicode-DFS-2016","Unicode-TOU","Unlicense","UPL-1.0","Vim","VOSTROM","VSL-1.0","W3C-19980720","W3C-20150513","W3C","Watcom-1.0","Wsuipa","WTFPL","X11","Xerox","XFree86-1.1","xinetd","Xnet","xpp","XSkat","YPL-1.0","YPL-1.1","Zed","Zend-2.0","Zimbra-1.3","Zimbra-1.4","zlib-acknowledgement","Zlib","ZPL-1.1","ZPL-2.0","ZPL-2.1"]
 86991  
 86992  /***/ }),
 86993  /* 454 */
 86994  /***/ (function(module, exports, __webpack_require__) {
 86995  
 86996  // Copyright 2015 Joyent, Inc.
 86997  
 86998  module.exports = {
 86999  	Verifier: Verifier,
 87000  	Signer: Signer
 87001  };
 87002  
 87003  var nacl;
 87004  var stream = __webpack_require__(23);
 87005  var util = __webpack_require__(3);
 87006  var assert = __webpack_require__(16);
 87007  var Buffer = __webpack_require__(15).Buffer;
 87008  var Signature = __webpack_require__(75);
 87009  
 87010  function Verifier(key, hashAlgo) {
 87011  	if (nacl === undefined)
 87012  		nacl = __webpack_require__(76);
 87013  
 87014  	if (hashAlgo.toLowerCase() !== 'sha512')
 87015  		throw (new Error('ED25519 only supports the use of ' +
 87016  		    'SHA-512 hashes'));
 87017  
 87018  	this.key = key;
 87019  	this.chunks = [];
 87020  
 87021  	stream.Writable.call(this, {});
 87022  }
 87023  util.inherits(Verifier, stream.Writable);
 87024  
 87025  Verifier.prototype._write = function (chunk, enc, cb) {
 87026  	this.chunks.push(chunk);
 87027  	cb();
 87028  };
 87029  
 87030  Verifier.prototype.update = function (chunk) {
 87031  	if (typeof (chunk) === 'string')
 87032  		chunk = Buffer.from(chunk, 'binary');
 87033  	this.chunks.push(chunk);
 87034  };
 87035  
 87036  Verifier.prototype.verify = function (signature, fmt) {
 87037  	var sig;
 87038  	if (Signature.isSignature(signature, [2, 0])) {
 87039  		if (signature.type !== 'ed25519')
 87040  			return (false);
 87041  		sig = signature.toBuffer('raw');
 87042  
 87043  	} else if (typeof (signature) === 'string') {
 87044  		sig = Buffer.from(signature, 'base64');
 87045  
 87046  	} else if (Signature.isSignature(signature, [1, 0])) {
 87047  		throw (new Error('signature was created by too old ' +
 87048  		    'a version of sshpk and cannot be verified'));
 87049  	}
 87050  
 87051  	assert.buffer(sig);
 87052  	return (nacl.sign.detached.verify(
 87053  	    new Uint8Array(Buffer.concat(this.chunks)),
 87054  	    new Uint8Array(sig),
 87055  	    new Uint8Array(this.key.part.A.data)));
 87056  };
 87057  
 87058  function Signer(key, hashAlgo) {
 87059  	if (nacl === undefined)
 87060  		nacl = __webpack_require__(76);
 87061  
 87062  	if (hashAlgo.toLowerCase() !== 'sha512')
 87063  		throw (new Error('ED25519 only supports the use of ' +
 87064  		    'SHA-512 hashes'));
 87065  
 87066  	this.key = key;
 87067  	this.chunks = [];
 87068  
 87069  	stream.Writable.call(this, {});
 87070  }
 87071  util.inherits(Signer, stream.Writable);
 87072  
 87073  Signer.prototype._write = function (chunk, enc, cb) {
 87074  	this.chunks.push(chunk);
 87075  	cb();
 87076  };
 87077  
 87078  Signer.prototype.update = function (chunk) {
 87079  	if (typeof (chunk) === 'string')
 87080  		chunk = Buffer.from(chunk, 'binary');
 87081  	this.chunks.push(chunk);
 87082  };
 87083  
 87084  Signer.prototype.sign = function () {
 87085  	var sig = nacl.sign.detached(
 87086  	    new Uint8Array(Buffer.concat(this.chunks)),
 87087  	    new Uint8Array(Buffer.concat([
 87088  		this.key.part.k.data, this.key.part.A.data])));
 87089  	var sigBuf = Buffer.from(sig);
 87090  	var sigObj = Signature.parse(sigBuf, 'ed25519', 'raw');
 87091  	sigObj.hashAlgorithm = 'sha512';
 87092  	return (sigObj);
 87093  };
 87094  
 87095  
 87096  /***/ }),
 87097  /* 455 */
 87098  /***/ (function(module, exports, __webpack_require__) {
 87099  
 87100  // Copyright 2015 Joyent, Inc.
 87101  
 87102  module.exports = {
 87103  	read: read,
 87104  	write: write
 87105  };
 87106  
 87107  var assert = __webpack_require__(16);
 87108  var Buffer = __webpack_require__(15).Buffer;
 87109  var utils = __webpack_require__(26);
 87110  var Key = __webpack_require__(27);
 87111  var PrivateKey = __webpack_require__(33);
 87112  
 87113  var pem = __webpack_require__(86);
 87114  var ssh = __webpack_require__(456);
 87115  var rfc4253 = __webpack_require__(103);
 87116  var dnssec = __webpack_require__(326);
 87117  
 87118  var DNSSEC_PRIVKEY_HEADER_PREFIX = 'Private-key-format: v1';
 87119  
 87120  function read(buf, options) {
 87121  	if (typeof (buf) === 'string') {
 87122  		if (buf.trim().match(/^[-]+[ ]*BEGIN/))
 87123  			return (pem.read(buf, options));
 87124  		if (buf.match(/^\s*ssh-[a-z]/))
 87125  			return (ssh.read(buf, options));
 87126  		if (buf.match(/^\s*ecdsa-/))
 87127  			return (ssh.read(buf, options));
 87128  		if (findDNSSECHeader(buf))
 87129  			return (dnssec.read(buf, options));
 87130  		buf = Buffer.from(buf, 'binary');
 87131  	} else {
 87132  		assert.buffer(buf);
 87133  		if (findPEMHeader(buf))
 87134  			return (pem.read(buf, options));
 87135  		if (findSSHHeader(buf))
 87136  			return (ssh.read(buf, options));
 87137  		if (findDNSSECHeader(buf))
 87138  			return (dnssec.read(buf, options));
 87139  	}
 87140  	if (buf.readUInt32BE(0) < buf.length)
 87141  		return (rfc4253.read(buf, options));
 87142  	throw (new Error('Failed to auto-detect format of key'));
 87143  }
 87144  
 87145  function findSSHHeader(buf) {
 87146  	var offset = 0;
 87147  	while (offset < buf.length &&
 87148  	    (buf[offset] === 32 || buf[offset] === 10 || buf[offset] === 9))
 87149  		++offset;
 87150  	if (offset + 4 <= buf.length &&
 87151  	    buf.slice(offset, offset + 4).toString('ascii') === 'ssh-')
 87152  		return (true);
 87153  	if (offset + 6 <= buf.length &&
 87154  	    buf.slice(offset, offset + 6).toString('ascii') === 'ecdsa-')
 87155  		return (true);
 87156  	return (false);
 87157  }
 87158  
 87159  function findPEMHeader(buf) {
 87160  	var offset = 0;
 87161  	while (offset < buf.length &&
 87162  	    (buf[offset] === 32 || buf[offset] === 10))
 87163  		++offset;
 87164  	if (buf[offset] !== 45)
 87165  		return (false);
 87166  	while (offset < buf.length &&
 87167  	    (buf[offset] === 45))
 87168  		++offset;
 87169  	while (offset < buf.length &&
 87170  	    (buf[offset] === 32))
 87171  		++offset;
 87172  	if (offset + 5 > buf.length ||
 87173  	    buf.slice(offset, offset + 5).toString('ascii') !== 'BEGIN')
 87174  		return (false);
 87175  	return (true);
 87176  }
 87177  
 87178  function findDNSSECHeader(buf) {
 87179  	// private case first
 87180  	if (buf.length <= DNSSEC_PRIVKEY_HEADER_PREFIX.length)
 87181  		return (false);
 87182  	var headerCheck = buf.slice(0, DNSSEC_PRIVKEY_HEADER_PREFIX.length);
 87183  	if (headerCheck.toString('ascii') === DNSSEC_PRIVKEY_HEADER_PREFIX)
 87184  		return (true);
 87185  
 87186  	// public-key RFC3110 ?
 87187  	// 'domain.com. IN KEY ...' or 'domain.com. IN DNSKEY ...'
 87188  	// skip any comment-lines
 87189  	if (typeof (buf) !== 'string') {
 87190  		buf = buf.toString('ascii');
 87191  	}
 87192  	var lines = buf.split('\n');
 87193  	var line = 0;
 87194  	/* JSSTYLED */
 87195  	while (lines[line].match(/^\;/))
 87196  		line++;
 87197  	if (lines[line].toString('ascii').match(/\. IN KEY /))
 87198  		return (true);
 87199  	if (lines[line].toString('ascii').match(/\. IN DNSKEY /))
 87200  		return (true);
 87201  	return (false);
 87202  }
 87203  
 87204  function write(key, options) {
 87205  	throw (new Error('"auto" format cannot be used for writing'));
 87206  }
 87207  
 87208  
 87209  /***/ }),
 87210  /* 456 */
 87211  /***/ (function(module, exports, __webpack_require__) {
 87212  
 87213  // Copyright 2015 Joyent, Inc.
 87214  
 87215  module.exports = {
 87216  	read: read,
 87217  	write: write
 87218  };
 87219  
 87220  var assert = __webpack_require__(16);
 87221  var Buffer = __webpack_require__(15).Buffer;
 87222  var rfc4253 = __webpack_require__(103);
 87223  var utils = __webpack_require__(26);
 87224  var Key = __webpack_require__(27);
 87225  var PrivateKey = __webpack_require__(33);
 87226  
 87227  var sshpriv = __webpack_require__(193);
 87228  
 87229  /*JSSTYLED*/
 87230  var SSHKEY_RE = /^([a-z0-9-]+)[ \t]+([a-zA-Z0-9+\/]+[=]*)([ \t]+([^ \t][^\n]*[\n]*)?)?$/;
 87231  /*JSSTYLED*/
 87232  var SSHKEY_RE2 = /^([a-z0-9-]+)[ \t\n]+([a-zA-Z0-9+\/][a-zA-Z0-9+\/ \t\n=]*)([^a-zA-Z0-9+\/ \t\n=].*)?$/;
 87233  
 87234  function read(buf, options) {
 87235  	if (typeof (buf) !== 'string') {
 87236  		assert.buffer(buf, 'buf');
 87237  		buf = buf.toString('ascii');
 87238  	}
 87239  
 87240  	var trimmed = buf.trim().replace(/[\\\r]/g, '');
 87241  	var m = trimmed.match(SSHKEY_RE);
 87242  	if (!m)
 87243  		m = trimmed.match(SSHKEY_RE2);
 87244  	assert.ok(m, 'key must match regex');
 87245  
 87246  	var type = rfc4253.algToKeyType(m[1]);
 87247  	var kbuf = Buffer.from(m[2], 'base64');
 87248  
 87249  	/*
 87250  	 * This is a bit tricky. If we managed to parse the key and locate the
 87251  	 * key comment with the regex, then do a non-partial read and assert
 87252  	 * that we have consumed all bytes. If we couldn't locate the key
 87253  	 * comment, though, there may be whitespace shenanigans going on that
 87254  	 * have conjoined the comment to the rest of the key. We do a partial
 87255  	 * read in this case to try to make the best out of a sorry situation.
 87256  	 */
 87257  	var key;
 87258  	var ret = {};
 87259  	if (m[4]) {
 87260  		try {
 87261  			key = rfc4253.read(kbuf);
 87262  
 87263  		} catch (e) {
 87264  			m = trimmed.match(SSHKEY_RE2);
 87265  			assert.ok(m, 'key must match regex');
 87266  			kbuf = Buffer.from(m[2], 'base64');
 87267  			key = rfc4253.readInternal(ret, 'public', kbuf);
 87268  		}
 87269  	} else {
 87270  		key = rfc4253.readInternal(ret, 'public', kbuf);
 87271  	}
 87272  
 87273  	assert.strictEqual(type, key.type);
 87274  
 87275  	if (m[4] && m[4].length > 0) {
 87276  		key.comment = m[4];
 87277  
 87278  	} else if (ret.consumed) {
 87279  		/*
 87280  		 * Now the magic: trying to recover the key comment when it's
 87281  		 * gotten conjoined to the key or otherwise shenanigan'd.
 87282  		 *
 87283  		 * Work out how much base64 we used, then drop all non-base64
 87284  		 * chars from the beginning up to this point in the the string.
 87285  		 * Then offset in this and try to make up for missing = chars.
 87286  		 */
 87287  		var data = m[2] + (m[3] ? m[3] : '');
 87288  		var realOffset = Math.ceil(ret.consumed / 3) * 4;
 87289  		data = data.slice(0, realOffset - 2). /*JSSTYLED*/
 87290  		    replace(/[^a-zA-Z0-9+\/=]/g, '') +
 87291  		    data.slice(realOffset - 2);
 87292  
 87293  		var padding = ret.consumed % 3;
 87294  		if (padding > 0 &&
 87295  		    data.slice(realOffset - 1, realOffset) !== '=')
 87296  			realOffset--;
 87297  		while (data.slice(realOffset, realOffset + 1) === '=')
 87298  			realOffset++;
 87299  
 87300  		/* Finally, grab what we think is the comment & clean it up. */
 87301  		var trailer = data.slice(realOffset);
 87302  		trailer = trailer.replace(/[\r\n]/g, ' ').
 87303  		    replace(/^\s+/, '');
 87304  		if (trailer.match(/^[a-zA-Z0-9]/))
 87305  			key.comment = trailer;
 87306  	}
 87307  
 87308  	return (key);
 87309  }
 87310  
 87311  function write(key, options) {
 87312  	assert.object(key);
 87313  	if (!Key.isKey(key))
 87314  		throw (new Error('Must be a public key'));
 87315  
 87316  	var parts = [];
 87317  	var alg = rfc4253.keyTypeToAlg(key);
 87318  	parts.push(alg);
 87319  
 87320  	var buf = rfc4253.write(key);
 87321  	parts.push(buf.toString('base64'));
 87322  
 87323  	if (key.comment)
 87324  		parts.push(key.comment);
 87325  
 87326  	return (Buffer.from(parts.join(' ')));
 87327  }
 87328  
 87329  
 87330  /***/ }),
 87331  /* 457 */
 87332  /***/ (function(module, exports, __webpack_require__) {
 87333  
 87334  // Copyright 2017 Joyent, Inc.
 87335  
 87336  module.exports = {
 87337  	read: read,
 87338  	verify: verify,
 87339  	sign: sign,
 87340  	signAsync: signAsync,
 87341  	write: write
 87342  };
 87343  
 87344  var assert = __webpack_require__(16);
 87345  var asn1 = __webpack_require__(66);
 87346  var Buffer = __webpack_require__(15).Buffer;
 87347  var algs = __webpack_require__(32);
 87348  var utils = __webpack_require__(26);
 87349  var Key = __webpack_require__(27);
 87350  var PrivateKey = __webpack_require__(33);
 87351  var pem = __webpack_require__(86);
 87352  var Identity = __webpack_require__(158);
 87353  var Signature = __webpack_require__(75);
 87354  var Certificate = __webpack_require__(155);
 87355  var pkcs8 = __webpack_require__(157);
 87356  
 87357  /*
 87358   * This file is based on RFC5280 (X.509).
 87359   */
 87360  
 87361  /* Helper to read in a single mpint */
 87362  function readMPInt(der, nm) {
 87363  	assert.strictEqual(der.peek(), asn1.Ber.Integer,
 87364  	    nm + ' is not an Integer');
 87365  	return (utils.mpNormalize(der.readString(asn1.Ber.Integer, true)));
 87366  }
 87367  
 87368  function verify(cert, key) {
 87369  	var sig = cert.signatures.x509;
 87370  	assert.object(sig, 'x509 signature');
 87371  
 87372  	var algParts = sig.algo.split('-');
 87373  	if (algParts[0] !== key.type)
 87374  		return (false);
 87375  
 87376  	var blob = sig.cache;
 87377  	if (blob === undefined) {
 87378  		var der = new asn1.BerWriter();
 87379  		writeTBSCert(cert, der);
 87380  		blob = der.buffer;
 87381  	}
 87382  
 87383  	var verifier = key.createVerify(algParts[1]);
 87384  	verifier.write(blob);
 87385  	return (verifier.verify(sig.signature));
 87386  }
 87387  
 87388  function Local(i) {
 87389  	return (asn1.Ber.Context | asn1.Ber.Constructor | i);
 87390  }
 87391  
 87392  function Context(i) {
 87393  	return (asn1.Ber.Context | i);
 87394  }
 87395  
 87396  var SIGN_ALGS = {
 87397  	'rsa-md5': '1.2.840.113549.1.1.4',
 87398  	'rsa-sha1': '1.2.840.113549.1.1.5',
 87399  	'rsa-sha256': '1.2.840.113549.1.1.11',
 87400  	'rsa-sha384': '1.2.840.113549.1.1.12',
 87401  	'rsa-sha512': '1.2.840.113549.1.1.13',
 87402  	'dsa-sha1': '1.2.840.10040.4.3',
 87403  	'dsa-sha256': '2.16.840.1.101.3.4.3.2',
 87404  	'ecdsa-sha1': '1.2.840.10045.4.1',
 87405  	'ecdsa-sha256': '1.2.840.10045.4.3.2',
 87406  	'ecdsa-sha384': '1.2.840.10045.4.3.3',
 87407  	'ecdsa-sha512': '1.2.840.10045.4.3.4',
 87408  	'ed25519-sha512': '1.3.101.112'
 87409  };
 87410  Object.keys(SIGN_ALGS).forEach(function (k) {
 87411  	SIGN_ALGS[SIGN_ALGS[k]] = k;
 87412  });
 87413  SIGN_ALGS['1.3.14.3.2.3'] = 'rsa-md5';
 87414  SIGN_ALGS['1.3.14.3.2.29'] = 'rsa-sha1';
 87415  
 87416  var EXTS = {
 87417  	'issuerKeyId': '2.5.29.35',
 87418  	'altName': '2.5.29.17',
 87419  	'basicConstraints': '2.5.29.19',
 87420  	'keyUsage': '2.5.29.15',
 87421  	'extKeyUsage': '2.5.29.37'
 87422  };
 87423  
 87424  function read(buf, options) {
 87425  	if (typeof (buf) === 'string') {
 87426  		buf = Buffer.from(buf, 'binary');
 87427  	}
 87428  	assert.buffer(buf, 'buf');
 87429  
 87430  	var der = new asn1.BerReader(buf);
 87431  
 87432  	der.readSequence();
 87433  	if (Math.abs(der.length - der.remain) > 1) {
 87434  		throw (new Error('DER sequence does not contain whole byte ' +
 87435  		    'stream'));
 87436  	}
 87437  
 87438  	var tbsStart = der.offset;
 87439  	der.readSequence();
 87440  	var sigOffset = der.offset + der.length;
 87441  	var tbsEnd = sigOffset;
 87442  
 87443  	if (der.peek() === Local(0)) {
 87444  		der.readSequence(Local(0));
 87445  		var version = der.readInt();
 87446  		assert.ok(version <= 3,
 87447  		    'only x.509 versions up to v3 supported');
 87448  	}
 87449  
 87450  	var cert = {};
 87451  	cert.signatures = {};
 87452  	var sig = (cert.signatures.x509 = {});
 87453  	sig.extras = {};
 87454  
 87455  	cert.serial = readMPInt(der, 'serial');
 87456  
 87457  	der.readSequence();
 87458  	var after = der.offset + der.length;
 87459  	var certAlgOid = der.readOID();
 87460  	var certAlg = SIGN_ALGS[certAlgOid];
 87461  	if (certAlg === undefined)
 87462  		throw (new Error('unknown signature algorithm ' + certAlgOid));
 87463  
 87464  	der._offset = after;
 87465  	cert.issuer = Identity.parseAsn1(der);
 87466  
 87467  	der.readSequence();
 87468  	cert.validFrom = readDate(der);
 87469  	cert.validUntil = readDate(der);
 87470  
 87471  	cert.subjects = [Identity.parseAsn1(der)];
 87472  
 87473  	der.readSequence();
 87474  	after = der.offset + der.length;
 87475  	cert.subjectKey = pkcs8.readPkcs8(undefined, 'public', der);
 87476  	der._offset = after;
 87477  
 87478  	/* issuerUniqueID */
 87479  	if (der.peek() === Local(1)) {
 87480  		der.readSequence(Local(1));
 87481  		sig.extras.issuerUniqueID =
 87482  		    buf.slice(der.offset, der.offset + der.length);
 87483  		der._offset += der.length;
 87484  	}
 87485  
 87486  	/* subjectUniqueID */
 87487  	if (der.peek() === Local(2)) {
 87488  		der.readSequence(Local(2));
 87489  		sig.extras.subjectUniqueID =
 87490  		    buf.slice(der.offset, der.offset + der.length);
 87491  		der._offset += der.length;
 87492  	}
 87493  
 87494  	/* extensions */
 87495  	if (der.peek() === Local(3)) {
 87496  		der.readSequence(Local(3));
 87497  		var extEnd = der.offset + der.length;
 87498  		der.readSequence();
 87499  
 87500  		while (der.offset < extEnd)
 87501  			readExtension(cert, buf, der);
 87502  
 87503  		assert.strictEqual(der.offset, extEnd);
 87504  	}
 87505  
 87506  	assert.strictEqual(der.offset, sigOffset);
 87507  
 87508  	der.readSequence();
 87509  	after = der.offset + der.length;
 87510  	var sigAlgOid = der.readOID();
 87511  	var sigAlg = SIGN_ALGS[sigAlgOid];
 87512  	if (sigAlg === undefined)
 87513  		throw (new Error('unknown signature algorithm ' + sigAlgOid));
 87514  	der._offset = after;
 87515  
 87516  	var sigData = der.readString(asn1.Ber.BitString, true);
 87517  	if (sigData[0] === 0)
 87518  		sigData = sigData.slice(1);
 87519  	var algParts = sigAlg.split('-');
 87520  
 87521  	sig.signature = Signature.parse(sigData, algParts[0], 'asn1');
 87522  	sig.signature.hashAlgorithm = algParts[1];
 87523  	sig.algo = sigAlg;
 87524  	sig.cache = buf.slice(tbsStart, tbsEnd);
 87525  
 87526  	return (new Certificate(cert));
 87527  }
 87528  
 87529  function readDate(der) {
 87530  	if (der.peek() === asn1.Ber.UTCTime) {
 87531  		return (utcTimeToDate(der.readString(asn1.Ber.UTCTime)));
 87532  	} else if (der.peek() === asn1.Ber.GeneralizedTime) {
 87533  		return (gTimeToDate(der.readString(asn1.Ber.GeneralizedTime)));
 87534  	} else {
 87535  		throw (new Error('Unsupported date format'));
 87536  	}
 87537  }
 87538  
 87539  /* RFC5280, section 4.2.1.6 (GeneralName type) */
 87540  var ALTNAME = {
 87541  	OtherName: Local(0),
 87542  	RFC822Name: Context(1),
 87543  	DNSName: Context(2),
 87544  	X400Address: Local(3),
 87545  	DirectoryName: Local(4),
 87546  	EDIPartyName: Local(5),
 87547  	URI: Context(6),
 87548  	IPAddress: Context(7),
 87549  	OID: Context(8)
 87550  };
 87551  
 87552  /* RFC5280, section 4.2.1.12 (KeyPurposeId) */
 87553  var EXTPURPOSE = {
 87554  	'serverAuth': '1.3.6.1.5.5.7.3.1',
 87555  	'clientAuth': '1.3.6.1.5.5.7.3.2',
 87556  	'codeSigning': '1.3.6.1.5.5.7.3.3',
 87557  
 87558  	/* See https://github.com/joyent/oid-docs/blob/master/root.md */
 87559  	'joyentDocker': '1.3.6.1.4.1.38678.1.4.1',
 87560  	'joyentCmon': '1.3.6.1.4.1.38678.1.4.2'
 87561  };
 87562  var EXTPURPOSE_REV = {};
 87563  Object.keys(EXTPURPOSE).forEach(function (k) {
 87564  	EXTPURPOSE_REV[EXTPURPOSE[k]] = k;
 87565  });
 87566  
 87567  var KEYUSEBITS = [
 87568  	'signature', 'identity', 'keyEncryption',
 87569  	'encryption', 'keyAgreement', 'ca', 'crl'
 87570  ];
 87571  
 87572  function readExtension(cert, buf, der) {
 87573  	der.readSequence();
 87574  	var after = der.offset + der.length;
 87575  	var extId = der.readOID();
 87576  	var id;
 87577  	var sig = cert.signatures.x509;
 87578  	sig.extras.exts = [];
 87579  
 87580  	var critical;
 87581  	if (der.peek() === asn1.Ber.Boolean)
 87582  		critical = der.readBoolean();
 87583  
 87584  	switch (extId) {
 87585  	case (EXTS.basicConstraints):
 87586  		der.readSequence(asn1.Ber.OctetString);
 87587  		der.readSequence();
 87588  		var bcEnd = der.offset + der.length;
 87589  		var ca = false;
 87590  		if (der.peek() === asn1.Ber.Boolean)
 87591  			ca = der.readBoolean();
 87592  		if (cert.purposes === undefined)
 87593  			cert.purposes = [];
 87594  		if (ca === true)
 87595  			cert.purposes.push('ca');
 87596  		var bc = { oid: extId, critical: critical };
 87597  		if (der.offset < bcEnd && der.peek() === asn1.Ber.Integer)
 87598  			bc.pathLen = der.readInt();
 87599  		sig.extras.exts.push(bc);
 87600  		break;
 87601  	case (EXTS.extKeyUsage):
 87602  		der.readSequence(asn1.Ber.OctetString);
 87603  		der.readSequence();
 87604  		if (cert.purposes === undefined)
 87605  			cert.purposes = [];
 87606  		var ekEnd = der.offset + der.length;
 87607  		while (der.offset < ekEnd) {
 87608  			var oid = der.readOID();
 87609  			cert.purposes.push(EXTPURPOSE_REV[oid] || oid);
 87610  		}
 87611  		/*
 87612  		 * This is a bit of a hack: in the case where we have a cert
 87613  		 * that's only allowed to do serverAuth or clientAuth (and not
 87614  		 * the other), we want to make sure all our Subjects are of
 87615  		 * the right type. But we already parsed our Subjects and
 87616  		 * decided if they were hosts or users earlier (since it appears
 87617  		 * first in the cert).
 87618  		 *
 87619  		 * So we go through and mutate them into the right kind here if
 87620  		 * it doesn't match. This might not be hugely beneficial, as it
 87621  		 * seems that single-purpose certs are not often seen in the
 87622  		 * wild.
 87623  		 */
 87624  		if (cert.purposes.indexOf('serverAuth') !== -1 &&
 87625  		    cert.purposes.indexOf('clientAuth') === -1) {
 87626  			cert.subjects.forEach(function (ide) {
 87627  				if (ide.type !== 'host') {
 87628  					ide.type = 'host';
 87629  					ide.hostname = ide.uid ||
 87630  					    ide.email ||
 87631  					    ide.components[0].value;
 87632  				}
 87633  			});
 87634  		} else if (cert.purposes.indexOf('clientAuth') !== -1 &&
 87635  		    cert.purposes.indexOf('serverAuth') === -1) {
 87636  			cert.subjects.forEach(function (ide) {
 87637  				if (ide.type !== 'user') {
 87638  					ide.type = 'user';
 87639  					ide.uid = ide.hostname ||
 87640  					    ide.email ||
 87641  					    ide.components[0].value;
 87642  				}
 87643  			});
 87644  		}
 87645  		sig.extras.exts.push({ oid: extId, critical: critical });
 87646  		break;
 87647  	case (EXTS.keyUsage):
 87648  		der.readSequence(asn1.Ber.OctetString);
 87649  		var bits = der.readString(asn1.Ber.BitString, true);
 87650  		var setBits = readBitField(bits, KEYUSEBITS);
 87651  		setBits.forEach(function (bit) {
 87652  			if (cert.purposes === undefined)
 87653  				cert.purposes = [];
 87654  			if (cert.purposes.indexOf(bit) === -1)
 87655  				cert.purposes.push(bit);
 87656  		});
 87657  		sig.extras.exts.push({ oid: extId, critical: critical,
 87658  		    bits: bits });
 87659  		break;
 87660  	case (EXTS.altName):
 87661  		der.readSequence(asn1.Ber.OctetString);
 87662  		der.readSequence();
 87663  		var aeEnd = der.offset + der.length;
 87664  		while (der.offset < aeEnd) {
 87665  			switch (der.peek()) {
 87666  			case ALTNAME.OtherName:
 87667  			case ALTNAME.EDIPartyName:
 87668  				der.readSequence();
 87669  				der._offset += der.length;
 87670  				break;
 87671  			case ALTNAME.OID:
 87672  				der.readOID(ALTNAME.OID);
 87673  				break;
 87674  			case ALTNAME.RFC822Name:
 87675  				/* RFC822 specifies email addresses */
 87676  				var email = der.readString(ALTNAME.RFC822Name);
 87677  				id = Identity.forEmail(email);
 87678  				if (!cert.subjects[0].equals(id))
 87679  					cert.subjects.push(id);
 87680  				break;
 87681  			case ALTNAME.DirectoryName:
 87682  				der.readSequence(ALTNAME.DirectoryName);
 87683  				id = Identity.parseAsn1(der);
 87684  				if (!cert.subjects[0].equals(id))
 87685  					cert.subjects.push(id);
 87686  				break;
 87687  			case ALTNAME.DNSName:
 87688  				var host = der.readString(
 87689  				    ALTNAME.DNSName);
 87690  				id = Identity.forHost(host);
 87691  				if (!cert.subjects[0].equals(id))
 87692  					cert.subjects.push(id);
 87693  				break;
 87694  			default:
 87695  				der.readString(der.peek());
 87696  				break;
 87697  			}
 87698  		}
 87699  		sig.extras.exts.push({ oid: extId, critical: critical });
 87700  		break;
 87701  	default:
 87702  		sig.extras.exts.push({
 87703  			oid: extId,
 87704  			critical: critical,
 87705  			data: der.readString(asn1.Ber.OctetString, true)
 87706  		});
 87707  		break;
 87708  	}
 87709  
 87710  	der._offset = after;
 87711  }
 87712  
 87713  var UTCTIME_RE =
 87714      /^([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/;
 87715  function utcTimeToDate(t) {
 87716  	var m = t.match(UTCTIME_RE);
 87717  	assert.ok(m, 'timestamps must be in UTC');
 87718  	var d = new Date();
 87719  
 87720  	var thisYear = d.getUTCFullYear();
 87721  	var century = Math.floor(thisYear / 100) * 100;
 87722  
 87723  	var year = parseInt(m[1], 10);
 87724  	if (thisYear % 100 < 50 && year >= 60)
 87725  		year += (century - 1);
 87726  	else
 87727  		year += century;
 87728  	d.setUTCFullYear(year, parseInt(m[2], 10) - 1, parseInt(m[3], 10));
 87729  	d.setUTCHours(parseInt(m[4], 10), parseInt(m[5], 10));
 87730  	if (m[6] && m[6].length > 0)
 87731  		d.setUTCSeconds(parseInt(m[6], 10));
 87732  	return (d);
 87733  }
 87734  
 87735  var GTIME_RE =
 87736      /^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/;
 87737  function gTimeToDate(t) {
 87738  	var m = t.match(GTIME_RE);
 87739  	assert.ok(m);
 87740  	var d = new Date();
 87741  
 87742  	d.setUTCFullYear(parseInt(m[1], 10), parseInt(m[2], 10) - 1,
 87743  	    parseInt(m[3], 10));
 87744  	d.setUTCHours(parseInt(m[4], 10), parseInt(m[5], 10));
 87745  	if (m[6] && m[6].length > 0)
 87746  		d.setUTCSeconds(parseInt(m[6], 10));
 87747  	return (d);
 87748  }
 87749  
 87750  function zeroPad(n) {
 87751  	var s = '' + n;
 87752  	while (s.length < 2)
 87753  		s = '0' + s;
 87754  	return (s);
 87755  }
 87756  
 87757  function dateToUTCTime(d) {
 87758  	var s = '';
 87759  	s += zeroPad(d.getUTCFullYear() % 100);
 87760  	s += zeroPad(d.getUTCMonth() + 1);
 87761  	s += zeroPad(d.getUTCDate());
 87762  	s += zeroPad(d.getUTCHours());
 87763  	s += zeroPad(d.getUTCMinutes());
 87764  	s += zeroPad(d.getUTCSeconds());
 87765  	s += 'Z';
 87766  	return (s);
 87767  }
 87768  
 87769  function sign(cert, key) {
 87770  	if (cert.signatures.x509 === undefined)
 87771  		cert.signatures.x509 = {};
 87772  	var sig = cert.signatures.x509;
 87773  
 87774  	sig.algo = key.type + '-' + key.defaultHashAlgorithm();
 87775  	if (SIGN_ALGS[sig.algo] === undefined)
 87776  		return (false);
 87777  
 87778  	var der = new asn1.BerWriter();
 87779  	writeTBSCert(cert, der);
 87780  	var blob = der.buffer;
 87781  	sig.cache = blob;
 87782  
 87783  	var signer = key.createSign();
 87784  	signer.write(blob);
 87785  	cert.signatures.x509.signature = signer.sign();
 87786  
 87787  	return (true);
 87788  }
 87789  
 87790  function signAsync(cert, signer, done) {
 87791  	if (cert.signatures.x509 === undefined)
 87792  		cert.signatures.x509 = {};
 87793  	var sig = cert.signatures.x509;
 87794  
 87795  	var der = new asn1.BerWriter();
 87796  	writeTBSCert(cert, der);
 87797  	var blob = der.buffer;
 87798  	sig.cache = blob;
 87799  
 87800  	signer(blob, function (err, signature) {
 87801  		if (err) {
 87802  			done(err);
 87803  			return;
 87804  		}
 87805  		sig.algo = signature.type + '-' + signature.hashAlgorithm;
 87806  		if (SIGN_ALGS[sig.algo] === undefined) {
 87807  			done(new Error('Invalid signing algorithm "' +
 87808  			    sig.algo + '"'));
 87809  			return;
 87810  		}
 87811  		sig.signature = signature;
 87812  		done();
 87813  	});
 87814  }
 87815  
 87816  function write(cert, options) {
 87817  	var sig = cert.signatures.x509;
 87818  	assert.object(sig, 'x509 signature');
 87819  
 87820  	var der = new asn1.BerWriter();
 87821  	der.startSequence();
 87822  	if (sig.cache) {
 87823  		der._ensure(sig.cache.length);
 87824  		sig.cache.copy(der._buf, der._offset);
 87825  		der._offset += sig.cache.length;
 87826  	} else {
 87827  		writeTBSCert(cert, der);
 87828  	}
 87829  
 87830  	der.startSequence();
 87831  	der.writeOID(SIGN_ALGS[sig.algo]);
 87832  	if (sig.algo.match(/^rsa-/))
 87833  		der.writeNull();
 87834  	der.endSequence();
 87835  
 87836  	var sigData = sig.signature.toBuffer('asn1');
 87837  	var data = Buffer.alloc(sigData.length + 1);
 87838  	data[0] = 0;
 87839  	sigData.copy(data, 1);
 87840  	der.writeBuffer(data, asn1.Ber.BitString);
 87841  	der.endSequence();
 87842  
 87843  	return (der.buffer);
 87844  }
 87845  
 87846  function writeTBSCert(cert, der) {
 87847  	var sig = cert.signatures.x509;
 87848  	assert.object(sig, 'x509 signature');
 87849  
 87850  	der.startSequence();
 87851  
 87852  	der.startSequence(Local(0));
 87853  	der.writeInt(2);
 87854  	der.endSequence();
 87855  
 87856  	der.writeBuffer(utils.mpNormalize(cert.serial), asn1.Ber.Integer);
 87857  
 87858  	der.startSequence();
 87859  	der.writeOID(SIGN_ALGS[sig.algo]);
 87860  	if (sig.algo.match(/^rsa-/))
 87861  		der.writeNull();
 87862  	der.endSequence();
 87863  
 87864  	cert.issuer.toAsn1(der);
 87865  
 87866  	der.startSequence();
 87867  	der.writeString(dateToUTCTime(cert.validFrom), asn1.Ber.UTCTime);
 87868  	der.writeString(dateToUTCTime(cert.validUntil), asn1.Ber.UTCTime);
 87869  	der.endSequence();
 87870  
 87871  	var subject = cert.subjects[0];
 87872  	var altNames = cert.subjects.slice(1);
 87873  	subject.toAsn1(der);
 87874  
 87875  	pkcs8.writePkcs8(der, cert.subjectKey);
 87876  
 87877  	if (sig.extras && sig.extras.issuerUniqueID) {
 87878  		der.writeBuffer(sig.extras.issuerUniqueID, Local(1));
 87879  	}
 87880  
 87881  	if (sig.extras && sig.extras.subjectUniqueID) {
 87882  		der.writeBuffer(sig.extras.subjectUniqueID, Local(2));
 87883  	}
 87884  
 87885  	if (altNames.length > 0 || subject.type === 'host' ||
 87886  	    (cert.purposes !== undefined && cert.purposes.length > 0) ||
 87887  	    (sig.extras && sig.extras.exts)) {
 87888  		der.startSequence(Local(3));
 87889  		der.startSequence();
 87890  
 87891  		var exts = [];
 87892  		if (cert.purposes !== undefined && cert.purposes.length > 0) {
 87893  			exts.push({
 87894  				oid: EXTS.basicConstraints,
 87895  				critical: true
 87896  			});
 87897  			exts.push({
 87898  				oid: EXTS.keyUsage,
 87899  				critical: true
 87900  			});
 87901  			exts.push({
 87902  				oid: EXTS.extKeyUsage,
 87903  				critical: true
 87904  			});
 87905  		}
 87906  		exts.push({ oid: EXTS.altName });
 87907  		if (sig.extras && sig.extras.exts)
 87908  			exts = sig.extras.exts;
 87909  
 87910  		for (var i = 0; i < exts.length; ++i) {
 87911  			der.startSequence();
 87912  			der.writeOID(exts[i].oid);
 87913  
 87914  			if (exts[i].critical !== undefined)
 87915  				der.writeBoolean(exts[i].critical);
 87916  
 87917  			if (exts[i].oid === EXTS.altName) {
 87918  				der.startSequence(asn1.Ber.OctetString);
 87919  				der.startSequence();
 87920  				if (subject.type === 'host') {
 87921  					der.writeString(subject.hostname,
 87922  					    Context(2));
 87923  				}
 87924  				for (var j = 0; j < altNames.length; ++j) {
 87925  					if (altNames[j].type === 'host') {
 87926  						der.writeString(
 87927  						    altNames[j].hostname,
 87928  						    ALTNAME.DNSName);
 87929  					} else if (altNames[j].type ===
 87930  					    'email') {
 87931  						der.writeString(
 87932  						    altNames[j].email,
 87933  						    ALTNAME.RFC822Name);
 87934  					} else {
 87935  						/*
 87936  						 * Encode anything else as a
 87937  						 * DN style name for now.
 87938  						 */
 87939  						der.startSequence(
 87940  						    ALTNAME.DirectoryName);
 87941  						altNames[j].toAsn1(der);
 87942  						der.endSequence();
 87943  					}
 87944  				}
 87945  				der.endSequence();
 87946  				der.endSequence();
 87947  			} else if (exts[i].oid === EXTS.basicConstraints) {
 87948  				der.startSequence(asn1.Ber.OctetString);
 87949  				der.startSequence();
 87950  				var ca = (cert.purposes.indexOf('ca') !== -1);
 87951  				var pathLen = exts[i].pathLen;
 87952  				der.writeBoolean(ca);
 87953  				if (pathLen !== undefined)
 87954  					der.writeInt(pathLen);
 87955  				der.endSequence();
 87956  				der.endSequence();
 87957  			} else if (exts[i].oid === EXTS.extKeyUsage) {
 87958  				der.startSequence(asn1.Ber.OctetString);
 87959  				der.startSequence();
 87960  				cert.purposes.forEach(function (purpose) {
 87961  					if (purpose === 'ca')
 87962  						return;
 87963  					if (KEYUSEBITS.indexOf(purpose) !== -1)
 87964  						return;
 87965  					var oid = purpose;
 87966  					if (EXTPURPOSE[purpose] !== undefined)
 87967  						oid = EXTPURPOSE[purpose];
 87968  					der.writeOID(oid);
 87969  				});
 87970  				der.endSequence();
 87971  				der.endSequence();
 87972  			} else if (exts[i].oid === EXTS.keyUsage) {
 87973  				der.startSequence(asn1.Ber.OctetString);
 87974  				/*
 87975  				 * If we parsed this certificate from a byte
 87976  				 * stream (i.e. we didn't generate it in sshpk)
 87977  				 * then we'll have a ".bits" property on the
 87978  				 * ext with the original raw byte contents.
 87979  				 *
 87980  				 * If we have this, use it here instead of
 87981  				 * regenerating it. This guarantees we output
 87982  				 * the same data we parsed, so signatures still
 87983  				 * validate.
 87984  				 */
 87985  				if (exts[i].bits !== undefined) {
 87986  					der.writeBuffer(exts[i].bits,
 87987  					    asn1.Ber.BitString);
 87988  				} else {
 87989  					var bits = writeBitField(cert.purposes,
 87990  					    KEYUSEBITS);
 87991  					der.writeBuffer(bits,
 87992  					    asn1.Ber.BitString);
 87993  				}
 87994  				der.endSequence();
 87995  			} else {
 87996  				der.writeBuffer(exts[i].data,
 87997  				    asn1.Ber.OctetString);
 87998  			}
 87999  
 88000  			der.endSequence();
 88001  		}
 88002  
 88003  		der.endSequence();
 88004  		der.endSequence();
 88005  	}
 88006  
 88007  	der.endSequence();
 88008  }
 88009  
 88010  /*
 88011   * Reads an ASN.1 BER bitfield out of the Buffer produced by doing
 88012   * `BerReader#readString(asn1.Ber.BitString)`. That function gives us the raw
 88013   * contents of the BitString tag, which is a count of unused bits followed by
 88014   * the bits as a right-padded byte string.
 88015   *
 88016   * `bits` is the Buffer, `bitIndex` should contain an array of string names
 88017   * for the bits in the string, ordered starting with bit #0 in the ASN.1 spec.
 88018   *
 88019   * Returns an array of Strings, the names of the bits that were set to 1.
 88020   */
 88021  function readBitField(bits, bitIndex) {
 88022  	var bitLen = 8 * (bits.length - 1) - bits[0];
 88023  	var setBits = {};
 88024  	for (var i = 0; i < bitLen; ++i) {
 88025  		var byteN = 1 + Math.floor(i / 8);
 88026  		var bit = 7 - (i % 8);
 88027  		var mask = 1 << bit;
 88028  		var bitVal = ((bits[byteN] & mask) !== 0);
 88029  		var name = bitIndex[i];
 88030  		if (bitVal && typeof (name) === 'string') {
 88031  			setBits[name] = true;
 88032  		}
 88033  	}
 88034  	return (Object.keys(setBits));
 88035  }
 88036  
 88037  /*
 88038   * `setBits` is an array of strings, containing the names for each bit that
 88039   * sould be set to 1. `bitIndex` is same as in `readBitField()`.
 88040   *
 88041   * Returns a Buffer, ready to be written out with `BerWriter#writeString()`.
 88042   */
 88043  function writeBitField(setBits, bitIndex) {
 88044  	var bitLen = bitIndex.length;
 88045  	var blen = Math.ceil(bitLen / 8);
 88046  	var unused = blen * 8 - bitLen;
 88047  	var bits = Buffer.alloc(1 + blen); // zero-filled
 88048  	bits[0] = unused;
 88049  	for (var i = 0; i < bitLen; ++i) {
 88050  		var byteN = 1 + Math.floor(i / 8);
 88051  		var bit = 7 - (i % 8);
 88052  		var mask = 1 << bit;
 88053  		var name = bitIndex[i];
 88054  		if (name === undefined)
 88055  			continue;
 88056  		var bitVal = (setBits.indexOf(name) !== -1);
 88057  		if (bitVal) {
 88058  			bits[byteN] |= mask;
 88059  		}
 88060  	}
 88061  	return (bits);
 88062  }
 88063  
 88064  
 88065  /***/ }),
 88066  /* 458 */
 88067  /***/ (function(module, exports, __webpack_require__) {
 88068  
 88069  "use strict";
 88070  // Copyright Joyent, Inc. and other Node contributors.
 88071  //
 88072  // Permission is hereby granted, free of charge, to any person obtaining a
 88073  // copy of this software and associated documentation files (the
 88074  // "Software"), to deal in the Software without restriction, including
 88075  // without limitation the rights to use, copy, modify, merge, publish,
 88076  // distribute, sublicense, and/or sell copies of the Software, and to permit
 88077  // persons to whom the Software is furnished to do so, subject to the
 88078  // following conditions:
 88079  //
 88080  // The above copyright notice and this permission notice shall be included
 88081  // in all copies or substantial portions of the Software.
 88082  //
 88083  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 88084  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 88085  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 88086  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 88087  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 88088  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 88089  // USE OR OTHER DEALINGS IN THE SOFTWARE.
 88090  
 88091  
 88092  
 88093  /*<replacement>*/
 88094  
 88095  var Buffer = __webpack_require__(45).Buffer;
 88096  /*</replacement>*/
 88097  
 88098  var isEncoding = Buffer.isEncoding || function (encoding) {
 88099    encoding = '' + encoding;
 88100    switch (encoding && encoding.toLowerCase()) {
 88101      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':
 88102        return true;
 88103      default:
 88104        return false;
 88105    }
 88106  };
 88107  
 88108  function _normalizeEncoding(enc) {
 88109    if (!enc) return 'utf8';
 88110    var retried;
 88111    while (true) {
 88112      switch (enc) {
 88113        case 'utf8':
 88114        case 'utf-8':
 88115          return 'utf8';
 88116        case 'ucs2':
 88117        case 'ucs-2':
 88118        case 'utf16le':
 88119        case 'utf-16le':
 88120          return 'utf16le';
 88121        case 'latin1':
 88122        case 'binary':
 88123          return 'latin1';
 88124        case 'base64':
 88125        case 'ascii':
 88126        case 'hex':
 88127          return enc;
 88128        default:
 88129          if (retried) return; // undefined
 88130          enc = ('' + enc).toLowerCase();
 88131          retried = true;
 88132      }
 88133    }
 88134  };
 88135  
 88136  // Do not cache `Buffer.isEncoding` when checking encoding names as some
 88137  // modules monkey-patch it to support additional encodings
 88138  function normalizeEncoding(enc) {
 88139    var nenc = _normalizeEncoding(enc);
 88140    if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
 88141    return nenc || enc;
 88142  }
 88143  
 88144  // StringDecoder provides an interface for efficiently splitting a series of
 88145  // buffers into a series of JS strings without breaking apart multi-byte
 88146  // characters.
 88147  exports.StringDecoder = StringDecoder;
 88148  function StringDecoder(encoding) {
 88149    this.encoding = normalizeEncoding(encoding);
 88150    var nb;
 88151    switch (this.encoding) {
 88152      case 'utf16le':
 88153        this.text = utf16Text;
 88154        this.end = utf16End;
 88155        nb = 4;
 88156        break;
 88157      case 'utf8':
 88158        this.fillLast = utf8FillLast;
 88159        nb = 4;
 88160        break;
 88161      case 'base64':
 88162        this.text = base64Text;
 88163        this.end = base64End;
 88164        nb = 3;
 88165        break;
 88166      default:
 88167        this.write = simpleWrite;
 88168        this.end = simpleEnd;
 88169        return;
 88170    }
 88171    this.lastNeed = 0;
 88172    this.lastTotal = 0;
 88173    this.lastChar = Buffer.allocUnsafe(nb);
 88174  }
 88175  
 88176  StringDecoder.prototype.write = function (buf) {
 88177    if (buf.length === 0) return '';
 88178    var r;
 88179    var i;
 88180    if (this.lastNeed) {
 88181      r = this.fillLast(buf);
 88182      if (r === undefined) return '';
 88183      i = this.lastNeed;
 88184      this.lastNeed = 0;
 88185    } else {
 88186      i = 0;
 88187    }
 88188    if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
 88189    return r || '';
 88190  };
 88191  
 88192  StringDecoder.prototype.end = utf8End;
 88193  
 88194  // Returns only complete characters in a Buffer
 88195  StringDecoder.prototype.text = utf8Text;
 88196  
 88197  // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
 88198  StringDecoder.prototype.fillLast = function (buf) {
 88199    if (this.lastNeed <= buf.length) {
 88200      buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
 88201      return this.lastChar.toString(this.encoding, 0, this.lastTotal);
 88202    }
 88203    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
 88204    this.lastNeed -= buf.length;
 88205  };
 88206  
 88207  // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
 88208  // continuation byte. If an invalid byte is detected, -2 is returned.
 88209  function utf8CheckByte(byte) {
 88210    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;
 88211    return byte >> 6 === 0x02 ? -1 : -2;
 88212  }
 88213  
 88214  // Checks at most 3 bytes at the end of a Buffer in order to detect an
 88215  // incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
 88216  // needed to complete the UTF-8 character (if applicable) are returned.
 88217  function utf8CheckIncomplete(self, buf, i) {
 88218    var j = buf.length - 1;
 88219    if (j < i) return 0;
 88220    var nb = utf8CheckByte(buf[j]);
 88221    if (nb >= 0) {
 88222      if (nb > 0) self.lastNeed = nb - 1;
 88223      return nb;
 88224    }
 88225    if (--j < i || nb === -2) return 0;
 88226    nb = utf8CheckByte(buf[j]);
 88227    if (nb >= 0) {
 88228      if (nb > 0) self.lastNeed = nb - 2;
 88229      return nb;
 88230    }
 88231    if (--j < i || nb === -2) return 0;
 88232    nb = utf8CheckByte(buf[j]);
 88233    if (nb >= 0) {
 88234      if (nb > 0) {
 88235        if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
 88236      }
 88237      return nb;
 88238    }
 88239    return 0;
 88240  }
 88241  
 88242  // Validates as many continuation bytes for a multi-byte UTF-8 character as
 88243  // needed or are available. If we see a non-continuation byte where we expect
 88244  // one, we "replace" the validated continuation bytes we've seen so far with
 88245  // a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding
 88246  // behavior. The continuation byte check is included three times in the case
 88247  // where all of the continuation bytes for a character exist in the same buffer.
 88248  // It is also done this way as a slight performance increase instead of using a
 88249  // loop.
 88250  function utf8CheckExtraBytes(self, buf, p) {
 88251    if ((buf[0] & 0xC0) !== 0x80) {
 88252      self.lastNeed = 0;
 88253      return '\ufffd';
 88254    }
 88255    if (self.lastNeed > 1 && buf.length > 1) {
 88256      if ((buf[1] & 0xC0) !== 0x80) {
 88257        self.lastNeed = 1;
 88258        return '\ufffd';
 88259      }
 88260      if (self.lastNeed > 2 && buf.length > 2) {
 88261        if ((buf[2] & 0xC0) !== 0x80) {
 88262          self.lastNeed = 2;
 88263          return '\ufffd';
 88264        }
 88265      }
 88266    }
 88267  }
 88268  
 88269  // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
 88270  function utf8FillLast(buf) {
 88271    var p = this.lastTotal - this.lastNeed;
 88272    var r = utf8CheckExtraBytes(this, buf, p);
 88273    if (r !== undefined) return r;
 88274    if (this.lastNeed <= buf.length) {
 88275      buf.copy(this.lastChar, p, 0, this.lastNeed);
 88276      return this.lastChar.toString(this.encoding, 0, this.lastTotal);
 88277    }
 88278    buf.copy(this.lastChar, p, 0, buf.length);
 88279    this.lastNeed -= buf.length;
 88280  }
 88281  
 88282  // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
 88283  // partial character, the character's bytes are buffered until the required
 88284  // number of bytes are available.
 88285  function utf8Text(buf, i) {
 88286    var total = utf8CheckIncomplete(this, buf, i);
 88287    if (!this.lastNeed) return buf.toString('utf8', i);
 88288    this.lastTotal = total;
 88289    var end = buf.length - (total - this.lastNeed);
 88290    buf.copy(this.lastChar, 0, end);
 88291    return buf.toString('utf8', i, end);
 88292  }
 88293  
 88294  // For UTF-8, a replacement character is added when ending on a partial
 88295  // character.
 88296  function utf8End(buf) {
 88297    var r = buf && buf.length ? this.write(buf) : '';
 88298    if (this.lastNeed) return r + '\ufffd';
 88299    return r;
 88300  }
 88301  
 88302  // UTF-16LE typically needs two bytes per character, but even if we have an even
 88303  // number of bytes available, we need to check if we end on a leading/high
 88304  // surrogate. In that case, we need to wait for the next two bytes in order to
 88305  // decode the last character properly.
 88306  function utf16Text(buf, i) {
 88307    if ((buf.length - i) % 2 === 0) {
 88308      var r = buf.toString('utf16le', i);
 88309      if (r) {
 88310        var c = r.charCodeAt(r.length - 1);
 88311        if (c >= 0xD800 && c <= 0xDBFF) {
 88312          this.lastNeed = 2;
 88313          this.lastTotal = 4;
 88314          this.lastChar[0] = buf[buf.length - 2];
 88315          this.lastChar[1] = buf[buf.length - 1];
 88316          return r.slice(0, -1);
 88317        }
 88318      }
 88319      return r;
 88320    }
 88321    this.lastNeed = 1;
 88322    this.lastTotal = 2;
 88323    this.lastChar[0] = buf[buf.length - 1];
 88324    return buf.toString('utf16le', i, buf.length - 1);
 88325  }
 88326  
 88327  // For UTF-16LE we do not explicitly append special replacement characters if we
 88328  // end on a partial character, we simply let v8 handle that.
 88329  function utf16End(buf) {
 88330    var r = buf && buf.length ? this.write(buf) : '';
 88331    if (this.lastNeed) {
 88332      var end = this.lastTotal - this.lastNeed;
 88333      return r + this.lastChar.toString('utf16le', 0, end);
 88334    }
 88335    return r;
 88336  }
 88337  
 88338  function base64Text(buf, i) {
 88339    var n = (buf.length - i) % 3;
 88340    if (n === 0) return buf.toString('base64', i);
 88341    this.lastNeed = 3 - n;
 88342    this.lastTotal = 3;
 88343    if (n === 1) {
 88344      this.lastChar[0] = buf[buf.length - 1];
 88345    } else {
 88346      this.lastChar[0] = buf[buf.length - 2];
 88347      this.lastChar[1] = buf[buf.length - 1];
 88348    }
 88349    return buf.toString('base64', i, buf.length - n);
 88350  }
 88351  
 88352  function base64End(buf) {
 88353    var r = buf && buf.length ? this.write(buf) : '';
 88354    if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
 88355    return r;
 88356  }
 88357  
 88358  // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
 88359  function simpleWrite(buf) {
 88360    return buf.toString(this.encoding);
 88361  }
 88362  
 88363  function simpleEnd(buf) {
 88364    return buf && buf.length ? this.write(buf) : '';
 88365  }
 88366  
 88367  /***/ }),
 88368  /* 459 */
 88369  /***/ (function(module, exports, __webpack_require__) {
 88370  
 88371  var toBuffer = __webpack_require__(462)
 88372  var alloc = __webpack_require__(374)
 88373  
 88374  var ZEROS = '0000000000000000000'
 88375  var SEVENS = '7777777777777777777'
 88376  var ZERO_OFFSET = '0'.charCodeAt(0)
 88377  var USTAR = 'ustar\x0000'
 88378  var MASK = parseInt('7777', 8)
 88379  
 88380  var clamp = function (index, len, defaultValue) {
 88381    if (typeof index !== 'number') return defaultValue
 88382    index = ~~index // Coerce to integer.
 88383    if (index >= len) return len
 88384    if (index >= 0) return index
 88385    index += len
 88386    if (index >= 0) return index
 88387    return 0
 88388  }
 88389  
 88390  var toType = function (flag) {
 88391    switch (flag) {
 88392      case 0:
 88393        return 'file'
 88394      case 1:
 88395        return 'link'
 88396      case 2:
 88397        return 'symlink'
 88398      case 3:
 88399        return 'character-device'
 88400      case 4:
 88401        return 'block-device'
 88402      case 5:
 88403        return 'directory'
 88404      case 6:
 88405        return 'fifo'
 88406      case 7:
 88407        return 'contiguous-file'
 88408      case 72:
 88409        return 'pax-header'
 88410      case 55:
 88411        return 'pax-global-header'
 88412      case 27:
 88413        return 'gnu-long-link-path'
 88414      case 28:
 88415      case 30:
 88416        return 'gnu-long-path'
 88417    }
 88418  
 88419    return null
 88420  }
 88421  
 88422  var toTypeflag = function (flag) {
 88423    switch (flag) {
 88424      case 'file':
 88425        return 0
 88426      case 'link':
 88427        return 1
 88428      case 'symlink':
 88429        return 2
 88430      case 'character-device':
 88431        return 3
 88432      case 'block-device':
 88433        return 4
 88434      case 'directory':
 88435        return 5
 88436      case 'fifo':
 88437        return 6
 88438      case 'contiguous-file':
 88439        return 7
 88440      case 'pax-header':
 88441        return 72
 88442    }
 88443  
 88444    return 0
 88445  }
 88446  
 88447  var indexOf = function (block, num, offset, end) {
 88448    for (; offset < end; offset++) {
 88449      if (block[offset] === num) return offset
 88450    }
 88451    return end
 88452  }
 88453  
 88454  var cksum = function (block) {
 88455    var sum = 8 * 32
 88456    for (var i = 0; i < 148; i++) sum += block[i]
 88457    for (var j = 156; j < 512; j++) sum += block[j]
 88458    return sum
 88459  }
 88460  
 88461  var encodeOct = function (val, n) {
 88462    val = val.toString(8)
 88463    if (val.length > n) return SEVENS.slice(0, n) + ' '
 88464    else return ZEROS.slice(0, n - val.length) + val + ' '
 88465  }
 88466  
 88467  /* Copied from the node-tar repo and modified to meet
 88468   * tar-stream coding standard.
 88469   *
 88470   * Source: https://github.com/npm/node-tar/blob/51b6627a1f357d2eb433e7378e5f05e83b7aa6cd/lib/header.js#L349
 88471   */
 88472  function parse256 (buf) {
 88473    // first byte MUST be either 80 or FF
 88474    // 80 for positive, FF for 2's comp
 88475    var positive
 88476    if (buf[0] === 0x80) positive = true
 88477    else if (buf[0] === 0xFF) positive = false
 88478    else return null
 88479  
 88480    // build up a base-256 tuple from the least sig to the highest
 88481    var zero = false
 88482    var tuple = []
 88483    for (var i = buf.length - 1; i > 0; i--) {
 88484      var byte = buf[i]
 88485      if (positive) tuple.push(byte)
 88486      else if (zero && byte === 0) tuple.push(0)
 88487      else if (zero) {
 88488        zero = false
 88489        tuple.push(0x100 - byte)
 88490      } else tuple.push(0xFF - byte)
 88491    }
 88492  
 88493    var sum = 0
 88494    var l = tuple.length
 88495    for (i = 0; i < l; i++) {
 88496      sum += tuple[i] * Math.pow(256, i)
 88497    }
 88498  
 88499    return positive ? sum : -1 * sum
 88500  }
 88501  
 88502  var decodeOct = function (val, offset, length) {
 88503    val = val.slice(offset, offset + length)
 88504    offset = 0
 88505  
 88506    // If prefixed with 0x80 then parse as a base-256 integer
 88507    if (val[offset] & 0x80) {
 88508      return parse256(val)
 88509    } else {
 88510      // Older versions of tar can prefix with spaces
 88511      while (offset < val.length && val[offset] === 32) offset++
 88512      var end = clamp(indexOf(val, 32, offset, val.length), val.length, val.length)
 88513      while (offset < end && val[offset] === 0) offset++
 88514      if (end === offset) return 0
 88515      return parseInt(val.slice(offset, end).toString(), 8)
 88516    }
 88517  }
 88518  
 88519  var decodeStr = function (val, offset, length, encoding) {
 88520    return val.slice(offset, indexOf(val, 0, offset, offset + length)).toString(encoding)
 88521  }
 88522  
 88523  var addLength = function (str) {
 88524    var len = Buffer.byteLength(str)
 88525    var digits = Math.floor(Math.log(len) / Math.log(10)) + 1
 88526    if (len + digits >= Math.pow(10, digits)) digits++
 88527  
 88528    return (len + digits) + str
 88529  }
 88530  
 88531  exports.decodeLongPath = function (buf, encoding) {
 88532    return decodeStr(buf, 0, buf.length, encoding)
 88533  }
 88534  
 88535  exports.encodePax = function (opts) { // TODO: encode more stuff in pax
 88536    var result = ''
 88537    if (opts.name) result += addLength(' path=' + opts.name + '\n')
 88538    if (opts.linkname) result += addLength(' linkpath=' + opts.linkname + '\n')
 88539    var pax = opts.pax
 88540    if (pax) {
 88541      for (var key in pax) {
 88542        result += addLength(' ' + key + '=' + pax[key] + '\n')
 88543      }
 88544    }
 88545    return toBuffer(result)
 88546  }
 88547  
 88548  exports.decodePax = function (buf) {
 88549    var result = {}
 88550  
 88551    while (buf.length) {
 88552      var i = 0
 88553      while (i < buf.length && buf[i] !== 32) i++
 88554      var len = parseInt(buf.slice(0, i).toString(), 10)
 88555      if (!len) return result
 88556  
 88557      var b = buf.slice(i + 1, len - 1).toString()
 88558      var keyIndex = b.indexOf('=')
 88559      if (keyIndex === -1) return result
 88560      result[b.slice(0, keyIndex)] = b.slice(keyIndex + 1)
 88561  
 88562      buf = buf.slice(len)
 88563    }
 88564  
 88565    return result
 88566  }
 88567  
 88568  exports.encode = function (opts) {
 88569    var buf = alloc(512)
 88570    var name = opts.name
 88571    var prefix = ''
 88572  
 88573    if (opts.typeflag === 5 && name[name.length - 1] !== '/') name += '/'
 88574    if (Buffer.byteLength(name) !== name.length) return null // utf-8
 88575  
 88576    while (Buffer.byteLength(name) > 100) {
 88577      var i = name.indexOf('/')
 88578      if (i === -1) return null
 88579      prefix += prefix ? '/' + name.slice(0, i) : name.slice(0, i)
 88580      name = name.slice(i + 1)
 88581    }
 88582  
 88583    if (Buffer.byteLength(name) > 100 || Buffer.byteLength(prefix) > 155) return null
 88584    if (opts.linkname && Buffer.byteLength(opts.linkname) > 100) return null
 88585  
 88586    buf.write(name)
 88587    buf.write(encodeOct(opts.mode & MASK, 6), 100)
 88588    buf.write(encodeOct(opts.uid, 6), 108)
 88589    buf.write(encodeOct(opts.gid, 6), 116)
 88590    buf.write(encodeOct(opts.size, 11), 124)
 88591    buf.write(encodeOct((opts.mtime.getTime() / 1000) | 0, 11), 136)
 88592  
 88593    buf[156] = ZERO_OFFSET + toTypeflag(opts.type)
 88594  
 88595    if (opts.linkname) buf.write(opts.linkname, 157)
 88596  
 88597    buf.write(USTAR, 257)
 88598    if (opts.uname) buf.write(opts.uname, 265)
 88599    if (opts.gname) buf.write(opts.gname, 297)
 88600    buf.write(encodeOct(opts.devmajor || 0, 6), 329)
 88601    buf.write(encodeOct(opts.devminor || 0, 6), 337)
 88602  
 88603    if (prefix) buf.write(prefix, 345)
 88604  
 88605    buf.write(encodeOct(cksum(buf), 6), 148)
 88606  
 88607    return buf
 88608  }
 88609  
 88610  exports.decode = function (buf, filenameEncoding) {
 88611    var typeflag = buf[156] === 0 ? 0 : buf[156] - ZERO_OFFSET
 88612  
 88613    var name = decodeStr(buf, 0, 100, filenameEncoding)
 88614    var mode = decodeOct(buf, 100, 8)
 88615    var uid = decodeOct(buf, 108, 8)
 88616    var gid = decodeOct(buf, 116, 8)
 88617    var size = decodeOct(buf, 124, 12)
 88618    var mtime = decodeOct(buf, 136, 12)
 88619    var type = toType(typeflag)
 88620    var linkname = buf[157] === 0 ? null : decodeStr(buf, 157, 100, filenameEncoding)
 88621    var uname = decodeStr(buf, 265, 32)
 88622    var gname = decodeStr(buf, 297, 32)
 88623    var devmajor = decodeOct(buf, 329, 8)
 88624    var devminor = decodeOct(buf, 337, 8)
 88625  
 88626    if (buf[345]) name = decodeStr(buf, 345, 155, filenameEncoding) + '/' + name
 88627  
 88628    // to support old tar versions that use trailing / to indicate dirs
 88629    if (typeflag === 0 && name && name[name.length - 1] === '/') typeflag = 5
 88630  
 88631    var c = cksum(buf)
 88632  
 88633    // checksum is still initial value if header was null.
 88634    if (c === 8 * 32) return null
 88635  
 88636    // valid checksum
 88637    if (c !== decodeOct(buf, 148, 8)) throw new Error('Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?')
 88638  
 88639    return {
 88640      name: name,
 88641      mode: mode,
 88642      uid: uid,
 88643      gid: gid,
 88644      size: size,
 88645      mtime: new Date(1000 * mtime),
 88646      type: type,
 88647      linkname: linkname,
 88648      uname: uname,
 88649      gname: gname,
 88650      devmajor: devmajor,
 88651      devminor: devminor
 88652    }
 88653  }
 88654  
 88655  
 88656  /***/ }),
 88657  /* 460 */
 88658  /***/ (function(module, exports, __webpack_require__) {
 88659  
 88660  exports.extract = __webpack_require__(949)
 88661  exports.pack = __webpack_require__(950)
 88662  
 88663  
 88664  /***/ }),
 88665  /* 461 */
 88666  /***/ (function(module, exports, __webpack_require__) {
 88667  
 88668  var Transform = __webpack_require__(794)
 88669    , inherits  = __webpack_require__(3).inherits
 88670    , xtend     = __webpack_require__(465)
 88671  
 88672  function DestroyableTransform(opts) {
 88673    Transform.call(this, opts)
 88674    this._destroyed = false
 88675  }
 88676  
 88677  inherits(DestroyableTransform, Transform)
 88678  
 88679  DestroyableTransform.prototype.destroy = function(err) {
 88680    if (this._destroyed) return
 88681    this._destroyed = true
 88682    
 88683    var self = this
 88684    process.nextTick(function() {
 88685      if (err)
 88686        self.emit('error', err)
 88687      self.emit('close')
 88688    })
 88689  }
 88690  
 88691  // a noop _transform function
 88692  function noop (chunk, enc, callback) {
 88693    callback(null, chunk)
 88694  }
 88695  
 88696  
 88697  // create a new export function, used by both the main export and
 88698  // the .ctor export, contains common logic for dealing with arguments
 88699  function through2 (construct) {
 88700    return function (options, transform, flush) {
 88701      if (typeof options == 'function') {
 88702        flush     = transform
 88703        transform = options
 88704        options   = {}
 88705      }
 88706  
 88707      if (typeof transform != 'function')
 88708        transform = noop
 88709  
 88710      if (typeof flush != 'function')
 88711        flush = null
 88712  
 88713      return construct(options, transform, flush)
 88714    }
 88715  }
 88716  
 88717  
 88718  // main export, just make me a transform stream!
 88719  module.exports = through2(function (options, transform, flush) {
 88720    var t2 = new DestroyableTransform(options)
 88721  
 88722    t2._transform = transform
 88723  
 88724    if (flush)
 88725      t2._flush = flush
 88726  
 88727    return t2
 88728  })
 88729  
 88730  
 88731  // make me a reusable prototype that I can `new`, or implicitly `new`
 88732  // with a constructor call
 88733  module.exports.ctor = through2(function (options, transform, flush) {
 88734    function Through2 (override) {
 88735      if (!(this instanceof Through2))
 88736        return new Through2(override)
 88737  
 88738      this.options = xtend(options, override)
 88739  
 88740      DestroyableTransform.call(this, this.options)
 88741    }
 88742  
 88743    inherits(Through2, DestroyableTransform)
 88744  
 88745    Through2.prototype._transform = transform
 88746  
 88747    if (flush)
 88748      Through2.prototype._flush = flush
 88749  
 88750    return Through2
 88751  })
 88752  
 88753  
 88754  module.exports.obj = through2(function (options, transform, flush) {
 88755    var t2 = new DestroyableTransform(xtend({ objectMode: true, highWaterMark: 16 }, options))
 88756  
 88757    t2._transform = transform
 88758  
 88759    if (flush)
 88760      t2._flush = flush
 88761  
 88762    return t2
 88763  })
 88764  
 88765  
 88766  /***/ }),
 88767  /* 462 */
 88768  /***/ (function(module, exports) {
 88769  
 88770  module.exports = toBuffer
 88771  
 88772  var makeBuffer = Buffer.from && Buffer.from !== Uint8Array.from ? Buffer.from : bufferFrom
 88773  
 88774  function bufferFrom (buf, enc) {
 88775    return new Buffer(buf, enc)
 88776  }
 88777  
 88778  function toBuffer (buf, enc) {
 88779    if (Buffer.isBuffer(buf)) return buf
 88780    if (typeof buf === 'string') return makeBuffer(buf, enc)
 88781    if (Array.isArray(buf)) return makeBuffer(buf)
 88782    throw new Error('Input should be a buffer or a string')
 88783  }
 88784  
 88785  
 88786  /***/ }),
 88787  /* 463 */
 88788  /***/ (function(module, exports) {
 88789  
 88790  /**
 88791   * Convert array of 16 byte values to UUID string format of the form:
 88792   * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
 88793   */
 88794  var byteToHex = [];
 88795  for (var i = 0; i < 256; ++i) {
 88796    byteToHex[i] = (i + 0x100).toString(16).substr(1);
 88797  }
 88798  
 88799  function bytesToUuid(buf, offset) {
 88800    var i = offset || 0;
 88801    var bth = byteToHex;
 88802    // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4
 88803    return ([bth[buf[i++]], bth[buf[i++]], 
 88804  	bth[buf[i++]], bth[buf[i++]], '-',
 88805  	bth[buf[i++]], bth[buf[i++]], '-',
 88806  	bth[buf[i++]], bth[buf[i++]], '-',
 88807  	bth[buf[i++]], bth[buf[i++]], '-',
 88808  	bth[buf[i++]], bth[buf[i++]],
 88809  	bth[buf[i++]], bth[buf[i++]],
 88810  	bth[buf[i++]], bth[buf[i++]]]).join('');
 88811  }
 88812  
 88813  module.exports = bytesToUuid;
 88814  
 88815  
 88816  /***/ }),
 88817  /* 464 */
 88818  /***/ (function(module, exports, __webpack_require__) {
 88819  
 88820  // Unique ID creation requires a high quality random # generator.  In node.js
 88821  // this is pretty straight-forward - we use the crypto API.
 88822  
 88823  var crypto = __webpack_require__(11);
 88824  
 88825  module.exports = function nodeRNG() {
 88826    return crypto.randomBytes(16);
 88827  };
 88828  
 88829  
 88830  /***/ }),
 88831  /* 465 */
 88832  /***/ (function(module, exports) {
 88833  
 88834  module.exports = extend
 88835  
 88836  var hasOwnProperty = Object.prototype.hasOwnProperty;
 88837  
 88838  function extend() {
 88839      var target = {}
 88840  
 88841      for (var i = 0; i < arguments.length; i++) {
 88842          var source = arguments[i]
 88843  
 88844          for (var key in source) {
 88845              if (hasOwnProperty.call(source, key)) {
 88846                  target[key] = source[key]
 88847              }
 88848          }
 88849      }
 88850  
 88851      return target
 88852  }
 88853  
 88854  
 88855  /***/ }),
 88856  /* 466 */
 88857  /***/ (function(module, exports) {
 88858  
 88859  module.exports = require("constants");
 88860  
 88861  /***/ }),
 88862  /* 467 */
 88863  /***/ (function(module, exports) {
 88864  
 88865  module.exports = require("tls");
 88866  
 88867  /***/ }),
 88868  /* 468 */
 88869  /***/ (function(module, exports, __webpack_require__) {
 88870  
 88871  "use strict";
 88872  
 88873  
 88874  Object.defineProperty(exports, "__esModule", {
 88875    value: true
 88876  });
 88877  exports.default = handleSignals;
 88878  
 88879  var _child;
 88880  
 88881  function _load_child() {
 88882    return _child = __webpack_require__(50);
 88883  }
 88884  
 88885  function forwardSignalAndExit(signal) {
 88886    (0, (_child || _load_child()).forwardSignalToSpawnedProcesses)(signal);
 88887    // We want to exit immediately here since `SIGTERM` means that
 88888    // If we lose stdout messages due to abrupt exit, shoot the messenger?
 88889    process.exit(1); // eslint-disable-line no-process-exit
 88890  }
 88891  function handleSignals() {
 88892    process.on('SIGTERM', () => {
 88893      forwardSignalAndExit('SIGTERM');
 88894    });
 88895  }
 88896  
 88897  /***/ }),
 88898  /* 469 */
 88899  /***/ (function(module, exports) {
 88900  
 88901  
 88902  var defaultConfig = {
 88903    uncaughtException: false,
 88904    SIGINT: true,
 88905    SIGTERM: true,
 88906    SIGQUIT: true
 88907  }
 88908  
 88909  var DEBUG = false
 88910  
 88911  function ON_DEATH (callback) {
 88912    var handlers = [];
 88913    Object.keys(defaultConfig).forEach(function(key) {
 88914      var val = defaultConfig[key]
 88915      var handler = null;
 88916      if (val) {
 88917        if (DEBUG) {
 88918          handler = function() {
 88919            var args = Array.prototype.slice.call(arguments, 0)
 88920            args.unshift(key)
 88921            console.log('Trapped ' + key)
 88922            callback.apply(null, args)
 88923          };
 88924          process.on(key, handler)
 88925        } else {
 88926          handler = function() {
 88927            var args = Array.prototype.slice.call(arguments, 0)
 88928            args.unshift(key)
 88929            callback.apply(null, args)
 88930          }
 88931          process.on(key, handler)
 88932        }
 88933        handlers.push([key, handler])
 88934      }
 88935    })
 88936    return function OFF_DEATH() {
 88937      handlers.forEach(function (args) {
 88938        var key = args[0];
 88939        var handler = args[1];
 88940        process.removeListener(key, handler);
 88941      })
 88942    }
 88943  }
 88944  
 88945  module.exports = function (arg) {
 88946    if (typeof arg === 'object') {
 88947      if (arg['debug'])
 88948        DEBUG = arg.debug
 88949      if (arg['DEBUG'])
 88950        DEBUG = arg.DEBUG
 88951      delete arg.debug; delete arg.DEBUG;
 88952  
 88953      Object.keys(arg).forEach(function(key) {
 88954        defaultConfig[key] = arg[key]
 88955      })
 88956  
 88957      if (DEBUG)
 88958        console.log('ON_DEATH: debug mode enabled for pid [%d]', process.pid)
 88959  
 88960      return ON_DEATH
 88961     } else if (typeof arg === 'function') {
 88962      return ON_DEATH(arg)
 88963    }
 88964  }
 88965  
 88966  
 88967  
 88968  /***/ }),
 88969  /* 470 */
 88970  /***/ (function(module, exports, __webpack_require__) {
 88971  
 88972  "use strict";
 88973  
 88974  var util = __webpack_require__(3);
 88975  var onExit = __webpack_require__(451);
 88976  var currentlyUnhandled = __webpack_require__(597);
 88977  
 88978  var installed = false;
 88979  
 88980  module.exports = function (log) {
 88981  	if (installed) {
 88982  		return;
 88983  	}
 88984  
 88985  	installed = true;
 88986  
 88987  	log = log || console.error;
 88988  
 88989  	var listUnhandled = currentlyUnhandled();
 88990  
 88991  	onExit(function () {
 88992  		var unhandledRejections = listUnhandled();
 88993  
 88994  		if (unhandledRejections.length > 0) {
 88995  			unhandledRejections.forEach(function (x) {
 88996  				var err = x.reason;
 88997  
 88998  				if (!(err instanceof Error)) {
 88999  					err = new Error('Promise rejected with value: ' + util.inspect(err));
 89000  				}
 89001  
 89002  				log(err.stack);
 89003  			});
 89004  
 89005  			process.exitCode = 1;
 89006  		}
 89007  	});
 89008  };
 89009  
 89010  
 89011  /***/ }),
 89012  /* 471 */
 89013  /***/ (function(module, exports, __webpack_require__) {
 89014  
 89015  "use strict";
 89016  
 89017  
 89018  const fs = __webpack_require__(385);
 89019  const path = __webpack_require__(0);
 89020  const retry = __webpack_require__(819);
 89021  const syncFs = __webpack_require__(779);
 89022  
 89023  const locks = {};
 89024  
 89025  function getLockFile(file) {
 89026      return `${file}.lock`;
 89027  }
 89028  
 89029  function canonicalPath(file, options, callback) {
 89030      if (!options.realpath) {
 89031          return callback(null, path.resolve(file));
 89032      }
 89033  
 89034      // Use realpath to resolve symlinks
 89035      // It also resolves relative paths
 89036      options.fs.realpath(file, callback);
 89037  }
 89038  
 89039  function acquireLock(file, options, callback) {
 89040      // Use mkdir to create the lockfile (atomic operation)
 89041      options.fs.mkdir(getLockFile(file), (err) => {
 89042          // If successful, we are done
 89043          if (!err) {
 89044              return callback();
 89045          }
 89046  
 89047          // If error is not EEXIST then some other error occurred while locking
 89048          if (err.code !== 'EEXIST') {
 89049              return callback(err);
 89050          }
 89051  
 89052          // Otherwise, check if lock is stale by analyzing the file mtime
 89053          if (options.stale <= 0) {
 89054              return callback(Object.assign(new Error('Lock file is already being hold'), { code: 'ELOCKED', file }));
 89055          }
 89056  
 89057          options.fs.stat(getLockFile(file), (err, stat) => {
 89058              if (err) {
 89059                  // Retry if the lockfile has been removed (meanwhile)
 89060                  // Skip stale check to avoid recursiveness
 89061                  if (err.code === 'ENOENT') {
 89062                      return acquireLock(file, Object.assign({}, options, { stale: 0 }), callback);
 89063                  }
 89064  
 89065                  return callback(err);
 89066              }
 89067  
 89068              if (!isLockStale(stat, options)) {
 89069                  return callback(Object.assign(new Error('Lock file is already being hold'), { code: 'ELOCKED', file }));
 89070              }
 89071  
 89072              // If it's stale, remove it and try again!
 89073              // Skip stale check to avoid recursiveness
 89074              removeLock(file, options, (err) => {
 89075                  if (err) {
 89076                      return callback(err);
 89077                  }
 89078  
 89079                  acquireLock(file, Object.assign({}, options, { stale: 0 }), callback);
 89080              });
 89081          });
 89082      });
 89083  }
 89084  
 89085  function isLockStale(stat, options) {
 89086      return stat.mtime.getTime() < Date.now() - options.stale;
 89087  }
 89088  
 89089  function removeLock(file, options, callback) {
 89090      // Remove lockfile, ignoring ENOENT errors
 89091      options.fs.rmdir(getLockFile(file), (err) => {
 89092          if (err && err.code !== 'ENOENT') {
 89093              return callback(err);
 89094          }
 89095  
 89096          callback();
 89097      });
 89098  }
 89099  
 89100  function updateLock(file, options) {
 89101      const lock = locks[file];
 89102  
 89103      /* istanbul ignore next */
 89104      if (lock.updateTimeout) {
 89105          return;
 89106      }
 89107  
 89108      lock.updateDelay = lock.updateDelay || options.update;
 89109      lock.updateTimeout = setTimeout(() => {
 89110          const mtime = Date.now() / 1000;
 89111  
 89112          lock.updateTimeout = null;
 89113  
 89114          options.fs.utimes(getLockFile(file), mtime, mtime, (err) => {
 89115              // Ignore if the lock was released
 89116              if (lock.released) {
 89117                  return;
 89118              }
 89119  
 89120              // Verify if we are within the stale threshold
 89121              if (lock.lastUpdate <= Date.now() - options.stale &&
 89122                  lock.lastUpdate > Date.now() - options.stale * 2) {
 89123                  return compromisedLock(file, lock, Object.assign(new Error(lock.updateError || 'Unable to update lock within the stale \
 89124  threshold'), { code: 'ECOMPROMISED' }));
 89125              }
 89126  
 89127              // If the file is older than (stale * 2), we assume the clock is moved manually,
 89128              // which we consider a valid case
 89129  
 89130              // If it failed to update the lockfile, keep trying unless
 89131              // the lockfile was deleted!
 89132              if (err) {
 89133                  if (err.code === 'ENOENT') {
 89134                      return compromisedLock(file, lock, Object.assign(err, { code: 'ECOMPROMISED' }));
 89135                  }
 89136  
 89137                  lock.updateError = err;
 89138                  lock.updateDelay = 1000;
 89139                  return updateLock(file, options);
 89140              }
 89141  
 89142              // All ok, keep updating..
 89143              lock.lastUpdate = Date.now();
 89144              lock.updateError = null;
 89145              lock.updateDelay = null;
 89146              updateLock(file, options);
 89147          });
 89148      }, lock.updateDelay);
 89149  
 89150      // Unref the timer so that the nodejs process can exit freely
 89151      // This is safe because all acquired locks will be automatically released
 89152      // on process exit
 89153  
 89154      // We first check that `lock.updateTimeout.unref` exists because some users
 89155      // may be using this module outside of NodeJS (e.g., in an electron app), 
 89156      // and in those cases `setTimeout` return an integer.
 89157      if (lock.updateTimeout.unref) {
 89158          lock.updateTimeout.unref();
 89159      }
 89160  }
 89161  
 89162  function compromisedLock(file, lock, err) {
 89163      lock.released = true;                                    // Signal the lock has been released
 89164      /* istanbul ignore next */
 89165      lock.updateTimeout && clearTimeout(lock.updateTimeout);  // Cancel lock mtime update
 89166  
 89167      if (locks[file] === lock) {
 89168          delete locks[file];
 89169      }
 89170  
 89171      lock.compromised(err);
 89172  }
 89173  
 89174  // -----------------------------------------
 89175  
 89176  function lock(file, options, compromised, callback) {
 89177      if (typeof options === 'function') {
 89178          callback = compromised;
 89179          compromised = options;
 89180          options = null;
 89181      }
 89182  
 89183      if (!callback) {
 89184          callback = compromised;
 89185          compromised = null;
 89186      }
 89187  
 89188      options = Object.assign({
 89189          stale: 10000,
 89190          update: null,
 89191          realpath: true,
 89192          retries: 0,
 89193          fs,
 89194      }, options);
 89195  
 89196      options.retries = options.retries || 0;
 89197      options.retries = typeof options.retries === 'number' ? { retries: options.retries } : options.retries;
 89198      options.stale = Math.max(options.stale || 0, 2000);
 89199      options.update = options.update == null ? options.stale / 2 : options.update || 0;
 89200      options.update = Math.max(Math.min(options.update, options.stale / 2), 1000);
 89201      compromised = compromised || function (err) { throw err; };
 89202  
 89203      // Resolve to a canonical file path
 89204      canonicalPath(file, options, (err, file) => {
 89205          if (err) {
 89206              return callback(err);
 89207          }
 89208  
 89209          // Attempt to acquire the lock
 89210          const operation = retry.operation(options.retries);
 89211  
 89212          operation.attempt(() => {
 89213              acquireLock(file, options, (err) => {
 89214                  if (operation.retry(err)) {
 89215                      return;
 89216                  }
 89217  
 89218                  if (err) {
 89219                      return callback(operation.mainError());
 89220                  }
 89221  
 89222                  // We now own the lock
 89223                  const lock = locks[file] = {
 89224                      options,
 89225                      compromised,
 89226                      lastUpdate: Date.now(),
 89227                  };
 89228  
 89229                  // We must keep the lock fresh to avoid staleness
 89230                  updateLock(file, options);
 89231  
 89232                  callback(null, (releasedCallback) => {
 89233                      if (lock.released) {
 89234                          return releasedCallback &&
 89235                              releasedCallback(Object.assign(new Error('Lock is already released'), { code: 'ERELEASED' }));
 89236                      }
 89237  
 89238                      // Not necessary to use realpath twice when unlocking
 89239                      unlock(file, Object.assign({}, options, { realpath: false }), releasedCallback);
 89240                  });
 89241              });
 89242          });
 89243      });
 89244  }
 89245  
 89246  function unlock(file, options, callback) {
 89247      if (typeof options === 'function') {
 89248          callback = options;
 89249          options = null;
 89250      }
 89251  
 89252      options = Object.assign({
 89253          fs,
 89254          realpath: true,
 89255      }, options);
 89256  
 89257      callback = callback || function () {};
 89258  
 89259      // Resolve to a canonical file path
 89260      canonicalPath(file, options, (err, file) => {
 89261          if (err) {
 89262              return callback(err);
 89263          }
 89264  
 89265          // Skip if the lock is not acquired
 89266          const lock = locks[file];
 89267  
 89268          if (!lock) {
 89269              return callback(Object.assign(new Error('Lock is not acquired/owned by you'), { code: 'ENOTACQUIRED' }));
 89270          }
 89271  
 89272          lock.updateTimeout && clearTimeout(lock.updateTimeout);  // Cancel lock mtime update
 89273          lock.released = true;                                    // Signal the lock has been released
 89274          delete locks[file];                                      // Delete from locks
 89275  
 89276          removeLock(file, options, callback);
 89277      });
 89278  }
 89279  
 89280  function lockSync(file, options, compromised) {
 89281      if (typeof options === 'function') {
 89282          compromised = options;
 89283          options = null;
 89284      }
 89285  
 89286      options = options || {};
 89287      options.fs = syncFs(options.fs || fs);
 89288      options.retries = options.retries || 0;
 89289      options.retries = typeof options.retries === 'number' ? { retries: options.retries } : options.retries;
 89290  
 89291      // Retries are not allowed because it requires the flow to be sync
 89292      if (options.retries.retries) {
 89293          throw Object.assign(new Error('Cannot use retries with the sync api'), { code: 'ESYNC' });
 89294      }
 89295  
 89296      let err;
 89297      let release;
 89298  
 89299      lock(file, options, compromised, (_err, _release) => {
 89300          err = _err;
 89301          release = _release;
 89302      });
 89303  
 89304      if (err) {
 89305          throw err;
 89306      }
 89307  
 89308      return release;
 89309  }
 89310  
 89311  function unlockSync(file, options) {
 89312      options = options || {};
 89313      options.fs = syncFs(options.fs || fs);
 89314  
 89315      let err;
 89316  
 89317      unlock(file, options, (_err) => {
 89318          err = _err;
 89319      });
 89320  
 89321      if (err) {
 89322          throw err;
 89323      }
 89324  }
 89325  
 89326  function check(file, options, callback) {
 89327      if (typeof options === 'function') {
 89328          callback = options;
 89329          options = null;
 89330      }
 89331  
 89332      options = Object.assign({
 89333          stale: 10000,
 89334          realpath: true,
 89335          fs,
 89336      }, options);
 89337  
 89338      options.stale = Math.max(options.stale || 0, 2000);
 89339  
 89340      // Resolve to a canonical file path
 89341      canonicalPath(file, options, (err, file) => {
 89342          if (err) {
 89343              return callback(err);
 89344          }
 89345  
 89346          // Check if lockfile exists
 89347          options.fs.stat(getLockFile(file), (err, stat) => {
 89348              if (err) {
 89349                  // if does not exist, file is not locked. Otherwise, callback with error
 89350                  return (err.code === 'ENOENT') ? callback(null, false) : callback(err);
 89351              }
 89352  
 89353              if (options.stale <= 0) { return callback(null, true); }
 89354  
 89355              // Otherwise, check if lock is stale by analyzing the file mtime
 89356              return callback(null, !isLockStale(stat, options));
 89357          });
 89358      });
 89359  }
 89360  
 89361  function checkSync(file, options) {
 89362      options = options || {};
 89363      options.fs = syncFs(options.fs || fs);
 89364  
 89365      let err;
 89366      let locked;
 89367  
 89368      check(file, options, (_err, _locked) => {
 89369          err = _err;
 89370          locked = _locked;
 89371      });
 89372  
 89373      if (err) {
 89374          throw err;
 89375      }
 89376  
 89377      return locked;
 89378  }
 89379  
 89380  
 89381  // Remove acquired locks on exit
 89382  /* istanbul ignore next */
 89383  process.on('exit', () => {
 89384      Object.keys(locks).forEach((file) => {
 89385          try { locks[file].options.fs.rmdirSync(getLockFile(file)); } catch (e) { /* empty */ }
 89386      });
 89387  });
 89388  
 89389  module.exports = lock;
 89390  module.exports.lock = lock;
 89391  module.exports.unlock = unlock;
 89392  module.exports.lockSync = lockSync;
 89393  module.exports.unlockSync = unlockSync;
 89394  module.exports.check = check;
 89395  module.exports.checkSync = checkSync;
 89396  
 89397  
 89398  /***/ }),
 89399  /* 472 */
 89400  /***/ (function(module, exports, __webpack_require__) {
 89401  
 89402  "use strict";
 89403  
 89404  const x = module.exports;
 89405  const ESC = '\u001B[';
 89406  const OSC = '\u001B]';
 89407  const BEL = '\u0007';
 89408  const SEP = ';';
 89409  const isTerminalApp = process.env.TERM_PROGRAM === 'Apple_Terminal';
 89410  
 89411  x.cursorTo = (x, y) => {
 89412  	if (typeof x !== 'number') {
 89413  		throw new TypeError('The `x` argument is required');
 89414  	}
 89415  
 89416  	if (typeof y !== 'number') {
 89417  		return ESC + (x + 1) + 'G';
 89418  	}
 89419  
 89420  	return ESC + (y + 1) + ';' + (x + 1) + 'H';
 89421  };
 89422  
 89423  x.cursorMove = (x, y) => {
 89424  	if (typeof x !== 'number') {
 89425  		throw new TypeError('The `x` argument is required');
 89426  	}
 89427  
 89428  	let ret = '';
 89429  
 89430  	if (x < 0) {
 89431  		ret += ESC + (-x) + 'D';
 89432  	} else if (x > 0) {
 89433  		ret += ESC + x + 'C';
 89434  	}
 89435  
 89436  	if (y < 0) {
 89437  		ret += ESC + (-y) + 'A';
 89438  	} else if (y > 0) {
 89439  		ret += ESC + y + 'B';
 89440  	}
 89441  
 89442  	return ret;
 89443  };
 89444  
 89445  x.cursorUp = count => ESC + (typeof count === 'number' ? count : 1) + 'A';
 89446  x.cursorDown = count => ESC + (typeof count === 'number' ? count : 1) + 'B';
 89447  x.cursorForward = count => ESC + (typeof count === 'number' ? count : 1) + 'C';
 89448  x.cursorBackward = count => ESC + (typeof count === 'number' ? count : 1) + 'D';
 89449  
 89450  x.cursorLeft = ESC + 'G';
 89451  x.cursorSavePosition = ESC + (isTerminalApp ? '7' : 's');
 89452  x.cursorRestorePosition = ESC + (isTerminalApp ? '8' : 'u');
 89453  x.cursorGetPosition = ESC + '6n';
 89454  x.cursorNextLine = ESC + 'E';
 89455  x.cursorPrevLine = ESC + 'F';
 89456  x.cursorHide = ESC + '?25l';
 89457  x.cursorShow = ESC + '?25h';
 89458  
 89459  x.eraseLines = count => {
 89460  	let clear = '';
 89461  
 89462  	for (let i = 0; i < count; i++) {
 89463  		clear += x.eraseLine + (i < count - 1 ? x.cursorUp() : '');
 89464  	}
 89465  
 89466  	if (count) {
 89467  		clear += x.cursorLeft;
 89468  	}
 89469  
 89470  	return clear;
 89471  };
 89472  
 89473  x.eraseEndLine = ESC + 'K';
 89474  x.eraseStartLine = ESC + '1K';
 89475  x.eraseLine = ESC + '2K';
 89476  x.eraseDown = ESC + 'J';
 89477  x.eraseUp = ESC + '1J';
 89478  x.eraseScreen = ESC + '2J';
 89479  x.scrollUp = ESC + 'S';
 89480  x.scrollDown = ESC + 'T';
 89481  
 89482  x.clearScreen = '\u001Bc';
 89483  x.beep = BEL;
 89484  
 89485  x.link = (text, url) => {
 89486  	return [
 89487  		OSC,
 89488  		'8',
 89489  		SEP,
 89490  		SEP,
 89491  		url,
 89492  		BEL,
 89493  		text,
 89494  		OSC,
 89495  		'8',
 89496  		SEP,
 89497  		SEP,
 89498  		BEL
 89499  	].join('');
 89500  };
 89501  
 89502  x.image = (buf, opts) => {
 89503  	opts = opts || {};
 89504  
 89505  	let ret = OSC + '1337;File=inline=1';
 89506  
 89507  	if (opts.width) {
 89508  		ret += `;width=${opts.width}`;
 89509  	}
 89510  
 89511  	if (opts.height) {
 89512  		ret += `;height=${opts.height}`;
 89513  	}
 89514  
 89515  	if (opts.preserveAspectRatio === false) {
 89516  		ret += ';preserveAspectRatio=0';
 89517  	}
 89518  
 89519  	return ret + ':' + buf.toString('base64') + BEL;
 89520  };
 89521  
 89522  x.iTerm = {};
 89523  
 89524  x.iTerm.setCwd = cwd => OSC + '50;CurrentDir=' + (cwd || process.cwd()) + BEL;
 89525  
 89526  
 89527  /***/ }),
 89528  /* 473 */
 89529  /***/ (function(module, exports, __webpack_require__) {
 89530  
 89531  "use strict";
 89532  
 89533  module.exports = function () {
 89534  	return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]/g;
 89535  };
 89536  
 89537  
 89538  /***/ }),
 89539  /* 474 */
 89540  /***/ (function(module, exports, __webpack_require__) {
 89541  
 89542  "use strict";
 89543  /* WEBPACK VAR INJECTION */(function(module) {
 89544  const colorConvert = __webpack_require__(576);
 89545  
 89546  const wrapAnsi16 = (fn, offset) => function () {
 89547  	const code = fn.apply(colorConvert, arguments);
 89548  	return `\u001B[${code + offset}m`;
 89549  };
 89550  
 89551  const wrapAnsi256 = (fn, offset) => function () {
 89552  	const code = fn.apply(colorConvert, arguments);
 89553  	return `\u001B[${38 + offset};5;${code}m`;
 89554  };
 89555  
 89556  const wrapAnsi16m = (fn, offset) => function () {
 89557  	const rgb = fn.apply(colorConvert, arguments);
 89558  	return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
 89559  };
 89560  
 89561  function assembleStyles() {
 89562  	const codes = new Map();
 89563  	const styles = {
 89564  		modifier: {
 89565  			reset: [0, 0],
 89566  			// 21 isn't widely supported and 22 does the same thing
 89567  			bold: [1, 22],
 89568  			dim: [2, 22],
 89569  			italic: [3, 23],
 89570  			underline: [4, 24],
 89571  			inverse: [7, 27],
 89572  			hidden: [8, 28],
 89573  			strikethrough: [9, 29]
 89574  		},
 89575  		color: {
 89576  			black: [30, 39],
 89577  			red: [31, 39],
 89578  			green: [32, 39],
 89579  			yellow: [33, 39],
 89580  			blue: [34, 39],
 89581  			magenta: [35, 39],
 89582  			cyan: [36, 39],
 89583  			white: [37, 39],
 89584  			gray: [90, 39],
 89585  
 89586  			// Bright color
 89587  			redBright: [91, 39],
 89588  			greenBright: [92, 39],
 89589  			yellowBright: [93, 39],
 89590  			blueBright: [94, 39],
 89591  			magentaBright: [95, 39],
 89592  			cyanBright: [96, 39],
 89593  			whiteBright: [97, 39]
 89594  		},
 89595  		bgColor: {
 89596  			bgBlack: [40, 49],
 89597  			bgRed: [41, 49],
 89598  			bgGreen: [42, 49],
 89599  			bgYellow: [43, 49],
 89600  			bgBlue: [44, 49],
 89601  			bgMagenta: [45, 49],
 89602  			bgCyan: [46, 49],
 89603  			bgWhite: [47, 49],
 89604  
 89605  			// Bright color
 89606  			bgBlackBright: [100, 49],
 89607  			bgRedBright: [101, 49],
 89608  			bgGreenBright: [102, 49],
 89609  			bgYellowBright: [103, 49],
 89610  			bgBlueBright: [104, 49],
 89611  			bgMagentaBright: [105, 49],
 89612  			bgCyanBright: [106, 49],
 89613  			bgWhiteBright: [107, 49]
 89614  		}
 89615  	};
 89616  
 89617  	// Fix humans
 89618  	styles.color.grey = styles.color.gray;
 89619  
 89620  	for (const groupName of Object.keys(styles)) {
 89621  		const group = styles[groupName];
 89622  
 89623  		for (const styleName of Object.keys(group)) {
 89624  			const style = group[styleName];
 89625  
 89626  			styles[styleName] = {
 89627  				open: `\u001B[${style[0]}m`,
 89628  				close: `\u001B[${style[1]}m`
 89629  			};
 89630  
 89631  			group[styleName] = styles[styleName];
 89632  
 89633  			codes.set(style[0], style[1]);
 89634  		}
 89635  
 89636  		Object.defineProperty(styles, groupName, {
 89637  			value: group,
 89638  			enumerable: false
 89639  		});
 89640  
 89641  		Object.defineProperty(styles, 'codes', {
 89642  			value: codes,
 89643  			enumerable: false
 89644  		});
 89645  	}
 89646  
 89647  	const ansi2ansi = n => n;
 89648  	const rgb2rgb = (r, g, b) => [r, g, b];
 89649  
 89650  	styles.color.close = '\u001B[39m';
 89651  	styles.bgColor.close = '\u001B[49m';
 89652  
 89653  	styles.color.ansi = {
 89654  		ansi: wrapAnsi16(ansi2ansi, 0)
 89655  	};
 89656  	styles.color.ansi256 = {
 89657  		ansi256: wrapAnsi256(ansi2ansi, 0)
 89658  	};
 89659  	styles.color.ansi16m = {
 89660  		rgb: wrapAnsi16m(rgb2rgb, 0)
 89661  	};
 89662  
 89663  	styles.bgColor.ansi = {
 89664  		ansi: wrapAnsi16(ansi2ansi, 10)
 89665  	};
 89666  	styles.bgColor.ansi256 = {
 89667  		ansi256: wrapAnsi256(ansi2ansi, 10)
 89668  	};
 89669  	styles.bgColor.ansi16m = {
 89670  		rgb: wrapAnsi16m(rgb2rgb, 10)
 89671  	};
 89672  
 89673  	for (let key of Object.keys(colorConvert)) {
 89674  		if (typeof colorConvert[key] !== 'object') {
 89675  			continue;
 89676  		}
 89677  
 89678  		const suite = colorConvert[key];
 89679  
 89680  		if (key === 'ansi16') {
 89681  			key = 'ansi';
 89682  		}
 89683  
 89684  		if ('ansi16' in suite) {
 89685  			styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);
 89686  			styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);
 89687  		}
 89688  
 89689  		if ('ansi256' in suite) {
 89690  			styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);
 89691  			styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);
 89692  		}
 89693  
 89694  		if ('rgb' in suite) {
 89695  			styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);
 89696  			styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);
 89697  		}
 89698  	}
 89699  
 89700  	return styles;
 89701  }
 89702  
 89703  // Make the export immutable
 89704  Object.defineProperty(module, 'exports', {
 89705  	enumerable: true,
 89706  	get: assembleStyles
 89707  });
 89708  
 89709  /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(163)(module)))
 89710  
 89711  /***/ }),
 89712  /* 475 */
 89713  /***/ (function(module, exports) {
 89714  
 89715  function webpackEmptyContext(req) {
 89716  	throw new Error("Cannot find module '" + req + "'.");
 89717  }
 89718  webpackEmptyContext.keys = function() { return []; };
 89719  webpackEmptyContext.resolve = webpackEmptyContext;
 89720  module.exports = webpackEmptyContext;
 89721  webpackEmptyContext.id = 475;
 89722  
 89723  /***/ }),
 89724  /* 476 */
 89725  /***/ (function(module, exports, __webpack_require__) {
 89726  
 89727  "use strict";
 89728  
 89729      // global key for user preferred registration
 89730  var REGISTRATION_KEY = '@@any-promise/REGISTRATION',
 89731      // Prior registration (preferred or detected)
 89732      registered = null
 89733  
 89734  /**
 89735   * Registers the given implementation.  An implementation must
 89736   * be registered prior to any call to `require("any-promise")`,
 89737   * typically on application load.
 89738   *
 89739   * If called with no arguments, will return registration in
 89740   * following priority:
 89741   *
 89742   * For Node.js:
 89743   *
 89744   * 1. Previous registration
 89745   * 2. global.Promise if node.js version >= 0.12
 89746   * 3. Auto detected promise based on first sucessful require of
 89747   *    known promise libraries. Note this is a last resort, as the
 89748   *    loaded library is non-deterministic. node.js >= 0.12 will
 89749   *    always use global.Promise over this priority list.
 89750   * 4. Throws error.
 89751   *
 89752   * For Browser:
 89753   *
 89754   * 1. Previous registration
 89755   * 2. window.Promise
 89756   * 3. Throws error.
 89757   *
 89758   * Options:
 89759   *
 89760   * Promise: Desired Promise constructor
 89761   * global: Boolean - Should the registration be cached in a global variable to
 89762   * allow cross dependency/bundle registration?  (default true)
 89763   */
 89764  module.exports = function(root, loadImplementation){
 89765    return function register(implementation, opts){
 89766      implementation = implementation || null
 89767      opts = opts || {}
 89768      // global registration unless explicitly  {global: false} in options (default true)
 89769      var registerGlobal = opts.global !== false;
 89770  
 89771      // load any previous global registration
 89772      if(registered === null && registerGlobal){
 89773        registered = root[REGISTRATION_KEY] || null
 89774      }
 89775  
 89776      if(registered !== null
 89777          && implementation !== null
 89778          && registered.implementation !== implementation){
 89779        // Throw error if attempting to redefine implementation
 89780        throw new Error('any-promise already defined as "'+registered.implementation+
 89781          '".  You can only register an implementation before the first '+
 89782          ' call to require("any-promise") and an implementation cannot be changed')
 89783      }
 89784  
 89785      if(registered === null){
 89786        // use provided implementation
 89787        if(implementation !== null && typeof opts.Promise !== 'undefined'){
 89788          registered = {
 89789            Promise: opts.Promise,
 89790            implementation: implementation
 89791          }
 89792        } else {
 89793          // require implementation if implementation is specified but not provided
 89794          registered = loadImplementation(implementation)
 89795        }
 89796  
 89797        if(registerGlobal){
 89798          // register preference globally in case multiple installations
 89799          root[REGISTRATION_KEY] = registered
 89800        }
 89801      }
 89802  
 89803      return registered
 89804    }
 89805  }
 89806  
 89807  
 89808  /***/ }),
 89809  /* 477 */
 89810  /***/ (function(module, exports, __webpack_require__) {
 89811  
 89812  "use strict";
 89813  
 89814  module.exports = __webpack_require__(476)(global, loadImplementation);
 89815  
 89816  /**
 89817   * Node.js version of loadImplementation.
 89818   *
 89819   * Requires the given implementation and returns the registration
 89820   * containing {Promise, implementation}
 89821   *
 89822   * If implementation is undefined or global.Promise, loads it
 89823   * Otherwise uses require
 89824   */
 89825  function loadImplementation(implementation){
 89826    var impl = null
 89827  
 89828    if(shouldPreferGlobalPromise(implementation)){
 89829      // if no implementation or env specified use global.Promise
 89830      impl = {
 89831        Promise: global.Promise,
 89832        implementation: 'global.Promise'
 89833      }
 89834    } else if(implementation){
 89835      // if implementation specified, require it
 89836      var lib = !(function webpackMissingModule() { var e = new Error("Cannot find module \".\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())
 89837      impl = {
 89838        Promise: lib.Promise || lib,
 89839        implementation: implementation
 89840      }
 89841    } else {
 89842      // try to auto detect implementation. This is non-deterministic
 89843      // and should prefer other branches, but this is our last chance
 89844      // to load something without throwing error
 89845      impl = tryAutoDetect()
 89846    }
 89847  
 89848    if(impl === null){
 89849      throw new Error('Cannot find any-promise implementation nor'+
 89850        ' global.Promise. You must install polyfill or call'+
 89851        ' require("any-promise/register") with your preferred'+
 89852        ' implementation, e.g. require("any-promise/register/bluebird")'+
 89853        ' on application load prior to any require("any-promise").')
 89854    }
 89855  
 89856    return impl
 89857  }
 89858  
 89859  /**
 89860   * Determines if the global.Promise should be preferred if an implementation
 89861   * has not been registered.
 89862   */
 89863  function shouldPreferGlobalPromise(implementation){
 89864    if(implementation){
 89865      return implementation === 'global.Promise'
 89866    } else if(typeof global.Promise !== 'undefined'){
 89867      // Load global promise if implementation not specified
 89868      // Versions < 0.11 did not have global Promise
 89869      // Do not use for version < 0.12 as version 0.11 contained buggy versions
 89870      var version = (/v(\d+)\.(\d+)\.(\d+)/).exec(process.version)
 89871      return !(version && +version[1] == 0 && +version[2] < 12)
 89872    }
 89873  
 89874    // do not have global.Promise or another implementation was specified
 89875    return false
 89876  }
 89877  
 89878  /**
 89879   * Look for common libs as last resort there is no guarantee that
 89880   * this will return a desired implementation or even be deterministic.
 89881   * The priority is also nearly arbitrary. We are only doing this
 89882   * for older versions of Node.js <0.12 that do not have a reasonable
 89883   * global.Promise implementation and we the user has not registered
 89884   * the preference. This preserves the behavior of any-promise <= 0.1
 89885   * and may be deprecated or removed in the future
 89886   */
 89887  function tryAutoDetect(){
 89888    var libs = [
 89889        "es6-promise",
 89890        "promise",
 89891        "native-promise-only",
 89892        "bluebird",
 89893        "rsvp",
 89894        "when",
 89895        "q",
 89896        "pinkie",
 89897        "lie",
 89898        "vow"]
 89899    var i = 0, len = libs.length
 89900    for(; i < len; i++){
 89901      try {
 89902        return loadImplementation(libs[i])
 89903      } catch(e){}
 89904    }
 89905    return null
 89906  }
 89907  
 89908  
 89909  /***/ }),
 89910  /* 478 */
 89911  /***/ (function(module, exports, __webpack_require__) {
 89912  
 89913  "use strict";
 89914  /*!
 89915   * arr-flatten <https://github.com/jonschlinkert/arr-flatten>
 89916   *
 89917   * Copyright (c) 2014-2017, Jon Schlinkert.
 89918   * Released under the MIT License.
 89919   */
 89920  
 89921  
 89922  
 89923  module.exports = function (arr) {
 89924    return flat(arr, []);
 89925  };
 89926  
 89927  function flat(arr, res) {
 89928    var i = 0, cur;
 89929    var len = arr.length;
 89930    for (; i < len; i++) {
 89931      cur = arr[i];
 89932      Array.isArray(cur) ? flat(cur, res) : res.push(cur);
 89933    }
 89934    return res;
 89935  }
 89936  
 89937  
 89938  /***/ }),
 89939  /* 479 */
 89940  /***/ (function(module, exports, __webpack_require__) {
 89941  
 89942  "use strict";
 89943  
 89944  module.exports = function (arr, predicate, ctx) {
 89945  	if (typeof Array.prototype.findIndex === 'function') {
 89946  		return arr.findIndex(predicate, ctx);
 89947  	}
 89948  
 89949  	if (typeof predicate !== 'function') {
 89950  		throw new TypeError('predicate must be a function');
 89951  	}
 89952  
 89953  	var list = Object(arr);
 89954  	var len = list.length;
 89955  
 89956  	if (len === 0) {
 89957  		return -1;
 89958  	}
 89959  
 89960  	for (var i = 0; i < len; i++) {
 89961  		if (predicate.call(ctx, list[i], i, list)) {
 89962  			return i;
 89963  		}
 89964  	}
 89965  
 89966  	return -1;
 89967  };
 89968  
 89969  
 89970  /***/ }),
 89971  /* 480 */
 89972  /***/ (function(module, exports, __webpack_require__) {
 89973  
 89974  "use strict";
 89975  
 89976  
 89977  var rawAsap = __webpack_require__(481);
 89978  var freeTasks = [];
 89979  
 89980  /**
 89981   * Calls a task as soon as possible after returning, in its own event, with
 89982   * priority over IO events. An exception thrown in a task can be handled by
 89983   * `process.on("uncaughtException") or `domain.on("error")`, but will otherwise
 89984   * crash the process. If the error is handled, all subsequent tasks will
 89985   * resume.
 89986   *
 89987   * @param {{call}} task A callable object, typically a function that takes no
 89988   * arguments.
 89989   */
 89990  module.exports = asap;
 89991  function asap(task) {
 89992      var rawTask;
 89993      if (freeTasks.length) {
 89994          rawTask = freeTasks.pop();
 89995      } else {
 89996          rawTask = new RawTask();
 89997      }
 89998      rawTask.task = task;
 89999      rawTask.domain = process.domain;
 90000      rawAsap(rawTask);
 90001  }
 90002  
 90003  function RawTask() {
 90004      this.task = null;
 90005      this.domain = null;
 90006  }
 90007  
 90008  RawTask.prototype.call = function () {
 90009      if (this.domain) {
 90010          this.domain.enter();
 90011      }
 90012      var threw = true;
 90013      try {
 90014          this.task.call();
 90015          threw = false;
 90016          // If the task throws an exception (presumably) Node.js restores the
 90017          // domain stack for the next event.
 90018          if (this.domain) {
 90019              this.domain.exit();
 90020          }
 90021      } finally {
 90022          // We use try/finally and a threw flag to avoid messing up stack traces
 90023          // when we catch and release errors.
 90024          if (threw) {
 90025              // In Node.js, uncaught exceptions are considered fatal errors.
 90026              // Re-throw them to interrupt flushing!
 90027              // Ensure that flushing continues if an uncaught exception is
 90028              // suppressed listening process.on("uncaughtException") or
 90029              // domain.on("error").
 90030              rawAsap.requestFlush();
 90031          }
 90032          // If the task threw an error, we do not want to exit the domain here.
 90033          // Exiting the domain would prevent the domain from catching the error.
 90034          this.task = null;
 90035          this.domain = null;
 90036          freeTasks.push(this);
 90037      }
 90038  };
 90039  
 90040  
 90041  
 90042  /***/ }),
 90043  /* 481 */
 90044  /***/ (function(module, exports, __webpack_require__) {
 90045  
 90046  "use strict";
 90047  
 90048  
 90049  var domain; // The domain module is executed on demand
 90050  var hasSetImmediate = typeof setImmediate === "function";
 90051  
 90052  // Use the fastest means possible to execute a task in its own turn, with
 90053  // priority over other events including network IO events in Node.js.
 90054  //
 90055  // An exception thrown by a task will permanently interrupt the processing of
 90056  // subsequent tasks. The higher level `asap` function ensures that if an
 90057  // exception is thrown by a task, that the task queue will continue flushing as
 90058  // soon as possible, but if you use `rawAsap` directly, you are responsible to
 90059  // either ensure that no exceptions are thrown from your task, or to manually
 90060  // call `rawAsap.requestFlush` if an exception is thrown.
 90061  module.exports = rawAsap;
 90062  function rawAsap(task) {
 90063      if (!queue.length) {
 90064          requestFlush();
 90065          flushing = true;
 90066      }
 90067      // Avoids a function call
 90068      queue[queue.length] = task;
 90069  }
 90070  
 90071  var queue = [];
 90072  // Once a flush has been requested, no further calls to `requestFlush` are
 90073  // necessary until the next `flush` completes.
 90074  var flushing = false;
 90075  // The position of the next task to execute in the task queue. This is
 90076  // preserved between calls to `flush` so that it can be resumed if
 90077  // a task throws an exception.
 90078  var index = 0;
 90079  // If a task schedules additional tasks recursively, the task queue can grow
 90080  // unbounded. To prevent memory excaustion, the task queue will periodically
 90081  // truncate already-completed tasks.
 90082  var capacity = 1024;
 90083  
 90084  // The flush function processes all tasks that have been scheduled with
 90085  // `rawAsap` unless and until one of those tasks throws an exception.
 90086  // If a task throws an exception, `flush` ensures that its state will remain
 90087  // consistent and will resume where it left off when called again.
 90088  // However, `flush` does not make any arrangements to be called again if an
 90089  // exception is thrown.
 90090  function flush() {
 90091      while (index < queue.length) {
 90092          var currentIndex = index;
 90093          // Advance the index before calling the task. This ensures that we will
 90094          // begin flushing on the next task the task throws an error.
 90095          index = index + 1;
 90096          queue[currentIndex].call();
 90097          // Prevent leaking memory for long chains of recursive calls to `asap`.
 90098          // If we call `asap` within tasks scheduled by `asap`, the queue will
 90099          // grow, but to avoid an O(n) walk for every task we execute, we don't
 90100          // shift tasks off the queue after they have been executed.
 90101          // Instead, we periodically shift 1024 tasks off the queue.
 90102          if (index > capacity) {
 90103              // Manually shift all values starting at the index back to the
 90104              // beginning of the queue.
 90105              for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {
 90106                  queue[scan] = queue[scan + index];
 90107              }
 90108              queue.length -= index;
 90109              index = 0;
 90110          }
 90111      }
 90112      queue.length = 0;
 90113      index = 0;
 90114      flushing = false;
 90115  }
 90116  
 90117  rawAsap.requestFlush = requestFlush;
 90118  function requestFlush() {
 90119      // Ensure flushing is not bound to any domain.
 90120      // It is not sufficient to exit the domain, because domains exist on a stack.
 90121      // To execute code outside of any domain, the following dance is necessary.
 90122      var parentDomain = process.domain;
 90123      if (parentDomain) {
 90124          if (!domain) {
 90125              // Lazy execute the domain module.
 90126              // Only employed if the user elects to use domains.
 90127              domain = __webpack_require__(965);
 90128          }
 90129          domain.active = process.domain = null;
 90130      }
 90131  
 90132      // `setImmediate` is slower that `process.nextTick`, but `process.nextTick`
 90133      // cannot handle recursion.
 90134      // `requestFlush` will only be called recursively from `asap.js`, to resume
 90135      // flushing after an error is thrown into a domain.
 90136      // Conveniently, `setImmediate` was introduced in the same version
 90137      // `process.nextTick` started throwing recursion errors.
 90138      if (flushing && hasSetImmediate) {
 90139          setImmediate(flush);
 90140      } else {
 90141          process.nextTick(flush);
 90142      }
 90143  
 90144      if (parentDomain) {
 90145          domain.active = process.domain = parentDomain;
 90146      }
 90147  }
 90148  
 90149  
 90150  /***/ }),
 90151  /* 482 */
 90152  /***/ (function(module, exports, __webpack_require__) {
 90153  
 90154  // Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
 90155  
 90156  var errors = __webpack_require__(203);
 90157  var types = __webpack_require__(204);
 90158  
 90159  var Reader = __webpack_require__(483);
 90160  var Writer = __webpack_require__(484);
 90161  
 90162  
 90163  // --- Exports
 90164  
 90165  module.exports = {
 90166  
 90167    Reader: Reader,
 90168  
 90169    Writer: Writer
 90170  
 90171  };
 90172  
 90173  for (var t in types) {
 90174    if (types.hasOwnProperty(t))
 90175      module.exports[t] = types[t];
 90176  }
 90177  for (var e in errors) {
 90178    if (errors.hasOwnProperty(e))
 90179      module.exports[e] = errors[e];
 90180  }
 90181  
 90182  
 90183  /***/ }),
 90184  /* 483 */
 90185  /***/ (function(module, exports, __webpack_require__) {
 90186  
 90187  // Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
 90188  
 90189  var assert = __webpack_require__(28);
 90190  var Buffer = __webpack_require__(15).Buffer;
 90191  
 90192  var ASN1 = __webpack_require__(204);
 90193  var errors = __webpack_require__(203);
 90194  
 90195  
 90196  // --- Globals
 90197  
 90198  var newInvalidAsn1Error = errors.newInvalidAsn1Error;
 90199  
 90200  
 90201  
 90202  // --- API
 90203  
 90204  function Reader(data) {
 90205    if (!data || !Buffer.isBuffer(data))
 90206      throw new TypeError('data must be a node Buffer');
 90207  
 90208    this._buf = data;
 90209    this._size = data.length;
 90210  
 90211    // These hold the "current" state
 90212    this._len = 0;
 90213    this._offset = 0;
 90214  }
 90215  
 90216  Object.defineProperty(Reader.prototype, 'length', {
 90217    enumerable: true,
 90218    get: function () { return (this._len); }
 90219  });
 90220  
 90221  Object.defineProperty(Reader.prototype, 'offset', {
 90222    enumerable: true,
 90223    get: function () { return (this._offset); }
 90224  });
 90225  
 90226  Object.defineProperty(Reader.prototype, 'remain', {
 90227    get: function () { return (this._size - this._offset); }
 90228  });
 90229  
 90230  Object.defineProperty(Reader.prototype, 'buffer', {
 90231    get: function () { return (this._buf.slice(this._offset)); }
 90232  });
 90233  
 90234  
 90235  /**
 90236   * Reads a single byte and advances offset; you can pass in `true` to make this
 90237   * a "peek" operation (i.e., get the byte, but don't advance the offset).
 90238   *
 90239   * @param {Boolean} peek true means don't move offset.
 90240   * @return {Number} the next byte, null if not enough data.
 90241   */
 90242  Reader.prototype.readByte = function (peek) {
 90243    if (this._size - this._offset < 1)
 90244      return null;
 90245  
 90246    var b = this._buf[this._offset] & 0xff;
 90247  
 90248    if (!peek)
 90249      this._offset += 1;
 90250  
 90251    return b;
 90252  };
 90253  
 90254  
 90255  Reader.prototype.peek = function () {
 90256    return this.readByte(true);
 90257  };
 90258  
 90259  
 90260  /**
 90261   * Reads a (potentially) variable length off the BER buffer.  This call is
 90262   * not really meant to be called directly, as callers have to manipulate
 90263   * the internal buffer afterwards.
 90264   *
 90265   * As a result of this call, you can call `Reader.length`, until the
 90266   * next thing called that does a readLength.
 90267   *
 90268   * @return {Number} the amount of offset to advance the buffer.
 90269   * @throws {InvalidAsn1Error} on bad ASN.1
 90270   */
 90271  Reader.prototype.readLength = function (offset) {
 90272    if (offset === undefined)
 90273      offset = this._offset;
 90274  
 90275    if (offset >= this._size)
 90276      return null;
 90277  
 90278    var lenB = this._buf[offset++] & 0xff;
 90279    if (lenB === null)
 90280      return null;
 90281  
 90282    if ((lenB & 0x80) === 0x80) {
 90283      lenB &= 0x7f;
 90284  
 90285      if (lenB === 0)
 90286        throw newInvalidAsn1Error('Indefinite length not supported');
 90287  
 90288      if (lenB > 4)
 90289        throw newInvalidAsn1Error('encoding too long');
 90290  
 90291      if (this._size - offset < lenB)
 90292        return null;
 90293  
 90294      this._len = 0;
 90295      for (var i = 0; i < lenB; i++)
 90296        this._len = (this._len << 8) + (this._buf[offset++] & 0xff);
 90297  
 90298    } else {
 90299      // Wasn't a variable length
 90300      this._len = lenB;
 90301    }
 90302  
 90303    return offset;
 90304  };
 90305  
 90306  
 90307  /**
 90308   * Parses the next sequence in this BER buffer.
 90309   *
 90310   * To get the length of the sequence, call `Reader.length`.
 90311   *
 90312   * @return {Number} the sequence's tag.
 90313   */
 90314  Reader.prototype.readSequence = function (tag) {
 90315    var seq = this.peek();
 90316    if (seq === null)
 90317      return null;
 90318    if (tag !== undefined && tag !== seq)
 90319      throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +
 90320                                ': got 0x' + seq.toString(16));
 90321  
 90322    var o = this.readLength(this._offset + 1); // stored in `length`
 90323    if (o === null)
 90324      return null;
 90325  
 90326    this._offset = o;
 90327    return seq;
 90328  };
 90329  
 90330  
 90331  Reader.prototype.readInt = function () {
 90332    return this._readTag(ASN1.Integer);
 90333  };
 90334  
 90335  
 90336  Reader.prototype.readBoolean = function () {
 90337    return (this._readTag(ASN1.Boolean) === 0 ? false : true);
 90338  };
 90339  
 90340  
 90341  Reader.prototype.readEnumeration = function () {
 90342    return this._readTag(ASN1.Enumeration);
 90343  };
 90344  
 90345  
 90346  Reader.prototype.readString = function (tag, retbuf) {
 90347    if (!tag)
 90348      tag = ASN1.OctetString;
 90349  
 90350    var b = this.peek();
 90351    if (b === null)
 90352      return null;
 90353  
 90354    if (b !== tag)
 90355      throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +
 90356                                ': got 0x' + b.toString(16));
 90357  
 90358    var o = this.readLength(this._offset + 1); // stored in `length`
 90359  
 90360    if (o === null)
 90361      return null;
 90362  
 90363    if (this.length > this._size - o)
 90364      return null;
 90365  
 90366    this._offset = o;
 90367  
 90368    if (this.length === 0)
 90369      return retbuf ? Buffer.alloc(0) : '';
 90370  
 90371    var str = this._buf.slice(this._offset, this._offset + this.length);
 90372    this._offset += this.length;
 90373  
 90374    return retbuf ? str : str.toString('utf8');
 90375  };
 90376  
 90377  Reader.prototype.readOID = function (tag) {
 90378    if (!tag)
 90379      tag = ASN1.OID;
 90380  
 90381    var b = this.readString(tag, true);
 90382    if (b === null)
 90383      return null;
 90384  
 90385    var values = [];
 90386    var value = 0;
 90387  
 90388    for (var i = 0; i < b.length; i++) {
 90389      var byte = b[i] & 0xff;
 90390  
 90391      value <<= 7;
 90392      value += byte & 0x7f;
 90393      if ((byte & 0x80) === 0) {
 90394        values.push(value);
 90395        value = 0;
 90396      }
 90397    }
 90398  
 90399    value = values.shift();
 90400    values.unshift(value % 40);
 90401    values.unshift((value / 40) >> 0);
 90402  
 90403    return values.join('.');
 90404  };
 90405  
 90406  
 90407  Reader.prototype._readTag = function (tag) {
 90408    assert.ok(tag !== undefined);
 90409  
 90410    var b = this.peek();
 90411  
 90412    if (b === null)
 90413      return null;
 90414  
 90415    if (b !== tag)
 90416      throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +
 90417                                ': got 0x' + b.toString(16));
 90418  
 90419    var o = this.readLength(this._offset + 1); // stored in `length`
 90420    if (o === null)
 90421      return null;
 90422  
 90423    if (this.length > 4)
 90424      throw newInvalidAsn1Error('Integer too long: ' + this.length);
 90425  
 90426    if (this.length > this._size - o)
 90427      return null;
 90428    this._offset = o;
 90429  
 90430    var fb = this._buf[this._offset];
 90431    var value = 0;
 90432  
 90433    for (var i = 0; i < this.length; i++) {
 90434      value <<= 8;
 90435      value |= (this._buf[this._offset++] & 0xff);
 90436    }
 90437  
 90438    if ((fb & 0x80) === 0x80 && i !== 4)
 90439      value -= (1 << (i * 8));
 90440  
 90441    return value >> 0;
 90442  };
 90443  
 90444  
 90445  
 90446  // --- Exported API
 90447  
 90448  module.exports = Reader;
 90449  
 90450  
 90451  /***/ }),
 90452  /* 484 */
 90453  /***/ (function(module, exports, __webpack_require__) {
 90454  
 90455  // Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
 90456  
 90457  var assert = __webpack_require__(28);
 90458  var Buffer = __webpack_require__(15).Buffer;
 90459  var ASN1 = __webpack_require__(204);
 90460  var errors = __webpack_require__(203);
 90461  
 90462  
 90463  // --- Globals
 90464  
 90465  var newInvalidAsn1Error = errors.newInvalidAsn1Error;
 90466  
 90467  var DEFAULT_OPTS = {
 90468    size: 1024,
 90469    growthFactor: 8
 90470  };
 90471  
 90472  
 90473  // --- Helpers
 90474  
 90475  function merge(from, to) {
 90476    assert.ok(from);
 90477    assert.equal(typeof (from), 'object');
 90478    assert.ok(to);
 90479    assert.equal(typeof (to), 'object');
 90480  
 90481    var keys = Object.getOwnPropertyNames(from);
 90482    keys.forEach(function (key) {
 90483      if (to[key])
 90484        return;
 90485  
 90486      var value = Object.getOwnPropertyDescriptor(from, key);
 90487      Object.defineProperty(to, key, value);
 90488    });
 90489  
 90490    return to;
 90491  }
 90492  
 90493  
 90494  
 90495  // --- API
 90496  
 90497  function Writer(options) {
 90498    options = merge(DEFAULT_OPTS, options || {});
 90499  
 90500    this._buf = Buffer.alloc(options.size || 1024);
 90501    this._size = this._buf.length;
 90502    this._offset = 0;
 90503    this._options = options;
 90504  
 90505    // A list of offsets in the buffer where we need to insert
 90506    // sequence tag/len pairs.
 90507    this._seq = [];
 90508  }
 90509  
 90510  Object.defineProperty(Writer.prototype, 'buffer', {
 90511    get: function () {
 90512      if (this._seq.length)
 90513        throw newInvalidAsn1Error(this._seq.length + ' unended sequence(s)');
 90514  
 90515      return (this._buf.slice(0, this._offset));
 90516    }
 90517  });
 90518  
 90519  Writer.prototype.writeByte = function (b) {
 90520    if (typeof (b) !== 'number')
 90521      throw new TypeError('argument must be a Number');
 90522  
 90523    this._ensure(1);
 90524    this._buf[this._offset++] = b;
 90525  };
 90526  
 90527  
 90528  Writer.prototype.writeInt = function (i, tag) {
 90529    if (typeof (i) !== 'number')
 90530      throw new TypeError('argument must be a Number');
 90531    if (typeof (tag) !== 'number')
 90532      tag = ASN1.Integer;
 90533  
 90534    var sz = 4;
 90535  
 90536    while ((((i & 0xff800000) === 0) || ((i & 0xff800000) === 0xff800000 >> 0)) &&
 90537          (sz > 1)) {
 90538      sz--;
 90539      i <<= 8;
 90540    }
 90541  
 90542    if (sz > 4)
 90543      throw newInvalidAsn1Error('BER ints cannot be > 0xffffffff');
 90544  
 90545    this._ensure(2 + sz);
 90546    this._buf[this._offset++] = tag;
 90547    this._buf[this._offset++] = sz;
 90548  
 90549    while (sz-- > 0) {
 90550      this._buf[this._offset++] = ((i & 0xff000000) >>> 24);
 90551      i <<= 8;
 90552    }
 90553  
 90554  };
 90555  
 90556  
 90557  Writer.prototype.writeNull = function () {
 90558    this.writeByte(ASN1.Null);
 90559    this.writeByte(0x00);
 90560  };
 90561  
 90562  
 90563  Writer.prototype.writeEnumeration = function (i, tag) {
 90564    if (typeof (i) !== 'number')
 90565      throw new TypeError('argument must be a Number');
 90566    if (typeof (tag) !== 'number')
 90567      tag = ASN1.Enumeration;
 90568  
 90569    return this.writeInt(i, tag);
 90570  };
 90571  
 90572  
 90573  Writer.prototype.writeBoolean = function (b, tag) {
 90574    if (typeof (b) !== 'boolean')
 90575      throw new TypeError('argument must be a Boolean');
 90576    if (typeof (tag) !== 'number')
 90577      tag = ASN1.Boolean;
 90578  
 90579    this._ensure(3);
 90580    this._buf[this._offset++] = tag;
 90581    this._buf[this._offset++] = 0x01;
 90582    this._buf[this._offset++] = b ? 0xff : 0x00;
 90583  };
 90584  
 90585  
 90586  Writer.prototype.writeString = function (s, tag) {
 90587    if (typeof (s) !== 'string')
 90588      throw new TypeError('argument must be a string (was: ' + typeof (s) + ')');
 90589    if (typeof (tag) !== 'number')
 90590      tag = ASN1.OctetString;
 90591  
 90592    var len = Buffer.byteLength(s);
 90593    this.writeByte(tag);
 90594    this.writeLength(len);
 90595    if (len) {
 90596      this._ensure(len);
 90597      this._buf.write(s, this._offset);
 90598      this._offset += len;
 90599    }
 90600  };
 90601  
 90602  
 90603  Writer.prototype.writeBuffer = function (buf, tag) {
 90604    if (typeof (tag) !== 'number')
 90605      throw new TypeError('tag must be a number');
 90606    if (!Buffer.isBuffer(buf))
 90607      throw new TypeError('argument must be a buffer');
 90608  
 90609    this.writeByte(tag);
 90610    this.writeLength(buf.length);
 90611    this._ensure(buf.length);
 90612    buf.copy(this._buf, this._offset, 0, buf.length);
 90613    this._offset += buf.length;
 90614  };
 90615  
 90616  
 90617  Writer.prototype.writeStringArray = function (strings) {
 90618    if ((!strings instanceof Array))
 90619      throw new TypeError('argument must be an Array[String]');
 90620  
 90621    var self = this;
 90622    strings.forEach(function (s) {
 90623      self.writeString(s);
 90624    });
 90625  };
 90626  
 90627  // This is really to solve DER cases, but whatever for now
 90628  Writer.prototype.writeOID = function (s, tag) {
 90629    if (typeof (s) !== 'string')
 90630      throw new TypeError('argument must be a string');
 90631    if (typeof (tag) !== 'number')
 90632      tag = ASN1.OID;
 90633  
 90634    if (!/^([0-9]+\.){3,}[0-9]+$/.test(s))
 90635      throw new Error('argument is not a valid OID string');
 90636  
 90637    function encodeOctet(bytes, octet) {
 90638      if (octet < 128) {
 90639          bytes.push(octet);
 90640      } else if (octet < 16384) {
 90641          bytes.push((octet >>> 7) | 0x80);
 90642          bytes.push(octet & 0x7F);
 90643      } else if (octet < 2097152) {
 90644        bytes.push((octet >>> 14) | 0x80);
 90645        bytes.push(((octet >>> 7) | 0x80) & 0xFF);
 90646        bytes.push(octet & 0x7F);
 90647      } else if (octet < 268435456) {
 90648        bytes.push((octet >>> 21) | 0x80);
 90649        bytes.push(((octet >>> 14) | 0x80) & 0xFF);
 90650        bytes.push(((octet >>> 7) | 0x80) & 0xFF);
 90651        bytes.push(octet & 0x7F);
 90652      } else {
 90653        bytes.push(((octet >>> 28) | 0x80) & 0xFF);
 90654        bytes.push(((octet >>> 21) | 0x80) & 0xFF);
 90655        bytes.push(((octet >>> 14) | 0x80) & 0xFF);
 90656        bytes.push(((octet >>> 7) | 0x80) & 0xFF);
 90657        bytes.push(octet & 0x7F);
 90658      }
 90659    }
 90660  
 90661    var tmp = s.split('.');
 90662    var bytes = [];
 90663    bytes.push(parseInt(tmp[0], 10) * 40 + parseInt(tmp[1], 10));
 90664    tmp.slice(2).forEach(function (b) {
 90665      encodeOctet(bytes, parseInt(b, 10));
 90666    });
 90667  
 90668    var self = this;
 90669    this._ensure(2 + bytes.length);
 90670    this.writeByte(tag);
 90671    this.writeLength(bytes.length);
 90672    bytes.forEach(function (b) {
 90673      self.writeByte(b);
 90674    });
 90675  };
 90676  
 90677  
 90678  Writer.prototype.writeLength = function (len) {
 90679    if (typeof (len) !== 'number')
 90680      throw new TypeError('argument must be a Number');
 90681  
 90682    this._ensure(4);
 90683  
 90684    if (len <= 0x7f) {
 90685      this._buf[this._offset++] = len;
 90686    } else if (len <= 0xff) {
 90687      this._buf[this._offset++] = 0x81;
 90688      this._buf[this._offset++] = len;
 90689    } else if (len <= 0xffff) {
 90690      this._buf[this._offset++] = 0x82;
 90691      this._buf[this._offset++] = len >> 8;
 90692      this._buf[this._offset++] = len;
 90693    } else if (len <= 0xffffff) {
 90694      this._buf[this._offset++] = 0x83;
 90695      this._buf[this._offset++] = len >> 16;
 90696      this._buf[this._offset++] = len >> 8;
 90697      this._buf[this._offset++] = len;
 90698    } else {
 90699      throw newInvalidAsn1Error('Length too long (> 4 bytes)');
 90700    }
 90701  };
 90702  
 90703  Writer.prototype.startSequence = function (tag) {
 90704    if (typeof (tag) !== 'number')
 90705      tag = ASN1.Sequence | ASN1.Constructor;
 90706  
 90707    this.writeByte(tag);
 90708    this._seq.push(this._offset);
 90709    this._ensure(3);
 90710    this._offset += 3;
 90711  };
 90712  
 90713  
 90714  Writer.prototype.endSequence = function () {
 90715    var seq = this._seq.pop();
 90716    var start = seq + 3;
 90717    var len = this._offset - start;
 90718  
 90719    if (len <= 0x7f) {
 90720      this._shift(start, len, -2);
 90721      this._buf[seq] = len;
 90722    } else if (len <= 0xff) {
 90723      this._shift(start, len, -1);
 90724      this._buf[seq] = 0x81;
 90725      this._buf[seq + 1] = len;
 90726    } else if (len <= 0xffff) {
 90727      this._buf[seq] = 0x82;
 90728      this._buf[seq + 1] = len >> 8;
 90729      this._buf[seq + 2] = len;
 90730    } else if (len <= 0xffffff) {
 90731      this._shift(start, len, 1);
 90732      this._buf[seq] = 0x83;
 90733      this._buf[seq + 1] = len >> 16;
 90734      this._buf[seq + 2] = len >> 8;
 90735      this._buf[seq + 3] = len;
 90736    } else {
 90737      throw newInvalidAsn1Error('Sequence too long');
 90738    }
 90739  };
 90740  
 90741  
 90742  Writer.prototype._shift = function (start, len, shift) {
 90743    assert.ok(start !== undefined);
 90744    assert.ok(len !== undefined);
 90745    assert.ok(shift);
 90746  
 90747    this._buf.copy(this._buf, start + shift, start, start + len);
 90748    this._offset += shift;
 90749  };
 90750  
 90751  Writer.prototype._ensure = function (len) {
 90752    assert.ok(len);
 90753  
 90754    if (this._size - this._offset < len) {
 90755      var sz = this._size * this._options.growthFactor;
 90756      if (sz - this._offset < len)
 90757        sz += len;
 90758  
 90759      var buf = Buffer.alloc(sz);
 90760  
 90761      this._buf.copy(buf, 0, 0, this._offset);
 90762      this._buf = buf;
 90763      this._size = sz;
 90764    }
 90765  };
 90766  
 90767  
 90768  
 90769  // --- Exported API
 90770  
 90771  module.exports = Writer;
 90772  
 90773  
 90774  /***/ }),
 90775  /* 485 */
 90776  /***/ (function(module, exports, __webpack_require__) {
 90777  
 90778  module.exports =
 90779  {
 90780    parallel      : __webpack_require__(487),
 90781    serial        : __webpack_require__(488),
 90782    serialOrdered : __webpack_require__(345)
 90783  };
 90784  
 90785  
 90786  /***/ }),
 90787  /* 486 */
 90788  /***/ (function(module, exports) {
 90789  
 90790  module.exports = defer;
 90791  
 90792  /**
 90793   * Runs provided function on next iteration of the event loop
 90794   *
 90795   * @param {function} fn - function to run
 90796   */
 90797  function defer(fn)
 90798  {
 90799    var nextTick = typeof setImmediate == 'function'
 90800      ? setImmediate
 90801      : (
 90802        typeof process == 'object' && typeof process.nextTick == 'function'
 90803        ? process.nextTick
 90804        : null
 90805      );
 90806  
 90807    if (nextTick)
 90808    {
 90809      nextTick(fn);
 90810    }
 90811    else
 90812    {
 90813      setTimeout(fn, 0);
 90814    }
 90815  }
 90816  
 90817  
 90818  /***/ }),
 90819  /* 487 */
 90820  /***/ (function(module, exports, __webpack_require__) {
 90821  
 90822  var iterate    = __webpack_require__(342)
 90823    , initState  = __webpack_require__(343)
 90824    , terminator = __webpack_require__(344)
 90825    ;
 90826  
 90827  // Public API
 90828  module.exports = parallel;
 90829  
 90830  /**
 90831   * Runs iterator over provided array elements in parallel
 90832   *
 90833   * @param   {array|object} list - array or object (named list) to iterate over
 90834   * @param   {function} iterator - iterator to run
 90835   * @param   {function} callback - invoked when all elements processed
 90836   * @returns {function} - jobs terminator
 90837   */
 90838  function parallel(list, iterator, callback)
 90839  {
 90840    var state = initState(list);
 90841  
 90842    while (state.index < (state['keyedList'] || list).length)
 90843    {
 90844      iterate(list, iterator, state, function(error, result)
 90845      {
 90846        if (error)
 90847        {
 90848          callback(error, result);
 90849          return;
 90850        }
 90851  
 90852        // looks like it's the last one
 90853        if (Object.keys(state.jobs).length === 0)
 90854        {
 90855          callback(null, state.results);
 90856          return;
 90857        }
 90858      });
 90859  
 90860      state.index++;
 90861    }
 90862  
 90863    return terminator.bind(state, callback);
 90864  }
 90865  
 90866  
 90867  /***/ }),
 90868  /* 488 */
 90869  /***/ (function(module, exports, __webpack_require__) {
 90870  
 90871  var serialOrdered = __webpack_require__(345);
 90872  
 90873  // Public API
 90874  module.exports = serial;
 90875  
 90876  /**
 90877   * Runs iterator over provided array elements in series
 90878   *
 90879   * @param   {array|object} list - array or object (named list) to iterate over
 90880   * @param   {function} iterator - iterator to run
 90881   * @param   {function} callback - invoked when all elements processed
 90882   * @returns {function} - jobs terminator
 90883   */
 90884  function serial(list, iterator, callback)
 90885  {
 90886    return serialOrdered(list, iterator, null, callback);
 90887  }
 90888  
 90889  
 90890  /***/ }),
 90891  /* 489 */
 90892  /***/ (function(module, exports, __webpack_require__) {
 90893  
 90894  
 90895  /*!
 90896   *  Copyright 2010 LearnBoost <dev@learnboost.com>
 90897   *
 90898   * Licensed under the Apache License, Version 2.0 (the "License");
 90899   * you may not use this file except in compliance with the License.
 90900   * You may obtain a copy of the License at
 90901   *
 90902   *     http://www.apache.org/licenses/LICENSE-2.0
 90903   *
 90904   * Unless required by applicable law or agreed to in writing, software
 90905   * distributed under the License is distributed on an "AS IS" BASIS,
 90906   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 90907   * See the License for the specific language governing permissions and
 90908   * limitations under the License.
 90909   */
 90910  
 90911  /**
 90912   * Module dependencies.
 90913   */
 90914  
 90915  var crypto = __webpack_require__(11)
 90916    , parse = __webpack_require__(24).parse
 90917    ;
 90918  
 90919  /**
 90920   * Valid keys.
 90921   */
 90922  
 90923  var keys = 
 90924    [ 'acl'
 90925    , 'location'
 90926    , 'logging'
 90927    , 'notification'
 90928    , 'partNumber'
 90929    , 'policy'
 90930    , 'requestPayment'
 90931    , 'torrent'
 90932    , 'uploadId'
 90933    , 'uploads'
 90934    , 'versionId'
 90935    , 'versioning'
 90936    , 'versions'
 90937    , 'website'
 90938    ]
 90939  
 90940  /**
 90941   * Return an "Authorization" header value with the given `options`
 90942   * in the form of "AWS <key>:<signature>"
 90943   *
 90944   * @param {Object} options
 90945   * @return {String}
 90946   * @api private
 90947   */
 90948  
 90949  function authorization (options) {
 90950    return 'AWS ' + options.key + ':' + sign(options)
 90951  }
 90952  
 90953  module.exports = authorization
 90954  module.exports.authorization = authorization
 90955  
 90956  /**
 90957   * Simple HMAC-SHA1 Wrapper
 90958   *
 90959   * @param {Object} options
 90960   * @return {String}
 90961   * @api private
 90962   */ 
 90963  
 90964  function hmacSha1 (options) {
 90965    return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64')
 90966  }
 90967  
 90968  module.exports.hmacSha1 = hmacSha1
 90969  
 90970  /**
 90971   * Create a base64 sha1 HMAC for `options`. 
 90972   * 
 90973   * @param {Object} options
 90974   * @return {String}
 90975   * @api private
 90976   */
 90977  
 90978  function sign (options) {
 90979    options.message = stringToSign(options)
 90980    return hmacSha1(options)
 90981  }
 90982  module.exports.sign = sign
 90983  
 90984  /**
 90985   * Create a base64 sha1 HMAC for `options`. 
 90986   *
 90987   * Specifically to be used with S3 presigned URLs
 90988   * 
 90989   * @param {Object} options
 90990   * @return {String}
 90991   * @api private
 90992   */
 90993  
 90994  function signQuery (options) {
 90995    options.message = queryStringToSign(options)
 90996    return hmacSha1(options)
 90997  }
 90998  module.exports.signQuery= signQuery
 90999  
 91000  /**
 91001   * Return a string for sign() with the given `options`.
 91002   *
 91003   * Spec:
 91004   * 
 91005   *    <verb>\n
 91006   *    <md5>\n
 91007   *    <content-type>\n
 91008   *    <date>\n
 91009   *    [headers\n]
 91010   *    <resource>
 91011   *
 91012   * @param {Object} options
 91013   * @return {String}
 91014   * @api private
 91015   */
 91016  
 91017  function stringToSign (options) {
 91018    var headers = options.amazonHeaders || ''
 91019    if (headers) headers += '\n'
 91020    var r = 
 91021      [ options.verb
 91022      , options.md5
 91023      , options.contentType
 91024      , options.date ? options.date.toUTCString() : ''
 91025      , headers + options.resource
 91026      ]
 91027    return r.join('\n')
 91028  }
 91029  module.exports.stringToSign = stringToSign
 91030  
 91031  /**
 91032   * Return a string for sign() with the given `options`, but is meant exclusively
 91033   * for S3 presigned URLs
 91034   *
 91035   * Spec:
 91036   * 
 91037   *    <date>\n
 91038   *    <resource>
 91039   *
 91040   * @param {Object} options
 91041   * @return {String}
 91042   * @api private
 91043   */
 91044  
 91045  function queryStringToSign (options){
 91046    return 'GET\n\n\n' + options.date + '\n' + options.resource
 91047  }
 91048  module.exports.queryStringToSign = queryStringToSign
 91049  
 91050  /**
 91051   * Perform the following:
 91052   *
 91053   *  - ignore non-amazon headers
 91054   *  - lowercase fields
 91055   *  - sort lexicographically
 91056   *  - trim whitespace between ":"
 91057   *  - join with newline
 91058   *
 91059   * @param {Object} headers
 91060   * @return {String}
 91061   * @api private
 91062   */
 91063  
 91064  function canonicalizeHeaders (headers) {
 91065    var buf = []
 91066      , fields = Object.keys(headers)
 91067      ;
 91068    for (var i = 0, len = fields.length; i < len; ++i) {
 91069      var field = fields[i]
 91070        , val = headers[field]
 91071        , field = field.toLowerCase()
 91072        ;
 91073      if (0 !== field.indexOf('x-amz')) continue
 91074      buf.push(field + ':' + val)
 91075    }
 91076    return buf.sort().join('\n')
 91077  }
 91078  module.exports.canonicalizeHeaders = canonicalizeHeaders
 91079  
 91080  /**
 91081   * Perform the following:
 91082   *
 91083   *  - ignore non sub-resources
 91084   *  - sort lexicographically
 91085   *
 91086   * @param {String} resource
 91087   * @return {String}
 91088   * @api private
 91089   */
 91090  
 91091  function canonicalizeResource (resource) {
 91092    var url = parse(resource, true)
 91093      , path = url.pathname
 91094      , buf = []
 91095      ;
 91096  
 91097    Object.keys(url.query).forEach(function(key){
 91098      if (!~keys.indexOf(key)) return
 91099      var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key])
 91100      buf.push(key + val)
 91101    })
 91102  
 91103    return path + (buf.length ? '?' + buf.sort().join('&') : '')
 91104  }
 91105  module.exports.canonicalizeResource = canonicalizeResource
 91106  
 91107  
 91108  /***/ }),
 91109  /* 490 */
 91110  /***/ (function(module, exports, __webpack_require__) {
 91111  
 91112  var aws4 = exports,
 91113      url = __webpack_require__(24),
 91114      querystring = __webpack_require__(197),
 91115      crypto = __webpack_require__(11),
 91116      lru = __webpack_require__(491),
 91117      credentialsCache = lru(1000)
 91118  
 91119  // http://docs.amazonwebservices.com/general/latest/gr/signature-version-4.html
 91120  
 91121  function hmac(key, string, encoding) {
 91122    return crypto.createHmac('sha256', key).update(string, 'utf8').digest(encoding)
 91123  }
 91124  
 91125  function hash(string, encoding) {
 91126    return crypto.createHash('sha256').update(string, 'utf8').digest(encoding)
 91127  }
 91128  
 91129  // This function assumes the string has already been percent encoded
 91130  function encodeRfc3986(urlEncodedString) {
 91131    return urlEncodedString.replace(/[!'()*]/g, function(c) {
 91132      return '%' + c.charCodeAt(0).toString(16).toUpperCase()
 91133    })
 91134  }
 91135  
 91136  // request: { path | body, [host], [method], [headers], [service], [region] }
 91137  // credentials: { accessKeyId, secretAccessKey, [sessionToken] }
 91138  function RequestSigner(request, credentials) {
 91139  
 91140    if (typeof request === 'string') request = url.parse(request)
 91141  
 91142    var headers = request.headers = (request.headers || {}),
 91143        hostParts = this.matchHost(request.hostname || request.host || headers.Host || headers.host)
 91144  
 91145    this.request = request
 91146    this.credentials = credentials || this.defaultCredentials()
 91147  
 91148    this.service = request.service || hostParts[0] || ''
 91149    this.region = request.region || hostParts[1] || 'us-east-1'
 91150  
 91151    // SES uses a different domain from the service name
 91152    if (this.service === 'email') this.service = 'ses'
 91153  
 91154    if (!request.method && request.body)
 91155      request.method = 'POST'
 91156  
 91157    if (!headers.Host && !headers.host) {
 91158      headers.Host = request.hostname || request.host || this.createHost()
 91159  
 91160      // If a port is specified explicitly, use it as is
 91161      if (request.port)
 91162        headers.Host += ':' + request.port
 91163    }
 91164    if (!request.hostname && !request.host)
 91165      request.hostname = headers.Host || headers.host
 91166  
 91167    this.isCodeCommitGit = this.service === 'codecommit' && request.method === 'GIT'
 91168  }
 91169  
 91170  RequestSigner.prototype.matchHost = function(host) {
 91171    var match = (host || '').match(/([^\.]+)\.(?:([^\.]*)\.)?amazonaws\.com$/)
 91172    var hostParts = (match || []).slice(1, 3)
 91173  
 91174    // ES's hostParts are sometimes the other way round, if the value that is expected
 91175    // to be region equals ‘es’ switch them back
 91176    // e.g. search-cluster-name-aaaa00aaaa0aaa0aaaaaaa0aaa.us-east-1.es.amazonaws.com
 91177    if (hostParts[1] === 'es')
 91178      hostParts = hostParts.reverse()
 91179  
 91180    return hostParts
 91181  }
 91182  
 91183  // http://docs.aws.amazon.com/general/latest/gr/rande.html
 91184  RequestSigner.prototype.isSingleRegion = function() {
 91185    // Special case for S3 and SimpleDB in us-east-1
 91186    if (['s3', 'sdb'].indexOf(this.service) >= 0 && this.region === 'us-east-1') return true
 91187  
 91188    return ['cloudfront', 'ls', 'route53', 'iam', 'importexport', 'sts']
 91189      .indexOf(this.service) >= 0
 91190  }
 91191  
 91192  RequestSigner.prototype.createHost = function() {
 91193    var region = this.isSingleRegion() ? '' :
 91194          (this.service === 's3' && this.region !== 'us-east-1' ? '-' : '.') + this.region,
 91195        service = this.service === 'ses' ? 'email' : this.service
 91196    return service + region + '.amazonaws.com'
 91197  }
 91198  
 91199  RequestSigner.prototype.prepareRequest = function() {
 91200    this.parsePath()
 91201  
 91202    var request = this.request, headers = request.headers, query
 91203  
 91204    if (request.signQuery) {
 91205  
 91206      this.parsedPath.query = query = this.parsedPath.query || {}
 91207  
 91208      if (this.credentials.sessionToken)
 91209        query['X-Amz-Security-Token'] = this.credentials.sessionToken
 91210  
 91211      if (this.service === 's3' && !query['X-Amz-Expires'])
 91212        query['X-Amz-Expires'] = 86400
 91213  
 91214      if (query['X-Amz-Date'])
 91215        this.datetime = query['X-Amz-Date']
 91216      else
 91217        query['X-Amz-Date'] = this.getDateTime()
 91218  
 91219      query['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256'
 91220      query['X-Amz-Credential'] = this.credentials.accessKeyId + '/' + this.credentialString()
 91221      query['X-Amz-SignedHeaders'] = this.signedHeaders()
 91222  
 91223    } else {
 91224  
 91225      if (!request.doNotModifyHeaders && !this.isCodeCommitGit) {
 91226        if (request.body && !headers['Content-Type'] && !headers['content-type'])
 91227          headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8'
 91228  
 91229        if (request.body && !headers['Content-Length'] && !headers['content-length'])
 91230          headers['Content-Length'] = Buffer.byteLength(request.body)
 91231  
 91232        if (this.credentials.sessionToken && !headers['X-Amz-Security-Token'] && !headers['x-amz-security-token'])
 91233          headers['X-Amz-Security-Token'] = this.credentials.sessionToken
 91234  
 91235        if (this.service === 's3' && !headers['X-Amz-Content-Sha256'] && !headers['x-amz-content-sha256'])
 91236          headers['X-Amz-Content-Sha256'] = hash(this.request.body || '', 'hex')
 91237  
 91238        if (headers['X-Amz-Date'] || headers['x-amz-date'])
 91239          this.datetime = headers['X-Amz-Date'] || headers['x-amz-date']
 91240        else
 91241          headers['X-Amz-Date'] = this.getDateTime()
 91242      }
 91243  
 91244      delete headers.Authorization
 91245      delete headers.authorization
 91246    }
 91247  }
 91248  
 91249  RequestSigner.prototype.sign = function() {
 91250    if (!this.parsedPath) this.prepareRequest()
 91251  
 91252    if (this.request.signQuery) {
 91253      this.parsedPath.query['X-Amz-Signature'] = this.signature()
 91254    } else {
 91255      this.request.headers.Authorization = this.authHeader()
 91256    }
 91257  
 91258    this.request.path = this.formatPath()
 91259  
 91260    return this.request
 91261  }
 91262  
 91263  RequestSigner.prototype.getDateTime = function() {
 91264    if (!this.datetime) {
 91265      var headers = this.request.headers,
 91266        date = new Date(headers.Date || headers.date || new Date)
 91267  
 91268      this.datetime = date.toISOString().replace(/[:\-]|\.\d{3}/g, '')
 91269  
 91270      // Remove the trailing 'Z' on the timestamp string for CodeCommit git access
 91271      if (this.isCodeCommitGit) this.datetime = this.datetime.slice(0, -1)
 91272    }
 91273    return this.datetime
 91274  }
 91275  
 91276  RequestSigner.prototype.getDate = function() {
 91277    return this.getDateTime().substr(0, 8)
 91278  }
 91279  
 91280  RequestSigner.prototype.authHeader = function() {
 91281    return [
 91282      'AWS4-HMAC-SHA256 Credential=' + this.credentials.accessKeyId + '/' + this.credentialString(),
 91283      'SignedHeaders=' + this.signedHeaders(),
 91284      'Signature=' + this.signature(),
 91285    ].join(', ')
 91286  }
 91287  
 91288  RequestSigner.prototype.signature = function() {
 91289    var date = this.getDate(),
 91290        cacheKey = [this.credentials.secretAccessKey, date, this.region, this.service].join(),
 91291        kDate, kRegion, kService, kCredentials = credentialsCache.get(cacheKey)
 91292    if (!kCredentials) {
 91293      kDate = hmac('AWS4' + this.credentials.secretAccessKey, date)
 91294      kRegion = hmac(kDate, this.region)
 91295      kService = hmac(kRegion, this.service)
 91296      kCredentials = hmac(kService, 'aws4_request')
 91297      credentialsCache.set(cacheKey, kCredentials)
 91298    }
 91299    return hmac(kCredentials, this.stringToSign(), 'hex')
 91300  }
 91301  
 91302  RequestSigner.prototype.stringToSign = function() {
 91303    return [
 91304      'AWS4-HMAC-SHA256',
 91305      this.getDateTime(),
 91306      this.credentialString(),
 91307      hash(this.canonicalString(), 'hex'),
 91308    ].join('\n')
 91309  }
 91310  
 91311  RequestSigner.prototype.canonicalString = function() {
 91312    if (!this.parsedPath) this.prepareRequest()
 91313  
 91314    var pathStr = this.parsedPath.path,
 91315        query = this.parsedPath.query,
 91316        headers = this.request.headers,
 91317        queryStr = '',
 91318        normalizePath = this.service !== 's3',
 91319        decodePath = this.service === 's3' || this.request.doNotEncodePath,
 91320        decodeSlashesInPath = this.service === 's3',
 91321        firstValOnly = this.service === 's3',
 91322        bodyHash
 91323  
 91324    if (this.service === 's3' && this.request.signQuery) {
 91325      bodyHash = 'UNSIGNED-PAYLOAD'
 91326    } else if (this.isCodeCommitGit) {
 91327      bodyHash = ''
 91328    } else {
 91329      bodyHash = headers['X-Amz-Content-Sha256'] || headers['x-amz-content-sha256'] ||
 91330        hash(this.request.body || '', 'hex')
 91331    }
 91332  
 91333    if (query) {
 91334      queryStr = encodeRfc3986(querystring.stringify(Object.keys(query).sort().reduce(function(obj, key) {
 91335        if (!key) return obj
 91336        obj[key] = !Array.isArray(query[key]) ? query[key] :
 91337          (firstValOnly ? query[key][0] : query[key].slice().sort())
 91338        return obj
 91339      }, {})))
 91340    }
 91341    if (pathStr !== '/') {
 91342      if (normalizePath) pathStr = pathStr.replace(/\/{2,}/g, '/')
 91343      pathStr = pathStr.split('/').reduce(function(path, piece) {
 91344        if (normalizePath && piece === '..') {
 91345          path.pop()
 91346        } else if (!normalizePath || piece !== '.') {
 91347          if (decodePath) piece = decodeURIComponent(piece)
 91348          path.push(encodeRfc3986(encodeURIComponent(piece)))
 91349        }
 91350        return path
 91351      }, []).join('/')
 91352      if (pathStr[0] !== '/') pathStr = '/' + pathStr
 91353      if (decodeSlashesInPath) pathStr = pathStr.replace(/%2F/g, '/')
 91354    }
 91355  
 91356    return [
 91357      this.request.method || 'GET',
 91358      pathStr,
 91359      queryStr,
 91360      this.canonicalHeaders() + '\n',
 91361      this.signedHeaders(),
 91362      bodyHash,
 91363    ].join('\n')
 91364  }
 91365  
 91366  RequestSigner.prototype.canonicalHeaders = function() {
 91367    var headers = this.request.headers
 91368    function trimAll(header) {
 91369      return header.toString().trim().replace(/\s+/g, ' ')
 91370    }
 91371    return Object.keys(headers)
 91372      .sort(function(a, b) { return a.toLowerCase() < b.toLowerCase() ? -1 : 1 })
 91373      .map(function(key) { return key.toLowerCase() + ':' + trimAll(headers[key]) })
 91374      .join('\n')
 91375  }
 91376  
 91377  RequestSigner.prototype.signedHeaders = function() {
 91378    return Object.keys(this.request.headers)
 91379      .map(function(key) { return key.toLowerCase() })
 91380      .sort()
 91381      .join(';')
 91382  }
 91383  
 91384  RequestSigner.prototype.credentialString = function() {
 91385    return [
 91386      this.getDate(),
 91387      this.region,
 91388      this.service,
 91389      'aws4_request',
 91390    ].join('/')
 91391  }
 91392  
 91393  RequestSigner.prototype.defaultCredentials = function() {
 91394    var env = process.env
 91395    return {
 91396      accessKeyId: env.AWS_ACCESS_KEY_ID || env.AWS_ACCESS_KEY,
 91397      secretAccessKey: env.AWS_SECRET_ACCESS_KEY || env.AWS_SECRET_KEY,
 91398      sessionToken: env.AWS_SESSION_TOKEN,
 91399    }
 91400  }
 91401  
 91402  RequestSigner.prototype.parsePath = function() {
 91403    var path = this.request.path || '/',
 91404        queryIx = path.indexOf('?'),
 91405        query = null
 91406  
 91407    if (queryIx >= 0) {
 91408      query = querystring.parse(path.slice(queryIx + 1))
 91409      path = path.slice(0, queryIx)
 91410    }
 91411  
 91412    // S3 doesn't always encode characters > 127 correctly and
 91413    // all services don't encode characters > 255 correctly
 91414    // So if there are non-reserved chars (and it's not already all % encoded), just encode them all
 91415    if (/[^0-9A-Za-z!'()*\-._~%/]/.test(path)) {
 91416      path = path.split('/').map(function(piece) {
 91417        return encodeURIComponent(decodeURIComponent(piece))
 91418      }).join('/')
 91419    }
 91420  
 91421    this.parsedPath = {
 91422      path: path,
 91423      query: query,
 91424    }
 91425  }
 91426  
 91427  RequestSigner.prototype.formatPath = function() {
 91428    var path = this.parsedPath.path,
 91429        query = this.parsedPath.query
 91430  
 91431    if (!query) return path
 91432  
 91433    // Services don't support empty query string keys
 91434    if (query[''] != null) delete query['']
 91435  
 91436    return path + '?' + encodeRfc3986(querystring.stringify(query))
 91437  }
 91438  
 91439  aws4.RequestSigner = RequestSigner
 91440  
 91441  aws4.sign = function(request, credentials) {
 91442    return new RequestSigner(request, credentials).sign()
 91443  }
 91444  
 91445  
 91446  /***/ }),
 91447  /* 491 */
 91448  /***/ (function(module, exports) {
 91449  
 91450  module.exports = function(size) {
 91451    return new LruCache(size)
 91452  }
 91453  
 91454  function LruCache(size) {
 91455    this.capacity = size | 0
 91456    this.map = Object.create(null)
 91457    this.list = new DoublyLinkedList()
 91458  }
 91459  
 91460  LruCache.prototype.get = function(key) {
 91461    var node = this.map[key]
 91462    if (node == null) return undefined
 91463    this.used(node)
 91464    return node.val
 91465  }
 91466  
 91467  LruCache.prototype.set = function(key, val) {
 91468    var node = this.map[key]
 91469    if (node != null) {
 91470      node.val = val
 91471    } else {
 91472      if (!this.capacity) this.prune()
 91473      if (!this.capacity) return false
 91474      node = new DoublyLinkedNode(key, val)
 91475      this.map[key] = node
 91476      this.capacity--
 91477    }
 91478    this.used(node)
 91479    return true
 91480  }
 91481  
 91482  LruCache.prototype.used = function(node) {
 91483    this.list.moveToFront(node)
 91484  }
 91485  
 91486  LruCache.prototype.prune = function() {
 91487    var node = this.list.pop()
 91488    if (node != null) {
 91489      delete this.map[node.key]
 91490      this.capacity++
 91491    }
 91492  }
 91493  
 91494  
 91495  function DoublyLinkedList() {
 91496    this.firstNode = null
 91497    this.lastNode = null
 91498  }
 91499  
 91500  DoublyLinkedList.prototype.moveToFront = function(node) {
 91501    if (this.firstNode == node) return
 91502  
 91503    this.remove(node)
 91504  
 91505    if (this.firstNode == null) {
 91506      this.firstNode = node
 91507      this.lastNode = node
 91508      node.prev = null
 91509      node.next = null
 91510    } else {
 91511      node.prev = null
 91512      node.next = this.firstNode
 91513      node.next.prev = node
 91514      this.firstNode = node
 91515    }
 91516  }
 91517  
 91518  DoublyLinkedList.prototype.pop = function() {
 91519    var lastNode = this.lastNode
 91520    if (lastNode != null) {
 91521      this.remove(lastNode)
 91522    }
 91523    return lastNode
 91524  }
 91525  
 91526  DoublyLinkedList.prototype.remove = function(node) {
 91527    if (this.firstNode == node) {
 91528      this.firstNode = node.next
 91529    } else if (node.prev != null) {
 91530      node.prev.next = node.next
 91531    }
 91532    if (this.lastNode == node) {
 91533      this.lastNode = node.prev
 91534    } else if (node.next != null) {
 91535      node.next.prev = node.prev
 91536    }
 91537  }
 91538  
 91539  
 91540  function DoublyLinkedNode(key, val) {
 91541    this.key = key
 91542    this.val = val
 91543    this.prev = null
 91544    this.next = null
 91545  }
 91546  
 91547  
 91548  /***/ }),
 91549  /* 492 */
 91550  /***/ (function(module, exports, __webpack_require__) {
 91551  
 91552  "use strict";
 91553  
 91554  
 91555  Object.defineProperty(exports, "__esModule", {
 91556    value: true
 91557  });
 91558  
 91559  exports.default = function (message) {
 91560    return {
 91561      useless: true,
 91562      run() {
 91563        throw new (_errors || _load_errors()).MessageError(message);
 91564      },
 91565      setFlags: () => {},
 91566      hasWrapper: () => true
 91567    };
 91568  };
 91569  
 91570  var _errors;
 91571  
 91572  function _load_errors() {
 91573    return _errors = __webpack_require__(6);
 91574  }
 91575  
 91576  /***/ }),
 91577  /* 493 */
 91578  /***/ (function(module, exports, __webpack_require__) {
 91579  
 91580  "use strict";
 91581  
 91582  
 91583  Object.defineProperty(exports, "__esModule", {
 91584    value: true
 91585  });
 91586  exports.examples = exports.hasWrapper = exports.run = undefined;
 91587  exports.setFlags = setFlags;
 91588  
 91589  var _buildSubCommands2;
 91590  
 91591  function _load_buildSubCommands() {
 91592    return _buildSubCommands2 = _interopRequireDefault(__webpack_require__(59));
 91593  }
 91594  
 91595  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 91596  
 91597  const notYetImplemented = () => Promise.reject(new Error('This command is not implemented yet.'));
 91598  
 91599  function setFlags(commander) {
 91600    commander.description('Has not been implemented yet');
 91601  }
 91602  
 91603  var _buildSubCommands = (0, (_buildSubCommands2 || _load_buildSubCommands()).default)('access', {
 91604    public: notYetImplemented,
 91605    restricted: notYetImplemented,
 91606    grant: notYetImplemented,
 91607    revoke: notYetImplemented,
 91608    lsPackages: notYetImplemented,
 91609    lsCollaborators: notYetImplemented,
 91610    edit: notYetImplemented
 91611  }, ['WARNING: This command yet to be implemented.', 'public [<package>]', 'restricted [<package>]', 'grant <read-only|read-write> <scope:team> [<package>]', 'revoke <scope:team> [<package>]', 'ls-packages [<user>|<scope>|<scope:team>]', 'ls-collaborators [<package> [<user>]]', 'edit [<package>]']);
 91612  
 91613  const run = _buildSubCommands.run,
 91614        hasWrapper = _buildSubCommands.hasWrapper,
 91615        examples = _buildSubCommands.examples;
 91616  exports.run = run;
 91617  exports.hasWrapper = hasWrapper;
 91618  exports.examples = examples;
 91619  
 91620  /***/ }),
 91621  /* 494 */
 91622  /***/ (function(module, exports, __webpack_require__) {
 91623  
 91624  "use strict";
 91625  
 91626  
 91627  Object.defineProperty(exports, "__esModule", {
 91628    value: true
 91629  });
 91630  exports.run = undefined;
 91631  
 91632  var _asyncToGenerator2;
 91633  
 91634  function _load_asyncToGenerator() {
 91635    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 91636  }
 91637  
 91638  let run = exports.run = (() => {
 91639    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 91640      const binFolder = path.join(config.cwd, config.registryFolders[0], '.bin');
 91641      if (args.length === 0) {
 91642        reporter.log(binFolder, { force: true });
 91643      } else {
 91644        const binEntries = yield (0, (_run || _load_run()).getBinEntries)(config);
 91645  
 91646        const binName = args[0];
 91647        const binPath = binEntries.get(binName);
 91648  
 91649        if (binPath) {
 91650          reporter.log(binPath, { force: true });
 91651        } else {
 91652          reporter.error(reporter.lang('packageBinaryNotFound', binName));
 91653        }
 91654      }
 91655    });
 91656  
 91657    return function run(_x, _x2, _x3, _x4) {
 91658      return _ref.apply(this, arguments);
 91659    };
 91660  })();
 91661  
 91662  exports.hasWrapper = hasWrapper;
 91663  exports.setFlags = setFlags;
 91664  
 91665  var _run;
 91666  
 91667  function _load_run() {
 91668    return _run = __webpack_require__(354);
 91669  }
 91670  
 91671  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 91672  
 91673  const path = __webpack_require__(0);
 91674  
 91675  function hasWrapper(commander) {
 91676    return false;
 91677  }
 91678  
 91679  function setFlags(commander) {
 91680    commander.description('Displays the location of the yarn bin folder.');
 91681  }
 91682  
 91683  /***/ }),
 91684  /* 495 */
 91685  /***/ (function(module, exports, __webpack_require__) {
 91686  
 91687  "use strict";
 91688  
 91689  
 91690  Object.defineProperty(exports, "__esModule", {
 91691    value: true
 91692  });
 91693  exports.examples = exports.run = undefined;
 91694  
 91695  var _asyncToGenerator2;
 91696  
 91697  function _load_asyncToGenerator() {
 91698    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 91699  }
 91700  
 91701  exports.hasWrapper = hasWrapper;
 91702  exports.setFlags = setFlags;
 91703  
 91704  var _buildSubCommands2;
 91705  
 91706  function _load_buildSubCommands() {
 91707    return _buildSubCommands2 = _interopRequireDefault(__webpack_require__(59));
 91708  }
 91709  
 91710  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 91711  
 91712  const CONFIG_KEYS = [
 91713  // 'reporter',
 91714  'registryFolders', 'linkedModules',
 91715  // 'registries',
 91716  'cache', 'cwd', 'looseSemver', 'commandName', 'preferOffline', 'modulesFolder', 'globalFolder', 'linkFolder', 'offline', 'binLinks', 'ignorePlatform', 'ignoreScripts', 'disablePrepublish', 'nonInteractive', 'workspaceRootFolder', 'lockfileFolder', 'networkConcurrency', 'childConcurrency', 'networkTimeout', 'workspacesEnabled', 'workspacesNohoistEnabled', 'pruneOfflineMirror', 'enableMetaFolder', 'enableLockfileVersions', 'linkFileDependencies', 'cacheFolder', 'tempFolder', 'production'];
 91717  /* eslint object-shorthand: 0 */
 91718  
 91719  function hasWrapper(flags, args) {
 91720    return args[0] !== 'get';
 91721  }
 91722  
 91723  function setFlags(commander) {
 91724    commander.description('Manages the yarn configuration files.');
 91725  }
 91726  
 91727  var _buildSubCommands = (0, (_buildSubCommands2 || _load_buildSubCommands()).default)('config', {
 91728    set(config, reporter, flags, args) {
 91729      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 91730        if (args.length === 0 || args.length > 2) {
 91731          return false;
 91732        }
 91733        const key = args[0];
 91734        var _args$ = args[1];
 91735        const val = _args$ === undefined ? true : _args$;
 91736  
 91737        const yarnConfig = config.registries.yarn;
 91738        yield yarnConfig.saveHomeConfig({ [key]: val });
 91739        reporter.success(reporter.lang('configSet', key, val));
 91740        return true;
 91741      })();
 91742    },
 91743  
 91744    get(config, reporter, flags, args) {
 91745      if (args.length !== 1) {
 91746        return false;
 91747      }
 91748  
 91749      reporter.log(String(config.getOption(args[0])), { force: true });
 91750      return true;
 91751    },
 91752  
 91753    delete: (() => {
 91754      var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 91755        if (args.length !== 1) {
 91756          return false;
 91757        }
 91758  
 91759        const key = args[0];
 91760        const yarnConfig = config.registries.yarn;
 91761        yield yarnConfig.saveHomeConfig({ [key]: undefined });
 91762        reporter.success(reporter.lang('configDelete', key));
 91763        return true;
 91764      });
 91765  
 91766      function _delete(_x, _x2, _x3, _x4) {
 91767        return _ref.apply(this, arguments);
 91768      }
 91769  
 91770      return _delete;
 91771    })(),
 91772  
 91773    list(config, reporter, flags, args) {
 91774      if (args.length) {
 91775        return false;
 91776      }
 91777  
 91778      reporter.info(reporter.lang('configYarn'));
 91779      reporter.inspect(config.registries.yarn.config);
 91780  
 91781      reporter.info(reporter.lang('configNpm'));
 91782      reporter.inspect(config.registries.npm.config);
 91783  
 91784      return true;
 91785    },
 91786  
 91787    current(config, reporter, flags, args) {
 91788      if (args.length) {
 91789        return false;
 91790      }
 91791  
 91792      reporter.log(JSON.stringify(config, CONFIG_KEYS, 2), { force: true });
 91793  
 91794      return true;
 91795    }
 91796  });
 91797  
 91798  const run = _buildSubCommands.run,
 91799        examples = _buildSubCommands.examples;
 91800  exports.run = run;
 91801  exports.examples = examples;
 91802  
 91803  /***/ }),
 91804  /* 496 */
 91805  /***/ (function(module, exports, __webpack_require__) {
 91806  
 91807  "use strict";
 91808  
 91809  
 91810  Object.defineProperty(exports, "__esModule", {
 91811    value: true
 91812  });
 91813  exports.run = undefined;
 91814  
 91815  var _asyncToGenerator2;
 91816  
 91817  function _load_asyncToGenerator() {
 91818    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 91819  }
 91820  
 91821  var _extends2;
 91822  
 91823  function _load_extends() {
 91824    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 91825  }
 91826  
 91827  let run = exports.run = (() => {
 91828    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 91829      const builderName = args[0],
 91830            rest = args.slice(1);
 91831  
 91832  
 91833      if (!builderName) {
 91834        throw new (_errors || _load_errors()).MessageError(reporter.lang('invalidPackageName'));
 91835      }
 91836  
 91837      var _coerceCreatePackageN = coerceCreatePackageName(builderName);
 91838  
 91839      const packageName = _coerceCreatePackageN.fullName,
 91840            commandName = _coerceCreatePackageN.name;
 91841  
 91842  
 91843      const linkLoc = path.join(config.linkFolder, commandName);
 91844      if (yield (_fs || _load_fs()).exists(linkLoc)) {
 91845        reporter.info(reporter.lang('linkUsing', packageName));
 91846      } else {
 91847        yield (0, (_global || _load_global()).run)(config, reporter, {}, ['add', packageName]);
 91848      }
 91849  
 91850      const binFolder = yield (0, (_global || _load_global()).getBinFolder)(config, {});
 91851      const command = path.resolve(binFolder, commandName);
 91852      const env = yield (0, (_executeLifecycleScript || _load_executeLifecycleScript()).makeEnv)('create', config.cwd, config);
 91853  
 91854      yield (_child || _load_child()).spawn(command, rest, { stdio: `inherit`, shell: true, env });
 91855    });
 91856  
 91857    return function run(_x, _x2, _x3, _x4) {
 91858      return _ref.apply(this, arguments);
 91859    };
 91860  })();
 91861  
 91862  exports.setFlags = setFlags;
 91863  exports.hasWrapper = hasWrapper;
 91864  exports.parsePackageName = parsePackageName;
 91865  exports.coerceCreatePackageName = coerceCreatePackageName;
 91866  
 91867  var _errors;
 91868  
 91869  function _load_errors() {
 91870    return _errors = __webpack_require__(6);
 91871  }
 91872  
 91873  var _child;
 91874  
 91875  function _load_child() {
 91876    return _child = _interopRequireWildcard(__webpack_require__(50));
 91877  }
 91878  
 91879  var _executeLifecycleScript;
 91880  
 91881  function _load_executeLifecycleScript() {
 91882    return _executeLifecycleScript = __webpack_require__(111);
 91883  }
 91884  
 91885  var _fs;
 91886  
 91887  function _load_fs() {
 91888    return _fs = _interopRequireWildcard(__webpack_require__(5));
 91889  }
 91890  
 91891  var _global;
 91892  
 91893  function _load_global() {
 91894    return _global = __webpack_require__(121);
 91895  }
 91896  
 91897  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 91898  
 91899  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 91900  
 91901  const path = __webpack_require__(0);
 91902  
 91903  function setFlags(commander) {
 91904    commander.description('Creates new projects from any create-* starter kits.');
 91905  }
 91906  
 91907  function hasWrapper(commander, args) {
 91908    return true;
 91909  }
 91910  
 91911  function parsePackageName(str) {
 91912    if (str.charAt(0) === '/') {
 91913      throw new Error(`Name should not start with "/", got "${str}"`);
 91914    }
 91915    if (str.charAt(0) === '.') {
 91916      throw new Error(`Name should not start with ".", got "${str}"`);
 91917    }
 91918    const parts = str.split('/');
 91919    const isScoped = str.charAt(0) === '@';
 91920    if (isScoped && parts[0] === '@') {
 91921      throw new Error(`Scope should not be empty, got "${str}"`);
 91922    }
 91923    const scope = isScoped ? parts[0] : '';
 91924    const name = parts[isScoped ? 1 : 0] || '';
 91925    const path = parts.slice(isScoped ? 2 : 1).join('/');
 91926    const fullName = [scope, name].filter(Boolean).join('/');
 91927    const full = [scope, name, path].filter(Boolean).join('/');
 91928  
 91929    return { fullName, name, scope, path, full };
 91930  }
 91931  
 91932  function coerceCreatePackageName(str) {
 91933    const pkgNameObj = parsePackageName(str);
 91934    const coercedName = pkgNameObj.name !== '' ? `create-${pkgNameObj.name}` : `create`;
 91935    const coercedPkgNameObj = (0, (_extends2 || _load_extends()).default)({}, pkgNameObj, {
 91936      name: coercedName,
 91937      fullName: [pkgNameObj.scope, coercedName].filter(Boolean).join('/'),
 91938      full: [pkgNameObj.scope, coercedName, pkgNameObj.path].filter(Boolean).join('/')
 91939    });
 91940    return coercedPkgNameObj;
 91941  }
 91942  
 91943  /***/ }),
 91944  /* 497 */
 91945  /***/ (function(module, exports, __webpack_require__) {
 91946  
 91947  "use strict";
 91948  
 91949  
 91950  Object.defineProperty(exports, "__esModule", {
 91951    value: true
 91952  });
 91953  exports.run = undefined;
 91954  
 91955  var _asyncToGenerator2;
 91956  
 91957  function _load_asyncToGenerator() {
 91958    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 91959  }
 91960  
 91961  let run = exports.run = (() => {
 91962    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 91963      const env = yield (0, (_executeLifecycleScript || _load_executeLifecycleScript()).makeEnv)(`exec`, config.cwd, config);
 91964  
 91965      if (args.length < 1) {
 91966        throw new (_errors || _load_errors()).MessageError(reporter.lang('execMissingCommand'));
 91967      }
 91968  
 91969      const execName = args[0],
 91970            rest = args.slice(1);
 91971  
 91972      yield (_child || _load_child()).spawn(execName, rest, { stdio: 'inherit', env });
 91973    });
 91974  
 91975    return function run(_x, _x2, _x3, _x4) {
 91976      return _ref.apply(this, arguments);
 91977    };
 91978  })();
 91979  
 91980  exports.setFlags = setFlags;
 91981  exports.hasWrapper = hasWrapper;
 91982  
 91983  var _errors;
 91984  
 91985  function _load_errors() {
 91986    return _errors = __webpack_require__(6);
 91987  }
 91988  
 91989  var _child;
 91990  
 91991  function _load_child() {
 91992    return _child = _interopRequireWildcard(__webpack_require__(50));
 91993  }
 91994  
 91995  var _executeLifecycleScript;
 91996  
 91997  function _load_executeLifecycleScript() {
 91998    return _executeLifecycleScript = __webpack_require__(111);
 91999  }
 92000  
 92001  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 92002  
 92003  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 92004  
 92005  function setFlags(commander) {}
 92006  
 92007  function hasWrapper(commander, args) {
 92008    return true;
 92009  }
 92010  
 92011  /***/ }),
 92012  /* 498 */
 92013  /***/ (function(module, exports, __webpack_require__) {
 92014  
 92015  "use strict";
 92016  
 92017  
 92018  Object.defineProperty(exports, "__esModule", {
 92019    value: true
 92020  });
 92021  exports.examples = exports.run = undefined;
 92022  
 92023  var _asyncToGenerator2;
 92024  
 92025  function _load_asyncToGenerator() {
 92026    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 92027  }
 92028  
 92029  let run = exports.run = (() => {
 92030    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 92031      let manifest;
 92032      if (flags.useManifest) {
 92033        manifest = yield config.readJson(flags.useManifest);
 92034      } else {
 92035        manifest = yield config.readRootManifest();
 92036      }
 92037      if (!manifest.name) {
 92038        throw new (_errors || _load_errors()).MessageError(reporter.lang('noName'));
 92039      }
 92040      if (!manifest.version) {
 92041        throw new (_errors || _load_errors()).MessageError(reporter.lang('noVersion'));
 92042      }
 92043  
 92044      const entry = {
 92045        name: manifest.name,
 92046        version: manifest.version,
 92047        resolved: flags.resolved,
 92048        registry: flags.registry || manifest._registry,
 92049        optionalDependencies: manifest.optionalDependencies,
 92050        dependencies: manifest.dependencies
 92051      };
 92052      const pattern = flags.pattern || `${entry.name}@${entry.version}`;
 92053      reporter.log((0, (_lockfile || _load_lockfile()).stringify)({
 92054        [pattern]: (0, (_lockfile || _load_lockfile()).implodeEntry)(pattern, entry)
 92055      }));
 92056    });
 92057  
 92058    return function run(_x, _x2, _x3, _x4) {
 92059      return _ref.apply(this, arguments);
 92060    };
 92061  })();
 92062  
 92063  exports.hasWrapper = hasWrapper;
 92064  exports.setFlags = setFlags;
 92065  
 92066  var _errors;
 92067  
 92068  function _load_errors() {
 92069    return _errors = __webpack_require__(6);
 92070  }
 92071  
 92072  var _lockfile;
 92073  
 92074  function _load_lockfile() {
 92075    return _lockfile = __webpack_require__(19);
 92076  }
 92077  
 92078  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 92079  
 92080  function hasWrapper(commander, args) {
 92081    return false;
 92082  }
 92083  
 92084  function setFlags(commander) {
 92085    commander.description('Generates a lock file entry.');
 92086    commander.option('--use-manifest <location>', 'description');
 92087    commander.option('--resolved <resolved>', 'description');
 92088    commander.option('--registry <registry>', 'description');
 92089  }
 92090  
 92091  const examples = exports.examples = ['generate-lock-entry', 'generate-lock-entry --use-manifest ./package.json', 'generate-lock-entry --resolved local-file.tgz#hash'];
 92092  
 92093  /***/ }),
 92094  /* 499 */
 92095  /***/ (function(module, exports, __webpack_require__) {
 92096  
 92097  "use strict";
 92098  
 92099  
 92100  Object.defineProperty(exports, "__esModule", {
 92101    value: true
 92102  });
 92103  exports.hasWrapper = hasWrapper;
 92104  exports.setFlags = setFlags;
 92105  exports.run = run;
 92106  
 92107  var _index;
 92108  
 92109  function _load_index() {
 92110    return _index = _interopRequireDefault(__webpack_require__(334));
 92111  }
 92112  
 92113  var _constants;
 92114  
 92115  function _load_constants() {
 92116    return _constants = _interopRequireWildcard(__webpack_require__(8));
 92117  }
 92118  
 92119  var _misc;
 92120  
 92121  function _load_misc() {
 92122    return _misc = __webpack_require__(18);
 92123  }
 92124  
 92125  var _aliases;
 92126  
 92127  function _load_aliases() {
 92128    return _aliases = _interopRequireDefault(__webpack_require__(346));
 92129  }
 92130  
 92131  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 92132  
 92133  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 92134  
 92135  const chalk = __webpack_require__(30);
 92136  
 92137  function hasWrapper(flags, args) {
 92138    return false;
 92139  }
 92140  
 92141  function setFlags(commander) {
 92142    commander.description('Displays help information.');
 92143  }
 92144  
 92145  function run(config, reporter, commander, args) {
 92146    if (args.length) {
 92147      const commandName = args.shift();
 92148      if (Object.prototype.hasOwnProperty.call((_index || _load_index()).default, commandName)) {
 92149        const command = (_index || _load_index()).default[commandName];
 92150        if (command) {
 92151          command.setFlags(commander);
 92152          const examples = (command.examples || []).map(example => `    $ yarn ${example}`);
 92153          if (examples.length) {
 92154            commander.on('--help', () => {
 92155              reporter.log(reporter.lang('helpExamples', reporter.rawText(examples.join('\n'))));
 92156            });
 92157          }
 92158          // eslint-disable-next-line yarn-internal/warn-language
 92159          commander.on('--help', () => reporter.log('  ' + command.getDocsInfo + '\n'));
 92160          commander.help();
 92161          return Promise.resolve();
 92162        }
 92163      }
 92164    }
 92165  
 92166    commander.on('--help', () => {
 92167      const commandsText = [];
 92168      for (var _iterator = Object.keys((_index || _load_index()).default).sort((_misc || _load_misc()).sortAlpha), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 92169        var _ref;
 92170  
 92171        if (_isArray) {
 92172          if (_i >= _iterator.length) break;
 92173          _ref = _iterator[_i++];
 92174        } else {
 92175          _i = _iterator.next();
 92176          if (_i.done) break;
 92177          _ref = _i.value;
 92178        }
 92179  
 92180        const name = _ref;
 92181  
 92182        if ((_index || _load_index()).default[name].useless || Object.keys((_aliases || _load_aliases()).default).map(key => (_aliases || _load_aliases()).default[key]).indexOf(name) > -1) {
 92183          continue;
 92184        }
 92185        if ((_aliases || _load_aliases()).default[name]) {
 92186          commandsText.push(`    - ${(0, (_misc || _load_misc()).hyphenate)(name)} / ${(_aliases || _load_aliases()).default[name]}`);
 92187        } else {
 92188          commandsText.push(`    - ${(0, (_misc || _load_misc()).hyphenate)(name)}`);
 92189        }
 92190      }
 92191      reporter.log(reporter.lang('helpCommands', reporter.rawText(commandsText.join('\n'))));
 92192      reporter.log(reporter.lang('helpCommandsMore', reporter.rawText(chalk.bold('yarn help COMMAND'))));
 92193      reporter.log(reporter.lang('helpLearnMore', reporter.rawText(chalk.bold((_constants || _load_constants()).YARN_DOCS))));
 92194    });
 92195  
 92196    commander.options.sort((_misc || _load_misc()).sortOptionsByFlags);
 92197  
 92198    commander.help();
 92199    return Promise.resolve();
 92200  }
 92201  
 92202  /***/ }),
 92203  /* 500 */
 92204  /***/ (function(module, exports, __webpack_require__) {
 92205  
 92206  "use strict";
 92207  
 92208  
 92209  Object.defineProperty(exports, "__esModule", {
 92210    value: true
 92211  });
 92212  exports.run = exports.Import = exports.noArguments = undefined;
 92213  
 92214  var _asyncToGenerator2;
 92215  
 92216  function _load_asyncToGenerator() {
 92217    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 92218  }
 92219  
 92220  let run = exports.run = (() => {
 92221    var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 92222      const imp = new Import(flags, config, reporter, new (_lockfile || _load_lockfile()).default({ cache: {} }));
 92223      yield imp.init();
 92224    });
 92225  
 92226    return function run(_x, _x2, _x3, _x4) {
 92227      return _ref5.apply(this, arguments);
 92228    };
 92229  })();
 92230  
 92231  exports.setFlags = setFlags;
 92232  exports.hasWrapper = hasWrapper;
 92233  
 92234  var _install;
 92235  
 92236  function _load_install() {
 92237    return _install = __webpack_require__(34);
 92238  }
 92239  
 92240  var _check;
 92241  
 92242  function _load_check() {
 92243    return _check = __webpack_require__(350);
 92244  }
 92245  
 92246  var _errors;
 92247  
 92248  function _load_errors() {
 92249    return _errors = __webpack_require__(6);
 92250  }
 92251  
 92252  var _index;
 92253  
 92254  function _load_index() {
 92255    return _index = __webpack_require__(78);
 92256  }
 92257  
 92258  var _baseResolver;
 92259  
 92260  function _load_baseResolver() {
 92261    return _baseResolver = _interopRequireDefault(__webpack_require__(123));
 92262  }
 92263  
 92264  var _hostedGitResolver;
 92265  
 92266  function _load_hostedGitResolver() {
 92267    return _hostedGitResolver = _interopRequireDefault(__webpack_require__(109));
 92268  }
 92269  
 92270  var _hostedGitResolver2;
 92271  
 92272  function _load_hostedGitResolver2() {
 92273    return _hostedGitResolver2 = __webpack_require__(109);
 92274  }
 92275  
 92276  var _gistResolver;
 92277  
 92278  function _load_gistResolver() {
 92279    return _gistResolver = _interopRequireDefault(__webpack_require__(214));
 92280  }
 92281  
 92282  var _gistResolver2;
 92283  
 92284  function _load_gistResolver2() {
 92285    return _gistResolver2 = __webpack_require__(214);
 92286  }
 92287  
 92288  var _gitResolver;
 92289  
 92290  function _load_gitResolver() {
 92291    return _gitResolver = _interopRequireDefault(__webpack_require__(124));
 92292  }
 92293  
 92294  var _fileResolver;
 92295  
 92296  function _load_fileResolver() {
 92297    return _fileResolver = _interopRequireDefault(__webpack_require__(213));
 92298  }
 92299  
 92300  var _packageResolver;
 92301  
 92302  function _load_packageResolver() {
 92303    return _packageResolver = _interopRequireDefault(__webpack_require__(360));
 92304  }
 92305  
 92306  var _packageRequest;
 92307  
 92308  function _load_packageRequest() {
 92309    return _packageRequest = _interopRequireDefault(__webpack_require__(122));
 92310  }
 92311  
 92312  var _packageReference;
 92313  
 92314  function _load_packageReference() {
 92315    return _packageReference = _interopRequireDefault(__webpack_require__(359));
 92316  }
 92317  
 92318  var _packageFetcher;
 92319  
 92320  function _load_packageFetcher() {
 92321    return _packageFetcher = _interopRequireWildcard(__webpack_require__(208));
 92322  }
 92323  
 92324  var _packageLinker;
 92325  
 92326  function _load_packageLinker() {
 92327    return _packageLinker = _interopRequireDefault(__webpack_require__(209));
 92328  }
 92329  
 92330  var _packageCompatibility;
 92331  
 92332  function _load_packageCompatibility() {
 92333    return _packageCompatibility = _interopRequireWildcard(__webpack_require__(207));
 92334  }
 92335  
 92336  var _lockfile;
 92337  
 92338  function _load_lockfile() {
 92339    return _lockfile = _interopRequireDefault(__webpack_require__(19));
 92340  }
 92341  
 92342  var _normalizePattern9;
 92343  
 92344  function _load_normalizePattern() {
 92345    return _normalizePattern9 = __webpack_require__(37);
 92346  }
 92347  
 92348  var _logicalDependencyTree;
 92349  
 92350  function _load_logicalDependencyTree() {
 92351    return _logicalDependencyTree = __webpack_require__(550);
 92352  }
 92353  
 92354  var _fs;
 92355  
 92356  function _load_fs() {
 92357    return _fs = _interopRequireWildcard(__webpack_require__(5));
 92358  }
 92359  
 92360  var _misc;
 92361  
 92362  function _load_misc() {
 92363    return _misc = _interopRequireWildcard(__webpack_require__(18));
 92364  }
 92365  
 92366  var _constants;
 92367  
 92368  function _load_constants() {
 92369    return _constants = __webpack_require__(8);
 92370  }
 92371  
 92372  var _semver;
 92373  
 92374  function _load_semver() {
 92375    return _semver = _interopRequireDefault(__webpack_require__(22));
 92376  }
 92377  
 92378  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 92379  
 92380  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 92381  
 92382  const invariant = __webpack_require__(9);
 92383  const path = __webpack_require__(0);
 92384  const uuid = __webpack_require__(120);
 92385  const ssri = __webpack_require__(65);
 92386  const nodeVersion = process.versions.node.split('-')[0];
 92387  
 92388  const noArguments = exports.noArguments = true;
 92389  
 92390  class ImportResolver extends (_baseResolver || _load_baseResolver()).default {
 92391    getCwd() {
 92392      if (this.request.parentRequest) {
 92393        const parent = this.resolver.getStrictResolvedPattern(this.request.parentRequest.pattern);
 92394        invariant(parent._loc, 'expected package location');
 92395        return path.dirname(parent._loc);
 92396      }
 92397      return this.config.cwd;
 92398    }
 92399  
 92400    resolveHostedGit(info, Resolver) {
 92401      var _normalizePattern = (0, (_normalizePattern9 || _load_normalizePattern()).normalizePattern)(this.pattern);
 92402  
 92403      const range = _normalizePattern.range;
 92404  
 92405      const exploded = (0, (_hostedGitResolver2 || _load_hostedGitResolver2()).explodeHostedGitFragment)(range, this.reporter);
 92406      const hash = info.gitHead;
 92407      invariant(hash, 'expected package gitHead');
 92408      const url = Resolver.getTarballUrl(exploded, hash);
 92409      info._uid = hash;
 92410      info._remote = {
 92411        resolved: url,
 92412        type: 'tarball',
 92413        registry: this.registry,
 92414        reference: url,
 92415        hash: null
 92416      };
 92417      return info;
 92418    }
 92419  
 92420    resolveGist(info, Resolver) {
 92421      var _normalizePattern2 = (0, (_normalizePattern9 || _load_normalizePattern()).normalizePattern)(this.pattern);
 92422  
 92423      const range = _normalizePattern2.range;
 92424  
 92425      var _explodeGistFragment = (0, (_gistResolver2 || _load_gistResolver2()).explodeGistFragment)(range, this.reporter);
 92426  
 92427      const id = _explodeGistFragment.id;
 92428  
 92429      const hash = info.gitHead;
 92430      invariant(hash, 'expected package gitHead');
 92431      const url = `https://gist.github.com/${id}.git`;
 92432      info._uid = hash;
 92433      info._remote = {
 92434        resolved: `${url}#${hash}`,
 92435        type: 'git',
 92436        registry: this.registry,
 92437        reference: url,
 92438        hash
 92439      };
 92440      return info;
 92441    }
 92442  
 92443    resolveGit(info, Resolver) {
 92444      const url = info._resolved;
 92445      const hash = info.gitHead;
 92446      invariant(url, 'expected package _resolved');
 92447      invariant(hash, 'expected package gitHead');
 92448      info._uid = hash;
 92449      info._remote = {
 92450        resolved: `${url}#${hash}`,
 92451        type: 'git',
 92452        registry: this.registry,
 92453        reference: url,
 92454        hash
 92455      };
 92456      return info;
 92457    }
 92458  
 92459    resolveFile(info, Resolver) {
 92460      var _normalizePattern3 = (0, (_normalizePattern9 || _load_normalizePattern()).normalizePattern)(this.pattern);
 92461  
 92462      const range = _normalizePattern3.range;
 92463  
 92464      let loc = (_misc || _load_misc()).removePrefix(range, 'file:');
 92465      if (!path.isAbsolute(loc)) {
 92466        loc = path.join(this.config.cwd, loc);
 92467      }
 92468      info._uid = info.version;
 92469      info._remote = {
 92470        type: 'copy',
 92471        registry: this.registry,
 92472        hash: `${uuid.v4()}-${new Date().getTime()}`,
 92473        reference: loc
 92474      };
 92475      return info;
 92476    }
 92477  
 92478    resolveRegistry(info) {
 92479      let url = info._resolved;
 92480      const hash = info._shasum;
 92481      invariant(url, 'expected package _resolved');
 92482      invariant(hash, 'expected package _shasum');
 92483      if (this.config.getOption('registry') === (_constants || _load_constants()).YARN_REGISTRY) {
 92484        url = url.replace((_constants || _load_constants()).NPM_REGISTRY_RE, (_constants || _load_constants()).YARN_REGISTRY);
 92485      }
 92486      info._uid = info.version;
 92487      info._remote = {
 92488        resolved: `${url}#${hash}`,
 92489        type: 'tarball',
 92490        registry: this.registry,
 92491        reference: url,
 92492        integrity: info._integrity ? ssri.parse(info._integrity) : ssri.fromHex(hash, 'sha1'),
 92493        hash
 92494      };
 92495      return info;
 92496    }
 92497  
 92498    resolveImport(info) {
 92499      var _normalizePattern4 = (0, (_normalizePattern9 || _load_normalizePattern()).normalizePattern)(this.pattern);
 92500  
 92501      const range = _normalizePattern4.range;
 92502  
 92503      const Resolver = (0, (_index || _load_index()).getExoticResolver)(range);
 92504      if (Resolver && Resolver.prototype instanceof (_hostedGitResolver || _load_hostedGitResolver()).default) {
 92505        return this.resolveHostedGit(info, Resolver);
 92506      } else if (Resolver && Resolver === (_gistResolver || _load_gistResolver()).default) {
 92507        return this.resolveGist(info, Resolver);
 92508      } else if (Resolver && Resolver === (_gitResolver || _load_gitResolver()).default) {
 92509        return this.resolveGit(info, Resolver);
 92510      } else if (Resolver && Resolver === (_fileResolver || _load_fileResolver()).default) {
 92511        return this.resolveFile(info, Resolver);
 92512      }
 92513      return this.resolveRegistry(info);
 92514    }
 92515  
 92516    resolveLocation(loc) {
 92517      var _this = this;
 92518  
 92519      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 92520        const info = yield _this.config.tryManifest(loc, 'npm', false);
 92521        if (!info) {
 92522          return null;
 92523        }
 92524        return _this.resolveImport(info);
 92525      })();
 92526    }
 92527  
 92528    resolveFixedVersion(fixedVersionPattern) {
 92529      var _this2 = this;
 92530  
 92531      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 92532        var _normalizePattern5 = (0, (_normalizePattern9 || _load_normalizePattern()).normalizePattern)(fixedVersionPattern);
 92533  
 92534        const range = _normalizePattern5.range;
 92535  
 92536        const exoticResolver = (0, (_index || _load_index()).getExoticResolver)(range);
 92537        const manifest = exoticResolver ? yield _this2.request.findExoticVersionInfo(exoticResolver, range) : yield _this2.request.findVersionOnRegistry(fixedVersionPattern);
 92538        return manifest;
 92539      })();
 92540    }
 92541  
 92542    _resolveFromFixedVersions() {
 92543      var _this3 = this;
 92544  
 92545      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 92546        invariant(_this3.request instanceof ImportPackageRequest, 'request must be ImportPackageRequest');
 92547  
 92548        var _normalizePattern6 = (0, (_normalizePattern9 || _load_normalizePattern()).normalizePattern)(_this3.pattern);
 92549  
 92550        const name = _normalizePattern6.name;
 92551  
 92552        invariant(_this3.request.dependencyTree instanceof (_logicalDependencyTree || _load_logicalDependencyTree()).LogicalDependencyTree, 'dependencyTree on request must be LogicalDependencyTree');
 92553        const fixedVersionPattern = _this3.request.dependencyTree.getFixedVersionPattern(name, _this3.request.parentNames);
 92554        const info = yield _this3.config.getCache(`import-resolver-${fixedVersionPattern}`, function () {
 92555          return _this3.resolveFixedVersion(fixedVersionPattern);
 92556        });
 92557        if (info) {
 92558          return info;
 92559        }
 92560        throw new (_errors || _load_errors()).MessageError(_this3.reporter.lang('importResolveFailed', name, _this3.getCwd()));
 92561      })();
 92562    }
 92563  
 92564    _resolveFromNodeModules() {
 92565      var _this4 = this;
 92566  
 92567      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 92568        var _normalizePattern7 = (0, (_normalizePattern9 || _load_normalizePattern()).normalizePattern)(_this4.pattern);
 92569  
 92570        const name = _normalizePattern7.name;
 92571  
 92572        let cwd = _this4.getCwd();
 92573        while (!path.relative(_this4.config.cwd, cwd).startsWith('..')) {
 92574          const loc = path.join(cwd, 'node_modules', name);
 92575          const info = yield _this4.config.getCache(`import-resolver-${loc}`, function () {
 92576            return _this4.resolveLocation(loc);
 92577          });
 92578          if (info) {
 92579            return info;
 92580          }
 92581          cwd = path.resolve(cwd, '../..');
 92582        }
 92583        throw new (_errors || _load_errors()).MessageError(_this4.reporter.lang('importResolveFailed', name, _this4.getCwd()));
 92584      })();
 92585    }
 92586  
 92587    resolve() {
 92588      if (this.request instanceof ImportPackageRequest && this.request.dependencyTree) {
 92589        return this._resolveFromFixedVersions();
 92590      } else {
 92591        return this._resolveFromNodeModules();
 92592      }
 92593    }
 92594  }
 92595  
 92596  class ImportPackageRequest extends (_packageRequest || _load_packageRequest()).default {
 92597    constructor(req, dependencyTree, resolver) {
 92598      super(req, resolver);
 92599      this.import = this.parentRequest instanceof ImportPackageRequest ? this.parentRequest.import : true;
 92600      this.dependencyTree = dependencyTree;
 92601    }
 92602  
 92603    getRootName() {
 92604      return this.resolver instanceof ImportPackageResolver && this.resolver.rootName || 'root';
 92605    }
 92606  
 92607    getParentHumanName() {
 92608      return [this.getRootName()].concat(this.parentNames).join(' > ');
 92609    }
 92610  
 92611    reportResolvedRangeMatch(info, resolved) {
 92612      if (info.version === resolved.version) {
 92613        return;
 92614      }
 92615      this.reporter.warn(this.reporter.lang('importResolvedRangeMatch', resolved.version, resolved.name, info.version, this.getParentHumanName()));
 92616    }
 92617  
 92618    _findResolvedManifest(info) {
 92619      var _normalizePattern8 = (0, (_normalizePattern9 || _load_normalizePattern()).normalizePattern)(this.pattern);
 92620  
 92621      const range = _normalizePattern8.range,
 92622            name = _normalizePattern8.name;
 92623  
 92624      const solvedRange = (_semver || _load_semver()).default.validRange(range) ? info.version : range;
 92625      const resolved = this.resolver.getExactVersionMatch(name, solvedRange, info);
 92626      if (resolved) {
 92627        return resolved;
 92628      }
 92629      invariant(info._remote, 'expected package remote');
 92630      const ref = new (_packageReference || _load_packageReference()).default(this, info, info._remote);
 92631      info._reference = ref;
 92632      return info;
 92633    }
 92634  
 92635    resolveToExistingVersion(info) {
 92636      const resolved = this._findResolvedManifest(info);
 92637      invariant(resolved, 'should have found a resolved reference');
 92638      const ref = resolved._reference;
 92639      invariant(ref, 'should have a package reference');
 92640      ref.addRequest(this);
 92641      ref.addPattern(this.pattern, resolved);
 92642      ref.addOptional(this.optional);
 92643    }
 92644  
 92645    findVersionInfo() {
 92646      if (!this.import) {
 92647        this.reporter.verbose(this.reporter.lang('skippingImport', this.pattern, this.getParentHumanName()));
 92648        return super.findVersionInfo();
 92649      }
 92650      const resolver = new ImportResolver(this, this.pattern);
 92651      return resolver.resolve().catch(() => {
 92652        this.import = false;
 92653        this.reporter.warn(this.reporter.lang('importFailed', this.pattern, this.getParentHumanName()));
 92654        return super.findVersionInfo();
 92655      });
 92656    }
 92657  }
 92658  
 92659  class ImportPackageResolver extends (_packageResolver || _load_packageResolver()).default {
 92660    constructor(config, lockfile) {
 92661      super(config, lockfile);
 92662      this.next = [];
 92663      this.rootName = 'root';
 92664    }
 92665  
 92666    find(req) {
 92667      this.next.push(req);
 92668      return Promise.resolve();
 92669    }
 92670  
 92671    findOne(req) {
 92672      var _this5 = this;
 92673  
 92674      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 92675        if (_this5.activity) {
 92676          _this5.activity.tick(req.pattern);
 92677        }
 92678        const request = new ImportPackageRequest(req, _this5.dependencyTree, _this5);
 92679        yield request.find({ fresh: false });
 92680      })();
 92681    }
 92682  
 92683    findAll(deps) {
 92684      var _this6 = this;
 92685  
 92686      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 92687        yield Promise.all(deps.map(function (dep) {
 92688          return _this6.findOne(dep);
 92689        }));
 92690        deps = _this6.next;
 92691        _this6.next = [];
 92692        if (!deps.length) {
 92693          // all required package versions have been discovered, so now packages that
 92694          // resolved to existing versions can be resolved to their best available version
 92695          _this6.resolvePackagesWithExistingVersions();
 92696          return;
 92697        }
 92698        yield _this6.findAll(deps);
 92699      })();
 92700    }
 92701  
 92702    resetOptional() {
 92703      for (const pattern in this.patterns) {
 92704        const ref = this.patterns[pattern]._reference;
 92705        invariant(ref, 'expected reference');
 92706        ref.optional = null;
 92707        for (var _iterator = ref.requests, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 92708          var _ref;
 92709  
 92710          if (_isArray) {
 92711            if (_i >= _iterator.length) break;
 92712            _ref = _iterator[_i++];
 92713          } else {
 92714            _i = _iterator.next();
 92715            if (_i.done) break;
 92716            _ref = _i.value;
 92717          }
 92718  
 92719          const req = _ref;
 92720  
 92721          ref.addOptional(req.optional);
 92722        }
 92723      }
 92724    }
 92725  
 92726    init(deps, { isFlat, isFrozen, workspaceLayout } = { isFlat: false, isFrozen: false, workspaceLayout: undefined }) {
 92727      var _this7 = this;
 92728  
 92729      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 92730        _this7.flat = Boolean(isFlat);
 92731        const activity = _this7.activity = _this7.reporter.activity();
 92732        yield _this7.findAll(deps);
 92733        _this7.resetOptional();
 92734        activity.end();
 92735        _this7.activity = null;
 92736      })();
 92737    }
 92738  }
 92739  
 92740  class Import extends (_install || _load_install()).Install {
 92741    constructor(flags, config, reporter, lockfile) {
 92742      super(flags, config, reporter, lockfile);
 92743      this.resolver = new ImportPackageResolver(this.config, this.lockfile);
 92744      this.linker = new (_packageLinker || _load_packageLinker()).default(config, this.resolver);
 92745    }
 92746    createLogicalDependencyTree(packageJson, packageLock) {
 92747      invariant(packageJson, 'package.json should exist');
 92748      invariant(packageLock, 'package-lock.json should exist');
 92749      invariant(this.resolver instanceof ImportPackageResolver, 'resolver should be an ImportPackageResolver');
 92750      try {
 92751        this.resolver.dependencyTree = new (_logicalDependencyTree || _load_logicalDependencyTree()).LogicalDependencyTree(packageJson, packageLock);
 92752      } catch (e) {
 92753        throw new (_errors || _load_errors()).MessageError(this.reporter.lang('importSourceFilesCorrupted'));
 92754      }
 92755    }
 92756    getExternalLockfileContents() {
 92757      var _this8 = this;
 92758  
 92759      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 92760        try {
 92761          var _ref2 = yield Promise.all([(_fs || _load_fs()).readFile(path.join(_this8.config.cwd, (_constants || _load_constants()).NODE_PACKAGE_JSON)), (_fs || _load_fs()).readFile(path.join(_this8.config.cwd, (_constants || _load_constants()).NPM_LOCK_FILENAME))]);
 92762  
 92763          const packageJson = _ref2[0],
 92764                packageLock = _ref2[1];
 92765  
 92766          return { packageJson, packageLock };
 92767        } catch (e) {
 92768          return { packageJson: null, packageLock: null };
 92769        }
 92770      })();
 92771    }
 92772    init() {
 92773      var _this9 = this;
 92774  
 92775      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 92776        if (yield (_fs || _load_fs()).exists(path.join(_this9.config.cwd, (_constants || _load_constants()).LOCKFILE_FILENAME))) {
 92777          throw new (_errors || _load_errors()).MessageError(_this9.reporter.lang('lockfileExists'));
 92778        }
 92779  
 92780        var _ref3 = yield _this9.getExternalLockfileContents();
 92781  
 92782        const packageJson = _ref3.packageJson,
 92783              packageLock = _ref3.packageLock;
 92784  
 92785        const importSource = packageJson && packageLock && (_semver || _load_semver()).default.satisfies(nodeVersion, '>=5.0.0') ? 'package-lock.json' : 'node_modules';
 92786        if (importSource === 'package-lock.json') {
 92787          _this9.reporter.info(_this9.reporter.lang('importPackageLock'));
 92788          _this9.createLogicalDependencyTree(packageJson, packageLock);
 92789        }
 92790        if (importSource === 'node_modules') {
 92791          _this9.reporter.info(_this9.reporter.lang('importNodeModules'));
 92792          yield (0, (_check || _load_check()).verifyTreeCheck)(_this9.config, _this9.reporter, {}, []);
 92793        }
 92794  
 92795        var _ref4 = yield _this9.fetchRequestFromCwd();
 92796  
 92797        const requests = _ref4.requests,
 92798              patterns = _ref4.patterns,
 92799              manifest = _ref4.manifest;
 92800  
 92801        if (manifest.name && _this9.resolver instanceof ImportPackageResolver) {
 92802          _this9.resolver.rootName = manifest.name;
 92803        }
 92804        yield _this9.resolver.init(requests, { isFlat: _this9.flags.flat, isFrozen: _this9.flags.frozenLockfile });
 92805        const manifests = yield (_packageFetcher || _load_packageFetcher()).fetch(_this9.resolver.getManifests(), _this9.config);
 92806        _this9.resolver.updateManifests(manifests);
 92807        yield (_packageCompatibility || _load_packageCompatibility()).check(_this9.resolver.getManifests(), _this9.config, _this9.flags.ignoreEngines);
 92808        yield _this9.linker.resolvePeerModules();
 92809        yield _this9.saveLockfileAndIntegrity(patterns);
 92810        return patterns;
 92811      })();
 92812    }
 92813  }
 92814  
 92815  exports.Import = Import;
 92816  function setFlags(commander) {
 92817    commander.description('Generates yarn.lock from an npm package-lock.json file or an existing npm-installed node_modules folder.');
 92818  }
 92819  
 92820  function hasWrapper(commander, args) {
 92821    return true;
 92822  }
 92823  
 92824  /***/ }),
 92825  /* 501 */
 92826  /***/ (function(module, exports, __webpack_require__) {
 92827  
 92828  "use strict";
 92829  
 92830  
 92831  Object.defineProperty(exports, "__esModule", {
 92832    value: true
 92833  });
 92834  exports.run = undefined;
 92835  
 92836  var _asyncToGenerator2;
 92837  
 92838  function _load_asyncToGenerator() {
 92839    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 92840  }
 92841  
 92842  let run = exports.run = (() => {
 92843    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 92844      if (args.length > 2) {
 92845        reporter.error(reporter.lang('tooManyArguments', 2));
 92846        return;
 92847      }
 92848  
 92849      let packageName = args.shift() || '.';
 92850  
 92851      // Handle the case when we are referencing a local package.
 92852      if (packageName === '.') {
 92853        packageName = (yield config.readRootManifest()).name;
 92854      }
 92855  
 92856      const packageInput = (_npmRegistry || _load_npmRegistry()).default.escapeName(packageName);
 92857  
 92858      var _parsePackageName = (0, (_parsePackageName2 || _load_parsePackageName()).default)(packageInput);
 92859  
 92860      const name = _parsePackageName.name,
 92861            version = _parsePackageName.version;
 92862  
 92863  
 92864      let result;
 92865      try {
 92866        result = yield config.registries.npm.request(name, { unfiltered: true });
 92867      } catch (e) {
 92868        reporter.error(reporter.lang('infoFail'));
 92869        return;
 92870      }
 92871      if (!result) {
 92872        reporter.error(reporter.lang('infoFail'));
 92873        return;
 92874      }
 92875  
 92876      result = clean(result);
 92877  
 92878      const versions = result.versions;
 92879      // $FlowFixMe
 92880      result.versions = Object.keys(versions).sort(semver.compareLoose);
 92881      result.version = version || result['dist-tags'].latest;
 92882      result = Object.assign(result, versions[result.version]);
 92883  
 92884      const fieldPath = args.shift();
 92885      const fields = fieldPath ? fieldPath.split('.') : [];
 92886  
 92887      // Readmes can be long so exclude them unless explicitly asked for.
 92888      if (fields[0] !== 'readme') {
 92889        delete result.readme;
 92890      }
 92891  
 92892      result = fields.reduce(function (prev, cur) {
 92893        return prev && prev[cur];
 92894      }, result);
 92895      reporter.inspect(result);
 92896    });
 92897  
 92898    return function run(_x, _x2, _x3, _x4) {
 92899      return _ref.apply(this, arguments);
 92900    };
 92901  })();
 92902  
 92903  exports.setFlags = setFlags;
 92904  exports.hasWrapper = hasWrapper;
 92905  
 92906  var _npmRegistry;
 92907  
 92908  function _load_npmRegistry() {
 92909    return _npmRegistry = _interopRequireDefault(__webpack_require__(88));
 92910  }
 92911  
 92912  var _parsePackageName2;
 92913  
 92914  function _load_parsePackageName() {
 92915    return _parsePackageName2 = _interopRequireDefault(__webpack_require__(556));
 92916  }
 92917  
 92918  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 92919  
 92920  const semver = __webpack_require__(22);
 92921  
 92922  function clean(object) {
 92923    if (Array.isArray(object)) {
 92924      const result = [];
 92925      object.forEach(item => {
 92926        item = clean(item);
 92927        if (item) {
 92928          result.push(item);
 92929        }
 92930      });
 92931      return result;
 92932    } else if (typeof object === 'object') {
 92933      const result = {};
 92934      for (const key in object) {
 92935        if (key.startsWith('_')) {
 92936          continue;
 92937        }
 92938  
 92939        const item = clean(object[key]);
 92940        if (item) {
 92941          result[key] = item;
 92942        }
 92943      }
 92944      return result;
 92945    } else if (object) {
 92946      return object;
 92947    } else {
 92948      return null;
 92949    }
 92950  }
 92951  
 92952  function setFlags(commander) {
 92953    commander.description('Shows information about a package.');
 92954  }
 92955  
 92956  function hasWrapper(commander, args) {
 92957    return true;
 92958  }
 92959  
 92960  /***/ }),
 92961  /* 502 */
 92962  /***/ (function(module, exports, __webpack_require__) {
 92963  
 92964  "use strict";
 92965  
 92966  
 92967  Object.defineProperty(exports, "__esModule", {
 92968    value: true
 92969  });
 92970  exports.getGitConfigInfo = exports.run = exports.shouldRunInCurrentCwd = undefined;
 92971  
 92972  var _asyncToGenerator2;
 92973  
 92974  function _load_asyncToGenerator() {
 92975    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 92976  }
 92977  
 92978  let run = exports.run = (() => {
 92979    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 92980      const installVersion = flags[`2`] ? `berry` : flags.install;
 92981      const forwardedArgs = process.argv.slice(process.argv.indexOf('init', 2) + 1);
 92982  
 92983      if (installVersion) {
 92984        if (flags[`2`] && process.env.COREPACK_ROOT) {
 92985          yield (_child || _load_child()).spawn((_constants || _load_constants()).NODE_BIN_PATH, [path.join(process.env.COREPACK_ROOT, 'dist/corepack.js'), `yarn@${flags.install || `stable`}`, `init`, ...forwardedArgs, `--install=self`], {
 92986            stdio: 'inherit',
 92987            cwd: config.cwd
 92988          });
 92989        } else {
 92990          const lockfilePath = path.resolve(config.cwd, 'yarn.lock');
 92991          if (!(yield (_fs || _load_fs()).exists(lockfilePath))) {
 92992            yield (_fs || _load_fs()).writeFile(lockfilePath, '');
 92993          }
 92994          yield (_child || _load_child()).spawn((_constants || _load_constants()).NODE_BIN_PATH, [process.argv[1], 'policies', 'set-version', installVersion, '--silent'], {
 92995            stdio: 'inherit',
 92996            cwd: config.cwd
 92997          });
 92998          yield (_child || _load_child()).spawn((_constants || _load_constants()).NODE_BIN_PATH, [process.argv[1], 'init', ...forwardedArgs], {
 92999            stdio: 'inherit',
 93000            cwd: config.cwd
 93001          });
 93002        }
 93003        return;
 93004      }
 93005  
 93006      const manifests = yield config.getRootManifests();
 93007  
 93008      let repository = {};
 93009      const author = {
 93010        name: config.getOption('init-author-name'),
 93011        email: config.getOption('init-author-email'),
 93012        url: config.getOption('init-author-url')
 93013      };
 93014      if (yield (_fs || _load_fs()).exists(path.join(config.cwd, '.git'))) {
 93015        // get git origin of the cwd
 93016        try {
 93017          repository = {
 93018            type: 'git',
 93019            url: yield (_child || _load_child()).spawn('git', ['config', 'remote.origin.url'], {
 93020              cwd: config.cwd
 93021            })
 93022          };
 93023        } catch (ex) {
 93024          // Ignore - Git repo may not have an origin URL yet (eg. if it only exists locally)
 93025        }
 93026  
 93027        if (author.name === undefined) {
 93028          author.name = yield getGitConfigInfo('user.name');
 93029        }
 93030  
 93031        if (author.email === undefined) {
 93032          author.email = yield getGitConfigInfo('user.email');
 93033        }
 93034      }
 93035  
 93036      const keys = [{
 93037        key: 'name',
 93038        question: 'name',
 93039        default: path.basename(config.cwd),
 93040        validation: (_validate || _load_validate()).isValidPackageName,
 93041        validationError: 'invalidPackageName'
 93042      }, {
 93043        key: 'version',
 93044        question: 'version',
 93045        default: String(config.getOption('init-version'))
 93046      }, {
 93047        key: 'description',
 93048        question: 'description',
 93049        default: ''
 93050      }, {
 93051        key: 'main',
 93052        question: 'entry point',
 93053        default: 'index.js'
 93054      }, {
 93055        key: 'repository',
 93056        question: 'repository url',
 93057        default: (0, (_util || _load_util()).extractRepositoryUrl)(repository)
 93058      }, {
 93059        key: 'author',
 93060        question: 'author',
 93061        default: (0, (_util || _load_util()).stringifyPerson)(author)
 93062      }, {
 93063        key: 'license',
 93064        question: 'license',
 93065        default: String(config.getOption('init-license'))
 93066      }, {
 93067        key: 'private',
 93068        question: 'private',
 93069        default: config.getOption('init-private') || '',
 93070        inputFormatter: yn
 93071      }];
 93072  
 93073      // get answers
 93074      const pkg = {};
 93075      for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 93076        var _ref2;
 93077  
 93078        if (_isArray) {
 93079          if (_i >= _iterator.length) break;
 93080          _ref2 = _iterator[_i++];
 93081        } else {
 93082          _i = _iterator.next();
 93083          if (_i.done) break;
 93084          _ref2 = _i.value;
 93085        }
 93086  
 93087        const entry = _ref2;
 93088        const yes = flags.yes,
 93089              privateFlag = flags.private;
 93090        const manifestKey = entry.key;
 93091        let question = entry.question,
 93092            def = entry.default;
 93093  
 93094  
 93095        for (var _iterator4 = (_index || _load_index()).registryNames, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 93096          var _ref5;
 93097  
 93098          if (_isArray4) {
 93099            if (_i4 >= _iterator4.length) break;
 93100            _ref5 = _iterator4[_i4++];
 93101          } else {
 93102            _i4 = _iterator4.next();
 93103            if (_i4.done) break;
 93104            _ref5 = _i4.value;
 93105          }
 93106  
 93107          const registryName = _ref5;
 93108          const object = manifests[registryName].object;
 93109  
 93110          let val = objectPath.get(object, manifestKey);
 93111          if (!val) {
 93112            break;
 93113          }
 93114          if (typeof val === 'object') {
 93115            if (manifestKey === 'author') {
 93116              val = (0, (_util || _load_util()).stringifyPerson)(val);
 93117            } else if (manifestKey === 'repository') {
 93118              val = (0, (_util || _load_util()).extractRepositoryUrl)(val);
 93119            }
 93120          }
 93121          def = val;
 93122        }
 93123  
 93124        if (manifestKey === 'private' && privateFlag) {
 93125          def = true;
 93126        }
 93127  
 93128        if (def) {
 93129          question += ` (${String(def)})`;
 93130        }
 93131  
 93132        let answer;
 93133        let validAnswer = false;
 93134  
 93135        if (yes) {
 93136          answer = def;
 93137        } else {
 93138          // loop until a valid answer is provided, if validation is on entry
 93139          if (entry.validation) {
 93140            while (!validAnswer) {
 93141              answer = (yield reporter.question(question)) || def;
 93142              // validate answer
 93143              if (entry.validation(String(answer))) {
 93144                validAnswer = true;
 93145              } else {
 93146                reporter.error(reporter.lang('invalidPackageName'));
 93147              }
 93148            }
 93149          } else {
 93150            answer = (yield reporter.question(question)) || def;
 93151          }
 93152        }
 93153  
 93154        if (answer) {
 93155          if (entry.inputFormatter) {
 93156            answer = entry.inputFormatter(answer);
 93157          }
 93158          objectPath.set(pkg, manifestKey, answer);
 93159        }
 93160      }
 93161  
 93162      if (pkg.repository && (_githubResolver || _load_githubResolver()).default.isVersion(pkg.repository)) {
 93163        pkg.repository = `https://github.com/${pkg.repository}`;
 93164      }
 93165  
 93166      // save answers
 93167      const targetManifests = [];
 93168      for (var _iterator2 = (_index || _load_index()).registryNames, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 93169        var _ref3;
 93170  
 93171        if (_isArray2) {
 93172          if (_i2 >= _iterator2.length) break;
 93173          _ref3 = _iterator2[_i2++];
 93174        } else {
 93175          _i2 = _iterator2.next();
 93176          if (_i2.done) break;
 93177          _ref3 = _i2.value;
 93178        }
 93179  
 93180        const registryName = _ref3;
 93181  
 93182        const info = manifests[registryName];
 93183        if (info.exists) {
 93184          targetManifests.push(info);
 93185        }
 93186      }
 93187      if (!targetManifests.length) {
 93188        targetManifests.push(manifests.npm);
 93189      }
 93190      for (var _iterator3 = targetManifests, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 93191        var _ref4;
 93192  
 93193        if (_isArray3) {
 93194          if (_i3 >= _iterator3.length) break;
 93195          _ref4 = _iterator3[_i3++];
 93196        } else {
 93197          _i3 = _iterator3.next();
 93198          if (_i3.done) break;
 93199          _ref4 = _i3.value;
 93200        }
 93201  
 93202        const targetManifest = _ref4;
 93203  
 93204        Object.assign(targetManifest.object, pkg);
 93205        reporter.success(`Saved ${path.basename(targetManifest.loc)}`);
 93206      }
 93207  
 93208      yield config.saveRootManifests(manifests);
 93209    });
 93210  
 93211    return function run(_x, _x2, _x3, _x4) {
 93212      return _ref.apply(this, arguments);
 93213    };
 93214  })();
 93215  
 93216  let getGitConfigInfo = exports.getGitConfigInfo = (() => {
 93217    var _ref6 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (credential, spawn = (_child || _load_child()).spawn) {
 93218      try {
 93219        // try to get author default based on git config
 93220        return yield spawn('git', ['config', credential]);
 93221      } catch (e) {
 93222        return '';
 93223      }
 93224    });
 93225  
 93226    return function getGitConfigInfo(_x5) {
 93227      return _ref6.apply(this, arguments);
 93228    };
 93229  })();
 93230  
 93231  exports.setFlags = setFlags;
 93232  exports.hasWrapper = hasWrapper;
 93233  
 93234  var _util;
 93235  
 93236  function _load_util() {
 93237    return _util = __webpack_require__(219);
 93238  }
 93239  
 93240  var _index;
 93241  
 93242  function _load_index() {
 93243    return _index = __webpack_require__(58);
 93244  }
 93245  
 93246  var _githubResolver;
 93247  
 93248  function _load_githubResolver() {
 93249    return _githubResolver = _interopRequireDefault(__webpack_require__(361));
 93250  }
 93251  
 93252  var _child;
 93253  
 93254  function _load_child() {
 93255    return _child = _interopRequireWildcard(__webpack_require__(50));
 93256  }
 93257  
 93258  var _fs;
 93259  
 93260  function _load_fs() {
 93261    return _fs = _interopRequireWildcard(__webpack_require__(5));
 93262  }
 93263  
 93264  var _validate;
 93265  
 93266  function _load_validate() {
 93267    return _validate = _interopRequireWildcard(__webpack_require__(125));
 93268  }
 93269  
 93270  var _constants;
 93271  
 93272  function _load_constants() {
 93273    return _constants = __webpack_require__(8);
 93274  }
 93275  
 93276  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 93277  
 93278  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 93279  
 93280  const objectPath = __webpack_require__(304);
 93281  
 93282  const path = __webpack_require__(0);
 93283  const yn = __webpack_require__(962);
 93284  
 93285  function setFlags(commander) {
 93286    commander.description('Interactively creates or updates a package.json file.');
 93287    commander.option('-y, --yes', 'use default options');
 93288    commander.option('-p, --private', 'use default options and private true');
 93289    commander.option('-i, --install <value>', 'install a specific Yarn release');
 93290    commander.option('-2', 'generates the project using Yarn 2');
 93291  }
 93292  
 93293  function hasWrapper(commander, args) {
 93294    return true;
 93295  }
 93296  
 93297  const shouldRunInCurrentCwd = exports.shouldRunInCurrentCwd = true;
 93298  
 93299  /***/ }),
 93300  /* 503 */
 93301  /***/ (function(module, exports, __webpack_require__) {
 93302  
 93303  "use strict";
 93304  
 93305  
 93306  Object.defineProperty(exports, "__esModule", {
 93307    value: true
 93308  });
 93309  exports.examples = exports.run = undefined;
 93310  
 93311  var _extends2;
 93312  
 93313  function _load_extends() {
 93314    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 93315  }
 93316  
 93317  var _asyncToGenerator2;
 93318  
 93319  function _load_asyncToGenerator() {
 93320    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 93321  }
 93322  
 93323  let getManifests = (() => {
 93324    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, flags) {
 93325      const lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.cwd);
 93326      const install = new (_install || _load_install()).Install((0, (_extends2 || _load_extends()).default)({ skipIntegrityCheck: true }, flags), config, new (_baseReporter || _load_baseReporter()).default(), lockfile);
 93327      yield install.hydrate(true);
 93328  
 93329      let manifests = install.resolver.getManifests();
 93330  
 93331      // sort by name
 93332      manifests = manifests.sort(function (a, b) {
 93333        if (!a.name && !b.name) {
 93334          return 0;
 93335        }
 93336  
 93337        if (!a.name) {
 93338          return 1;
 93339        }
 93340  
 93341        if (!b.name) {
 93342          return -1;
 93343        }
 93344  
 93345        return a.name.localeCompare(b.name);
 93346      });
 93347  
 93348      // filter ignored manifests
 93349      manifests = manifests.filter(function (manifest) {
 93350        const ref = manifest._reference;
 93351        return !!ref && !ref.ignore;
 93352      });
 93353  
 93354      return manifests;
 93355    });
 93356  
 93357    return function getManifests(_x, _x2) {
 93358      return _ref.apply(this, arguments);
 93359    };
 93360  })();
 93361  
 93362  let list = (() => {
 93363    var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 93364      const manifests = yield getManifests(config, flags);
 93365      const manifestsByLicense = new Map();
 93366  
 93367      for (var _iterator = manifests, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 93368        var _ref4;
 93369  
 93370        if (_isArray) {
 93371          if (_i >= _iterator.length) break;
 93372          _ref4 = _iterator[_i++];
 93373        } else {
 93374          _i = _iterator.next();
 93375          if (_i.done) break;
 93376          _ref4 = _i.value;
 93377        }
 93378  
 93379        const _ref3 = _ref4;
 93380        const name = _ref3.name,
 93381              version = _ref3.version,
 93382              license = _ref3.license,
 93383              repository = _ref3.repository,
 93384              homepage = _ref3.homepage,
 93385              author = _ref3.author;
 93386  
 93387        const licenseKey = license || 'UNKNOWN';
 93388        const url = repository ? repository.url : homepage;
 93389        const vendorUrl = homepage || author && author.url;
 93390        const vendorName = author && author.name;
 93391  
 93392        if (!manifestsByLicense.has(licenseKey)) {
 93393          manifestsByLicense.set(licenseKey, new Map());
 93394        }
 93395  
 93396        const byLicense = manifestsByLicense.get(licenseKey);
 93397        invariant(byLicense, 'expected value');
 93398        byLicense.set(`${name}@${version}`, {
 93399          name,
 93400          version,
 93401          url,
 93402          vendorUrl,
 93403          vendorName
 93404        });
 93405      }
 93406  
 93407      if (flags.json) {
 93408        const body = [];
 93409  
 93410        manifestsByLicense.forEach(function (license, licenseKey) {
 93411          license.forEach(function ({ name, version, url, vendorUrl, vendorName }) {
 93412            body.push([name, version, licenseKey, url || 'Unknown', vendorUrl || 'Unknown', vendorName || 'Unknown']);
 93413          });
 93414        });
 93415  
 93416        reporter.table(['Name', 'Version', 'License', 'URL', 'VendorUrl', 'VendorName'], body);
 93417      } else {
 93418        const trees = [];
 93419  
 93420        manifestsByLicense.forEach(function (license, licenseKey) {
 93421          const licenseTree = [];
 93422  
 93423          license.forEach(function ({ name, version, url, vendorUrl, vendorName }) {
 93424            const children = [];
 93425  
 93426            if (url) {
 93427              children.push({ name: `${reporter.format.bold('URL:')} ${url}` });
 93428            }
 93429  
 93430            if (vendorUrl) {
 93431              children.push({ name: `${reporter.format.bold('VendorUrl:')} ${vendorUrl}` });
 93432            }
 93433  
 93434            if (vendorName) {
 93435              children.push({ name: `${reporter.format.bold('VendorName:')} ${vendorName}` });
 93436            }
 93437  
 93438            licenseTree.push({
 93439              name: `${name}@${version}`,
 93440              children
 93441            });
 93442          });
 93443  
 93444          trees.push({
 93445            name: licenseKey,
 93446            children: licenseTree
 93447          });
 93448        });
 93449  
 93450        reporter.tree('licenses', trees, { force: true });
 93451      }
 93452    });
 93453  
 93454    return function list(_x3, _x4, _x5, _x6) {
 93455      return _ref2.apply(this, arguments);
 93456    };
 93457  })();
 93458  
 93459  exports.hasWrapper = hasWrapper;
 93460  exports.setFlags = setFlags;
 93461  
 93462  var _baseReporter;
 93463  
 93464  function _load_baseReporter() {
 93465    return _baseReporter = _interopRequireDefault(__webpack_require__(108));
 93466  }
 93467  
 93468  var _install;
 93469  
 93470  function _load_install() {
 93471    return _install = __webpack_require__(34);
 93472  }
 93473  
 93474  var _lockfile;
 93475  
 93476  function _load_lockfile() {
 93477    return _lockfile = _interopRequireDefault(__webpack_require__(19));
 93478  }
 93479  
 93480  var _buildSubCommands2;
 93481  
 93482  function _load_buildSubCommands() {
 93483    return _buildSubCommands2 = _interopRequireDefault(__webpack_require__(59));
 93484  }
 93485  
 93486  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 93487  
 93488  const invariant = __webpack_require__(9);
 93489  
 93490  function hasWrapper(flags, args) {
 93491    return args[0] != 'generate-disclaimer';
 93492  }
 93493  
 93494  function setFlags(commander) {
 93495    commander.description('Lists licenses for installed packages.');
 93496  }
 93497  
 93498  var _buildSubCommands = (0, (_buildSubCommands2 || _load_buildSubCommands()).default)('licenses', {
 93499    ls(config, reporter, flags, args) {
 93500      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 93501        reporter.warn(`\`yarn licenses ls\` is deprecated. Please use \`yarn licenses list\`.`);
 93502        yield list(config, reporter, flags, args);
 93503      })();
 93504    },
 93505  
 93506    list(config, reporter, flags, args) {
 93507      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 93508        yield list(config, reporter, flags, args);
 93509      })();
 93510    },
 93511  
 93512    generateDisclaimer(config, reporter, flags, args) {
 93513      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 93514        /* eslint-disable no-console */
 93515  
 93516        // `reporter.log` dumps a bunch of ANSI escapes to clear the current line and
 93517        // is for abstracting the console output so it can be consumed by other tools
 93518        // (JSON output being the primary one). This command is only for text consumption
 93519        // and you should just be dumping it to a TXT file. Using a reporter here has the
 93520        // potential to mess up the output since it might print ansi escapes.
 93521        const manifests = yield getManifests(config, flags);
 93522        const manifest = yield config.readRootManifest();
 93523  
 93524        // Create a map of license text to manifest so that packages with exactly
 93525        // the same license text are grouped together.
 93526        const manifestsByLicense = new Map();
 93527        for (var _iterator2 = manifests, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 93528          var _ref5;
 93529  
 93530          if (_isArray2) {
 93531            if (_i2 >= _iterator2.length) break;
 93532            _ref5 = _iterator2[_i2++];
 93533          } else {
 93534            _i2 = _iterator2.next();
 93535            if (_i2.done) break;
 93536            _ref5 = _i2.value;
 93537          }
 93538  
 93539          const manifest = _ref5;
 93540          const licenseText = manifest.licenseText,
 93541                noticeText = manifest.noticeText;
 93542  
 93543          let licenseKey;
 93544          if (!licenseText) {
 93545            continue;
 93546          }
 93547  
 93548          if (!noticeText) {
 93549            licenseKey = licenseText;
 93550          } else {
 93551            licenseKey = `${licenseText}\n\nNOTICE\n\n${noticeText}`;
 93552          }
 93553  
 93554          if (!manifestsByLicense.has(licenseKey)) {
 93555            manifestsByLicense.set(licenseKey, new Map());
 93556          }
 93557  
 93558          const byLicense = manifestsByLicense.get(licenseKey);
 93559          invariant(byLicense, 'expected value');
 93560          byLicense.set(manifest.name, manifest);
 93561        }
 93562  
 93563        console.log('THE FOLLOWING SETS FORTH ATTRIBUTION NOTICES FOR THIRD PARTY SOFTWARE THAT MAY BE CONTAINED ' + `IN PORTIONS OF THE ${String(manifest.name).toUpperCase().replace(/-/g, ' ')} PRODUCT.`);
 93564        console.log();
 93565  
 93566        for (var _iterator3 = manifestsByLicense, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 93567          var _ref7;
 93568  
 93569          if (_isArray3) {
 93570            if (_i3 >= _iterator3.length) break;
 93571            _ref7 = _iterator3[_i3++];
 93572          } else {
 93573            _i3 = _iterator3.next();
 93574            if (_i3.done) break;
 93575            _ref7 = _i3.value;
 93576          }
 93577  
 93578          const _ref6 = _ref7;
 93579          const licenseKey = _ref6[0];
 93580          const manifests = _ref6[1];
 93581  
 93582          console.log('-----');
 93583          console.log();
 93584  
 93585          const names = [];
 93586          const urls = [];
 93587          for (var _iterator4 = manifests, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 93588            var _ref9;
 93589  
 93590            if (_isArray4) {
 93591              if (_i4 >= _iterator4.length) break;
 93592              _ref9 = _iterator4[_i4++];
 93593            } else {
 93594              _i4 = _iterator4.next();
 93595              if (_i4.done) break;
 93596              _ref9 = _i4.value;
 93597            }
 93598  
 93599            const _ref8 = _ref9;
 93600            const name = _ref8[0];
 93601            const repository = _ref8[1].repository;
 93602  
 93603            names.push(name);
 93604            if (repository && repository.url) {
 93605              urls.push(manifests.size === 1 ? repository.url : `${repository.url} (${name})`);
 93606            }
 93607          }
 93608  
 93609          const heading = [];
 93610          heading.push(`The following software may be included in this product: ${names.join(', ')}.`);
 93611          if (urls.length > 0) {
 93612            heading.push(`A copy of the source code may be downloaded from ${urls.join(', ')}.`);
 93613          }
 93614          heading.push('This software contains the following license and notice below:');
 93615  
 93616          console.log(heading.join(' '));
 93617          console.log();
 93618  
 93619          if (licenseKey) {
 93620            console.log(licenseKey.trim());
 93621          } else {
 93622            // what do we do here? base it on `license`?
 93623          }
 93624  
 93625          console.log();
 93626        }
 93627      })();
 93628    }
 93629  });
 93630  
 93631  const run = _buildSubCommands.run,
 93632        examples = _buildSubCommands.examples;
 93633  exports.run = run;
 93634  exports.examples = examples;
 93635  
 93636  /***/ }),
 93637  /* 504 */
 93638  /***/ (function(module, exports, __webpack_require__) {
 93639  
 93640  "use strict";
 93641  
 93642  
 93643  Object.defineProperty(exports, "__esModule", {
 93644    value: true
 93645  });
 93646  exports.run = undefined;
 93647  
 93648  var _asyncToGenerator2;
 93649  
 93650  function _load_asyncToGenerator() {
 93651    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 93652  }
 93653  
 93654  let run = exports.run = (() => {
 93655    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 93656      yield config.registries.yarn.saveHomeConfig({
 93657        username: undefined,
 93658        email: undefined
 93659      });
 93660  
 93661      reporter.success(reporter.lang('clearedCredentials'));
 93662    });
 93663  
 93664    return function run(_x, _x2, _x3, _x4) {
 93665      return _ref.apply(this, arguments);
 93666    };
 93667  })();
 93668  
 93669  exports.setFlags = setFlags;
 93670  exports.hasWrapper = hasWrapper;
 93671  
 93672  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 93673  
 93674  function setFlags(commander) {
 93675    commander.description('Clears registry username and email.');
 93676  }
 93677  
 93678  function hasWrapper(commander, args) {
 93679    return true;
 93680  }
 93681  
 93682  /***/ }),
 93683  /* 505 */
 93684  /***/ (function(module, exports, __webpack_require__) {
 93685  
 93686  "use strict";
 93687  
 93688  
 93689  Object.defineProperty(exports, "__esModule", {
 93690    value: true
 93691  });
 93692  exports.run = undefined;
 93693  
 93694  var _extends2;
 93695  
 93696  function _load_extends() {
 93697    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 93698  }
 93699  
 93700  var _asyncToGenerator2;
 93701  
 93702  function _load_asyncToGenerator() {
 93703    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 93704  }
 93705  
 93706  let run = exports.run = (() => {
 93707    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 93708      const pnpPath = `${config.lockfileFolder}/${(_constants || _load_constants()).PNP_FILENAME}`;
 93709  
 93710      let nodeOptions = process.env.NODE_OPTIONS || '';
 93711      if (yield (_fs || _load_fs()).exists(pnpPath)) {
 93712        nodeOptions = `--require ${pnpPath} ${nodeOptions}`;
 93713      }
 93714  
 93715      try {
 93716        yield (_child || _load_child()).spawn((_constants || _load_constants()).NODE_BIN_PATH, args, {
 93717          stdio: 'inherit',
 93718          cwd: flags.into || config.cwd,
 93719          env: (0, (_extends2 || _load_extends()).default)({}, process.env, { NODE_OPTIONS: nodeOptions })
 93720        });
 93721      } catch (err) {
 93722        throw err;
 93723      }
 93724    });
 93725  
 93726    return function run(_x, _x2, _x3, _x4) {
 93727      return _ref.apply(this, arguments);
 93728    };
 93729  })();
 93730  
 93731  exports.setFlags = setFlags;
 93732  exports.hasWrapper = hasWrapper;
 93733  
 93734  var _child;
 93735  
 93736  function _load_child() {
 93737    return _child = _interopRequireWildcard(__webpack_require__(50));
 93738  }
 93739  
 93740  var _fs;
 93741  
 93742  function _load_fs() {
 93743    return _fs = _interopRequireWildcard(__webpack_require__(5));
 93744  }
 93745  
 93746  var _constants;
 93747  
 93748  function _load_constants() {
 93749    return _constants = __webpack_require__(8);
 93750  }
 93751  
 93752  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 93753  
 93754  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 93755  
 93756  function setFlags(commander) {
 93757    commander.description('Runs Node with the same version that the one used by Yarn itself, and by default from the project root');
 93758    commander.usage('node [--into PATH] [... args]');
 93759    commander.option('--into <path>', 'Sets the cwd to the specified location');
 93760  }
 93761  
 93762  function hasWrapper(commander, args) {
 93763    return true;
 93764  }
 93765  
 93766  /***/ }),
 93767  /* 506 */
 93768  /***/ (function(module, exports, __webpack_require__) {
 93769  
 93770  "use strict";
 93771  
 93772  
 93773  Object.defineProperty(exports, "__esModule", {
 93774    value: true
 93775  });
 93776  exports.run = exports.requireLockfile = undefined;
 93777  
 93778  var _extends2;
 93779  
 93780  function _load_extends() {
 93781    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 93782  }
 93783  
 93784  var _asyncToGenerator2;
 93785  
 93786  function _load_asyncToGenerator() {
 93787    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 93788  }
 93789  
 93790  let run = exports.run = (() => {
 93791    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 93792      const lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.lockfileFolder);
 93793      const install = new (_install || _load_install()).Install((0, (_extends2 || _load_extends()).default)({}, flags, { includeWorkspaceDeps: true }), config, reporter, lockfile);
 93794      let deps = yield (_packageRequest || _load_packageRequest()).default.getOutdatedPackages(lockfile, install, config, reporter);
 93795  
 93796      if (args.length) {
 93797        const requested = new Set(args);
 93798  
 93799        deps = deps.filter(function ({ name }) {
 93800          return requested.has(name);
 93801        });
 93802      }
 93803  
 93804      const getNameFromHint = function getNameFromHint(hint) {
 93805        return hint ? `${hint}Dependencies` : 'dependencies';
 93806      };
 93807      const colorizeName = function colorizeName({ current, latest, name }) {
 93808        return reporter.format[(0, (_colorForVersions || _load_colorForVersions()).default)(current, latest)](name);
 93809      };
 93810  
 93811      if (deps.length) {
 93812        const usesWorkspaces = !!config.workspaceRootFolder;
 93813        const body = deps.map(function (info) {
 93814          const row = [colorizeName(info), info.current, (0, (_colorizeDiff || _load_colorizeDiff()).default)(info.current, info.wanted, reporter), reporter.format.cyan(info.latest), info.workspaceName || '', getNameFromHint(info.hint), reporter.format.cyan(info.url)];
 93815          if (!usesWorkspaces) {
 93816            row.splice(4, 1);
 93817          }
 93818          return row;
 93819        });
 93820  
 93821        const red = reporter.format.red('<red>');
 93822        const yellow = reporter.format.yellow('<yellow>');
 93823        const green = reporter.format.green('<green>');
 93824        reporter.info(reporter.lang('legendColorsForVersionUpdates', red, yellow, green));
 93825  
 93826        const header = ['Package', 'Current', 'Wanted', 'Latest', 'Workspace', 'Package Type', 'URL'];
 93827        if (!usesWorkspaces) {
 93828          header.splice(4, 1);
 93829        }
 93830        reporter.table(header, body);
 93831  
 93832        return 1;
 93833      }
 93834      return 0;
 93835    });
 93836  
 93837    return function run(_x, _x2, _x3, _x4) {
 93838      return _ref.apply(this, arguments);
 93839    };
 93840  })();
 93841  
 93842  exports.setFlags = setFlags;
 93843  exports.hasWrapper = hasWrapper;
 93844  
 93845  var _packageRequest;
 93846  
 93847  function _load_packageRequest() {
 93848    return _packageRequest = _interopRequireDefault(__webpack_require__(122));
 93849  }
 93850  
 93851  var _lockfile;
 93852  
 93853  function _load_lockfile() {
 93854    return _lockfile = _interopRequireDefault(__webpack_require__(19));
 93855  }
 93856  
 93857  var _install;
 93858  
 93859  function _load_install() {
 93860    return _install = __webpack_require__(34);
 93861  }
 93862  
 93863  var _colorForVersions;
 93864  
 93865  function _load_colorForVersions() {
 93866    return _colorForVersions = _interopRequireDefault(__webpack_require__(363));
 93867  }
 93868  
 93869  var _colorizeDiff;
 93870  
 93871  function _load_colorizeDiff() {
 93872    return _colorizeDiff = _interopRequireDefault(__webpack_require__(364));
 93873  }
 93874  
 93875  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 93876  
 93877  const requireLockfile = exports.requireLockfile = true;
 93878  
 93879  function setFlags(commander) {
 93880    commander.description('Checks for outdated package dependencies.');
 93881    commander.usage('outdated [packages ...]');
 93882  }
 93883  
 93884  function hasWrapper(commander, args) {
 93885    return true;
 93886  }
 93887  
 93888  /***/ }),
 93889  /* 507 */
 93890  /***/ (function(module, exports, __webpack_require__) {
 93891  
 93892  "use strict";
 93893  
 93894  
 93895  Object.defineProperty(exports, "__esModule", {
 93896    value: true
 93897  });
 93898  exports.examples = exports.hasWrapper = exports.run = exports.mutate = undefined;
 93899  
 93900  var _asyncToGenerator2;
 93901  
 93902  function _load_asyncToGenerator() {
 93903    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 93904  }
 93905  
 93906  let mutate = exports.mutate = (() => {
 93907    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (args, config, reporter, buildMessages, mutator) {
 93908      if (args.length !== 2 && args.length !== 1) {
 93909        return false;
 93910      }
 93911  
 93912      const username = args.shift();
 93913      const name = yield (0, (_tag || _load_tag()).getName)(args, config);
 93914      if (!(0, (_validate || _load_validate()).isValidPackageName)(name)) {
 93915        throw new (_errors || _load_errors()).MessageError(reporter.lang('invalidPackageName'));
 93916      }
 93917  
 93918      const msgs = buildMessages(username, name);
 93919      reporter.step(1, 3, reporter.lang('loggingIn'));
 93920      const revoke = yield (0, (_login || _load_login()).getToken)(config, reporter, name);
 93921  
 93922      reporter.step(2, 3, msgs.info);
 93923      const user = yield config.registries.npm.request(`-/user/org.couchdb.user:${username}`);
 93924      let error = false;
 93925      if (user) {
 93926        // get package
 93927        const pkg = yield config.registries.npm.request((_npmRegistry || _load_npmRegistry()).default.escapeName(name));
 93928        if (pkg) {
 93929          pkg.maintainers = pkg.maintainers || [];
 93930          error = mutator({ name: user.name, email: user.email }, pkg);
 93931        } else {
 93932          error = true;
 93933          reporter.error(reporter.lang('unknownPackage', name));
 93934        }
 93935  
 93936        // update package
 93937        if (pkg && !error) {
 93938          const res = yield config.registries.npm.request(`${(_npmRegistry || _load_npmRegistry()).default.escapeName(name)}/-rev/${pkg._rev}`, {
 93939            method: 'PUT',
 93940            body: {
 93941              _id: pkg._id,
 93942              _rev: pkg._rev,
 93943              maintainers: pkg.maintainers
 93944            }
 93945          });
 93946  
 93947          if (res != null && res.success) {
 93948            reporter.success(msgs.success);
 93949          } else {
 93950            error = true;
 93951            reporter.error(msgs.error);
 93952          }
 93953        }
 93954      } else {
 93955        error = true;
 93956        reporter.error(reporter.lang('unknownUser', username));
 93957      }
 93958  
 93959      reporter.step(3, 3, reporter.lang('revokingToken'));
 93960      yield revoke();
 93961  
 93962      if (error) {
 93963        throw new Error();
 93964      } else {
 93965        return true;
 93966      }
 93967    });
 93968  
 93969    return function mutate(_x, _x2, _x3, _x4, _x5) {
 93970      return _ref.apply(this, arguments);
 93971    };
 93972  })();
 93973  
 93974  let list = (() => {
 93975    var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 93976      if (args.length > 1) {
 93977        return false;
 93978      }
 93979      const name = yield (0, (_tag || _load_tag()).getName)(args, config);
 93980      reporter.step(1, 1, reporter.lang('ownerGetting', name));
 93981      const pkg = yield config.registries.npm.request(name, { unfiltered: true });
 93982      if (pkg) {
 93983        const owners = pkg.maintainers;
 93984        if (!owners || !owners.length) {
 93985          reporter.warn(reporter.lang('ownerNone'));
 93986        } else {
 93987          for (var _iterator = owners, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 93988            var _ref3;
 93989  
 93990            if (_isArray) {
 93991              if (_i >= _iterator.length) break;
 93992              _ref3 = _iterator[_i++];
 93993            } else {
 93994              _i = _iterator.next();
 93995              if (_i.done) break;
 93996              _ref3 = _i.value;
 93997            }
 93998  
 93999            const owner = _ref3;
 94000  
 94001            reporter.info(`${owner.name} <${owner.email}>`);
 94002          }
 94003        }
 94004      } else {
 94005        reporter.error(reporter.lang('ownerGettingFailed'));
 94006      }
 94007  
 94008      if (pkg) {
 94009        return true;
 94010      } else {
 94011        throw new Error();
 94012      }
 94013    });
 94014  
 94015    return function list(_x6, _x7, _x8, _x9) {
 94016      return _ref2.apply(this, arguments);
 94017    };
 94018  })();
 94019  
 94020  exports.setFlags = setFlags;
 94021  
 94022  var _errors;
 94023  
 94024  function _load_errors() {
 94025    return _errors = __webpack_require__(6);
 94026  }
 94027  
 94028  var _buildSubCommands2;
 94029  
 94030  function _load_buildSubCommands() {
 94031    return _buildSubCommands2 = _interopRequireDefault(__webpack_require__(59));
 94032  }
 94033  
 94034  var _validate;
 94035  
 94036  function _load_validate() {
 94037    return _validate = __webpack_require__(125);
 94038  }
 94039  
 94040  var _tag;
 94041  
 94042  function _load_tag() {
 94043    return _tag = __webpack_require__(355);
 94044  }
 94045  
 94046  var _login;
 94047  
 94048  function _load_login() {
 94049    return _login = __webpack_require__(107);
 94050  }
 94051  
 94052  var _npmRegistry;
 94053  
 94054  function _load_npmRegistry() {
 94055    return _npmRegistry = _interopRequireDefault(__webpack_require__(88));
 94056  }
 94057  
 94058  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 94059  
 94060  function remove(config, reporter, flags, args) {
 94061    return mutate(args, config, reporter, (username, name) => ({
 94062      info: reporter.lang('ownerRemoving', username, name),
 94063      success: reporter.lang('ownerRemoved'),
 94064      error: reporter.lang('ownerRemoveError')
 94065    }), (user, pkg) => {
 94066      let found = false;
 94067  
 94068      pkg.maintainers = pkg.maintainers.filter(o => {
 94069        const match = o.name === user.name;
 94070        found = found || match;
 94071        return !match;
 94072      });
 94073  
 94074      if (!found) {
 94075        reporter.error(reporter.lang('userNotAnOwner', user.name));
 94076      }
 94077  
 94078      return found;
 94079    });
 94080  }
 94081  
 94082  function setFlags(commander) {
 94083    commander.description('Manages package owners.');
 94084  }
 94085  
 94086  var _buildSubCommands = (0, (_buildSubCommands2 || _load_buildSubCommands()).default)('owner', {
 94087    add(config, reporter, flags, args) {
 94088      return mutate(args, config, reporter, (username, name) => ({
 94089        info: reporter.lang('ownerAdding', username, name),
 94090        success: reporter.lang('ownerAdded'),
 94091        error: reporter.lang('ownerAddingFailed')
 94092      }), (user, pkg) => {
 94093        for (var _iterator2 = pkg.maintainers, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 94094          var _ref4;
 94095  
 94096          if (_isArray2) {
 94097            if (_i2 >= _iterator2.length) break;
 94098            _ref4 = _iterator2[_i2++];
 94099          } else {
 94100            _i2 = _iterator2.next();
 94101            if (_i2.done) break;
 94102            _ref4 = _i2.value;
 94103          }
 94104  
 94105          const owner = _ref4;
 94106  
 94107          if (owner.name === user) {
 94108            reporter.error(reporter.lang('ownerAlready'));
 94109            return true;
 94110          }
 94111        }
 94112  
 94113        pkg.maintainers.push(user);
 94114  
 94115        return false;
 94116      });
 94117    },
 94118  
 94119    rm(config, reporter, flags, args) {
 94120      reporter.warn(`\`yarn owner rm\` is deprecated. Please use \`yarn owner remove\`.`);
 94121      return remove(config, reporter, flags, args);
 94122    },
 94123  
 94124    remove(config, reporter, flags, args) {
 94125      return remove(config, reporter, flags, args);
 94126    },
 94127  
 94128    ls(config, reporter, flags, args) {
 94129      reporter.warn(`\`yarn owner ls\` is deprecated. Please use \`yarn owner list\`.`);
 94130      return list(config, reporter, flags, args);
 94131    },
 94132  
 94133    list(config, reporter, flags, args) {
 94134      return list(config, reporter, flags, args);
 94135    }
 94136  }, ['add <user> [[<@scope>/]<pkg>]', 'remove <user> [[<@scope>/]<pkg>]', 'list [<@scope>/]<pkg>']);
 94137  
 94138  const run = _buildSubCommands.run,
 94139        hasWrapper = _buildSubCommands.hasWrapper,
 94140        examples = _buildSubCommands.examples;
 94141  exports.run = run;
 94142  exports.hasWrapper = hasWrapper;
 94143  exports.examples = examples;
 94144  
 94145  /***/ }),
 94146  /* 508 */
 94147  /***/ (function(module, exports, __webpack_require__) {
 94148  
 94149  "use strict";
 94150  
 94151  
 94152  Object.defineProperty(exports, "__esModule", {
 94153    value: true
 94154  });
 94155  exports.examples = exports.setFlags = exports.run = undefined;
 94156  
 94157  var _extends2;
 94158  
 94159  function _load_extends() {
 94160    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 94161  }
 94162  
 94163  var _asyncToGenerator2;
 94164  
 94165  function _load_asyncToGenerator() {
 94166    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 94167  }
 94168  
 94169  let fetchReleases = (() => {
 94170    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, { includePrereleases = false } = {}) {
 94171      const token = process.env.GITHUB_TOKEN;
 94172      const tokenUrlParameter = token ? `?access_token=${token}` : '';
 94173  
 94174      const request = yield config.requestManager.request({
 94175        url: `https://api.github.com/repos/yarnpkg/yarn/releases${tokenUrlParameter}`,
 94176        json: true
 94177      });
 94178  
 94179      const releases = request.filter(function (release) {
 94180        if (release.draft) {
 94181          return false;
 94182        }
 94183  
 94184        if (release.prerelease && !includePrereleases) {
 94185          return false;
 94186        }
 94187  
 94188        // $FlowFixMe
 94189        release.version = semver.coerce(release.tag_name);
 94190  
 94191        if (!release.version) {
 94192          return false;
 94193        }
 94194  
 94195        if (!getBundleAsset(release)) {
 94196          return false;
 94197        }
 94198  
 94199        return true;
 94200      });
 94201  
 94202      releases.sort(function (a, b) {
 94203        // $FlowFixMe
 94204        return -semver.compare(a.version, b.version);
 94205      });
 94206  
 94207      return releases;
 94208    });
 94209  
 94210    return function fetchReleases(_x) {
 94211      return _ref.apply(this, arguments);
 94212    };
 94213  })();
 94214  
 94215  exports.hasWrapper = hasWrapper;
 94216  
 94217  var _yarnVersion;
 94218  
 94219  function _load_yarnVersion() {
 94220    return _yarnVersion = __webpack_require__(105);
 94221  }
 94222  
 94223  var _child;
 94224  
 94225  function _load_child() {
 94226    return _child = _interopRequireWildcard(__webpack_require__(50));
 94227  }
 94228  
 94229  var _buildSubCommands2;
 94230  
 94231  function _load_buildSubCommands() {
 94232    return _buildSubCommands2 = _interopRequireDefault(__webpack_require__(59));
 94233  }
 94234  
 94235  var _rc;
 94236  
 94237  function _load_rc() {
 94238    return _rc = __webpack_require__(335);
 94239  }
 94240  
 94241  var _fs;
 94242  
 94243  function _load_fs() {
 94244    return _fs = _interopRequireWildcard(__webpack_require__(5));
 94245  }
 94246  
 94247  var _lockfile;
 94248  
 94249  function _load_lockfile() {
 94250    return _lockfile = __webpack_require__(19);
 94251  }
 94252  
 94253  var _semver;
 94254  
 94255  function _load_semver() {
 94256    return _semver = __webpack_require__(170);
 94257  }
 94258  
 94259  var _constants;
 94260  
 94261  function _load_constants() {
 94262    return _constants = __webpack_require__(8);
 94263  }
 94264  
 94265  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 94266  
 94267  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 94268  
 94269  /* eslint-disable max-len */
 94270  
 94271  const V2_NAMES = ['berry', 'stable', 'canary', 'v2', '2'];
 94272  
 94273  const isLocalFile = version => version.match(/^\.{0,2}[\\/]/) || path.isAbsolute(version);
 94274  const isV2Version = version => (0, (_semver || _load_semver()).satisfiesWithPrereleases)(version, '>=2.0.0');
 94275  
 94276  const chalk = __webpack_require__(30);
 94277  const invariant = __webpack_require__(9);
 94278  const path = __webpack_require__(0);
 94279  const semver = __webpack_require__(22);
 94280  
 94281  function getBundleAsset(release) {
 94282    return release.assets.find(asset => {
 94283      return asset.name.match(/^yarn-[0-9]+\.[0-9]+\.[0-9]+\.js$/);
 94284    });
 94285  }
 94286  
 94287  function fetchBundle(config, url) {
 94288    return config.requestManager.request({
 94289      url,
 94290      buffer: true
 94291    });
 94292  }
 94293  
 94294  function hasWrapper(flags, args) {
 94295    return false;
 94296  }
 94297  
 94298  var _buildSubCommands = (0, (_buildSubCommands2 || _load_buildSubCommands()).default)('policies', {
 94299    setVersion(config, reporter, flags, args) {
 94300      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 94301        const initialRange = args[0] || 'latest';
 94302        let range = initialRange;
 94303  
 94304        let allowRc = flags.rc;
 94305  
 94306        if (range === 'rc') {
 94307          reporter.log(`${chalk.yellow(`Warning:`)} Your current Yarn binary is currently Yarn ${(_yarnVersion || _load_yarnVersion()).version}; to avoid potential breaking changes, 'set version rc' won't receive upgrades past the 1.22.x branch.\n         To upgrade to the latest versions, run ${chalk.cyan(`yarn set version`)} ${chalk.yellow.underline(`canary`)} instead. Sorry for the inconvenience.\n`);
 94308  
 94309          range = '*';
 94310          allowRc = true;
 94311        }
 94312  
 94313        if (range === 'latest') {
 94314          reporter.log(`${chalk.yellow(`Warning:`)} Your current Yarn binary is currently Yarn ${(_yarnVersion || _load_yarnVersion()).version}; to avoid potential breaking changes, 'set version latest' won't receive upgrades past the 1.22.x branch.\n         To upgrade to the latest versions, run ${chalk.cyan(`yarn set version`)} ${chalk.yellow.underline(`stable`)} instead. Sorry for the inconvenience.\n`);
 94315  
 94316          range = '*';
 94317        }
 94318  
 94319        if (range === 'classic') {
 94320          range = '*';
 94321        }
 94322  
 94323        let bundleUrl;
 94324        let bundleVersion;
 94325        const isV2 = false;
 94326  
 94327        if (range === 'nightly' || range === 'nightlies') {
 94328          reporter.log(`${chalk.yellow(`Warning:`)} Nightlies only exist for Yarn 1.x; starting from 2.x onwards, you should use 'canary' instead`);
 94329  
 94330          bundleUrl = 'https://nightly.yarnpkg.com/latest.js';
 94331          bundleVersion = 'nightly';
 94332        } else if (V2_NAMES.includes(range) || isLocalFile(range) || isV2Version(range)) {
 94333          const normalizedRange = range === `canary` ? `canary` : `stable`;
 94334  
 94335          if (process.env.COREPACK_ROOT) {
 94336            yield (_child || _load_child()).spawn((_constants || _load_constants()).NODE_BIN_PATH, [path.join(process.env.COREPACK_ROOT, 'dist/corepack.js'), `yarn@${normalizedRange}`, `set`, `version`, normalizedRange], {
 94337              stdio: 'inherit',
 94338              cwd: config.cwd
 94339            });
 94340  
 94341            return;
 94342          } else {
 94343            const bundle = yield fetchBundle(config, 'https://github.com/yarnpkg/berry/raw/master/packages/yarnpkg-cli/bin/yarn.js');
 94344  
 94345            const yarnPath = path.resolve(config.lockfileFolder, `.yarn/releases/yarn-stable-temp.cjs`);
 94346            yield (_fs || _load_fs()).mkdirp(path.dirname(yarnPath));
 94347            yield (_fs || _load_fs()).writeFile(yarnPath, bundle);
 94348            yield (_fs || _load_fs()).chmod(yarnPath, 0o755);
 94349  
 94350            try {
 94351              yield (_child || _load_child()).spawn((_constants || _load_constants()).NODE_BIN_PATH, [yarnPath, 'set', 'version', range], {
 94352                stdio: 'inherit',
 94353                cwd: config.lockfileFolder,
 94354                env: (0, (_extends2 || _load_extends()).default)({}, process.env, {
 94355                  YARN_IGNORE_PATH: `1`
 94356                })
 94357              });
 94358            } catch (err) {
 94359              // eslint-disable-next-line no-process-exit
 94360              process.exit(1);
 94361            }
 94362  
 94363            return;
 94364          }
 94365        } else {
 94366          reporter.log(`Resolving ${chalk.yellow(initialRange)} to a url...`);
 94367  
 94368          let releases = [];
 94369  
 94370          try {
 94371            releases = yield fetchReleases(config, {
 94372              includePrereleases: allowRc
 94373            });
 94374          } catch (e) {
 94375            reporter.error(e.message);
 94376            return;
 94377          }
 94378  
 94379          const release = releases.find(function (release) {
 94380            // $FlowFixMe
 94381            return semver.satisfies(release.version, range);
 94382          });
 94383  
 94384          if (!release) {
 94385            throw new Error(`Release not found: ${range}`);
 94386          }
 94387  
 94388          const asset = getBundleAsset(release);
 94389          invariant(asset, 'The bundle asset should exist');
 94390  
 94391          bundleUrl = asset.browser_download_url;
 94392          bundleVersion = release.version.version;
 94393        }
 94394  
 94395        reporter.log(`Downloading ${chalk.green(bundleUrl)}...`);
 94396  
 94397        const bundle = yield fetchBundle(config, bundleUrl);
 94398  
 94399        const yarnPath = path.resolve(config.lockfileFolder, `.yarn/releases/yarn-${bundleVersion}.cjs`);
 94400        reporter.log(`Saving it into ${chalk.magenta(yarnPath)}...`);
 94401        yield (_fs || _load_fs()).mkdirp(path.dirname(yarnPath));
 94402        yield (_fs || _load_fs()).writeFile(yarnPath, bundle);
 94403        yield (_fs || _load_fs()).chmod(yarnPath, 0o755);
 94404  
 94405        const targetPath = path.relative(config.lockfileFolder, yarnPath).replace(/\\/g, '/');
 94406  
 94407        if (isV2) {
 94408          const rcPath = `${config.lockfileFolder}/.yarnrc.yml`;
 94409          reporter.log(`Updating ${chalk.magenta(rcPath)}...`);
 94410  
 94411          yield (_fs || _load_fs()).writeFilePreservingEol(rcPath, `yarnPath: ${JSON.stringify(targetPath)}\n`);
 94412        } else {
 94413          const rcPath = `${config.lockfileFolder}/.yarnrc`;
 94414          reporter.log(`Updating ${chalk.magenta(rcPath)}...`);
 94415  
 94416          const rc = (0, (_rc || _load_rc()).getRcConfigForFolder)(config.lockfileFolder);
 94417          rc['yarn-path'] = targetPath;
 94418  
 94419          yield (_fs || _load_fs()).writeFilePreservingEol(rcPath, `${(0, (_lockfile || _load_lockfile()).stringify)(rc)}\n`);
 94420        }
 94421  
 94422        reporter.log(`Done!`);
 94423      })();
 94424    }
 94425  });
 94426  
 94427  const run = _buildSubCommands.run,
 94428        setFlags = _buildSubCommands.setFlags,
 94429        examples = _buildSubCommands.examples;
 94430  exports.run = run;
 94431  exports.setFlags = setFlags;
 94432  exports.examples = examples;
 94433  
 94434  /***/ }),
 94435  /* 509 */
 94436  /***/ (function(module, exports, __webpack_require__) {
 94437  
 94438  "use strict";
 94439  
 94440  
 94441  Object.defineProperty(exports, "__esModule", {
 94442    value: true
 94443  });
 94444  exports.run = undefined;
 94445  
 94446  var _asyncToGenerator2;
 94447  
 94448  function _load_asyncToGenerator() {
 94449    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 94450  }
 94451  
 94452  let publish = (() => {
 94453    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, pkg, flags, dir) {
 94454      let access = flags.access;
 94455  
 94456      // if no access level is provided, check package.json for `publishConfig.access`
 94457      // see: https://docs.npmjs.com/files/package.json#publishconfig
 94458      if (!access && pkg && pkg.publishConfig && pkg.publishConfig.access) {
 94459        access = pkg.publishConfig.access;
 94460      }
 94461  
 94462      // validate access argument
 94463      if (access && access !== 'public' && access !== 'restricted') {
 94464        throw new (_errors || _load_errors()).MessageError(config.reporter.lang('invalidAccess'));
 94465      }
 94466  
 94467      // TODO this might modify package.json, do we need to reload it?
 94468      yield config.executeLifecycleScript('prepublish');
 94469      yield config.executeLifecycleScript('prepare');
 94470      yield config.executeLifecycleScript('prepublishOnly');
 94471      yield config.executeLifecycleScript('prepack');
 94472  
 94473      // get tarball stream
 94474      const stat = yield (_fs || _load_fs()).lstat(dir);
 94475      let stream;
 94476      if (stat.isDirectory()) {
 94477        stream = yield (0, (_pack || _load_pack()).pack)(config);
 94478      } else if (stat.isFile()) {
 94479        stream = fs2.createReadStream(dir);
 94480      } else {
 94481        throw new Error("Don't know how to handle this file type");
 94482      }
 94483      const buffer = yield new Promise(function (resolve, reject) {
 94484        const data = [];
 94485        invariant(stream, 'expected stream');
 94486        stream.on('data', data.push.bind(data)).on('end', function () {
 94487          return resolve(Buffer.concat(data));
 94488        }).on('error', reject);
 94489      });
 94490  
 94491      yield config.executeLifecycleScript('postpack');
 94492  
 94493      // copy normalized package and remove internal keys as they may be sensitive or yarn specific
 94494      pkg = Object.assign({}, pkg);
 94495      for (const key in pkg) {
 94496        if (key[0] === '_') {
 94497          delete pkg[key];
 94498        }
 94499      }
 94500  
 94501      const tag = flags.tag || 'latest';
 94502      const tbName = `${pkg.name}-${pkg.version}.tgz`;
 94503      const tbURI = `${pkg.name}/-/${tbName}`;
 94504  
 94505      // create body
 94506      const root = {
 94507        _id: pkg.name,
 94508        access,
 94509        name: pkg.name,
 94510        description: pkg.description,
 94511        'dist-tags': {
 94512          [tag]: pkg.version
 94513        },
 94514        versions: {
 94515          [pkg.version]: pkg
 94516        },
 94517        readme: pkg.readme || '',
 94518        _attachments: {
 94519          [tbName]: {
 94520            content_type: 'application/octet-stream',
 94521            data: buffer.toString('base64'),
 94522            length: buffer.length
 94523          }
 94524        }
 94525      };
 94526  
 94527      pkg._id = `${pkg.name}@${pkg.version}`;
 94528      pkg.dist = pkg.dist || {};
 94529      pkg.dist.shasum = crypto.createHash('sha1').update(buffer).digest('hex');
 94530      pkg.dist.integrity = ssri.fromData(buffer).toString();
 94531  
 94532      const registry = String(config.getOption('registry'));
 94533      pkg.dist.tarball = url.resolve(registry, tbURI).replace(/^https:\/\//, 'http://');
 94534  
 94535      // publish package
 94536      try {
 94537        yield config.registries.npm.request((_npmRegistry || _load_npmRegistry()).default.escapeName(pkg.name), {
 94538          registry: pkg && pkg.publishConfig && pkg.publishConfig.registry,
 94539          method: 'PUT',
 94540          body: root
 94541        });
 94542      } catch (error) {
 94543        throw new (_errors || _load_errors()).MessageError(config.reporter.lang('publishFail', error.message));
 94544      }
 94545  
 94546      yield config.executeLifecycleScript('publish');
 94547      yield config.executeLifecycleScript('postpublish');
 94548    });
 94549  
 94550    return function publish(_x, _x2, _x3, _x4) {
 94551      return _ref.apply(this, arguments);
 94552    };
 94553  })();
 94554  
 94555  let run = exports.run = (() => {
 94556    var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 94557      // validate arguments
 94558      const dir = args[0] ? (_path || _load_path()).default.resolve(config.cwd, args[0]) : config.cwd;
 94559      if (args.length > 1) {
 94560        throw new (_errors || _load_errors()).MessageError(reporter.lang('tooManyArguments', 1));
 94561      }
 94562      if (!(yield (_fs || _load_fs()).exists(dir))) {
 94563        throw new (_errors || _load_errors()).MessageError(reporter.lang('unknownFolderOrTarball'));
 94564      }
 94565  
 94566      const stat = yield (_fs || _load_fs()).lstat(dir);
 94567      let publishPath = dir;
 94568      if (stat.isDirectory()) {
 94569        config.cwd = (_path || _load_path()).default.resolve(dir);
 94570        publishPath = config.cwd;
 94571      }
 94572  
 94573      // validate package fields that are required for publishing
 94574      // $FlowFixMe
 94575      const pkg = yield config.readRootManifest();
 94576      if (pkg.private) {
 94577        throw new (_errors || _load_errors()).MessageError(reporter.lang('publishPrivate'));
 94578      }
 94579      if (!pkg.name) {
 94580        throw new (_errors || _load_errors()).MessageError(reporter.lang('noName'));
 94581      }
 94582  
 94583      let registry = '';
 94584  
 94585      if (pkg && pkg.publishConfig && pkg.publishConfig.registry) {
 94586        registry = pkg.publishConfig.registry;
 94587      }
 94588  
 94589      reporter.step(1, 4, reporter.lang('bumpingVersion'));
 94590      const commitVersion = yield (0, (_version || _load_version()).setVersion)(config, reporter, flags, [], false);
 94591  
 94592      //
 94593      reporter.step(2, 4, reporter.lang('loggingIn'));
 94594      const revoke = yield (0, (_login || _load_login()).getToken)(config, reporter, pkg.name, flags, registry);
 94595  
 94596      //
 94597      reporter.step(3, 4, reporter.lang('publishing'));
 94598      yield publish(config, pkg, flags, publishPath);
 94599      yield commitVersion();
 94600      reporter.success(reporter.lang('published'));
 94601  
 94602      //
 94603      reporter.step(4, 4, reporter.lang('revokingToken'));
 94604      yield revoke();
 94605    });
 94606  
 94607    return function run(_x5, _x6, _x7, _x8) {
 94608      return _ref2.apply(this, arguments);
 94609    };
 94610  })();
 94611  
 94612  exports.setFlags = setFlags;
 94613  exports.hasWrapper = hasWrapper;
 94614  
 94615  var _npmRegistry;
 94616  
 94617  function _load_npmRegistry() {
 94618    return _npmRegistry = _interopRequireDefault(__webpack_require__(88));
 94619  }
 94620  
 94621  var _errors;
 94622  
 94623  function _load_errors() {
 94624    return _errors = __webpack_require__(6);
 94625  }
 94626  
 94627  var _version;
 94628  
 94629  function _load_version() {
 94630    return _version = __webpack_require__(357);
 94631  }
 94632  
 94633  var _fs;
 94634  
 94635  function _load_fs() {
 94636    return _fs = _interopRequireWildcard(__webpack_require__(5));
 94637  }
 94638  
 94639  var _pack;
 94640  
 94641  function _load_pack() {
 94642    return _pack = __webpack_require__(166);
 94643  }
 94644  
 94645  var _login;
 94646  
 94647  function _load_login() {
 94648    return _login = __webpack_require__(107);
 94649  }
 94650  
 94651  var _path;
 94652  
 94653  function _load_path() {
 94654    return _path = _interopRequireDefault(__webpack_require__(0));
 94655  }
 94656  
 94657  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 94658  
 94659  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 94660  
 94661  const invariant = __webpack_require__(9);
 94662  
 94663  const crypto = __webpack_require__(11);
 94664  const url = __webpack_require__(24);
 94665  const fs2 = __webpack_require__(4);
 94666  const ssri = __webpack_require__(65);
 94667  
 94668  function setFlags(commander) {
 94669    (0, (_version || _load_version()).setFlags)(commander);
 94670    commander.description('Publishes a package to the npm registry.');
 94671    commander.usage('publish [<tarball>|<folder>] [--tag <tag>] [--access <public|restricted>]');
 94672    commander.option('--access [access]', 'access');
 94673    commander.option('--tag [tag]', 'tag');
 94674  }
 94675  
 94676  function hasWrapper(commander, args) {
 94677    return true;
 94678  }
 94679  
 94680  /***/ }),
 94681  /* 510 */
 94682  /***/ (function(module, exports, __webpack_require__) {
 94683  
 94684  "use strict";
 94685  
 94686  
 94687  Object.defineProperty(exports, "__esModule", {
 94688    value: true
 94689  });
 94690  exports.examples = exports.hasWrapper = exports.run = undefined;
 94691  
 94692  var _extends2;
 94693  
 94694  function _load_extends() {
 94695    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 94696  }
 94697  
 94698  var _asyncToGenerator2;
 94699  
 94700  function _load_asyncToGenerator() {
 94701    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 94702  }
 94703  
 94704  let removeTeamUser = (() => {
 94705    var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (parts, config, reporter) {
 94706      reporter.step(2, 3, reporter.lang('teamRemovingUser'));
 94707      reporter.inspect((yield config.registries.npm.request(`team/${parts.scope}/${parts.team}/user`, {
 94708        method: 'DELETE',
 94709        body: {
 94710          user: parts.user
 94711        }
 94712      })));
 94713      return true;
 94714    });
 94715  
 94716    return function removeTeamUser(_x5, _x6, _x7) {
 94717      return _ref2.apply(this, arguments);
 94718    };
 94719  })();
 94720  
 94721  let list = (() => {
 94722    var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (parts, config, reporter) {
 94723      reporter.step(2, 3, reporter.lang('teamListing'));
 94724      const uriParams = '?format=cli';
 94725      if (parts.team) {
 94726        reporter.inspect((yield config.registries.npm.request(`team/${parts.scope}/${parts.team}/user${uriParams}`)));
 94727      } else {
 94728        reporter.inspect((yield config.registries.npm.request(`org/${parts.scope}/team${uriParams}`)));
 94729      }
 94730      return true;
 94731    });
 94732  
 94733    return function list(_x8, _x9, _x10) {
 94734      return _ref3.apply(this, arguments);
 94735    };
 94736  })();
 94737  
 94738  exports.setFlags = setFlags;
 94739  
 94740  var _buildSubCommands2;
 94741  
 94742  function _load_buildSubCommands() {
 94743    return _buildSubCommands2 = _interopRequireDefault(__webpack_require__(59));
 94744  }
 94745  
 94746  var _login;
 94747  
 94748  function _load_login() {
 94749    return _login = __webpack_require__(107);
 94750  }
 94751  
 94752  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 94753  
 94754  function explodeScopeTeam(arg, requireTeam, reporter) {
 94755    var _arg$split = arg.split(':');
 94756  
 94757    const scope = _arg$split[0],
 94758          team = _arg$split[1],
 94759          parts = _arg$split.slice(2);
 94760  
 94761    if (parts.length) {
 94762      return false;
 94763    }
 94764  
 94765    if (requireTeam && !team) {
 94766      return false;
 94767    }
 94768  
 94769    return {
 94770      scope: scope || '',
 94771      team: team || '',
 94772      user: ''
 94773    };
 94774  }
 94775  
 94776  function warnDeprecation(reporter, deprecationWarning) {
 94777    const command = 'yarn team';
 94778    reporter.warn(reporter.lang('deprecatedCommand', `${command} ${deprecationWarning.deprecatedCommand}`, `${command} ${deprecationWarning.currentCommand}`));
 94779  }
 94780  
 94781  function wrapRequired(callback, requireTeam, deprecationInfo) {
 94782    return (() => {
 94783      var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 94784        if (deprecationInfo) {
 94785          warnDeprecation(reporter, deprecationInfo);
 94786        }
 94787  
 94788        if (!args.length) {
 94789          return false;
 94790        }
 94791  
 94792        const parts = explodeScopeTeam(args[0], requireTeam, reporter);
 94793        if (!parts) {
 94794          return false;
 94795        }
 94796  
 94797        reporter.step(1, 3, reporter.lang('loggingIn'));
 94798        const revoke = yield (0, (_login || _load_login()).getToken)(config, reporter);
 94799  
 94800        const res = yield callback(parts, config, reporter, flags, args);
 94801        if (!res) {
 94802          return res;
 94803        }
 94804  
 94805        reporter.step(3, 3, reporter.lang('revokingToken'));
 94806        yield revoke();
 94807        return true;
 94808      });
 94809  
 94810      return function (_x, _x2, _x3, _x4) {
 94811        return _ref.apply(this, arguments);
 94812      };
 94813    })();
 94814  }
 94815  
 94816  function wrapRequiredTeam(callback, requireTeam = true, subCommandDeprecated) {
 94817    return wrapRequired(function (parts, config, reporter, flags, args) {
 94818      if (args.length === 1) {
 94819        return callback(parts, config, reporter, flags, args);
 94820      } else {
 94821        return false;
 94822      }
 94823    }, requireTeam, subCommandDeprecated);
 94824  }
 94825  
 94826  function wrapRequiredUser(callback, subCommandDeprecated) {
 94827    return wrapRequired(function (parts, config, reporter, flags, args) {
 94828      if (args.length === 2) {
 94829        return callback((0, (_extends2 || _load_extends()).default)({
 94830          user: args[1]
 94831        }, parts), config, reporter, flags, args);
 94832      } else {
 94833        return false;
 94834      }
 94835    }, true, subCommandDeprecated);
 94836  }
 94837  
 94838  function setFlags(commander) {
 94839    commander.description('Maintain team memberships');
 94840  }
 94841  
 94842  var _buildSubCommands = (0, (_buildSubCommands2 || _load_buildSubCommands()).default)('team', {
 94843    create: wrapRequiredTeam((() => {
 94844      var _ref4 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (parts, config, reporter, flags, args) {
 94845        reporter.step(2, 3, reporter.lang('teamCreating'));
 94846        reporter.inspect((yield config.registries.npm.request(`team/${parts.scope}`, {
 94847          method: 'PUT',
 94848          body: {
 94849            team: parts.team
 94850          }
 94851        })));
 94852        return true;
 94853      });
 94854  
 94855      return function (_x11, _x12, _x13, _x14, _x15) {
 94856        return _ref4.apply(this, arguments);
 94857      };
 94858    })()),
 94859  
 94860    destroy: wrapRequiredTeam((() => {
 94861      var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (parts, config, reporter, flags, args) {
 94862        reporter.step(2, 3, reporter.lang('teamRemoving'));
 94863        reporter.inspect((yield config.registries.npm.request(`team/${parts.scope}/${parts.team}`, {
 94864          method: 'DELETE'
 94865        })));
 94866        return true;
 94867      });
 94868  
 94869      return function (_x16, _x17, _x18, _x19, _x20) {
 94870        return _ref5.apply(this, arguments);
 94871      };
 94872    })()),
 94873  
 94874    add: wrapRequiredUser((() => {
 94875      var _ref6 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (parts, config, reporter, flags, args) {
 94876        reporter.step(2, 3, reporter.lang('teamAddingUser'));
 94877        reporter.inspect((yield config.registries.npm.request(`team/${parts.scope}/${parts.team}/user`, {
 94878          method: 'PUT',
 94879          body: {
 94880            user: parts.user
 94881          }
 94882        })));
 94883        return true;
 94884      });
 94885  
 94886      return function (_x21, _x22, _x23, _x24, _x25) {
 94887        return _ref6.apply(this, arguments);
 94888      };
 94889    })()),
 94890  
 94891    rm: wrapRequiredUser(function (parts, config, reporter, flags, args) {
 94892      removeTeamUser(parts, config, reporter);
 94893    }, {
 94894      deprecatedCommand: 'rm',
 94895      currentCommand: 'remove'
 94896    }),
 94897  
 94898    remove: wrapRequiredUser(function (parts, config, reporter, flags, args) {
 94899      removeTeamUser(parts, config, reporter);
 94900    }),
 94901  
 94902    ls: wrapRequiredTeam(function (parts, config, reporter, flags, args) {
 94903      list(parts, config, reporter);
 94904    }, false, {
 94905      deprecatedCommand: 'ls',
 94906      currentCommand: 'list'
 94907    }),
 94908  
 94909    list: wrapRequiredTeam(function (parts, config, reporter, flags, args) {
 94910      list(parts, config, reporter);
 94911    }, false)
 94912  }, ['create <scope:team>', 'destroy <scope:team>', 'add <scope:team> <user>', 'remove <scope:team> <user>', 'list <scope>|<scope:team>']);
 94913  
 94914  const run = _buildSubCommands.run,
 94915        hasWrapper = _buildSubCommands.hasWrapper,
 94916        examples = _buildSubCommands.examples;
 94917  exports.run = run;
 94918  exports.hasWrapper = hasWrapper;
 94919  exports.examples = examples;
 94920  
 94921  /***/ }),
 94922  /* 511 */
 94923  /***/ (function(module, exports, __webpack_require__) {
 94924  
 94925  "use strict";
 94926  
 94927  
 94928  Object.defineProperty(exports, "__esModule", {
 94929    value: true
 94930  });
 94931  exports.run = undefined;
 94932  
 94933  var _asyncToGenerator2;
 94934  
 94935  function _load_asyncToGenerator() {
 94936    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 94937  }
 94938  
 94939  let run = exports.run = (() => {
 94940    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 94941      if (args.length) {
 94942        for (var _iterator = args, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 94943          var _ref2;
 94944  
 94945          if (_isArray) {
 94946            if (_i >= _iterator.length) break;
 94947            _ref2 = _iterator[_i++];
 94948          } else {
 94949            _i = _iterator.next();
 94950            if (_i.done) break;
 94951            _ref2 = _i.value;
 94952          }
 94953  
 94954          const name = _ref2;
 94955  
 94956          const linkLoc = path.join(config.linkFolder, name);
 94957          if (yield (_fs || _load_fs()).exists(linkLoc)) {
 94958            yield (_fs || _load_fs()).unlink(path.join((yield (0, (_link || _load_link()).getRegistryFolder)(config, name)), name));
 94959            reporter.success(reporter.lang('linkDisusing', name));
 94960            reporter.info(reporter.lang('linkDisusingMessage', name));
 94961          } else {
 94962            throw new (_errors || _load_errors()).MessageError(reporter.lang('linkMissing', name));
 94963          }
 94964        }
 94965      } else {
 94966        // remove from registry
 94967        const manifest = yield config.readRootManifest();
 94968        const name = manifest.name;
 94969        if (!name) {
 94970          throw new (_errors || _load_errors()).MessageError(reporter.lang('unknownPackageName'));
 94971        }
 94972  
 94973        const linkLoc = path.join(config.linkFolder, name);
 94974        if (yield (_fs || _load_fs()).exists(linkLoc)) {
 94975          // If there is a `bin` defined in the package.json,
 94976          // link each bin to the global bin
 94977          if (manifest.bin) {
 94978            const globalBinFolder = yield (0, (_global || _load_global()).getBinFolder)(config, flags);
 94979            for (const binName in manifest.bin) {
 94980              const binDestLoc = path.join(globalBinFolder, binName);
 94981              if (yield (_fs || _load_fs()).exists(binDestLoc)) {
 94982                yield (_fs || _load_fs()).unlink(binDestLoc);
 94983                if (process.platform === 'win32') {
 94984                  yield (_fs || _load_fs()).unlink(binDestLoc + '.cmd');
 94985                }
 94986              }
 94987            }
 94988          }
 94989  
 94990          yield (_fs || _load_fs()).unlink(linkLoc);
 94991  
 94992          reporter.success(reporter.lang('linkUnregistered', name));
 94993          reporter.info(reporter.lang('linkUnregisteredMessage', name));
 94994        } else {
 94995          throw new (_errors || _load_errors()).MessageError(reporter.lang('linkMissing', name));
 94996        }
 94997      }
 94998    });
 94999  
 95000    return function run(_x, _x2, _x3, _x4) {
 95001      return _ref.apply(this, arguments);
 95002    };
 95003  })();
 95004  
 95005  exports.setFlags = setFlags;
 95006  exports.hasWrapper = hasWrapper;
 95007  
 95008  var _errors;
 95009  
 95010  function _load_errors() {
 95011    return _errors = __webpack_require__(6);
 95012  }
 95013  
 95014  var _fs;
 95015  
 95016  function _load_fs() {
 95017    return _fs = _interopRequireWildcard(__webpack_require__(5));
 95018  }
 95019  
 95020  var _link;
 95021  
 95022  function _load_link() {
 95023    return _link = __webpack_require__(351);
 95024  }
 95025  
 95026  var _global;
 95027  
 95028  function _load_global() {
 95029    return _global = __webpack_require__(121);
 95030  }
 95031  
 95032  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 95033  
 95034  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 95035  
 95036  const path = __webpack_require__(0);
 95037  
 95038  function setFlags(commander) {
 95039    commander.description('Unlink a previously created symlink for a package.');
 95040  }
 95041  
 95042  function hasWrapper(commander, args) {
 95043    return true;
 95044  }
 95045  
 95046  /***/ }),
 95047  /* 512 */
 95048  /***/ (function(module, exports, __webpack_require__) {
 95049  
 95050  "use strict";
 95051  
 95052  
 95053  Object.defineProperty(exports, "__esModule", {
 95054    value: true
 95055  });
 95056  exports.clearAll = exports.clearSome = exports.run = undefined;
 95057  
 95058  var _asyncToGenerator2;
 95059  
 95060  function _load_asyncToGenerator() {
 95061    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 95062  }
 95063  
 95064  let run = exports.run = (() => {
 95065    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 95066      if (!config.plugnplayEnabled) {
 95067        throw new (_errors || _load_errors()).MessageError(reporter.lang('unplugDisabled'));
 95068      }
 95069      if (!args.length && flags.clear) {
 95070        throw new (_errors || _load_errors()).MessageError(reporter.lang('tooFewArguments', 1));
 95071      }
 95072      if (args.length && flags.clearAll) {
 95073        throw new (_errors || _load_errors()).MessageError(reporter.lang('noArguments'));
 95074      }
 95075  
 95076      if (flags.clearAll) {
 95077        yield clearAll(config);
 95078      } else if (flags.clear) {
 95079        yield clearSome(config, new Set(args));
 95080      } else if (args.length > 0) {
 95081        const lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.lockfileFolder, reporter);
 95082        yield (0, (_install || _load_install()).wrapLifecycle)(config, flags, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 95083          const install = new (_install || _load_install()).Install(flags, config, reporter, lockfile);
 95084          install.linker.unplugged = args;
 95085          yield install.init();
 95086        }));
 95087      }
 95088  
 95089      const unpluggedPackageFolders = yield config.listUnpluggedPackageFolders();
 95090  
 95091      for (var _iterator = unpluggedPackageFolders.values(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 95092        var _ref3;
 95093  
 95094        if (_isArray) {
 95095          if (_i >= _iterator.length) break;
 95096          _ref3 = _iterator[_i++];
 95097        } else {
 95098          _i = _iterator.next();
 95099          if (_i.done) break;
 95100          _ref3 = _i.value;
 95101        }
 95102  
 95103        const target = _ref3;
 95104  
 95105        reporter.log(target, { force: true });
 95106      }
 95107    });
 95108  
 95109    return function run(_x, _x2, _x3, _x4) {
 95110      return _ref.apply(this, arguments);
 95111    };
 95112  })();
 95113  
 95114  let clearSome = exports.clearSome = (() => {
 95115    var _ref4 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, filters) {
 95116      const unpluggedPackageFolders = yield config.listUnpluggedPackageFolders();
 95117      const removeList = [];
 95118  
 95119      for (var _iterator2 = unpluggedPackageFolders.entries(), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 95120        var _ref6;
 95121  
 95122        if (_isArray2) {
 95123          if (_i2 >= _iterator2.length) break;
 95124          _ref6 = _iterator2[_i2++];
 95125        } else {
 95126          _i2 = _iterator2.next();
 95127          if (_i2.done) break;
 95128          _ref6 = _i2.value;
 95129        }
 95130  
 95131        const _ref5 = _ref6;
 95132        const unpluggedName = _ref5[0];
 95133        const target = _ref5[1];
 95134  
 95135        var _ref8 = yield (_fs || _load_fs()).readJson(path.join(target, 'package.json'));
 95136  
 95137        const name = _ref8.name;
 95138  
 95139        const toBeRemoved = filters.has(name);
 95140  
 95141        if (toBeRemoved) {
 95142          removeList.push(path.join(config.getUnpluggedPath(), unpluggedName));
 95143        }
 95144      }
 95145  
 95146      if (removeList.length === unpluggedPackageFolders.size) {
 95147        yield (_fs || _load_fs()).unlink(config.getUnpluggedPath());
 95148      } else {
 95149        for (var _iterator3 = removeList, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 95150          var _ref7;
 95151  
 95152          if (_isArray3) {
 95153            if (_i3 >= _iterator3.length) break;
 95154            _ref7 = _iterator3[_i3++];
 95155          } else {
 95156            _i3 = _iterator3.next();
 95157            if (_i3.done) break;
 95158            _ref7 = _i3.value;
 95159          }
 95160  
 95161          const unpluggedPackagePath = _ref7;
 95162  
 95163          yield (_fs || _load_fs()).unlink(unpluggedPackagePath);
 95164        }
 95165      }
 95166    });
 95167  
 95168    return function clearSome(_x5, _x6) {
 95169      return _ref4.apply(this, arguments);
 95170    };
 95171  })();
 95172  
 95173  let clearAll = exports.clearAll = (() => {
 95174    var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config) {
 95175      yield (_fs || _load_fs()).unlink(config.getUnpluggedPath());
 95176    });
 95177  
 95178    return function clearAll(_x7) {
 95179      return _ref9.apply(this, arguments);
 95180    };
 95181  })();
 95182  
 95183  exports.hasWrapper = hasWrapper;
 95184  exports.setFlags = setFlags;
 95185  
 95186  var _lockfile;
 95187  
 95188  function _load_lockfile() {
 95189    return _lockfile = _interopRequireDefault(__webpack_require__(19));
 95190  }
 95191  
 95192  var _install;
 95193  
 95194  function _load_install() {
 95195    return _install = __webpack_require__(34);
 95196  }
 95197  
 95198  var _errors;
 95199  
 95200  function _load_errors() {
 95201    return _errors = __webpack_require__(6);
 95202  }
 95203  
 95204  var _fs;
 95205  
 95206  function _load_fs() {
 95207    return _fs = _interopRequireWildcard(__webpack_require__(5));
 95208  }
 95209  
 95210  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 95211  
 95212  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 95213  
 95214  const path = __webpack_require__(0);
 95215  
 95216  function hasWrapper(commander) {
 95217    return true;
 95218  }
 95219  
 95220  function setFlags(commander) {
 95221    commander.description('Temporarily copies a package (with an optional @range suffix) outside of the global cache for debugging purposes');
 95222    commander.usage('unplug [packages ...] [flags]');
 95223    commander.option('--clear', 'Delete the selected packages');
 95224    commander.option('--clear-all', 'Delete all unplugged packages');
 95225  }
 95226  
 95227  /***/ }),
 95228  /* 513 */
 95229  /***/ (function(module, exports, __webpack_require__) {
 95230  
 95231  "use strict";
 95232  
 95233  
 95234  Object.defineProperty(exports, "__esModule", {
 95235    value: true
 95236  });
 95237  exports.run = undefined;
 95238  
 95239  var _asyncToGenerator2;
 95240  
 95241  function _load_asyncToGenerator() {
 95242    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 95243  }
 95244  
 95245  let run = exports.run = (() => {
 95246    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 95247      const versions = { yarn: (_yarnVersion || _load_yarnVersion()).version };
 95248  
 95249      const pkg = yield config.maybeReadManifest(config.cwd);
 95250      if (pkg && pkg.name && pkg.version) {
 95251        versions[pkg.name] = pkg.version;
 95252      }
 95253  
 95254      Object.assign(versions, process.versions);
 95255  
 95256      reporter.inspect(versions);
 95257    });
 95258  
 95259    return function run(_x, _x2, _x3, _x4) {
 95260      return _ref.apply(this, arguments);
 95261    };
 95262  })();
 95263  
 95264  exports.setFlags = setFlags;
 95265  exports.hasWrapper = hasWrapper;
 95266  
 95267  var _yarnVersion;
 95268  
 95269  function _load_yarnVersion() {
 95270    return _yarnVersion = __webpack_require__(105);
 95271  }
 95272  
 95273  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 95274  
 95275  function setFlags(commander) {
 95276    commander.description('Displays version information of currently installed Yarn, Node.js, and its dependencies.');
 95277  }
 95278  
 95279  function hasWrapper(commander, args) {
 95280    return true;
 95281  }
 95282  
 95283  /***/ }),
 95284  /* 514 */
 95285  /***/ (function(module, exports, __webpack_require__) {
 95286  
 95287  "use strict";
 95288  
 95289  
 95290  Object.defineProperty(exports, "__esModule", {
 95291    value: true
 95292  });
 95293  exports.run = exports.requireLockfile = undefined;
 95294  
 95295  var _asyncToGenerator2;
 95296  
 95297  function _load_asyncToGenerator() {
 95298    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 95299  }
 95300  
 95301  let cleanQuery = (() => {
 95302    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, query) {
 95303      // if a location was passed then turn it into a hash query
 95304      if (path.isAbsolute(query) && (yield (_fs || _load_fs()).exists(query))) {
 95305        // absolute path
 95306        query = path.relative(config.cwd, query);
 95307      }
 95308  
 95309      // remove references to node_modules with hashes
 95310      query = query.replace(/([\\/]|^)node_modules[\\/]/g, '#');
 95311  
 95312      // remove trailing hashes
 95313      query = query.replace(/^#+/g, '');
 95314  
 95315      // remove trailing paths from each part of the query, skip second part of path for scoped packages
 95316      let queryParts = query.split('#');
 95317      queryParts = queryParts.map(function (part) {
 95318        let parts = part.split(/[\\/]/g);
 95319  
 95320        if (part[0] === '@') {
 95321          parts = parts.slice(0, 2);
 95322        } else {
 95323          parts = parts.slice(0, 1);
 95324        }
 95325  
 95326        return parts.join('/');
 95327      });
 95328      query = queryParts.join('#');
 95329  
 95330      return query;
 95331    });
 95332  
 95333    return function cleanQuery(_x, _x2) {
 95334      return _ref.apply(this, arguments);
 95335    };
 95336  })();
 95337  
 95338  let getPackageSize = (() => {
 95339    var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (tuple) {
 95340      const loc = tuple[0];
 95341  
 95342  
 95343      const files = yield (_fs || _load_fs()).walk(loc, null, new Set([(_constants || _load_constants()).METADATA_FILENAME, (_constants || _load_constants()).TARBALL_FILENAME]));
 95344  
 95345      const sizes = yield Promise.all(files.map(function (walkFile) {
 95346        return (_fs || _load_fs()).getFileSizeOnDisk(walkFile.absolute);
 95347      }));
 95348  
 95349      return sum(sizes);
 95350    });
 95351  
 95352    return function getPackageSize(_x3) {
 95353      return _ref2.apply(this, arguments);
 95354    };
 95355  })();
 95356  
 95357  let run = exports.run = (() => {
 95358    var _ref6 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 95359      if (!args.length) {
 95360        throw new (_errors || _load_errors()).MessageError(reporter.lang('missingWhyDependency'));
 95361      }
 95362      if (args.length > 1) {
 95363        throw new (_errors || _load_errors()).MessageError(reporter.lang('tooManyArguments', 1));
 95364      }
 95365  
 95366      const query = yield cleanQuery(config, args[0]);
 95367  
 95368      reporter.step(1, 4, reporter.lang('whyStart', args[0]), emoji.get('thinking_face'));
 95369  
 95370      // init
 95371      reporter.step(2, 4, reporter.lang('whyInitGraph'), emoji.get('truck'));
 95372      const lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.lockfileFolder, reporter);
 95373      const install = new (_install || _load_install()).Install(flags, config, reporter, lockfile);
 95374  
 95375      var _ref7 = yield install.fetchRequestFromCwd();
 95376  
 95377      const depRequests = _ref7.requests,
 95378            patterns = _ref7.patterns,
 95379            workspaceLayout = _ref7.workspaceLayout;
 95380  
 95381      yield install.resolver.init(depRequests, {
 95382        isFlat: install.flags.flat,
 95383        isFrozen: install.flags.frozenLockfile,
 95384        workspaceLayout
 95385      });
 95386      const hoisted = yield install.linker.getFlatHoistedTree(patterns);
 95387  
 95388      // finding
 95389      reporter.step(3, 4, reporter.lang('whyFinding'), emoji.get('mag'));
 95390  
 95391      const matches = queryWhy(query, hoisted);
 95392  
 95393      if (matches.length <= 0) {
 95394        reporter.error(reporter.lang('whyUnknownMatch'));
 95395        return;
 95396      }
 95397  
 95398      const processMatch = (() => {
 95399        var _ref8 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (match) {
 95400          const matchInfo = match[1];
 95401  
 95402          const matchRef = matchInfo.pkg._reference;
 95403          invariant(matchRef, 'expected reference');
 95404  
 95405          const distinctMatchPatterns = new Set(matchRef.patterns);
 95406          const reasons = [];
 95407  
 95408          // reason: dependency of these modules
 95409          if (matchInfo.originalParentPath.length > 0) {
 95410            reasons.push({
 95411              type: 'whyDependedOn',
 95412              typeSimple: 'whyDependedOnSimple',
 95413              value: toStandardPathString(matchInfo.originalParentPath)
 95414            });
 95415          }
 95416  
 95417          // reason: exists in manifest
 95418          let rootType;
 95419          for (var _iterator3 = distinctMatchPatterns, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 95420            var _ref9;
 95421  
 95422            if (_isArray3) {
 95423              if (_i3 >= _iterator3.length) break;
 95424              _ref9 = _iterator3[_i3++];
 95425            } else {
 95426              _i3 = _iterator3.next();
 95427              if (_i3.done) break;
 95428              _ref9 = _i3.value;
 95429            }
 95430  
 95431            const pattern = _ref9;
 95432  
 95433            rootType = install.rootPatternsToOrigin[pattern];
 95434            if (rootType) {
 95435              reasons.push({
 95436                type: 'whySpecified',
 95437                typeSimple: 'whySpecifiedSimple',
 95438                value: rootType
 95439              });
 95440            }
 95441          }
 95442  
 95443          // reason: this is hoisted from these modules
 95444          for (var _iterator4 = matchInfo.previousPaths, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 95445            var _ref10;
 95446  
 95447            if (_isArray4) {
 95448              if (_i4 >= _iterator4.length) break;
 95449              _ref10 = _iterator4[_i4++];
 95450            } else {
 95451              _i4 = _iterator4.next();
 95452              if (_i4.done) break;
 95453              _ref10 = _i4.value;
 95454            }
 95455  
 95456            const path = _ref10;
 95457  
 95458            reasons.push({
 95459              type: 'whyHoistedFrom',
 95460              typeSimple: 'whyHoistedFromSimple',
 95461              value: toStandardPathString(path)
 95462            });
 95463          }
 95464  
 95465          // package sizes
 95466          let packageSize = 0;
 95467          let directSizes = [];
 95468          let transitiveSizes = [];
 95469          try {
 95470            packageSize = yield getPackageSize(match);
 95471          } catch (e) {}
 95472  
 95473          const dependencies = Array.from(collect(hoisted, new Set(), match));
 95474          const transitiveDependencies = Array.from(collect(hoisted, new Set(), match, { recursive: true }));
 95475  
 95476          try {
 95477            directSizes = yield Promise.all(dependencies.map(getPackageSize));
 95478            transitiveSizes = yield Promise.all(transitiveDependencies.map(getPackageSize));
 95479          } catch (e) {}
 95480  
 95481          const transitiveKeys = new Set(transitiveDependencies.map(function ([, info]) {
 95482            return info.key;
 95483          }));
 95484          const sharedDependencies = getSharedDependencies(hoisted, transitiveKeys);
 95485  
 95486          // prepare output: populate reporter
 95487          reporter.info(reporter.lang('whyMatch', `${matchInfo.key}@${matchInfo.pkg.version}`));
 95488          //
 95489          // reason: hoisted/nohoist
 95490          if (matchInfo.isNohoist) {
 95491            reasons.push({
 95492              type: 'whyNotHoisted',
 95493              typeSimple: 'whyNotHoistedSimple',
 95494              value: matchInfo.nohoistList
 95495            });
 95496          } else if (query === matchInfo.originalKey) {
 95497            reporter.info(reporter.lang('whyHoistedTo', matchInfo.key));
 95498          }
 95499  
 95500          if (reasons.length === 1) {
 95501            reporter.info(reporter.lang(reasons[0].typeSimple, reasons[0].value));
 95502          } else if (reasons.length > 1) {
 95503            reporter.info(reporter.lang('whyReasons'));
 95504            reporter.list('reasons', reasons.map(function (reason) {
 95505              return reporter.lang(reason.type, reason.value);
 95506            }));
 95507          } else {
 95508            reporter.error(reporter.lang('whyWhoKnows'));
 95509          }
 95510  
 95511          if (packageSize) {
 95512            // stats: file size of this dependency without any dependencies
 95513            reporter.info(reporter.lang('whyDiskSizeWithout', bytes(packageSize)));
 95514  
 95515            // stats: file size of this dependency including dependencies that aren't shared
 95516            reporter.info(reporter.lang('whyDiskSizeUnique', bytes(packageSize + sum(directSizes))));
 95517  
 95518            // stats: file size of this dependency including dependencies
 95519            reporter.info(reporter.lang('whyDiskSizeTransitive', bytes(packageSize + sum(transitiveSizes))));
 95520  
 95521            // stats: shared transitive dependencies
 95522            reporter.info(reporter.lang('whySharedDependencies', sharedDependencies.size));
 95523          }
 95524        });
 95525  
 95526        return function processMatch(_x8) {
 95527          return _ref8.apply(this, arguments);
 95528        };
 95529      })();
 95530  
 95531      reporter.step(4, 4, reporter.lang('whyCalculating'), emoji.get('aerial_tramway'));
 95532      for (var _iterator5 = matches, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
 95533        var _ref11;
 95534  
 95535        if (_isArray5) {
 95536          if (_i5 >= _iterator5.length) break;
 95537          _ref11 = _iterator5[_i5++];
 95538        } else {
 95539          _i5 = _iterator5.next();
 95540          if (_i5.done) break;
 95541          _ref11 = _i5.value;
 95542        }
 95543  
 95544        const match = _ref11;
 95545  
 95546        yield processMatch(match);
 95547      }
 95548    });
 95549  
 95550    return function run(_x4, _x5, _x6, _x7) {
 95551      return _ref6.apply(this, arguments);
 95552    };
 95553  })();
 95554  
 95555  exports.setFlags = setFlags;
 95556  exports.hasWrapper = hasWrapper;
 95557  exports.queryWhy = queryWhy;
 95558  
 95559  var _install;
 95560  
 95561  function _load_install() {
 95562    return _install = __webpack_require__(34);
 95563  }
 95564  
 95565  var _constants;
 95566  
 95567  function _load_constants() {
 95568    return _constants = __webpack_require__(8);
 95569  }
 95570  
 95571  var _fs;
 95572  
 95573  function _load_fs() {
 95574    return _fs = _interopRequireWildcard(__webpack_require__(5));
 95575  }
 95576  
 95577  var _lockfile;
 95578  
 95579  function _load_lockfile() {
 95580    return _lockfile = _interopRequireDefault(__webpack_require__(19));
 95581  }
 95582  
 95583  var _errors;
 95584  
 95585  function _load_errors() {
 95586    return _errors = __webpack_require__(6);
 95587  }
 95588  
 95589  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 95590  
 95591  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 95592  
 95593  const requireLockfile = exports.requireLockfile = true;
 95594  
 95595  const invariant = __webpack_require__(9);
 95596  const bytes = __webpack_require__(564);
 95597  const emoji = __webpack_require__(302);
 95598  const path = __webpack_require__(0);
 95599  
 95600  function sum(array) {
 95601    return array.length ? array.reduce((a, b) => a + b, 0) : 0;
 95602  }
 95603  
 95604  function collect(hoistManifests, allDependencies, dependency, { recursive } = { recursive: false }) {
 95605    const depInfo = dependency[1];
 95606  
 95607    const deps = depInfo.pkg.dependencies;
 95608  
 95609    if (!deps) {
 95610      return allDependencies;
 95611    }
 95612  
 95613    const dependencyKeys = new Set(Object.keys(deps));
 95614    const directDependencies = [];
 95615  
 95616    for (var _iterator = hoistManifests, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 95617      var _ref3;
 95618  
 95619      if (_isArray) {
 95620        if (_i >= _iterator.length) break;
 95621        _ref3 = _iterator[_i++];
 95622      } else {
 95623        _i = _iterator.next();
 95624        if (_i.done) break;
 95625        _ref3 = _i.value;
 95626      }
 95627  
 95628      const dep = _ref3;
 95629      const info = dep[1];
 95630  
 95631  
 95632      if (!allDependencies.has(dep) && dependencyKeys.has(info.key)) {
 95633        allDependencies.add(dep);
 95634        directDependencies.push(dep);
 95635      }
 95636    }
 95637  
 95638    if (recursive) {
 95639      directDependencies.forEach(dependency => collect(hoistManifests, allDependencies, dependency, { recursive: true }));
 95640    }
 95641  
 95642    return allDependencies;
 95643  }
 95644  
 95645  function getSharedDependencies(hoistManifests, transitiveKeys) {
 95646    const sharedDependencies = new Set();
 95647    for (var _iterator2 = hoistManifests, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 95648      var _ref5;
 95649  
 95650      if (_isArray2) {
 95651        if (_i2 >= _iterator2.length) break;
 95652        _ref5 = _iterator2[_i2++];
 95653      } else {
 95654        _i2 = _iterator2.next();
 95655        if (_i2.done) break;
 95656        _ref5 = _i2.value;
 95657      }
 95658  
 95659      const _ref4 = _ref5;
 95660      const info = _ref4[1];
 95661  
 95662      if (!transitiveKeys.has(info.key) && info.pkg.dependencies) {
 95663        Object.keys(info.pkg.dependencies).forEach(dependency => {
 95664          if (transitiveKeys.has(dependency) && !sharedDependencies.has(dependency)) {
 95665            sharedDependencies.add(dependency);
 95666          }
 95667        });
 95668      }
 95669    }
 95670    return sharedDependencies;
 95671  }
 95672  
 95673  function setFlags(commander) {
 95674    commander.description('Identifies why a package has been installed, detailing which other packages depend on it.');
 95675  }
 95676  
 95677  function hasWrapper(commander, args) {
 95678    return true;
 95679  }
 95680  
 95681  // to conform to the current standard '#' as package tree separator
 95682  function toStandardPathString(pathString) {
 95683    const str = pathString.replace(/\//g, '#');
 95684    if (str[0] === '#') {
 95685      return str.slice(1);
 95686    }
 95687    return str;
 95688  }
 95689  
 95690  function queryWhy(pattern, hoisted) {
 95691    const nohoistPattern = `#${pattern}`;
 95692    const found = [];
 95693    for (var _iterator6 = hoisted, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
 95694      var _ref13;
 95695  
 95696      if (_isArray6) {
 95697        if (_i6 >= _iterator6.length) break;
 95698        _ref13 = _iterator6[_i6++];
 95699      } else {
 95700        _i6 = _iterator6.next();
 95701        if (_i6.done) break;
 95702        _ref13 = _i6.value;
 95703      }
 95704  
 95705      const _ref12 = _ref13;
 95706      const loc = _ref12[0];
 95707      const info = _ref12[1];
 95708  
 95709      if (info.key === pattern || info.previousPaths.indexOf(pattern) >= 0 || info.key.endsWith(nohoistPattern)) {
 95710        found.push([loc, info]);
 95711      }
 95712    }
 95713    return found;
 95714  }
 95715  
 95716  /***/ }),
 95717  /* 515 */
 95718  /***/ (function(module, exports, __webpack_require__) {
 95719  
 95720  "use strict";
 95721  
 95722  
 95723  Object.defineProperty(exports, "__esModule", {
 95724    value: true
 95725  });
 95726  exports.run = undefined;
 95727  
 95728  var _asyncToGenerator2;
 95729  
 95730  function _load_asyncToGenerator() {
 95731    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 95732  }
 95733  
 95734  let run = exports.run = (() => {
 95735    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 95736      const workspaceRootFolder = config.workspaceRootFolder;
 95737  
 95738  
 95739      if (!workspaceRootFolder) {
 95740        throw new (_errors || _load_errors()).MessageError(reporter.lang('workspaceRootNotFound', config.cwd));
 95741      }
 95742  
 95743      if (args.length < 1) {
 95744        throw new (_errors || _load_errors()).MessageError(reporter.lang('workspaceMissingWorkspace'));
 95745      }
 95746  
 95747      if (args.length < 2) {
 95748        throw new (_errors || _load_errors()).MessageError(reporter.lang('workspaceMissingCommand'));
 95749      }
 95750  
 95751      const manifest = yield config.findManifest(workspaceRootFolder, false);
 95752      invariant(manifest && manifest.workspaces, 'We must find a manifest with a "workspaces" property');
 95753  
 95754      const workspaces = yield config.resolveWorkspaces(workspaceRootFolder, manifest);
 95755  
 95756      var _ref2 = args || [];
 95757  
 95758      const workspaceName = _ref2[0],
 95759            rest = _ref2.slice(1);
 95760  
 95761      if (!Object.prototype.hasOwnProperty.call(workspaces, workspaceName)) {
 95762        throw new (_errors || _load_errors()).MessageError(reporter.lang('workspaceUnknownWorkspace', workspaceName));
 95763      }
 95764  
 95765      const workspace = workspaces[workspaceName];
 95766  
 95767      try {
 95768        yield (_child || _load_child()).spawn((_constants || _load_constants()).NODE_BIN_PATH, [(_constants || _load_constants()).YARN_BIN_PATH, ...rest], {
 95769          stdio: 'inherit',
 95770          cwd: workspace.loc
 95771        });
 95772      } catch (err) {
 95773        throw err;
 95774      }
 95775    });
 95776  
 95777    return function run(_x, _x2, _x3, _x4) {
 95778      return _ref.apply(this, arguments);
 95779    };
 95780  })();
 95781  
 95782  exports.setFlags = setFlags;
 95783  exports.hasWrapper = hasWrapper;
 95784  
 95785  var _errors;
 95786  
 95787  function _load_errors() {
 95788    return _errors = __webpack_require__(6);
 95789  }
 95790  
 95791  var _child;
 95792  
 95793  function _load_child() {
 95794    return _child = _interopRequireWildcard(__webpack_require__(50));
 95795  }
 95796  
 95797  var _constants;
 95798  
 95799  function _load_constants() {
 95800    return _constants = __webpack_require__(8);
 95801  }
 95802  
 95803  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 95804  
 95805  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 95806  
 95807  const invariant = __webpack_require__(9);
 95808  
 95809  function setFlags(commander) {}
 95810  
 95811  function hasWrapper(commander, args) {
 95812    return true;
 95813  }
 95814  
 95815  /***/ }),
 95816  /* 516 */
 95817  /***/ (function(module, exports, __webpack_require__) {
 95818  
 95819  "use strict";
 95820  
 95821  
 95822  Object.defineProperty(exports, "__esModule", {
 95823    value: true
 95824  });
 95825  exports.examples = exports.setFlags = exports.run = exports.runScript = exports.info = undefined;
 95826  
 95827  var _asyncToGenerator2;
 95828  
 95829  function _load_asyncToGenerator() {
 95830    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 95831  }
 95832  
 95833  let info = exports.info = (() => {
 95834    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 95835      const workspaceRootFolder = config.workspaceRootFolder;
 95836  
 95837  
 95838      if (!workspaceRootFolder) {
 95839        throw new (_errors || _load_errors()).MessageError(reporter.lang('workspaceRootNotFound', config.cwd));
 95840      }
 95841  
 95842      const manifest = yield config.findManifest(workspaceRootFolder, false);
 95843      invariant(manifest && manifest.workspaces, 'We must find a manifest with a "workspaces" property');
 95844  
 95845      const workspaces = yield config.resolveWorkspaces(workspaceRootFolder, manifest);
 95846  
 95847      const publicData = {};
 95848  
 95849      for (var _iterator = Object.keys(workspaces), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 95850        var _ref2;
 95851  
 95852        if (_isArray) {
 95853          if (_i >= _iterator.length) break;
 95854          _ref2 = _iterator[_i++];
 95855        } else {
 95856          _i = _iterator.next();
 95857          if (_i.done) break;
 95858          _ref2 = _i.value;
 95859        }
 95860  
 95861        const workspaceName = _ref2;
 95862        var _workspaces$workspace = workspaces[workspaceName];
 95863        const loc = _workspaces$workspace.loc,
 95864              manifest = _workspaces$workspace.manifest;
 95865  
 95866  
 95867        const workspaceDependencies = new Set();
 95868        const mismatchedWorkspaceDependencies = new Set();
 95869  
 95870        for (var _iterator2 = (_constants || _load_constants()).DEPENDENCY_TYPES, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 95871          var _ref3;
 95872  
 95873          if (_isArray2) {
 95874            if (_i2 >= _iterator2.length) break;
 95875            _ref3 = _iterator2[_i2++];
 95876          } else {
 95877            _i2 = _iterator2.next();
 95878            if (_i2.done) break;
 95879            _ref3 = _i2.value;
 95880          }
 95881  
 95882          const dependencyType = _ref3;
 95883  
 95884          if (dependencyType !== 'peerDependencies') {
 95885            for (var _iterator3 = Object.keys(manifest[dependencyType] || {}), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 95886              var _ref4;
 95887  
 95888              if (_isArray3) {
 95889                if (_i3 >= _iterator3.length) break;
 95890                _ref4 = _iterator3[_i3++];
 95891              } else {
 95892                _i3 = _iterator3.next();
 95893                if (_i3.done) break;
 95894                _ref4 = _i3.value;
 95895              }
 95896  
 95897              const dependencyName = _ref4;
 95898  
 95899              if (Object.prototype.hasOwnProperty.call(workspaces, dependencyName)) {
 95900                invariant(manifest && manifest[dependencyType], 'The request should exist');
 95901                const requestedRange = manifest[dependencyType][dependencyName];
 95902                if (semver.satisfies(workspaces[dependencyName].manifest.version, requestedRange)) {
 95903                  workspaceDependencies.add(dependencyName);
 95904                } else {
 95905                  mismatchedWorkspaceDependencies.add(dependencyName);
 95906                }
 95907              }
 95908            }
 95909          }
 95910        }
 95911  
 95912        publicData[workspaceName] = {
 95913          location: path.relative(config.lockfileFolder, loc).replace(/\\/g, '/'),
 95914          workspaceDependencies: Array.from(workspaceDependencies),
 95915          mismatchedWorkspaceDependencies: Array.from(mismatchedWorkspaceDependencies)
 95916        };
 95917      }
 95918  
 95919      reporter.log(JSON.stringify(publicData, null, 2), { force: true });
 95920    });
 95921  
 95922    return function info(_x, _x2, _x3, _x4) {
 95923      return _ref.apply(this, arguments);
 95924    };
 95925  })();
 95926  
 95927  let runScript = exports.runScript = (() => {
 95928    var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
 95929      const workspaceRootFolder = config.workspaceRootFolder;
 95930  
 95931  
 95932      if (!workspaceRootFolder) {
 95933        throw new (_errors || _load_errors()).MessageError(reporter.lang('workspaceRootNotFound', config.cwd));
 95934      }
 95935  
 95936      const manifest = yield config.findManifest(workspaceRootFolder, false);
 95937      invariant(manifest && manifest.workspaces, 'We must find a manifest with a "workspaces" property');
 95938  
 95939      const workspaces = yield config.resolveWorkspaces(workspaceRootFolder, manifest);
 95940  
 95941      try {
 95942        for (var _iterator4 = Object.keys(workspaces), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 95943          var _ref6;
 95944  
 95945          if (_isArray4) {
 95946            if (_i4 >= _iterator4.length) break;
 95947            _ref6 = _iterator4[_i4++];
 95948          } else {
 95949            _i4 = _iterator4.next();
 95950            if (_i4.done) break;
 95951            _ref6 = _i4.value;
 95952          }
 95953  
 95954          const workspaceName = _ref6;
 95955          const loc = workspaces[workspaceName].loc;
 95956  
 95957          reporter.log(`${os.EOL}> ${workspaceName}`);
 95958          yield (_child || _load_child()).spawn((_constants2 || _load_constants2()).NODE_BIN_PATH, [(_constants2 || _load_constants2()).YARN_BIN_PATH, 'run', ...args], {
 95959            stdio: 'inherit',
 95960            cwd: loc
 95961          });
 95962        }
 95963      } catch (err) {
 95964        throw err;
 95965      }
 95966    });
 95967  
 95968    return function runScript(_x5, _x6, _x7, _x8) {
 95969      return _ref5.apply(this, arguments);
 95970    };
 95971  })();
 95972  
 95973  exports.hasWrapper = hasWrapper;
 95974  
 95975  var _errors;
 95976  
 95977  function _load_errors() {
 95978    return _errors = __webpack_require__(6);
 95979  }
 95980  
 95981  var _buildSubCommands2;
 95982  
 95983  function _load_buildSubCommands() {
 95984    return _buildSubCommands2 = _interopRequireDefault(__webpack_require__(59));
 95985  }
 95986  
 95987  var _constants;
 95988  
 95989  function _load_constants() {
 95990    return _constants = __webpack_require__(8);
 95991  }
 95992  
 95993  var _child;
 95994  
 95995  function _load_child() {
 95996    return _child = _interopRequireWildcard(__webpack_require__(50));
 95997  }
 95998  
 95999  var _constants2;
 96000  
 96001  function _load_constants2() {
 96002    return _constants2 = __webpack_require__(8);
 96003  }
 96004  
 96005  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 96006  
 96007  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 96008  
 96009  const invariant = __webpack_require__(9);
 96010  const path = __webpack_require__(0);
 96011  const os = __webpack_require__(46);
 96012  const semver = __webpack_require__(22);
 96013  
 96014  function hasWrapper(commander, args) {
 96015    return true;
 96016  }
 96017  
 96018  var _buildSubCommands = (0, (_buildSubCommands2 || _load_buildSubCommands()).default)('workspaces', {
 96019    info(config, reporter, flags, args) {
 96020      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 96021        yield info(config, reporter, flags, args);
 96022      })();
 96023    },
 96024    run(config, reporter, flags, args) {
 96025      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 96026        yield runScript(config, reporter, flags, args);
 96027      })();
 96028    }
 96029  });
 96030  
 96031  const run = _buildSubCommands.run,
 96032        setFlags = _buildSubCommands.setFlags,
 96033        examples = _buildSubCommands.examples;
 96034  exports.run = run;
 96035  exports.setFlags = setFlags;
 96036  exports.examples = examples;
 96037  
 96038  /***/ }),
 96039  /* 517 */
 96040  /***/ (function(module, exports, __webpack_require__) {
 96041  
 96042  "use strict";
 96043  /* WEBPACK VAR INJECTION */(function(module) {
 96044  
 96045  Object.defineProperty(exports, "__esModule", {
 96046    value: true
 96047  });
 96048  exports.autoRun = exports.main = undefined;
 96049  
 96050  var _extends2;
 96051  
 96052  function _load_extends() {
 96053    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 96054  }
 96055  
 96056  var _asyncToGenerator2;
 96057  
 96058  function _load_asyncToGenerator() {
 96059    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 96060  }
 96061  
 96062  let main = exports.main = (() => {
 96063    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* ({
 96064      startArgs,
 96065      args,
 96066      endArgs
 96067    }) {
 96068      const collect = function collect(val, acc) {
 96069        acc.push(val);
 96070        return acc;
 96071      };
 96072  
 96073      (0, (_loudRejection || _load_loudRejection()).default)();
 96074      (0, (_signalHandler || _load_signalHandler()).default)();
 96075  
 96076      // set global options
 96077      (_commander || _load_commander()).default.version((_yarnVersion || _load_yarnVersion()).version, '-v, --version');
 96078      (_commander || _load_commander()).default.usage('[command] [flags]');
 96079      (_commander || _load_commander()).default.option('--no-default-rc', 'prevent Yarn from automatically detecting yarnrc and npmrc files');
 96080      (_commander || _load_commander()).default.option('--use-yarnrc <path>', 'specifies a yarnrc file that Yarn should use (.yarnrc only, not .npmrc)', collect, []);
 96081      (_commander || _load_commander()).default.option('--verbose', 'output verbose messages on internal operations');
 96082      (_commander || _load_commander()).default.option('--offline', 'trigger an error if any required dependencies are not available in local cache');
 96083      (_commander || _load_commander()).default.option('--prefer-offline', 'use network only if dependencies are not available in local cache');
 96084      (_commander || _load_commander()).default.option('--enable-pnp, --pnp', "enable the Plug'n'Play installation");
 96085      (_commander || _load_commander()).default.option('--disable-pnp', "disable the Plug'n'Play installation");
 96086      (_commander || _load_commander()).default.option('--strict-semver');
 96087      (_commander || _load_commander()).default.option('--json', 'format Yarn log messages as lines of JSON (see jsonlines.org)');
 96088      (_commander || _load_commander()).default.option('--ignore-scripts', "don't run lifecycle scripts");
 96089      (_commander || _load_commander()).default.option('--har', 'save HAR output of network traffic');
 96090      (_commander || _load_commander()).default.option('--ignore-platform', 'ignore platform checks');
 96091      (_commander || _load_commander()).default.option('--ignore-engines', 'ignore engines check');
 96092      (_commander || _load_commander()).default.option('--ignore-optional', 'ignore optional dependencies');
 96093      (_commander || _load_commander()).default.option('--force', 'install and build packages even if they were built before, overwrite lockfile');
 96094      (_commander || _load_commander()).default.option('--skip-integrity-check', 'run install without checking if node_modules is installed');
 96095      (_commander || _load_commander()).default.option('--check-files', 'install will verify file tree of packages for consistency');
 96096      (_commander || _load_commander()).default.option('--no-bin-links', "don't generate bin links when setting up packages");
 96097      (_commander || _load_commander()).default.option('--flat', 'only allow one version of a package');
 96098      (_commander || _load_commander()).default.option('--prod, --production [prod]', '', (_conversion || _load_conversion()).boolify);
 96099      (_commander || _load_commander()).default.option('--no-lockfile', "don't read or generate a lockfile");
 96100      (_commander || _load_commander()).default.option('--pure-lockfile', "don't generate a lockfile");
 96101      (_commander || _load_commander()).default.option('--frozen-lockfile', "don't generate a lockfile and fail if an update is needed");
 96102      (_commander || _load_commander()).default.option('--update-checksums', 'update package checksums from current repository');
 96103      (_commander || _load_commander()).default.option('--link-duplicates', 'create hardlinks to the repeated modules in node_modules');
 96104      (_commander || _load_commander()).default.option('--link-folder <path>', 'specify a custom folder to store global links');
 96105      (_commander || _load_commander()).default.option('--global-folder <path>', 'specify a custom folder to store global packages');
 96106      (_commander || _load_commander()).default.option('--modules-folder <path>', 'rather than installing modules into the node_modules folder relative to the cwd, output them here');
 96107      (_commander || _load_commander()).default.option('--preferred-cache-folder <path>', 'specify a custom folder to store the yarn cache if possible');
 96108      (_commander || _load_commander()).default.option('--cache-folder <path>', 'specify a custom folder that must be used to store the yarn cache');
 96109      (_commander || _load_commander()).default.option('--mutex <type>[:specifier]', 'use a mutex to ensure only one yarn instance is executing');
 96110      (_commander || _load_commander()).default.option('--emoji [bool]', 'enable emoji in output', (_conversion || _load_conversion()).boolify, process.platform === 'darwin' || process.env.TERM_PROGRAM === 'Hyper' || process.env.TERM_PROGRAM === 'HyperTerm' || process.env.TERM_PROGRAM === 'Terminus');
 96111      (_commander || _load_commander()).default.option('-s, --silent', 'skip Yarn console logs, other types of logs (script output) will be printed');
 96112      (_commander || _load_commander()).default.option('--cwd <cwd>', 'working directory to use', process.cwd());
 96113      (_commander || _load_commander()).default.option('--proxy <host>', '');
 96114      (_commander || _load_commander()).default.option('--https-proxy <host>', '');
 96115      (_commander || _load_commander()).default.option('--registry <url>', 'override configuration registry');
 96116      (_commander || _load_commander()).default.option('--no-progress', 'disable progress bar');
 96117      (_commander || _load_commander()).default.option('--network-concurrency <number>', 'maximum number of concurrent network requests', parseInt);
 96118      (_commander || _load_commander()).default.option('--network-timeout <milliseconds>', 'TCP timeout for network requests', parseInt);
 96119      (_commander || _load_commander()).default.option('--non-interactive', 'do not show interactive prompts');
 96120      (_commander || _load_commander()).default.option('--scripts-prepend-node-path [bool]', 'prepend the node executable dir to the PATH in scripts', (_conversion || _load_conversion()).boolify);
 96121      (_commander || _load_commander()).default.option('--no-node-version-check', 'do not warn when using a potentially unsupported Node version');
 96122      (_commander || _load_commander()).default.option('--focus', 'Focus on a single workspace by installing remote copies of its sibling workspaces.');
 96123      (_commander || _load_commander()).default.option('--otp <otpcode>', 'one-time password for two factor authentication');
 96124  
 96125      // if -v is the first command, then always exit after returning the version
 96126      if (args[0] === '-v') {
 96127        console.log((_yarnVersion || _load_yarnVersion()).version.trim());
 96128        process.exitCode = 0;
 96129        return;
 96130      }
 96131  
 96132      // get command name
 96133      const firstNonFlagIndex = args.findIndex(function (arg, idx, arr) {
 96134        const isOption = arg.startsWith('-');
 96135        const prev = idx > 0 && arr[idx - 1];
 96136        const prevOption = prev && prev.startsWith('-') && (_commander || _load_commander()).default.optionFor(prev);
 96137        const boundToPrevOption = prevOption && (prevOption.optional || prevOption.required);
 96138  
 96139        return !isOption && !boundToPrevOption;
 96140      });
 96141      let preCommandArgs;
 96142      let commandName = '';
 96143      if (firstNonFlagIndex > -1) {
 96144        preCommandArgs = args.slice(0, firstNonFlagIndex);
 96145        commandName = args[firstNonFlagIndex];
 96146        args = args.slice(firstNonFlagIndex + 1);
 96147      } else {
 96148        preCommandArgs = args;
 96149        args = [];
 96150      }
 96151  
 96152      let isKnownCommand = Object.prototype.hasOwnProperty.call((_index3 || _load_index3()).default, commandName);
 96153      const isHelp = function isHelp(arg) {
 96154        return arg === '--help' || arg === '-h';
 96155      };
 96156      const helpInPre = preCommandArgs.findIndex(isHelp);
 96157      const helpInArgs = args.findIndex(isHelp);
 96158      const setHelpMode = function setHelpMode() {
 96159        if (isKnownCommand) {
 96160          args.unshift(commandName);
 96161        }
 96162        commandName = 'help';
 96163        isKnownCommand = true;
 96164      };
 96165  
 96166      if (helpInPre > -1) {
 96167        preCommandArgs.splice(helpInPre);
 96168        setHelpMode();
 96169      } else if (isKnownCommand && helpInArgs === 0) {
 96170        args.splice(helpInArgs);
 96171        setHelpMode();
 96172      }
 96173  
 96174      if (!commandName) {
 96175        commandName = 'install';
 96176        isKnownCommand = true;
 96177      }
 96178      if (commandName === 'set' && args[0] === 'version') {
 96179        commandName = 'policies';
 96180        args.splice(0, 1, 'set-version');
 96181        isKnownCommand = true;
 96182      }
 96183      if (!isKnownCommand) {
 96184        // if command is not recognized, then set default to `run`
 96185        args.unshift(commandName);
 96186        commandName = 'run';
 96187      }
 96188      const command = (_index3 || _load_index3()).default[commandName];
 96189  
 96190      let warnAboutRunDashDash = false;
 96191      // we are using "yarn <script> -abc", "yarn run <script> -abc", or "yarn node -abc", we want -abc
 96192      // to be script options, not yarn options
 96193  
 96194      // PROXY_COMMANDS is a map of command name to the number of preservedArgs
 96195      const PROXY_COMMANDS = {
 96196        run: 1, // yarn run {command}
 96197        create: 1, // yarn create {project}
 96198        node: 0, // yarn node
 96199        workspaces: 1, // yarn workspaces {command}
 96200        workspace: 2 // yarn workspace {package} {command}
 96201      };
 96202      if (PROXY_COMMANDS.hasOwnProperty(commandName)) {
 96203        if (endArgs.length === 0) {
 96204          // $FlowFixMe doesn't like that PROXY_COMMANDS doesn't have keys for all commands.
 96205          let preservedArgs = PROXY_COMMANDS[commandName];
 96206  
 96207          // If the --into option immediately follows the command (or the script name in the "run/create"
 96208          // case), we parse them as regular options so that we can cd into them
 96209          if (args[preservedArgs] === `--into`) {
 96210            preservedArgs += 2;
 96211          }
 96212          endArgs = ['--', ...args.splice(preservedArgs)];
 96213        } else {
 96214          warnAboutRunDashDash = true;
 96215        }
 96216      }
 96217  
 96218      args = [...preCommandArgs, ...args];
 96219  
 96220      command.setFlags((_commander || _load_commander()).default);
 96221      (_commander || _load_commander()).default.parse([...startArgs,
 96222      // we use this for https://github.com/tj/commander.js/issues/346, otherwise
 96223      // it will strip some args that match with any options
 96224      'this-arg-will-get-stripped-later', ...(0, (_rc || _load_rc()).getRcArgs)(commandName, args), ...args]);
 96225      (_commander || _load_commander()).default.args = (_commander || _load_commander()).default.args.concat(endArgs.slice(1));
 96226  
 96227      // we strip cmd
 96228      console.assert((_commander || _load_commander()).default.args.length >= 1);
 96229      console.assert((_commander || _load_commander()).default.args[0] === 'this-arg-will-get-stripped-later');
 96230      (_commander || _load_commander()).default.args.shift();
 96231  
 96232      //
 96233      const Reporter = (_commander || _load_commander()).default.json ? (_index || _load_index()).JSONReporter : (_index || _load_index()).ConsoleReporter;
 96234      const reporter = new Reporter({
 96235        emoji: process.stdout.isTTY && (_commander || _load_commander()).default.emoji,
 96236        verbose: (_commander || _load_commander()).default.verbose,
 96237        noProgress: !(_commander || _load_commander()).default.progress,
 96238        isSilent: (0, (_conversion || _load_conversion()).boolifyWithDefault)(process.env.YARN_SILENT, false) || (_commander || _load_commander()).default.silent,
 96239        nonInteractive: (_commander || _load_commander()).default.nonInteractive
 96240      });
 96241  
 96242      const exit = function exit(exitCode) {
 96243        process.exitCode = exitCode || 0;
 96244        reporter.close();
 96245      };
 96246  
 96247      reporter.initPeakMemoryCounter();
 96248  
 96249      const config = new (_config || _load_config()).default(reporter);
 96250      const outputWrapperEnabled = (0, (_conversion || _load_conversion()).boolifyWithDefault)(process.env.YARN_WRAP_OUTPUT, true);
 96251      const shouldWrapOutput = outputWrapperEnabled && !(_commander || _load_commander()).default.json && command.hasWrapper((_commander || _load_commander()).default, (_commander || _load_commander()).default.args) && !(commandName === 'init' && (_commander || _load_commander()).default[`2`]);
 96252  
 96253      if (shouldWrapOutput) {
 96254        reporter.header(commandName, { name: 'yarn', version: (_yarnVersion || _load_yarnVersion()).version });
 96255      }
 96256  
 96257      if ((_commander || _load_commander()).default.nodeVersionCheck && !(_semver || _load_semver()).default.satisfies(process.versions.node, (_constants || _load_constants()).SUPPORTED_NODE_VERSIONS)) {
 96258        reporter.warn(reporter.lang('unsupportedNodeVersion', process.versions.node, (_constants || _load_constants()).SUPPORTED_NODE_VERSIONS));
 96259      }
 96260  
 96261      if (command.noArguments && (_commander || _load_commander()).default.args.length) {
 96262        reporter.error(reporter.lang('noArguments'));
 96263        reporter.info(command.getDocsInfo);
 96264        exit(1);
 96265        return;
 96266      }
 96267  
 96268      //
 96269      if ((_commander || _load_commander()).default.yes) {
 96270        reporter.warn(reporter.lang('yesWarning'));
 96271      }
 96272  
 96273      //
 96274      if (!(_commander || _load_commander()).default.offline && (_network || _load_network()).isOffline()) {
 96275        reporter.warn(reporter.lang('networkWarning'));
 96276      }
 96277  
 96278      //
 96279      const run = function run() {
 96280        (0, (_invariant || _load_invariant()).default)(command, 'missing command');
 96281  
 96282        if (warnAboutRunDashDash) {
 96283          reporter.warn(reporter.lang('dashDashDeprecation'));
 96284        }
 96285  
 96286        return command.run(config, reporter, (_commander || _load_commander()).default, (_commander || _load_commander()).default.args).then(function (exitCode) {
 96287          if (shouldWrapOutput) {
 96288            reporter.footer(false);
 96289          }
 96290          return exitCode;
 96291        });
 96292      };
 96293  
 96294      //
 96295      const runEventuallyWithFile = function runEventuallyWithFile(mutexFilename, isFirstTime) {
 96296        return new Promise(function (resolve) {
 96297          const lockFilename = mutexFilename || (_path || _load_path()).default.join(config.cwd, (_constants || _load_constants()).SINGLE_INSTANCE_FILENAME);
 96298          (_properLockfile || _load_properLockfile()).default.lock(lockFilename, { realpath: false }, function (err, release) {
 96299            if (err) {
 96300              if (isFirstTime) {
 96301                reporter.warn(reporter.lang('waitingInstance'));
 96302              }
 96303              setTimeout(function () {
 96304                resolve(runEventuallyWithFile(mutexFilename, false));
 96305              }, 200); // do not starve the CPU
 96306            } else {
 96307              (0, (_death || _load_death()).default)(function () {
 96308                process.exitCode = 1;
 96309              });
 96310              resolve(run().then(function () {
 96311                return new Promise(function (resolve) {
 96312                  return release(resolve);
 96313                });
 96314              }));
 96315            }
 96316          });
 96317        });
 96318      };
 96319  
 96320      const runEventuallyWithNetwork = function runEventuallyWithNetwork(mutexPort) {
 96321        return new Promise(function (resolve, reject) {
 96322          const connectionOptions = {
 96323            port: +mutexPort || (_constants || _load_constants()).SINGLE_INSTANCE_PORT,
 96324            host: 'localhost'
 96325          };
 96326  
 96327          function startServer() {
 96328            const clients = new Set();
 96329            const server = (_http || _load_http()).default.createServer(manager);
 96330  
 96331            // The server must not prevent us from exiting
 96332            server.unref();
 96333  
 96334            // No socket must timeout, so that they aren't closed before we exit
 96335            server.timeout = 0;
 96336  
 96337            // If we fail to setup the server, we ask the existing one for its name
 96338            server.on('error', () => {
 96339              reportServerName();
 96340            });
 96341  
 96342            // If we succeed, keep track of all the connected sockets to close them later
 96343            server.on('connection', socket => {
 96344              clients.add(socket);
 96345              socket.on('close', () => {
 96346                clients.delete(socket);
 96347              });
 96348            });
 96349  
 96350            server.listen(connectionOptions, () => {
 96351              // Don't forget to kill the sockets if we're being killed via signals
 96352              (0, (_death || _load_death()).default)(killSockets);
 96353  
 96354              // Also kill the sockets if we finish, whether it's a success or a failure
 96355              run().then(res => {
 96356                killSockets();
 96357                resolve(res);
 96358              }, err => {
 96359                killSockets();
 96360                reject(err);
 96361              });
 96362            });
 96363  
 96364            function manager(request, response) {
 96365              response.writeHead(200);
 96366              response.end(JSON.stringify({ cwd: config.cwd, pid: process.pid }));
 96367            }
 96368  
 96369            function killSockets() {
 96370              try {
 96371                server.close();
 96372              } catch (err) {
 96373                // best effort
 96374              }
 96375  
 96376              for (var _iterator = clients, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 96377                var _ref2;
 96378  
 96379                if (_isArray) {
 96380                  if (_i >= _iterator.length) break;
 96381                  _ref2 = _iterator[_i++];
 96382                } else {
 96383                  _i = _iterator.next();
 96384                  if (_i.done) break;
 96385                  _ref2 = _i.value;
 96386                }
 96387  
 96388                const socket = _ref2;
 96389  
 96390                try {
 96391                  socket.destroy();
 96392                } catch (err) {
 96393                  // best effort
 96394                }
 96395              }
 96396  
 96397              // If the process hasn't exited in the next 5s, it has stalled and we abort
 96398              const timeout = setTimeout(() => {
 96399                console.error('Process stalled');
 96400                if (process._getActiveHandles) {
 96401                  console.error('Active handles:');
 96402                  // $FlowFixMe: getActiveHandles is undocumented, but it exists
 96403                  for (var _iterator2 = process._getActiveHandles(), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 96404                    var _ref3;
 96405  
 96406                    if (_isArray2) {
 96407                      if (_i2 >= _iterator2.length) break;
 96408                      _ref3 = _iterator2[_i2++];
 96409                    } else {
 96410                      _i2 = _iterator2.next();
 96411                      if (_i2.done) break;
 96412                      _ref3 = _i2.value;
 96413                    }
 96414  
 96415                    const handle = _ref3;
 96416  
 96417                    console.error(`  - ${handle.constructor.name}`);
 96418                  }
 96419                }
 96420                // eslint-disable-next-line no-process-exit
 96421                process.exit(1);
 96422              }, 5000);
 96423  
 96424              // This timeout must not prevent us from exiting
 96425              // $FlowFixMe: Node's setTimeout returns a Timeout, not a Number
 96426              timeout.unref();
 96427            }
 96428          }
 96429  
 96430          function reportServerName() {
 96431            const request = (_http || _load_http()).default.get(connectionOptions, response => {
 96432              const buffers = [];
 96433  
 96434              response.on('data', buffer => {
 96435                buffers.push(buffer);
 96436              });
 96437  
 96438              response.on('end', () => {
 96439                try {
 96440                  var _JSON$parse = JSON.parse(Buffer.concat(buffers).toString());
 96441  
 96442                  const cwd = _JSON$parse.cwd,
 96443                        pid = _JSON$parse.pid;
 96444  
 96445                  reporter.warn(reporter.lang('waitingNamedInstance', pid, cwd));
 96446                } catch (error) {
 96447                  reporter.verbose(error);
 96448                  reject(new Error(reporter.lang('mutexPortBusy', connectionOptions.port)));
 96449                  return;
 96450                }
 96451                waitForTheNetwork();
 96452              });
 96453  
 96454              response.on('error', () => {
 96455                startServer();
 96456              });
 96457            });
 96458  
 96459            request.on('error', () => {
 96460              startServer();
 96461            });
 96462          }
 96463  
 96464          function waitForTheNetwork() {
 96465            const socket = (_net || _load_net()).default.createConnection(connectionOptions);
 96466  
 96467            socket.on('error', () => {
 96468              // catch & ignore, the retry is handled in 'close'
 96469            });
 96470  
 96471            socket.on('close', () => {
 96472              startServer();
 96473            });
 96474          }
 96475  
 96476          startServer();
 96477        });
 96478      };
 96479  
 96480      function onUnexpectedError(err) {
 96481        function indent(str) {
 96482          return '\n  ' + str.trim().split('\n').join('\n  ');
 96483        }
 96484  
 96485        const log = [];
 96486        log.push(`Arguments: ${indent(process.argv.join(' '))}`);
 96487        log.push(`PATH: ${indent(process.env.PATH || 'undefined')}`);
 96488        log.push(`Yarn version: ${indent((_yarnVersion || _load_yarnVersion()).version)}`);
 96489        log.push(`Node version: ${indent(process.versions.node)}`);
 96490        log.push(`Platform: ${indent(process.platform + ' ' + process.arch)}`);
 96491  
 96492        log.push(`Trace: ${indent(err.stack)}`);
 96493  
 96494        // add manifests
 96495        for (var _iterator3 = (_index2 || _load_index2()).registryNames, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 96496          var _ref4;
 96497  
 96498          if (_isArray3) {
 96499            if (_i3 >= _iterator3.length) break;
 96500            _ref4 = _iterator3[_i3++];
 96501          } else {
 96502            _i3 = _iterator3.next();
 96503            if (_i3.done) break;
 96504            _ref4 = _i3.value;
 96505          }
 96506  
 96507          const registryName = _ref4;
 96508  
 96509          const possibleLoc = (_path || _load_path()).default.join(config.cwd, (_index2 || _load_index2()).registries[registryName].filename);
 96510          const manifest = (_fs || _load_fs()).default.existsSync(possibleLoc) ? (_fs || _load_fs()).default.readFileSync(possibleLoc, 'utf8') : 'No manifest';
 96511          log.push(`${registryName} manifest: ${indent(manifest)}`);
 96512        }
 96513  
 96514        // lockfile
 96515        const lockLoc = (_path || _load_path()).default.join(config.lockfileFolder || config.cwd, // lockfileFolder might not be set at this point
 96516        (_constants || _load_constants()).LOCKFILE_FILENAME);
 96517        const lockfile = (_fs || _load_fs()).default.existsSync(lockLoc) ? (_fs || _load_fs()).default.readFileSync(lockLoc, 'utf8') : 'No lockfile';
 96518        log.push(`Lockfile: ${indent(lockfile)}`);
 96519  
 96520        const errorReportLoc = writeErrorReport(log);
 96521  
 96522        reporter.error(reporter.lang('unexpectedError', err.message));
 96523  
 96524        if (errorReportLoc) {
 96525          reporter.info(reporter.lang('bugReport', errorReportLoc));
 96526        }
 96527      }
 96528  
 96529      function writeErrorReport(log) {
 96530        const errorReportLoc = config.enableMetaFolder ? (_path || _load_path()).default.join(config.cwd, (_constants || _load_constants()).META_FOLDER, 'yarn-error.log') : (_path || _load_path()).default.join(config.cwd, 'yarn-error.log');
 96531  
 96532        try {
 96533          (_fs || _load_fs()).default.writeFileSync(errorReportLoc, log.join('\n\n') + '\n');
 96534        } catch (err) {
 96535          reporter.error(reporter.lang('fileWriteError', errorReportLoc, err.message));
 96536          return undefined;
 96537        }
 96538  
 96539        return errorReportLoc;
 96540      }
 96541  
 96542      const cwd = command.shouldRunInCurrentCwd ? (_commander || _load_commander()).default.cwd : findProjectRoot((_commander || _load_commander()).default.cwd);
 96543  
 96544      const folderOptionKeys = ['linkFolder', 'globalFolder', 'preferredCacheFolder', 'cacheFolder', 'modulesFolder'];
 96545  
 96546      // Resolve all folder options relative to cwd
 96547      const resolvedFolderOptions = {};
 96548      folderOptionKeys.forEach(function (folderOptionKey) {
 96549        const folderOption = (_commander || _load_commander()).default[folderOptionKey];
 96550        const resolvedFolderOption = folderOption ? (_path || _load_path()).default.resolve((_commander || _load_commander()).default.cwd, folderOption) : folderOption;
 96551        resolvedFolderOptions[folderOptionKey] = resolvedFolderOption;
 96552      });
 96553  
 96554      yield config.init((0, (_extends2 || _load_extends()).default)({
 96555        cwd,
 96556        commandName
 96557      }, resolvedFolderOptions, {
 96558        enablePnp: (_commander || _load_commander()).default.pnp,
 96559        disablePnp: (_commander || _load_commander()).default.disablePnp,
 96560        enableDefaultRc: (_commander || _load_commander()).default.defaultRc,
 96561        extraneousYarnrcFiles: (_commander || _load_commander()).default.useYarnrc,
 96562        binLinks: (_commander || _load_commander()).default.binLinks,
 96563        preferOffline: (_commander || _load_commander()).default.preferOffline,
 96564        captureHar: (_commander || _load_commander()).default.har,
 96565        ignorePlatform: (_commander || _load_commander()).default.ignorePlatform,
 96566        ignoreEngines: (_commander || _load_commander()).default.ignoreEngines,
 96567        ignoreScripts: (_commander || _load_commander()).default.ignoreScripts,
 96568        offline: (_commander || _load_commander()).default.preferOffline || (_commander || _load_commander()).default.offline,
 96569        looseSemver: !(_commander || _load_commander()).default.strictSemver,
 96570        production: (_commander || _load_commander()).default.production,
 96571        httpProxy: (_commander || _load_commander()).default.proxy,
 96572        httpsProxy: (_commander || _load_commander()).default.httpsProxy,
 96573        registry: (_commander || _load_commander()).default.registry,
 96574        networkConcurrency: (_commander || _load_commander()).default.networkConcurrency,
 96575        networkTimeout: (_commander || _load_commander()).default.networkTimeout,
 96576        nonInteractive: (_commander || _load_commander()).default.nonInteractive,
 96577        updateChecksums: (_commander || _load_commander()).default.updateChecksums,
 96578        focus: (_commander || _load_commander()).default.focus,
 96579        otp: (_commander || _load_commander()).default.otp
 96580      })).then(function () {
 96581        // lockfile check must happen after config.init sets lockfileFolder
 96582        if (command.requireLockfile && !(_fs || _load_fs()).default.existsSync((_path || _load_path()).default.join(config.lockfileFolder, (_constants || _load_constants()).LOCKFILE_FILENAME))) {
 96583          throw new (_errors || _load_errors()).MessageError(reporter.lang('noRequiredLockfile'));
 96584        }
 96585  
 96586        // option "no-progress" stored in yarn config
 96587        const noProgressConfig = config.registries.yarn.getOption('no-progress');
 96588  
 96589        if (noProgressConfig) {
 96590          reporter.disableProgress();
 96591        }
 96592  
 96593        // verbose logs outputs process.uptime() with this line we can sync uptime to absolute time on the computer
 96594        reporter.verbose(`current time: ${new Date().toISOString()}`);
 96595  
 96596        const mutex = (_commander || _load_commander()).default.mutex;
 96597        if (mutex && typeof mutex === 'string') {
 96598          const separatorLoc = mutex.indexOf(':');
 96599          let mutexType;
 96600          let mutexSpecifier;
 96601          if (separatorLoc === -1) {
 96602            mutexType = mutex;
 96603            mutexSpecifier = undefined;
 96604          } else {
 96605            mutexType = mutex.substring(0, separatorLoc);
 96606            mutexSpecifier = mutex.substring(separatorLoc + 1);
 96607          }
 96608  
 96609          if (mutexType === 'file') {
 96610            return runEventuallyWithFile(mutexSpecifier, true).then(exit);
 96611          } else if (mutexType === 'network') {
 96612            return runEventuallyWithNetwork(mutexSpecifier).then(exit);
 96613          } else {
 96614            throw new (_errors || _load_errors()).MessageError(`Unknown single instance type ${mutexType}`);
 96615          }
 96616        } else {
 96617          return run().then(exit);
 96618        }
 96619      }).catch(function (err) {
 96620        reporter.verbose(err.stack);
 96621  
 96622        if (err instanceof (_errors2 || _load_errors2()).ProcessTermError && reporter.isSilent) {
 96623          return exit(err.EXIT_CODE || 1);
 96624        }
 96625  
 96626        if (err instanceof (_errors || _load_errors()).MessageError) {
 96627          reporter.error(err.message);
 96628        } else {
 96629          onUnexpectedError(err);
 96630        }
 96631  
 96632        if (command.getDocsInfo) {
 96633          reporter.info(command.getDocsInfo);
 96634        }
 96635  
 96636        if (err instanceof (_errors2 || _load_errors2()).ProcessTermError) {
 96637          return exit(err.EXIT_CODE || 1);
 96638        }
 96639  
 96640        return exit(1);
 96641      });
 96642    });
 96643  
 96644    return function main(_x) {
 96645      return _ref.apply(this, arguments);
 96646    };
 96647  })();
 96648  
 96649  let start = (() => {
 96650    var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 96651      const rc = (0, (_rc || _load_rc()).getRcConfigForCwd)(process.cwd(), process.argv.slice(2));
 96652      const yarnPath = rc['yarn-path'] || rc['yarnPath'];
 96653  
 96654      if (yarnPath && !(0, (_conversion || _load_conversion()).boolifyWithDefault)(process.env.YARN_IGNORE_PATH, false)) {
 96655        const argv = process.argv.slice(2);
 96656        const opts = { stdio: 'inherit', env: Object.assign({}, process.env, { YARN_IGNORE_PATH: 1 }) };
 96657        let exitCode = 0;
 96658  
 96659        process.on(`SIGINT`, function () {
 96660          // We don't want SIGINT to kill our process; we want it to kill the
 96661          // innermost process, whose end will cause our own to exit.
 96662        });
 96663  
 96664        (0, (_signalHandler || _load_signalHandler()).default)();
 96665  
 96666        try {
 96667          if (/\.[cm]?js$/.test(yarnPath)) {
 96668            exitCode = yield (0, (_child || _load_child()).spawnp)(process.execPath, [yarnPath, ...argv], opts);
 96669          } else {
 96670            exitCode = yield (0, (_child || _load_child()).spawnp)(yarnPath, argv, opts);
 96671          }
 96672        } catch (firstError) {
 96673          try {
 96674            exitCode = yield (0, (_child || _load_child()).forkp)(yarnPath, argv, opts);
 96675          } catch (error) {
 96676            throw firstError;
 96677          }
 96678        }
 96679  
 96680        process.exitCode = exitCode;
 96681      } else {
 96682        // ignore all arguments after a --
 96683        const doubleDashIndex = process.argv.findIndex(function (element) {
 96684          return element === '--';
 96685        });
 96686        const startArgs = process.argv.slice(0, 2);
 96687        const args = process.argv.slice(2, doubleDashIndex === -1 ? process.argv.length : doubleDashIndex);
 96688        const endArgs = doubleDashIndex === -1 ? [] : process.argv.slice(doubleDashIndex);
 96689  
 96690        yield main({ startArgs, args, endArgs });
 96691      }
 96692    });
 96693  
 96694    return function start() {
 96695      return _ref5.apply(this, arguments);
 96696    };
 96697  })();
 96698  
 96699  // When this module is compiled via Webpack, its child
 96700  // count will be 0 since it is a single-file bundle.
 96701  
 96702  
 96703  var _http;
 96704  
 96705  function _load_http() {
 96706    return _http = _interopRequireDefault(__webpack_require__(87));
 96707  }
 96708  
 96709  var _net;
 96710  
 96711  function _load_net() {
 96712    return _net = _interopRequireDefault(__webpack_require__(164));
 96713  }
 96714  
 96715  var _path;
 96716  
 96717  function _load_path() {
 96718    return _path = _interopRequireDefault(__webpack_require__(0));
 96719  }
 96720  
 96721  var _commander;
 96722  
 96723  function _load_commander() {
 96724    return _commander = _interopRequireDefault(__webpack_require__(338));
 96725  }
 96726  
 96727  var _fs;
 96728  
 96729  function _load_fs() {
 96730    return _fs = _interopRequireDefault(__webpack_require__(4));
 96731  }
 96732  
 96733  var _invariant;
 96734  
 96735  function _load_invariant() {
 96736    return _invariant = _interopRequireDefault(__webpack_require__(9));
 96737  }
 96738  
 96739  var _properLockfile;
 96740  
 96741  function _load_properLockfile() {
 96742    return _properLockfile = _interopRequireDefault(__webpack_require__(471));
 96743  }
 96744  
 96745  var _loudRejection;
 96746  
 96747  function _load_loudRejection() {
 96748    return _loudRejection = _interopRequireDefault(__webpack_require__(470));
 96749  }
 96750  
 96751  var _death;
 96752  
 96753  function _load_death() {
 96754    return _death = _interopRequireDefault(__webpack_require__(469));
 96755  }
 96756  
 96757  var _semver;
 96758  
 96759  function _load_semver() {
 96760    return _semver = _interopRequireDefault(__webpack_require__(22));
 96761  }
 96762  
 96763  var _index;
 96764  
 96765  function _load_index() {
 96766    return _index = __webpack_require__(201);
 96767  }
 96768  
 96769  var _index2;
 96770  
 96771  function _load_index2() {
 96772    return _index2 = __webpack_require__(58);
 96773  }
 96774  
 96775  var _index3;
 96776  
 96777  function _load_index3() {
 96778    return _index3 = _interopRequireDefault(__webpack_require__(334));
 96779  }
 96780  
 96781  var _constants;
 96782  
 96783  function _load_constants() {
 96784    return _constants = _interopRequireWildcard(__webpack_require__(8));
 96785  }
 96786  
 96787  var _network;
 96788  
 96789  function _load_network() {
 96790    return _network = _interopRequireWildcard(__webpack_require__(337));
 96791  }
 96792  
 96793  var _errors;
 96794  
 96795  function _load_errors() {
 96796    return _errors = __webpack_require__(6);
 96797  }
 96798  
 96799  var _config;
 96800  
 96801  function _load_config() {
 96802    return _config = _interopRequireDefault(__webpack_require__(162));
 96803  }
 96804  
 96805  var _rc;
 96806  
 96807  function _load_rc() {
 96808    return _rc = __webpack_require__(335);
 96809  }
 96810  
 96811  var _child;
 96812  
 96813  function _load_child() {
 96814    return _child = __webpack_require__(50);
 96815  }
 96816  
 96817  var _yarnVersion;
 96818  
 96819  function _load_yarnVersion() {
 96820    return _yarnVersion = __webpack_require__(105);
 96821  }
 96822  
 96823  var _signalHandler;
 96824  
 96825  function _load_signalHandler() {
 96826    return _signalHandler = _interopRequireDefault(__webpack_require__(468));
 96827  }
 96828  
 96829  var _conversion;
 96830  
 96831  function _load_conversion() {
 96832    return _conversion = __webpack_require__(336);
 96833  }
 96834  
 96835  var _errors2;
 96836  
 96837  function _load_errors2() {
 96838    return _errors2 = __webpack_require__(6);
 96839  }
 96840  
 96841  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 96842  
 96843  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 96844  
 96845  process.stdout.prependListener('error', err => {
 96846    // swallow err only if downstream consumer process closed pipe early
 96847    if (err.code === 'EPIPE' || err.code === 'ERR_STREAM_DESTROYED') {
 96848      return;
 96849    }
 96850    throw err;
 96851  });
 96852  
 96853  function findProjectRoot(base) {
 96854    let prev = null;
 96855    let dir = base;
 96856  
 96857    do {
 96858      if ((_fs || _load_fs()).default.existsSync((_path || _load_path()).default.join(dir, (_constants || _load_constants()).NODE_PACKAGE_JSON))) {
 96859        return dir;
 96860      }
 96861  
 96862      prev = dir;
 96863      dir = (_path || _load_path()).default.dirname(dir);
 96864    } while (dir !== prev);
 96865  
 96866    return base;
 96867  }
 96868  
 96869  const autoRun = exports.autoRun = module.children.length === 0;
 96870  
 96871  if (__webpack_require__.c[__webpack_require__.s] === module) {
 96872    start().catch(error => {
 96873      console.error(error.stack || error.message || error);
 96874      process.exitCode = 1;
 96875    });
 96876  }
 96877  
 96878  exports.default = start;
 96879  /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(163)(module)))
 96880  
 96881  /***/ }),
 96882  /* 518 */
 96883  /***/ (function(module, exports, __webpack_require__) {
 96884  
 96885  "use strict";
 96886  
 96887  
 96888  Object.defineProperty(exports, "__esModule", {
 96889    value: true
 96890  });
 96891  
 96892  var _asyncToGenerator2;
 96893  
 96894  function _load_asyncToGenerator() {
 96895    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 96896  }
 96897  
 96898  var _baseFetcher;
 96899  
 96900  function _load_baseFetcher() {
 96901    return _baseFetcher = _interopRequireDefault(__webpack_require__(167));
 96902  }
 96903  
 96904  var _fs;
 96905  
 96906  function _load_fs() {
 96907    return _fs = _interopRequireWildcard(__webpack_require__(5));
 96908  }
 96909  
 96910  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 96911  
 96912  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 96913  
 96914  class CopyFetcher extends (_baseFetcher || _load_baseFetcher()).default {
 96915    _fetch() {
 96916      var _this = this;
 96917  
 96918      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 96919        yield (_fs || _load_fs()).copy(_this.reference, _this.dest, _this.reporter);
 96920        return {
 96921          hash: _this.hash || '',
 96922          resolved: null
 96923        };
 96924      })();
 96925    }
 96926  }
 96927  exports.default = CopyFetcher;
 96928  
 96929  /***/ }),
 96930  /* 519 */
 96931  /***/ (function(module, exports, __webpack_require__) {
 96932  
 96933  "use strict";
 96934  
 96935  
 96936  Object.defineProperty(exports, "__esModule", {
 96937    value: true
 96938  });
 96939  
 96940  var _asyncToGenerator2;
 96941  
 96942  function _load_asyncToGenerator() {
 96943    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 96944  }
 96945  
 96946  var _errors;
 96947  
 96948  function _load_errors() {
 96949    return _errors = __webpack_require__(6);
 96950  }
 96951  
 96952  var _baseFetcher;
 96953  
 96954  function _load_baseFetcher() {
 96955    return _baseFetcher = _interopRequireDefault(__webpack_require__(167));
 96956  }
 96957  
 96958  var _git;
 96959  
 96960  function _load_git() {
 96961    return _git = _interopRequireDefault(__webpack_require__(217));
 96962  }
 96963  
 96964  var _fs;
 96965  
 96966  function _load_fs() {
 96967    return _fs = _interopRequireWildcard(__webpack_require__(5));
 96968  }
 96969  
 96970  var _constants;
 96971  
 96972  function _load_constants() {
 96973    return _constants = _interopRequireWildcard(__webpack_require__(8));
 96974  }
 96975  
 96976  var _crypto;
 96977  
 96978  function _load_crypto() {
 96979    return _crypto = _interopRequireWildcard(__webpack_require__(168));
 96980  }
 96981  
 96982  var _install;
 96983  
 96984  function _load_install() {
 96985    return _install = __webpack_require__(34);
 96986  }
 96987  
 96988  var _lockfile;
 96989  
 96990  function _load_lockfile() {
 96991    return _lockfile = _interopRequireDefault(__webpack_require__(19));
 96992  }
 96993  
 96994  var _config;
 96995  
 96996  function _load_config() {
 96997    return _config = _interopRequireDefault(__webpack_require__(162));
 96998  }
 96999  
 97000  var _pack;
 97001  
 97002  function _load_pack() {
 97003    return _pack = __webpack_require__(166);
 97004  }
 97005  
 97006  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 97007  
 97008  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 97009  
 97010  const tarFs = __webpack_require__(194);
 97011  const url = __webpack_require__(24);
 97012  const path = __webpack_require__(0);
 97013  const fs = __webpack_require__(4);
 97014  
 97015  const invariant = __webpack_require__(9);
 97016  
 97017  const PACKED_FLAG = '1';
 97018  
 97019  class GitFetcher extends (_baseFetcher || _load_baseFetcher()).default {
 97020    setupMirrorFromCache() {
 97021      var _this = this;
 97022  
 97023      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 97024        const tarballMirrorPath = _this.getTarballMirrorPath();
 97025        const tarballCachePath = _this.getTarballCachePath();
 97026  
 97027        if (tarballMirrorPath == null) {
 97028          return;
 97029        }
 97030  
 97031        if (!(yield (_fs || _load_fs()).exists(tarballMirrorPath)) && (yield (_fs || _load_fs()).exists(tarballCachePath))) {
 97032          // The tarball doesn't exists in the offline cache but does in the cache; we import it to the mirror
 97033          yield (_fs || _load_fs()).mkdirp(path.dirname(tarballMirrorPath));
 97034          yield (_fs || _load_fs()).copy(tarballCachePath, tarballMirrorPath, _this.reporter);
 97035        }
 97036      })();
 97037    }
 97038  
 97039    getTarballMirrorPath({ withCommit = true } = {}) {
 97040      var _url$parse = url.parse(this.reference);
 97041  
 97042      const pathname = _url$parse.pathname;
 97043  
 97044  
 97045      if (pathname == null) {
 97046        return null;
 97047      }
 97048  
 97049      const hash = this.hash;
 97050  
 97051      let packageFilename = withCommit && hash ? `${path.basename(pathname)}-${hash}` : `${path.basename(pathname)}`;
 97052  
 97053      if (packageFilename.startsWith(':')) {
 97054        packageFilename = packageFilename.substr(1);
 97055      }
 97056  
 97057      return this.config.getOfflineMirrorPath(packageFilename);
 97058    }
 97059  
 97060    getTarballCachePath() {
 97061      return path.join(this.dest, (_constants || _load_constants()).TARBALL_FILENAME);
 97062    }
 97063  
 97064    getLocalPaths(override) {
 97065      const paths = [override ? path.resolve(this.config.cwd, override) : null, this.getTarballMirrorPath(), this.getTarballMirrorPath({ withCommit: false }), this.getTarballCachePath()];
 97066      // $FlowFixMe: https://github.com/facebook/flow/issues/1414
 97067      return paths.filter(path => path != null);
 97068    }
 97069  
 97070    fetchFromLocal(override) {
 97071      var _this2 = this;
 97072  
 97073      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 97074        const tarPaths = _this2.getLocalPaths(override);
 97075        const stream = yield (_fs || _load_fs()).readFirstAvailableStream(tarPaths);
 97076  
 97077        return new Promise(function (resolve, reject) {
 97078          if (!stream) {
 97079            reject(new (_errors || _load_errors()).MessageError(_this2.reporter.lang('tarballNotInNetworkOrCache', _this2.reference, tarPaths)));
 97080            return;
 97081          }
 97082          invariant(stream, 'cachedStream should be available at this point');
 97083          // $FlowFixMe - This is available https://nodejs.org/api/fs.html#fs_readstream_path
 97084          const tarballPath = stream.path;
 97085  
 97086          const untarStream = _this2._createUntarStream(_this2.dest);
 97087  
 97088          const hashStream = new (_crypto || _load_crypto()).HashStream();
 97089          stream.pipe(hashStream).pipe(untarStream).on('finish', function () {
 97090            const expectHash = _this2.hash;
 97091            invariant(expectHash, 'Commit hash required');
 97092  
 97093            const actualHash = hashStream.getHash();
 97094  
 97095            // This condition is disabled because "expectHash" actually is the commit hash
 97096            // This is a design issue that we'll need to fix (https://github.com/yarnpkg/yarn/pull/3449)
 97097            if (true) {
 97098              resolve({
 97099                hash: expectHash
 97100              });
 97101            } else {
 97102              reject(new (_errors || _load_errors()).SecurityError(_this2.config.reporter.lang('fetchBadHashWithPath', _this2.packageName, _this2.remote.reference, expectHash, actualHash)));
 97103            }
 97104          }).on('error', function (err) {
 97105            reject(new (_errors || _load_errors()).MessageError(this.reporter.lang('fetchErrorCorrupt', err.message, tarballPath)));
 97106          });
 97107        });
 97108      })();
 97109    }
 97110  
 97111    hasPrepareScript(git) {
 97112      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 97113        const manifestFile = yield git.getFile('package.json');
 97114  
 97115        if (manifestFile) {
 97116          const scripts = JSON.parse(manifestFile).scripts;
 97117          const hasPrepareScript = Boolean(scripts && scripts.prepare);
 97118          return hasPrepareScript;
 97119        }
 97120  
 97121        return false;
 97122      })();
 97123    }
 97124  
 97125    fetchFromExternal() {
 97126      var _this3 = this;
 97127  
 97128      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 97129        const hash = _this3.hash;
 97130        invariant(hash, 'Commit hash required');
 97131  
 97132        const gitUrl = (_git || _load_git()).default.npmUrlToGitUrl(_this3.reference);
 97133        const git = new (_git || _load_git()).default(_this3.config, gitUrl, hash);
 97134        yield git.init();
 97135  
 97136        if (yield _this3.hasPrepareScript(git)) {
 97137          yield _this3.fetchFromInstallAndPack(git);
 97138        } else {
 97139          yield _this3.fetchFromGitArchive(git);
 97140        }
 97141  
 97142        return {
 97143          hash
 97144        };
 97145      })();
 97146    }
 97147  
 97148    fetchFromInstallAndPack(git) {
 97149      var _this4 = this;
 97150  
 97151      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 97152        const prepareDirectory = _this4.config.getTemp(`${(_crypto || _load_crypto()).hash(git.gitUrl.repository)}.${git.hash}.prepare`);
 97153        yield (_fs || _load_fs()).unlink(prepareDirectory);
 97154  
 97155        yield git.clone(prepareDirectory);
 97156  
 97157        var _ref = yield Promise.all([(_config || _load_config()).default.create({
 97158          binLinks: true,
 97159          cwd: prepareDirectory,
 97160          disablePrepublish: true,
 97161          production: false
 97162        }, _this4.reporter), (_lockfile || _load_lockfile()).default.fromDirectory(prepareDirectory, _this4.reporter)]);
 97163  
 97164        const prepareConfig = _ref[0],
 97165              prepareLockFile = _ref[1];
 97166  
 97167        yield (0, (_install || _load_install()).install)(prepareConfig, _this4.reporter, {}, prepareLockFile);
 97168  
 97169        const tarballMirrorPath = _this4.getTarballMirrorPath();
 97170        const tarballCachePath = _this4.getTarballCachePath();
 97171  
 97172        if (tarballMirrorPath) {
 97173          yield _this4._packToTarball(prepareConfig, tarballMirrorPath);
 97174        }
 97175        if (tarballCachePath) {
 97176          yield _this4._packToTarball(prepareConfig, tarballCachePath);
 97177        }
 97178  
 97179        yield _this4._packToDirectory(prepareConfig, _this4.dest);
 97180  
 97181        yield (_fs || _load_fs()).unlink(prepareDirectory);
 97182      })();
 97183    }
 97184  
 97185    _packToTarball(config, path) {
 97186      var _this5 = this;
 97187  
 97188      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 97189        const tarballStream = yield _this5._createTarballStream(config);
 97190        yield new Promise(function (resolve, reject) {
 97191          const writeStream = fs.createWriteStream(path);
 97192          tarballStream.on('error', reject);
 97193          writeStream.on('error', reject);
 97194          writeStream.on('end', resolve);
 97195          writeStream.on('open', function () {
 97196            tarballStream.pipe(writeStream);
 97197          });
 97198          writeStream.once('finish', resolve);
 97199        });
 97200      })();
 97201    }
 97202  
 97203    _packToDirectory(config, dest) {
 97204      var _this6 = this;
 97205  
 97206      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 97207        const tarballStream = yield _this6._createTarballStream(config);
 97208        yield new Promise(function (resolve, reject) {
 97209          const untarStream = _this6._createUntarStream(dest);
 97210          tarballStream.on('error', reject);
 97211          untarStream.on('error', reject);
 97212          untarStream.on('end', resolve);
 97213          untarStream.once('finish', resolve);
 97214          tarballStream.pipe(untarStream);
 97215        });
 97216      })();
 97217    }
 97218  
 97219    _createTarballStream(config) {
 97220      let savedPackedHeader = false;
 97221      return (0, (_pack || _load_pack()).packTarball)(config, {
 97222        mapHeader(header) {
 97223          if (!savedPackedHeader) {
 97224            savedPackedHeader = true;
 97225            header.pax = header.pax || {};
 97226            // add a custom data on the first header
 97227            // in order to distinguish a tar from "git archive" and a tar from "pack" command
 97228            header.pax.packed = PACKED_FLAG;
 97229          }
 97230          return header;
 97231        }
 97232      });
 97233    }
 97234  
 97235    _createUntarStream(dest) {
 97236      const PREFIX = 'package/';
 97237      let isPackedTarball = undefined;
 97238      return tarFs.extract(dest, {
 97239        dmode: 0o555, // all dirs should be readable
 97240        fmode: 0o444, // all files should be readable
 97241        chown: false, // don't chown. just leave as it is
 97242        map: header => {
 97243          if (isPackedTarball === undefined) {
 97244            isPackedTarball = header.pax && header.pax.packed === PACKED_FLAG;
 97245          }
 97246          if (isPackedTarball) {
 97247            header.name = header.name.substr(PREFIX.length);
 97248          }
 97249        }
 97250      });
 97251    }
 97252  
 97253    fetchFromGitArchive(git) {
 97254      var _this7 = this;
 97255  
 97256      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 97257        yield git.clone(_this7.dest);
 97258        const tarballMirrorPath = _this7.getTarballMirrorPath();
 97259        const tarballCachePath = _this7.getTarballCachePath();
 97260  
 97261        if (tarballMirrorPath) {
 97262          yield git.archive(tarballMirrorPath);
 97263        }
 97264  
 97265        if (tarballCachePath) {
 97266          yield git.archive(tarballCachePath);
 97267        }
 97268      })();
 97269    }
 97270  
 97271    _fetch() {
 97272      return this.fetchFromLocal().catch(err => this.fetchFromExternal());
 97273    }
 97274  }
 97275  exports.default = GitFetcher;
 97276  
 97277  /***/ }),
 97278  /* 520 */
 97279  /***/ (function(module, exports, __webpack_require__) {
 97280  
 97281  "use strict";
 97282  
 97283  
 97284  Object.defineProperty(exports, "__esModule", {
 97285    value: true
 97286  });
 97287  exports.workspace = exports.tarball = exports.git = exports.copy = exports.base = undefined;
 97288  
 97289  var _baseFetcher;
 97290  
 97291  function _load_baseFetcher() {
 97292    return _baseFetcher = _interopRequireDefault(__webpack_require__(167));
 97293  }
 97294  
 97295  var _copyFetcher;
 97296  
 97297  function _load_copyFetcher() {
 97298    return _copyFetcher = _interopRequireDefault(__webpack_require__(518));
 97299  }
 97300  
 97301  var _gitFetcher;
 97302  
 97303  function _load_gitFetcher() {
 97304    return _gitFetcher = _interopRequireDefault(__webpack_require__(519));
 97305  }
 97306  
 97307  var _tarballFetcher;
 97308  
 97309  function _load_tarballFetcher() {
 97310    return _tarballFetcher = _interopRequireDefault(__webpack_require__(358));
 97311  }
 97312  
 97313  var _workspaceFetcher;
 97314  
 97315  function _load_workspaceFetcher() {
 97316    return _workspaceFetcher = _interopRequireDefault(__webpack_require__(521));
 97317  }
 97318  
 97319  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 97320  
 97321  exports.base = (_baseFetcher || _load_baseFetcher()).default;
 97322  exports.copy = (_copyFetcher || _load_copyFetcher()).default;
 97323  exports.git = (_gitFetcher || _load_gitFetcher()).default;
 97324  exports.tarball = (_tarballFetcher || _load_tarballFetcher()).default;
 97325  exports.workspace = (_workspaceFetcher || _load_workspaceFetcher()).default;
 97326  
 97327  /***/ }),
 97328  /* 521 */
 97329  /***/ (function(module, exports, __webpack_require__) {
 97330  
 97331  "use strict";
 97332  
 97333  
 97334  Object.defineProperty(exports, "__esModule", {
 97335    value: true
 97336  });
 97337  
 97338  var _extends2;
 97339  
 97340  function _load_extends() {
 97341    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 97342  }
 97343  
 97344  var _asyncToGenerator2;
 97345  
 97346  function _load_asyncToGenerator() {
 97347    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 97348  }
 97349  
 97350  var _packageFetcher;
 97351  
 97352  function _load_packageFetcher() {
 97353    return _packageFetcher = __webpack_require__(208);
 97354  }
 97355  
 97356  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 97357  
 97358  class WorkspaceFetcher {
 97359    constructor(dest, remote, config) {
 97360      this.config = config;
 97361      this.dest = dest;
 97362      this.registry = remote.registry;
 97363      this.workspaceDir = remote.reference;
 97364      this.registryRemote = remote.registryRemote;
 97365    }
 97366  
 97367    setupMirrorFromCache() {
 97368      return Promise.resolve();
 97369    }
 97370  
 97371    fetch() {
 97372      var _this = this;
 97373  
 97374      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 97375        const pkg = yield _this.config.readManifest(_this.workspaceDir, _this.registry);
 97376  
 97377        if (_this.registryRemote) {
 97378          yield _this.fetchRemoteWorkspace(_this.registryRemote, pkg);
 97379        }
 97380  
 97381        return {
 97382          resolved: null,
 97383          hash: '',
 97384          cached: false,
 97385          dest: _this.dest,
 97386          package: (0, (_extends2 || _load_extends()).default)({}, pkg, {
 97387            _uid: pkg.version
 97388          })
 97389        };
 97390      })();
 97391    }
 97392  
 97393    fetchRemoteWorkspace(remote, manifest) {
 97394      return (0, (_packageFetcher || _load_packageFetcher()).fetchOneRemote)(remote, manifest.name, manifest.version, this.dest, this.config);
 97395    }
 97396  }
 97397  exports.default = WorkspaceFetcher;
 97398  
 97399  /***/ }),
 97400  /* 522 */
 97401  /***/ (function(module, exports, __webpack_require__) {
 97402  
 97403  "use strict";
 97404  
 97405  
 97406  Object.defineProperty(exports, "__esModule", {
 97407    value: true
 97408  });
 97409  exports.buildTree = undefined;
 97410  
 97411  var _asyncToGenerator2;
 97412  
 97413  function _load_asyncToGenerator() {
 97414    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 97415  }
 97416  
 97417  let buildTree = exports.buildTree = (() => {
 97418    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (resolver, linker, patterns, ignoreHoisted) {
 97419      const treesByKey = {};
 97420      const trees = [];
 97421      const flatTree = yield linker.getFlatHoistedTree(patterns);
 97422  
 97423      // If using workspaces, filter out the virtual manifest
 97424      const workspaceLayout = resolver.workspaceLayout;
 97425  
 97426      const hoisted = workspaceLayout && workspaceLayout.virtualManifestName ? flatTree.filter(function ([key]) {
 97427        return key.indexOf(workspaceLayout.virtualManifestName) === -1;
 97428      }) : flatTree;
 97429  
 97430      const hoistedByKey = {};
 97431      for (var _iterator = hoisted, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 97432        var _ref3;
 97433  
 97434        if (_isArray) {
 97435          if (_i >= _iterator.length) break;
 97436          _ref3 = _iterator[_i++];
 97437        } else {
 97438          _i = _iterator.next();
 97439          if (_i.done) break;
 97440          _ref3 = _i.value;
 97441        }
 97442  
 97443        const _ref2 = _ref3;
 97444        const key = _ref2[0];
 97445        const info = _ref2[1];
 97446  
 97447        hoistedByKey[key] = info;
 97448      }
 97449  
 97450      // build initial trees
 97451      for (var _iterator2 = hoisted, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 97452        var _ref5;
 97453  
 97454        if (_isArray2) {
 97455          if (_i2 >= _iterator2.length) break;
 97456          _ref5 = _iterator2[_i2++];
 97457        } else {
 97458          _i2 = _iterator2.next();
 97459          if (_i2.done) break;
 97460          _ref5 = _i2.value;
 97461        }
 97462  
 97463        const _ref4 = _ref5;
 97464        const info = _ref4[1];
 97465  
 97466        const ref = info.pkg._reference;
 97467        // const parent = getParent(info.key, treesByKey);
 97468        const children = [];
 97469        // let depth = 0;
 97470        invariant(ref, 'expected reference');
 97471  
 97472        // check parent to obtain next depth
 97473        // if (parent && parent.depth > 0) {
 97474        //   depth = parent.depth + 1;
 97475        // } else {
 97476        //   depth = 0;
 97477        // }
 97478  
 97479        treesByKey[info.key] = {
 97480          name: info.pkg.name,
 97481          version: info.pkg.version,
 97482          children,
 97483          manifest: info
 97484        };
 97485      }
 97486  
 97487      // add children
 97488      for (var _iterator3 = hoisted, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 97489        var _ref7;
 97490  
 97491        if (_isArray3) {
 97492          if (_i3 >= _iterator3.length) break;
 97493          _ref7 = _iterator3[_i3++];
 97494        } else {
 97495          _i3 = _iterator3.next();
 97496          if (_i3.done) break;
 97497          _ref7 = _i3.value;
 97498        }
 97499  
 97500        const _ref6 = _ref7;
 97501        const info = _ref6[1];
 97502  
 97503        const tree = treesByKey[info.key];
 97504        const parent = getParent(info.key, treesByKey);
 97505        if (!tree) {
 97506          continue;
 97507        }
 97508  
 97509        if (info.key.split('#').length === 1) {
 97510          trees.push(tree);
 97511          continue;
 97512        }
 97513  
 97514        if (parent) {
 97515          parent.children.push(tree);
 97516        }
 97517      }
 97518  
 97519      return trees;
 97520    });
 97521  
 97522    return function buildTree(_x, _x2, _x3, _x4) {
 97523      return _ref.apply(this, arguments);
 97524    };
 97525  })();
 97526  
 97527  exports.getParent = getParent;
 97528  
 97529  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 97530  
 97531  const invariant = __webpack_require__(9);
 97532  
 97533  function getParent(key, treesByKey) {
 97534    const parentKey = key.slice(0, key.lastIndexOf('#'));
 97535    return treesByKey[parentKey];
 97536  }
 97537  
 97538  /***/ }),
 97539  /* 523 */
 97540  /***/ (function(module, exports, __webpack_require__) {
 97541  
 97542  "use strict";
 97543  
 97544  
 97545  Object.defineProperty(exports, "__esModule", {
 97546    value: true
 97547  });
 97548  const semver = __webpack_require__(22);
 97549  
 97550  // This isn't really a "proper" constraint resolver. We just return the highest semver
 97551  // version in the versions passed that satisfies the input range. This vastly reduces
 97552  // the complexity and is very efficient for package resolution.
 97553  
 97554  class PackageConstraintResolver {
 97555    constructor(config, reporter) {
 97556      this.reporter = reporter;
 97557      this.config = config;
 97558    }
 97559  
 97560    reduce(versions, range) {
 97561      if (range === 'latest') {
 97562        // Usually versions are already ordered and the last one is the latest
 97563        return Promise.resolve(versions[versions.length - 1]);
 97564      } else {
 97565        return Promise.resolve(semver.maxSatisfying(versions, range, this.config.looseSemver));
 97566      }
 97567    }
 97568  }
 97569  exports.default = PackageConstraintResolver;
 97570  
 97571  /***/ }),
 97572  /* 524 */
 97573  /***/ (function(module, exports, __webpack_require__) {
 97574  
 97575  "use strict";
 97576  
 97577  
 97578  Object.defineProperty(exports, "__esModule", {
 97579    value: true
 97580  });
 97581  exports.NohoistResolver = exports.HoistManifest = undefined;
 97582  
 97583  var _extends2;
 97584  
 97585  function _load_extends() {
 97586    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 97587  }
 97588  
 97589  var _config;
 97590  
 97591  function _load_config() {
 97592    return _config = _interopRequireDefault(__webpack_require__(162));
 97593  }
 97594  
 97595  var _misc;
 97596  
 97597  function _load_misc() {
 97598    return _misc = __webpack_require__(18);
 97599  }
 97600  
 97601  var _micromatch;
 97602  
 97603  function _load_micromatch() {
 97604    return _micromatch = _interopRequireDefault(__webpack_require__(115));
 97605  }
 97606  
 97607  var _workspaceLayout2;
 97608  
 97609  function _load_workspaceLayout() {
 97610    return _workspaceLayout2 = _interopRequireDefault(__webpack_require__(90));
 97611  }
 97612  
 97613  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 97614  
 97615  const invariant = __webpack_require__(9);
 97616  
 97617  const path = __webpack_require__(0);
 97618  
 97619  let historyCounter = 0;
 97620  
 97621  const LINK_TYPES = new Set(['workspace', 'link']);
 97622  class HoistManifest {
 97623    constructor(key, parts, pkg, loc, isDirectRequire, isRequired, isIncompatible) {
 97624      this.isDirectRequire = isDirectRequire;
 97625      this.isRequired = isRequired;
 97626      this.isIncompatible = isIncompatible;
 97627  
 97628      this.loc = loc;
 97629      this.pkg = pkg;
 97630      this.key = key;
 97631      this.parts = parts;
 97632      this.originalKey = key;
 97633      this.previousPaths = [];
 97634  
 97635      this.history = [];
 97636      this.addHistory(`Start position = ${key}`);
 97637  
 97638      this.isNohoist = false;
 97639      this.originalParentPath = '';
 97640  
 97641      this.shallowPaths = [];
 97642      this.isShallow = false;
 97643    }
 97644  
 97645    //focus
 97646  
 97647  
 97648    // nohoist info
 97649  
 97650  
 97651    addHistory(msg) {
 97652      this.history.push(`${++historyCounter}: ${msg}`);
 97653    }
 97654  }
 97655  
 97656  exports.HoistManifest = HoistManifest;
 97657  class PackageHoister {
 97658    constructor(config, resolver, { ignoreOptional, workspaceLayout } = {}) {
 97659      this.resolver = resolver;
 97660      this.config = config;
 97661  
 97662      this.ignoreOptional = ignoreOptional;
 97663  
 97664      this.taintedKeys = new Map();
 97665      this.levelQueue = [];
 97666      this.tree = new Map();
 97667  
 97668      this.workspaceLayout = workspaceLayout;
 97669  
 97670      this.nohoistResolver = new NohoistResolver(config, resolver);
 97671    }
 97672  
 97673    /**
 97674     * Taint this key and prevent any modules from being hoisted to it.
 97675     */
 97676  
 97677    taintKey(key, info) {
 97678      const existingTaint = this.taintedKeys.get(key);
 97679      if (existingTaint && existingTaint.loc !== info.loc) {
 97680        return false;
 97681      } else {
 97682        this.taintedKeys.set(key, info);
 97683        return true;
 97684      }
 97685    }
 97686  
 97687    /**
 97688     * Implode an array of ancestry parts into a key.
 97689     */
 97690  
 97691    implodeKey(parts) {
 97692      return parts.join('#');
 97693    }
 97694  
 97695    /**
 97696     * Seed the hoister with patterns taken from the included resolver.
 97697     */
 97698  
 97699    seed(patterns) {
 97700      this.prepass(patterns);
 97701  
 97702      for (var _iterator = this.resolver.dedupePatterns(patterns), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 97703        var _ref;
 97704  
 97705        if (_isArray) {
 97706          if (_i >= _iterator.length) break;
 97707          _ref = _iterator[_i++];
 97708        } else {
 97709          _i = _iterator.next();
 97710          if (_i.done) break;
 97711          _ref = _i.value;
 97712        }
 97713  
 97714        const pattern = _ref;
 97715  
 97716        this._seed(pattern, { isDirectRequire: true });
 97717      }
 97718  
 97719      while (true) {
 97720        let queue = this.levelQueue;
 97721        if (!queue.length) {
 97722          this._propagateRequired();
 97723          return;
 97724        }
 97725  
 97726        this.levelQueue = [];
 97727  
 97728        // sort queue to get determinism between runs
 97729        queue = queue.sort(([aPattern], [bPattern]) => {
 97730          return (0, (_misc || _load_misc()).sortAlpha)(aPattern, bPattern);
 97731        });
 97732  
 97733        // sort the queue again to hoist packages without peer dependencies first
 97734        let sortedQueue = [];
 97735        const availableSet = new Set();
 97736  
 97737        let hasChanged = true;
 97738        while (queue.length > 0 && hasChanged) {
 97739          hasChanged = false;
 97740  
 97741          const queueCopy = queue;
 97742          queue = [];
 97743          for (let t = 0; t < queueCopy.length; ++t) {
 97744            const queueItem = queueCopy[t];
 97745            const pattern = queueItem[0];
 97746            const pkg = this.resolver.getStrictResolvedPattern(pattern);
 97747  
 97748            const peerDependencies = Object.keys(pkg.peerDependencies || {});
 97749            const areDependenciesFulfilled = peerDependencies.every(peerDependency => availableSet.has(peerDependency));
 97750  
 97751            if (areDependenciesFulfilled) {
 97752              // Move the package inside our sorted queue
 97753              sortedQueue.push(queueItem);
 97754  
 97755              // Add it to our set, so that we know it is available
 97756              availableSet.add(pattern);
 97757  
 97758              // Schedule a next pass, in case other packages had peer dependencies on this one
 97759              hasChanged = true;
 97760            } else {
 97761              queue.push(queueItem);
 97762            }
 97763          }
 97764        }
 97765  
 97766        // We might end up with some packages left in the queue, that have not been sorted. We reach this codepath if two
 97767        // packages have a cyclic dependency, or if the peer dependency is provided by a parent package. In these case,
 97768        // nothing we can do, so we just add all of these packages to the end of the sorted queue.
 97769        sortedQueue = sortedQueue.concat(queue);
 97770  
 97771        for (var _iterator2 = sortedQueue, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 97772          var _ref3;
 97773  
 97774          if (_isArray2) {
 97775            if (_i2 >= _iterator2.length) break;
 97776            _ref3 = _iterator2[_i2++];
 97777          } else {
 97778            _i2 = _iterator2.next();
 97779            if (_i2.done) break;
 97780            _ref3 = _i2.value;
 97781          }
 97782  
 97783          const _ref2 = _ref3;
 97784          const pattern = _ref2[0];
 97785          const parent = _ref2[1];
 97786  
 97787          const info = this._seed(pattern, { isDirectRequire: false, parent });
 97788          if (info) {
 97789            this.hoist(info);
 97790          }
 97791        }
 97792      }
 97793    }
 97794  
 97795    /**
 97796     * Seed the hoister with a specific pattern.
 97797     */
 97798  
 97799    _seed(pattern, { isDirectRequire, parent }) {
 97800      //
 97801      const pkg = this.resolver.getStrictResolvedPattern(pattern);
 97802      const ref = pkg._reference;
 97803      invariant(ref, 'expected reference');
 97804  
 97805      //
 97806      let parentParts = [];
 97807  
 97808      const isIncompatible = ref.incompatible;
 97809      const isMarkedAsOptional = ref.optional && this.ignoreOptional;
 97810  
 97811      let isRequired = isDirectRequire && !ref.ignore && !isIncompatible && !isMarkedAsOptional;
 97812  
 97813      if (parent) {
 97814        if (!this.tree.get(parent.key)) {
 97815          return null;
 97816        }
 97817        // non ignored dependencies inherit parent's ignored status
 97818        // parent may transition from ignored to non ignored when hoisted if it is used in another non ignored branch
 97819        if (!isDirectRequire && !isIncompatible && parent.isRequired && !isMarkedAsOptional) {
 97820          isRequired = true;
 97821        }
 97822        parentParts = parent.parts;
 97823      }
 97824  
 97825      //
 97826      const loc = this.config.generateModuleCachePath(ref);
 97827      const parts = parentParts.concat(pkg.name);
 97828      const key = this.implodeKey(parts);
 97829      const info = new HoistManifest(key, parts, pkg, loc, isDirectRequire, isRequired, isIncompatible);
 97830  
 97831      this.nohoistResolver.initNohoist(info, parent);
 97832  
 97833      this.tree.set(key, info);
 97834      this.taintKey(key, info);
 97835  
 97836      //
 97837      const pushed = new Set();
 97838      for (var _iterator3 = ref.dependencies, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 97839        var _ref4;
 97840  
 97841        if (_isArray3) {
 97842          if (_i3 >= _iterator3.length) break;
 97843          _ref4 = _iterator3[_i3++];
 97844        } else {
 97845          _i3 = _iterator3.next();
 97846          if (_i3.done) break;
 97847          _ref4 = _i3.value;
 97848        }
 97849  
 97850        const depPattern = _ref4;
 97851  
 97852        if (!pushed.has(depPattern)) {
 97853          this.levelQueue.push([depPattern, info]);
 97854          pushed.add(depPattern);
 97855        }
 97856      }
 97857  
 97858      return info;
 97859    }
 97860  
 97861    /**
 97862     * Propagate inherited ignore statuses from non-ignored to ignored packages
 97863     */
 97864  
 97865    _propagateRequired() {
 97866      //
 97867      const toVisit = [];
 97868  
 97869      // enumerate all non-ignored packages
 97870      for (var _iterator4 = this.tree.entries(), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 97871        var _ref5;
 97872  
 97873        if (_isArray4) {
 97874          if (_i4 >= _iterator4.length) break;
 97875          _ref5 = _iterator4[_i4++];
 97876        } else {
 97877          _i4 = _iterator4.next();
 97878          if (_i4.done) break;
 97879          _ref5 = _i4.value;
 97880        }
 97881  
 97882        const entry = _ref5;
 97883  
 97884        if (entry[1].isRequired) {
 97885          toVisit.push(entry[1]);
 97886        }
 97887      }
 97888  
 97889      // visit them
 97890      while (toVisit.length) {
 97891        const info = toVisit.shift();
 97892        const ref = info.pkg._reference;
 97893        invariant(ref, 'expected reference');
 97894  
 97895        for (var _iterator5 = ref.dependencies, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
 97896          var _ref6;
 97897  
 97898          if (_isArray5) {
 97899            if (_i5 >= _iterator5.length) break;
 97900            _ref6 = _iterator5[_i5++];
 97901          } else {
 97902            _i5 = _iterator5.next();
 97903            if (_i5.done) break;
 97904            _ref6 = _i5.value;
 97905          }
 97906  
 97907          const depPattern = _ref6;
 97908  
 97909          const depinfo = this._lookupDependency(info, depPattern);
 97910  
 97911          if (!depinfo) {
 97912            continue;
 97913          }
 97914  
 97915          const depRef = depinfo.pkg._reference;
 97916  
 97917          // If it's marked as optional, but the parent is required and the
 97918          // dependency was not listed in `optionalDependencies`, then we mark the
 97919          // dependency as required.
 97920          const isMarkedAsOptional = depRef && depRef.optional && this.ignoreOptional && !(info.isRequired && depRef.hint !== 'optional');
 97921  
 97922          if (!depinfo.isRequired && !depinfo.isIncompatible && !isMarkedAsOptional) {
 97923            depinfo.isRequired = true;
 97924            depinfo.addHistory(`Mark as non-ignored because of usage by ${info.key}`);
 97925            toVisit.push(depinfo);
 97926          }
 97927        }
 97928      }
 97929    }
 97930  
 97931    /**
 97932     * Looks up the package a dependency resolves to
 97933     */
 97934  
 97935    _lookupDependency(info, depPattern) {
 97936      //
 97937      const pkg = this.resolver.getStrictResolvedPattern(depPattern);
 97938      const ref = pkg._reference;
 97939      invariant(ref, 'expected reference');
 97940  
 97941      //
 97942      for (let i = info.parts.length; i >= 0; i--) {
 97943        const checkParts = info.parts.slice(0, i).concat(pkg.name);
 97944        const checkKey = this.implodeKey(checkParts);
 97945        const existing = this.tree.get(checkKey);
 97946        if (existing) {
 97947          return existing;
 97948        }
 97949      }
 97950  
 97951      return null;
 97952    }
 97953  
 97954    /**
 97955     * Find the highest position we can hoist this module to.
 97956     */
 97957  
 97958    getNewParts(key, info, parts) {
 97959      let stepUp = false;
 97960  
 97961      const highestHoistingPoint = this.nohoistResolver.highestHoistingPoint(info) || 0;
 97962      const fullKey = this.implodeKey(parts);
 97963      const stack = []; // stack of removed parts
 97964      const name = parts.pop();
 97965  
 97966      if (info.isNohoist) {
 97967        info.addHistory(`Marked as nohoist, will not be hoisted above '${parts[highestHoistingPoint]}'`);
 97968      }
 97969  
 97970      for (let i = parts.length - 1; i >= highestHoistingPoint; i--) {
 97971        const checkParts = parts.slice(0, i).concat(name);
 97972        const checkKey = this.implodeKey(checkParts);
 97973        info.addHistory(`Looked at ${checkKey} for a match`);
 97974  
 97975        const existing = this.tree.get(checkKey);
 97976  
 97977        if (existing) {
 97978          if (existing.loc === info.loc) {
 97979            // switch to non ignored if earlier deduped version was ignored (must be compatible)
 97980            if (!existing.isRequired && info.isRequired) {
 97981              existing.addHistory(`Deduped ${fullKey} to this item, marking as required`);
 97982              existing.isRequired = true;
 97983            } else {
 97984              existing.addHistory(`Deduped ${fullKey} to this item`);
 97985            }
 97986  
 97987            return { parts: checkParts, duplicate: true };
 97988          } else {
 97989            // everything above will be shadowed and this is a conflict
 97990            info.addHistory(`Found a collision at ${checkKey}`);
 97991            break;
 97992          }
 97993        }
 97994  
 97995        const existingTaint = this.taintedKeys.get(checkKey);
 97996        if (existingTaint && existingTaint.loc !== info.loc) {
 97997          info.addHistory(`Broken by ${checkKey}`);
 97998          break;
 97999        }
 98000      }
 98001  
 98002      const peerDependencies = Object.keys(info.pkg.peerDependencies || {});
 98003  
 98004      // remove redundant parts that wont collide
 98005      hoistLoop: while (parts.length > highestHoistingPoint) {
 98006        // we must not hoist a package higher than its peer dependencies
 98007        for (var _iterator6 = peerDependencies, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
 98008          var _ref7;
 98009  
 98010          if (_isArray6) {
 98011            if (_i6 >= _iterator6.length) break;
 98012            _ref7 = _iterator6[_i6++];
 98013          } else {
 98014            _i6 = _iterator6.next();
 98015            if (_i6.done) break;
 98016            _ref7 = _i6.value;
 98017          }
 98018  
 98019          const peerDependency = _ref7;
 98020  
 98021          const checkParts = parts.concat(peerDependency);
 98022          const checkKey = this.implodeKey(checkParts);
 98023          info.addHistory(`Looked at ${checkKey} for a peer dependency match`);
 98024  
 98025          const existing = this.tree.get(checkKey);
 98026  
 98027          if (existing) {
 98028            info.addHistory(`Found a peer dependency requirement at ${checkKey}`);
 98029            break hoistLoop;
 98030          }
 98031        }
 98032  
 98033        const checkParts = parts.concat(name);
 98034        const checkKey = this.implodeKey(checkParts);
 98035  
 98036        //
 98037        const existing = this.tree.get(checkKey);
 98038        if (existing) {
 98039          stepUp = true;
 98040          break;
 98041        }
 98042  
 98043        // check if we're trying to hoist ourselves to a previously unflattened module key,
 98044        // this will result in a conflict and we'll need to move ourselves up
 98045        if (key !== checkKey && this.taintedKeys.has(checkKey)) {
 98046          stepUp = true;
 98047          break;
 98048        }
 98049  
 98050        //
 98051        stack.push(parts.pop());
 98052      }
 98053  
 98054      //
 98055      parts.push(name);
 98056  
 98057      //
 98058      const isValidPosition = parts => {
 98059        // nohoist package can't be hoisted to the "root"
 98060        if (parts.length <= highestHoistingPoint) {
 98061          return false;
 98062        }
 98063        const key = this.implodeKey(parts);
 98064        const existing = this.tree.get(key);
 98065        if (existing && existing.loc === info.loc) {
 98066          return true;
 98067        }
 98068  
 98069        // ensure there's no taint or the taint is us
 98070        const existingTaint = this.taintedKeys.get(key);
 98071        if (existingTaint && existingTaint.loc !== info.loc) {
 98072          return false;
 98073        }
 98074  
 98075        return true;
 98076      };
 98077  
 98078      // we need to special case when we attempt to hoist to the top level as the `existing` logic
 98079      // wont be hit in the above `while` loop and we could conflict
 98080      if (!isValidPosition(parts)) {
 98081        stepUp = true;
 98082      }
 98083  
 98084      // sometimes we need to step up to a parent module to install ourselves
 98085      while (stepUp && stack.length) {
 98086        info.addHistory(`Stepping up from ${this.implodeKey(parts)}`);
 98087  
 98088        parts.pop(); // remove `name`
 98089        parts.push(stack.pop(), name);
 98090  
 98091        if (isValidPosition(parts)) {
 98092          info.addHistory(`Found valid position ${this.implodeKey(parts)}`);
 98093          stepUp = false;
 98094        }
 98095      }
 98096  
 98097      return { parts, duplicate: false };
 98098    }
 98099  
 98100    /**
 98101     * Hoist all seeded patterns to their highest positions.
 98102     */
 98103  
 98104    hoist(info) {
 98105      const oldKey = info.key,
 98106            rawParts = info.parts;
 98107  
 98108      // remove this item from the `tree` map so we can ignore it
 98109  
 98110      this.tree.delete(oldKey);
 98111  
 98112      var _getNewParts = this.getNewParts(oldKey, info, rawParts.slice());
 98113  
 98114      const parts = _getNewParts.parts,
 98115            duplicate = _getNewParts.duplicate;
 98116  
 98117  
 98118      const newKey = this.implodeKey(parts);
 98119      if (duplicate) {
 98120        info.addHistory(`Satisfied from above by ${newKey}`);
 98121        this.declareRename(info, rawParts, parts);
 98122        this.updateHoistHistory(this.nohoistResolver._originalPath(info), this.implodeKey(parts));
 98123        return;
 98124      }
 98125  
 98126      // update to the new key
 98127      if (oldKey === newKey) {
 98128        info.addHistory(`Didn't hoist - see reason above`);
 98129        this.setKey(info, oldKey, rawParts);
 98130        return;
 98131      }
 98132  
 98133      //
 98134      this.declareRename(info, rawParts, parts);
 98135      this.setKey(info, newKey, parts);
 98136    }
 98137  
 98138    /**
 98139     * Declare that a module has been hoisted and update our internal references.
 98140     */
 98141  
 98142    declareRename(info, oldParts, newParts) {
 98143      // go down the tree from our new position reserving our name
 98144      this.taintParents(info, oldParts.slice(0, -1), newParts.length - 1);
 98145    }
 98146  
 98147    /**
 98148     * Crawl upwards through a list of ancestry parts and taint a package name.
 98149     */
 98150  
 98151    taintParents(info, processParts, start) {
 98152      for (let i = start; i < processParts.length; i++) {
 98153        const parts = processParts.slice(0, i).concat(info.pkg.name);
 98154        const key = this.implodeKey(parts);
 98155  
 98156        if (this.taintKey(key, info)) {
 98157          info.addHistory(`Tainted ${key} to prevent collisions`);
 98158        }
 98159      }
 98160    }
 98161  
 98162    updateHoistHistory(fromPath, toKey) {
 98163      const info = this.tree.get(toKey);
 98164      invariant(info, `expect to find hoist-to ${toKey}`);
 98165      info.previousPaths.push(fromPath);
 98166    }
 98167  
 98168    /**
 98169     * Update the key of a module and update our references.
 98170     */
 98171  
 98172    setKey(info, newKey, parts) {
 98173      const oldKey = info.key;
 98174  
 98175      info.key = newKey;
 98176      info.parts = parts;
 98177      this.tree.set(newKey, info);
 98178  
 98179      if (oldKey === newKey) {
 98180        return;
 98181      }
 98182  
 98183      const fromInfo = this.tree.get(newKey);
 98184      invariant(fromInfo, `expect to find hoist-from ${newKey}`);
 98185      info.previousPaths.push(this.nohoistResolver._originalPath(fromInfo));
 98186      info.addHistory(`New position = ${newKey}`);
 98187    }
 98188  
 98189    /**
 98190     * Perform a prepass and if there's multiple versions of the same package, hoist the one with
 98191     * the most dependents to the top.
 98192     */
 98193  
 98194    prepass(patterns) {
 98195      patterns = this.resolver.dedupePatterns(patterns).sort();
 98196  
 98197      const visited = new Map();
 98198  
 98199      const occurences = {};
 98200  
 98201      // visitor to be used inside add() to mark occurences of packages
 98202      const visitAdd = (pkg, ancestry, pattern) => {
 98203        const versions = occurences[pkg.name] = occurences[pkg.name] || {};
 98204        const version = versions[pkg.version] = versions[pkg.version] || {
 98205          occurences: new Set(),
 98206          pattern
 98207        };
 98208  
 98209        if (ancestry.length) {
 98210          version.occurences.add(ancestry[ancestry.length - 1]);
 98211        }
 98212      };
 98213  
 98214      // add an occurring package to the above data structure
 98215      const add = (pattern, ancestry, ancestryPatterns) => {
 98216        const pkg = this.resolver.getStrictResolvedPattern(pattern);
 98217        if (ancestry.indexOf(pkg) >= 0) {
 98218          // prevent recursive dependencies
 98219          return;
 98220        }
 98221  
 98222        let visitedPattern = visited.get(pattern);
 98223  
 98224        if (visitedPattern) {
 98225          // if a package has been visited before, simply increment occurrences of packages
 98226          // like last time this package was visited
 98227          visitedPattern.forEach(visitPkg => {
 98228            visitAdd(visitPkg.pkg, visitPkg.ancestry, visitPkg.pattern);
 98229          });
 98230  
 98231          visitAdd(pkg, ancestry, pattern);
 98232  
 98233          return;
 98234        }
 98235  
 98236        const ref = pkg._reference;
 98237        invariant(ref, 'expected reference');
 98238  
 98239        visitAdd(pkg, ancestry, pattern);
 98240  
 98241        for (var _iterator7 = ref.dependencies, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
 98242          var _ref8;
 98243  
 98244          if (_isArray7) {
 98245            if (_i7 >= _iterator7.length) break;
 98246            _ref8 = _iterator7[_i7++];
 98247          } else {
 98248            _i7 = _iterator7.next();
 98249            if (_i7.done) break;
 98250            _ref8 = _i7.value;
 98251          }
 98252  
 98253          const depPattern = _ref8;
 98254  
 98255          const depAncestry = ancestry.concat(pkg);
 98256          const depAncestryPatterns = ancestryPatterns.concat(depPattern);
 98257          add(depPattern, depAncestry, depAncestryPatterns);
 98258        }
 98259  
 98260        visitedPattern = visited.get(pattern) || [];
 98261        visited.set(pattern, visitedPattern);
 98262        visitedPattern.push({ pkg, ancestry, pattern });
 98263  
 98264        ancestryPatterns.forEach(ancestryPattern => {
 98265          const visitedAncestryPattern = visited.get(ancestryPattern);
 98266          if (visitedAncestryPattern) {
 98267            visitedAncestryPattern.push({ pkg, ancestry, pattern });
 98268          }
 98269        });
 98270      };
 98271  
 98272      // get a list of root package names since we can't hoist other dependencies to these spots!
 98273      const rootPackageNames = new Set();
 98274      for (var _iterator8 = patterns, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {
 98275        var _ref9;
 98276  
 98277        if (_isArray8) {
 98278          if (_i8 >= _iterator8.length) break;
 98279          _ref9 = _iterator8[_i8++];
 98280        } else {
 98281          _i8 = _iterator8.next();
 98282          if (_i8.done) break;
 98283          _ref9 = _i8.value;
 98284        }
 98285  
 98286        const pattern = _ref9;
 98287  
 98288        const pkg = this.resolver.getStrictResolvedPattern(pattern);
 98289        rootPackageNames.add(pkg.name);
 98290        add(pattern, [], []);
 98291      }
 98292  
 98293      for (var _iterator9 = Object.keys(occurences).sort(), _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {
 98294        var _ref10;
 98295  
 98296        if (_isArray9) {
 98297          if (_i9 >= _iterator9.length) break;
 98298          _ref10 = _iterator9[_i9++];
 98299        } else {
 98300          _i9 = _iterator9.next();
 98301          if (_i9.done) break;
 98302          _ref10 = _i9.value;
 98303        }
 98304  
 98305        const packageName = _ref10;
 98306  
 98307        const versionOccurences = occurences[packageName];
 98308        const versions = Object.keys(versionOccurences);
 98309  
 98310        if (versions.length === 1) {
 98311          // only one package type so we'll hoist this to the top anyway
 98312          continue;
 98313        }
 98314  
 98315        if (this.tree.get(packageName)) {
 98316          // a transitive dependency of a previously hoisted dependency exists
 98317          continue;
 98318        }
 98319  
 98320        if (rootPackageNames.has(packageName)) {
 98321          // can't replace top level packages
 98322          continue;
 98323        }
 98324  
 98325        let mostOccurenceCount;
 98326        let mostOccurencePattern;
 98327        for (var _iterator10 = Object.keys(versionOccurences).sort(), _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {
 98328          var _ref11;
 98329  
 98330          if (_isArray10) {
 98331            if (_i10 >= _iterator10.length) break;
 98332            _ref11 = _iterator10[_i10++];
 98333          } else {
 98334            _i10 = _iterator10.next();
 98335            if (_i10.done) break;
 98336            _ref11 = _i10.value;
 98337          }
 98338  
 98339          const version = _ref11;
 98340          var _versionOccurences$ve = versionOccurences[version];
 98341          const occurences = _versionOccurences$ve.occurences,
 98342                pattern = _versionOccurences$ve.pattern;
 98343  
 98344          const occurenceCount = occurences.size;
 98345  
 98346          if (!mostOccurenceCount || occurenceCount > mostOccurenceCount) {
 98347            mostOccurenceCount = occurenceCount;
 98348            mostOccurencePattern = pattern;
 98349          }
 98350        }
 98351        invariant(mostOccurencePattern, 'expected most occurring pattern');
 98352        invariant(mostOccurenceCount, 'expected most occurring count');
 98353  
 98354        // only hoist this module if it occured more than once
 98355        if (mostOccurenceCount > 1) {
 98356          this._seed(mostOccurencePattern, { isDirectRequire: false });
 98357        }
 98358      }
 98359    }
 98360  
 98361    markShallowWorkspaceEntries() {
 98362      const targetWorkspace = this.config.focusedWorkspaceName;
 98363      const targetHoistManifest = this.tree.get(targetWorkspace);
 98364      invariant(targetHoistManifest, `targetHoistManifest from ${targetWorkspace} missing`);
 98365  
 98366      //dedupe with a set
 98367      const dependentWorkspaces = Array.from(new Set(this._getDependentWorkspaces(targetHoistManifest)));
 98368  
 98369      const entries = Array.from(this.tree);
 98370      entries.forEach(([key, info]) => {
 98371        const splitPath = key.split('#');
 98372  
 98373        //mark the workspace and any un-hoisted dependencies it has for shallow installation
 98374        const isShallowDependency = dependentWorkspaces.some(w => {
 98375          if (splitPath[0] !== w) {
 98376            //entry is not related to the workspace
 98377            return false;
 98378          }
 98379          if (!splitPath[1]) {
 98380            //entry is the workspace
 98381            return true;
 98382          }
 98383          //don't bother marking dev dependencies or nohoist packages for shallow installation
 98384          const treeEntry = this.tree.get(w);
 98385          invariant(treeEntry, 'treeEntry is not defined for ' + w);
 98386          const pkg = treeEntry.pkg;
 98387          return !info.isNohoist && (!pkg.devDependencies || !(splitPath[1] in pkg.devDependencies));
 98388        });
 98389  
 98390        if (isShallowDependency) {
 98391          info.shallowPaths = [null];
 98392          return;
 98393        }
 98394  
 98395        //if package foo is at TARGET_WORKSPACE/node_modules/foo, the hoisted version of foo
 98396        //should be installed under each shallow workspace that uses it
 98397        //(unless that workspace has its own version of foo, in which case that should be installed)
 98398        if (splitPath.length !== 2 || splitPath[0] !== targetWorkspace) {
 98399          return;
 98400        }
 98401        const unhoistedDependency = splitPath[1];
 98402        const unhoistedInfo = this.tree.get(unhoistedDependency);
 98403        if (!unhoistedInfo) {
 98404          return;
 98405        }
 98406        dependentWorkspaces.forEach(w => {
 98407          if (this._packageDependsOnHoistedPackage(w, unhoistedDependency, false)) {
 98408            unhoistedInfo.shallowPaths.push(w);
 98409          }
 98410        });
 98411      });
 98412    }
 98413  
 98414    _getDependentWorkspaces(parent, allowDevDeps = true, alreadySeen = new Set()) {
 98415      const parentName = parent.pkg.name;
 98416      if (alreadySeen.has(parentName)) {
 98417        return [];
 98418      }
 98419  
 98420      alreadySeen.add(parentName);
 98421      invariant(this.workspaceLayout, 'missing workspaceLayout');
 98422      var _workspaceLayout = this.workspaceLayout;
 98423      const virtualManifestName = _workspaceLayout.virtualManifestName,
 98424            workspaces = _workspaceLayout.workspaces;
 98425  
 98426  
 98427      const directDependencies = [];
 98428      const ignored = [];
 98429      Object.keys(workspaces).forEach(workspace => {
 98430        if (alreadySeen.has(workspace) || workspace === virtualManifestName) {
 98431          return;
 98432        }
 98433  
 98434        //skip a workspace if a different version of it is already being installed under the parent workspace
 98435        let info = this.tree.get(`${parentName}#${workspace}`);
 98436        if (info) {
 98437          const workspaceVersion = workspaces[workspace].manifest.version;
 98438          if (info.isNohoist && info.originalParentPath.startsWith(`/${WS_ROOT_ALIAS}/${parentName}`) && info.pkg.version === workspaceVersion) {
 98439            //nohoist installations are exceptions
 98440            directDependencies.push(info.key);
 98441          } else {
 98442            ignored.push(workspace);
 98443          }
 98444          return;
 98445        }
 98446  
 98447        const searchPath = `/${WS_ROOT_ALIAS}/${parentName}`;
 98448        info = this.tree.get(workspace);
 98449        invariant(info, 'missing workspace tree entry ' + workspace);
 98450        if (!info.previousPaths.some(p => p.startsWith(searchPath))) {
 98451          return;
 98452        }
 98453        if (allowDevDeps || !parent.pkg.devDependencies || !(workspace in parent.pkg.devDependencies)) {
 98454          directDependencies.push(workspace);
 98455        }
 98456      });
 98457  
 98458      let nested = directDependencies.map(d => {
 98459        const dependencyEntry = this.tree.get(d);
 98460        invariant(dependencyEntry, 'missing dependencyEntry ' + d);
 98461        return this._getDependentWorkspaces(dependencyEntry, false, alreadySeen);
 98462      });
 98463      nested = [].concat.apply([], nested); //flatten
 98464  
 98465      const directDependencyNames = directDependencies.map(d => d.split('#').slice(-1)[0]);
 98466  
 98467      return directDependencyNames.concat(nested).filter(w => ignored.indexOf(w) === -1);
 98468    }
 98469  
 98470    _packageDependsOnHoistedPackage(p, hoisted, checkDevDeps = true, checked = new Set()) {
 98471      //don't check the same package more than once, and ignore any package that has its own version of hoisted
 98472      if (checked.has(p) || this.tree.has(`${p}#${hoisted}`)) {
 98473        return false;
 98474      }
 98475      checked.add(p);
 98476      const info = this.tree.get(p);
 98477      if (!info) {
 98478        return false;
 98479      }
 98480  
 98481      const pkg = info.pkg;
 98482      if (!pkg) {
 98483        return false;
 98484      }
 98485  
 98486      let deps = [];
 98487      if (pkg.dependencies) {
 98488        deps = deps.concat(Object.keys(pkg.dependencies));
 98489      }
 98490      if (checkDevDeps && pkg.devDependencies) {
 98491        deps = deps.concat(Object.keys(pkg.devDependencies));
 98492      }
 98493  
 98494      if (deps.indexOf(hoisted) !== -1) {
 98495        return true;
 98496      }
 98497      return deps.some(dep => this._packageDependsOnHoistedPackage(dep, hoisted, false, checked));
 98498    }
 98499  
 98500    /**
 98501     * Produce a flattened list of module locations and manifests.
 98502     */
 98503  
 98504    init() {
 98505      const flatTree = [];
 98506  
 98507      //
 98508      for (var _iterator11 = this.tree.entries(), _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) {
 98509        var _ref13;
 98510  
 98511        if (_isArray11) {
 98512          if (_i11 >= _iterator11.length) break;
 98513          _ref13 = _iterator11[_i11++];
 98514        } else {
 98515          _i11 = _iterator11.next();
 98516          if (_i11.done) break;
 98517          _ref13 = _i11.value;
 98518        }
 98519  
 98520        const _ref12 = _ref13;
 98521        const key = _ref12[0];
 98522        const info = _ref12[1];
 98523  
 98524        // decompress the location and push it to the flat tree. this path could be made
 98525        const parts = [];
 98526        const keyParts = key.split('#');
 98527        const isWorkspaceEntry = this.workspaceLayout && keyParts[0] === this.workspaceLayout.virtualManifestName;
 98528  
 98529        // Don't add the virtual manifest (keyParts.length === 1)
 98530        // or ws childs which were not hoisted to the root (keyParts.length === 2).
 98531        // If a ws child was hoisted its key would not contain the virtual manifest name
 98532        if (isWorkspaceEntry && keyParts.length <= 2) {
 98533          continue;
 98534        }
 98535  
 98536        for (let i = 0; i < keyParts.length; i++) {
 98537          const key = keyParts.slice(0, i + 1).join('#');
 98538          const hoisted = this.tree.get(key);
 98539          invariant(hoisted, `expected hoisted manifest for "${key}"`);
 98540          parts.push(this.config.getFolder(hoisted.pkg));
 98541          parts.push(keyParts[i]);
 98542        }
 98543  
 98544        // Check if the destination is pointing to a sub folder of the virtualManifestName
 98545        // e.g. _project_/node_modules/workspace-aggregator-123456/node_modules/workspaceChild/node_modules/dependency
 98546        // This probably happened because the hoister was not able to hoist the workspace child to the root
 98547        // So we have to change the folder to the workspace package location
 98548        if (this.workspaceLayout && isWorkspaceEntry) {
 98549          const wspPkg = this.workspaceLayout.workspaces[keyParts[1]];
 98550          invariant(wspPkg, `expected workspace package to exist for "${keyParts[1]}"`);
 98551          parts.splice(0, 4, wspPkg.loc);
 98552        } else {
 98553          if (this.config.modulesFolder) {
 98554            // remove the first part which will be the folder name and replace it with a
 98555            // hardcoded modules folder
 98556            parts.splice(0, 1, this.config.modulesFolder);
 98557          } else {
 98558            // first part will be the registry-specific module folder
 98559            parts.splice(0, 0, this.config.lockfileFolder);
 98560          }
 98561        }
 98562  
 98563        const shallowLocs = [];
 98564        info.shallowPaths.forEach(shallowPath => {
 98565          const shallowCopyParts = parts.slice();
 98566          shallowCopyParts[0] = this.config.cwd;
 98567          if (this.config.modulesFolder) {
 98568            //add back the module folder name for the shallow installation
 98569            const treeEntry = this.tree.get(keyParts[0]);
 98570            invariant(treeEntry, 'expected treeEntry for ' + keyParts[0]);
 98571            const moduleFolderName = this.config.getFolder(treeEntry.pkg);
 98572            shallowCopyParts.splice(1, 0, moduleFolderName);
 98573          }
 98574  
 98575          if (shallowPath) {
 98576            const targetWorkspace = this.config.focusedWorkspaceName;
 98577            const treeEntry = this.tree.get(`${targetWorkspace}#${shallowPath}`) || this.tree.get(shallowPath);
 98578            invariant(treeEntry, 'expected treeEntry for ' + shallowPath);
 98579            const moduleFolderName = this.config.getFolder(treeEntry.pkg);
 98580            shallowCopyParts.splice(1, 0, moduleFolderName, shallowPath);
 98581          }
 98582          shallowLocs.push(path.join(...shallowCopyParts));
 98583        });
 98584  
 98585        const loc = path.join(...parts);
 98586        flatTree.push([loc, info]);
 98587        shallowLocs.forEach(shallowLoc => {
 98588          const newManifest = (0, (_extends2 || _load_extends()).default)({}, info, { isShallow: true });
 98589          flatTree.push([shallowLoc, newManifest]);
 98590        });
 98591      }
 98592  
 98593      // remove ignored modules from the tree
 98594      const visibleFlatTree = [];
 98595      for (var _iterator12 = flatTree, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) {
 98596        var _ref15;
 98597  
 98598        if (_isArray12) {
 98599          if (_i12 >= _iterator12.length) break;
 98600          _ref15 = _iterator12[_i12++];
 98601        } else {
 98602          _i12 = _iterator12.next();
 98603          if (_i12.done) break;
 98604          _ref15 = _i12.value;
 98605        }
 98606  
 98607        const _ref14 = _ref15;
 98608        const loc = _ref14[0];
 98609        const info = _ref14[1];
 98610  
 98611        const ref = info.pkg._reference;
 98612        invariant(ref, 'expected reference');
 98613        if (!info.isRequired) {
 98614          info.addHistory('Deleted as this module was ignored');
 98615        } else {
 98616          visibleFlatTree.push([loc, info]);
 98617        }
 98618      }
 98619      return visibleFlatTree;
 98620    }
 98621  }
 98622  
 98623  exports.default = PackageHoister;
 98624  const WS_ROOT_ALIAS = '_project_';
 98625  class NohoistResolver {
 98626    constructor(config, resolver) {
 98627      this.initNohoist = (info, parent) => {
 98628        let parentNohoistList;
 98629        let originalParentPath = info.originalParentPath;
 98630  
 98631        if (parent) {
 98632          parentNohoistList = parent.nohoistList;
 98633          originalParentPath = this._originalPath(parent);
 98634        } else {
 98635          invariant(this._isTopPackage(info), `${info.key} doesn't have parent nor a top package`);
 98636          if (info.pkg.name !== this._wsRootPackageName) {
 98637            parentNohoistList = this._wsRootNohoistList;
 98638            originalParentPath = this._wsRootPackageName || '';
 98639          }
 98640        }
 98641  
 98642        info.originalParentPath = originalParentPath;
 98643        let nohoistList = this._extractNohoistList(info.pkg, this._originalPath(info)) || [];
 98644        if (parentNohoistList) {
 98645          nohoistList = nohoistList.concat(parentNohoistList);
 98646        }
 98647        info.nohoistList = nohoistList.length > 0 ? nohoistList : null;
 98648        info.isNohoist = this._isNohoist(info);
 98649      };
 98650  
 98651      this.highestHoistingPoint = info => {
 98652        return info.isNohoist && info.parts.length > 1 ? 1 : null;
 98653      };
 98654  
 98655      this._isNohoist = info => {
 98656        if (this._isTopPackage(info)) {
 98657          return false;
 98658        }
 98659        if (info.nohoistList && info.nohoistList.length > 0 && (_micromatch || _load_micromatch()).default.any(this._originalPath(info), info.nohoistList)) {
 98660          return true;
 98661        }
 98662        if (this._config.plugnplayEnabled) {
 98663          return true;
 98664        }
 98665        return false;
 98666      };
 98667  
 98668      this._isRootPackage = pkg => {
 98669        return pkg.name === this._wsRootPackageName;
 98670      };
 98671  
 98672      this._originalPath = info => {
 98673        return this._makePath(info.originalParentPath, info.pkg.name);
 98674      };
 98675  
 98676      this._isTopPackage = info => {
 98677        const parentParts = info.parts.slice(0, -1);
 98678        const result = !parentParts || parentParts.length <= 0 || parentParts.length === 1 && parentParts[0] === this._wsRootPackageName;
 98679        return result;
 98680      };
 98681  
 98682      this._isLink = info => {
 98683        return info.pkg._remote != null && LINK_TYPES.has(info.pkg._remote.type);
 98684      };
 98685  
 98686      this._extractNohoistList = (pkg, pathPrefix) => {
 98687        let nohoistList;
 98688        const ws = this._config.getWorkspaces(pkg);
 98689  
 98690        if (ws && ws.nohoist) {
 98691          nohoistList = ws.nohoist.map(p => this._makePath(pathPrefix, p));
 98692        }
 98693        return nohoistList;
 98694      };
 98695  
 98696      this._resolver = resolver;
 98697      this._config = config;
 98698      if (resolver.workspaceLayout) {
 98699        this._wsRootPackageName = resolver.workspaceLayout.virtualManifestName;
 98700  
 98701        var _resolver$workspaceLa = resolver.workspaceLayout.getWorkspaceManifest(this._wsRootPackageName);
 98702  
 98703        const manifest = _resolver$workspaceLa.manifest;
 98704  
 98705        this._wsRootNohoistList = this._extractNohoistList(manifest, manifest.name);
 98706      }
 98707    }
 98708  
 98709    /**
 98710     * examine the top level packages to find the root package
 98711     */
 98712  
 98713  
 98714    /**
 98715     * find the highest hoisting point for the given HoistManifest.
 98716     * algorithm: a nohoist package should never be hoisted beyond the top of its branch, i.e.
 98717     * the first element of its parts. Therefore the highest possible hoisting index is 1,
 98718     * unless the package has only 1 part (itself), in such case returns null just like any hoisted package
 98719     *
 98720     */
 98721  
 98722    // private functions
 98723  
 98724    _makePath(...args) {
 98725      const parts = args.map(s => s === this._wsRootPackageName ? WS_ROOT_ALIAS : s);
 98726      const result = parts.join('/');
 98727      return result[0] === '/' ? result : '/' + result;
 98728    }
 98729  
 98730    // extract nohoist from package.json then prefix them with branch path
 98731    // so we can matched against the branch tree ("originalPath") later
 98732  }
 98733  
 98734  exports.NohoistResolver = NohoistResolver;
 98735  
 98736  /***/ }),
 98737  /* 525 */
 98738  /***/ (function(module, exports, __webpack_require__) {
 98739  
 98740  "use strict";
 98741  
 98742  
 98743  Object.defineProperty(exports, "__esModule", {
 98744    value: true
 98745  });
 98746  
 98747  var _asyncToGenerator2;
 98748  
 98749  function _load_asyncToGenerator() {
 98750    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 98751  }
 98752  
 98753  var _config;
 98754  
 98755  function _load_config() {
 98756    return _config = _interopRequireDefault(__webpack_require__(162));
 98757  }
 98758  
 98759  var _executeLifecycleScript;
 98760  
 98761  function _load_executeLifecycleScript() {
 98762    return _executeLifecycleScript = _interopRequireDefault(__webpack_require__(111));
 98763  }
 98764  
 98765  var _crypto;
 98766  
 98767  function _load_crypto() {
 98768    return _crypto = _interopRequireWildcard(__webpack_require__(168));
 98769  }
 98770  
 98771  var _fs;
 98772  
 98773  function _load_fs() {
 98774    return _fs = _interopRequireWildcard(__webpack_require__(5));
 98775  }
 98776  
 98777  var _packageNameUtils;
 98778  
 98779  function _load_packageNameUtils() {
 98780    return _packageNameUtils = __webpack_require__(220);
 98781  }
 98782  
 98783  var _pack;
 98784  
 98785  function _load_pack() {
 98786    return _pack = __webpack_require__(166);
 98787  }
 98788  
 98789  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 98790  
 98791  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 98792  
 98793  const fs = __webpack_require__(4);
 98794  
 98795  const invariant = __webpack_require__(9);
 98796  const path = __webpack_require__(0);
 98797  
 98798  const INSTALL_STAGES = ['preinstall', 'install', 'postinstall'];
 98799  
 98800  class PackageInstallScripts {
 98801    constructor(config, resolver, force) {
 98802      this.installed = 0;
 98803      this.resolver = resolver;
 98804      this.reporter = config.reporter;
 98805      this.config = config;
 98806      this.force = force;
 98807      this.artifacts = {};
 98808    }
 98809  
 98810    setForce(force) {
 98811      this.force = force;
 98812    }
 98813  
 98814    setArtifacts(artifacts) {
 98815      this.artifacts = artifacts;
 98816    }
 98817  
 98818    getArtifacts() {
 98819      return this.artifacts;
 98820    }
 98821  
 98822    getInstallCommands(pkg) {
 98823      const scripts = pkg.scripts;
 98824      if (scripts) {
 98825        const cmds = [];
 98826        for (var _iterator = INSTALL_STAGES, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 98827          var _ref;
 98828  
 98829          if (_isArray) {
 98830            if (_i >= _iterator.length) break;
 98831            _ref = _iterator[_i++];
 98832          } else {
 98833            _i = _iterator.next();
 98834            if (_i.done) break;
 98835            _ref = _i.value;
 98836          }
 98837  
 98838          const stage = _ref;
 98839  
 98840          const cmd = scripts[stage];
 98841          if (cmd) {
 98842            cmds.push([stage, cmd]);
 98843          }
 98844        }
 98845        return cmds;
 98846      } else {
 98847        return [];
 98848      }
 98849    }
 98850  
 98851    walk(loc) {
 98852      var _this = this;
 98853  
 98854      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 98855        const files = yield (_fs || _load_fs()).walk(loc, null, new Set(_this.config.registryFolders));
 98856        const mtimes = new Map();
 98857        for (var _iterator2 = files, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 98858          var _ref2;
 98859  
 98860          if (_isArray2) {
 98861            if (_i2 >= _iterator2.length) break;
 98862            _ref2 = _iterator2[_i2++];
 98863          } else {
 98864            _i2 = _iterator2.next();
 98865            if (_i2.done) break;
 98866            _ref2 = _i2.value;
 98867          }
 98868  
 98869          const file = _ref2;
 98870  
 98871          mtimes.set(file.relative, file.mtime);
 98872        }
 98873        return mtimes;
 98874      })();
 98875    }
 98876  
 98877    saveBuildArtifacts(loc, pkg, beforeFiles, spinner) {
 98878      var _this2 = this;
 98879  
 98880      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 98881        const afterFiles = yield _this2.walk(loc);
 98882  
 98883        // work out what files have been created/modified
 98884        const buildArtifacts = [];
 98885        for (var _iterator3 = afterFiles, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
 98886          var _ref4;
 98887  
 98888          if (_isArray3) {
 98889            if (_i3 >= _iterator3.length) break;
 98890            _ref4 = _iterator3[_i3++];
 98891          } else {
 98892            _i3 = _iterator3.next();
 98893            if (_i3.done) break;
 98894            _ref4 = _i3.value;
 98895          }
 98896  
 98897          const _ref3 = _ref4;
 98898          const file = _ref3[0];
 98899          const mtime = _ref3[1];
 98900  
 98901          if (!beforeFiles.has(file) || beforeFiles.get(file) !== mtime) {
 98902            buildArtifacts.push(file);
 98903          }
 98904        }
 98905  
 98906        if (!buildArtifacts.length) {
 98907          // nothing else to do here since we have no build artifacts
 98908          return;
 98909        }
 98910  
 98911        // set build artifacts
 98912        const ref = pkg._reference;
 98913        invariant(ref, 'expected reference');
 98914        _this2.artifacts[`${pkg.name}@${pkg.version}`] = buildArtifacts;
 98915      })();
 98916    }
 98917  
 98918    install(cmds, pkg, spinner) {
 98919      var _this3 = this;
 98920  
 98921      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 98922        const ref = pkg._reference;
 98923        invariant(ref, 'expected reference');
 98924        const locs = ref.locations;
 98925  
 98926        let updateProgress;
 98927  
 98928        if (cmds.length > 0) {
 98929          updateProgress = function updateProgress(data) {
 98930            const dataStr = data.toString() // turn buffer into string
 98931            .trim(); // trim whitespace
 98932  
 98933            invariant(spinner && spinner.tick, 'We should have spinner and its ticker here');
 98934            if (dataStr) {
 98935              spinner.tick(dataStr
 98936              // Only get the last line
 98937              .substr(dataStr.lastIndexOf('\n') + 1)
 98938              // change tabs to spaces as they can interfere with the console
 98939              .replace(/\t/g, ' '));
 98940            }
 98941          };
 98942        }
 98943  
 98944        try {
 98945          for (var _iterator4 = cmds, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
 98946            var _ref6;
 98947  
 98948            if (_isArray4) {
 98949              if (_i4 >= _iterator4.length) break;
 98950              _ref6 = _iterator4[_i4++];
 98951            } else {
 98952              _i4 = _iterator4.next();
 98953              if (_i4.done) break;
 98954              _ref6 = _i4.value;
 98955            }
 98956  
 98957            const _ref5 = _ref6;
 98958            const stage = _ref5[0];
 98959            const cmd = _ref5[1];
 98960  
 98961            yield Promise.all(locs.map((() => {
 98962              var _ref7 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) {
 98963                var _ref8 = yield (0, (_executeLifecycleScript || _load_executeLifecycleScript()).default)({
 98964                  stage,
 98965                  config: _this3.config,
 98966                  cwd: loc,
 98967                  cmd,
 98968                  isInteractive: false,
 98969                  updateProgress
 98970                });
 98971  
 98972                const stdout = _ref8.stdout;
 98973  
 98974                _this3.reporter.verbose(stdout);
 98975              });
 98976  
 98977              return function (_x) {
 98978                return _ref7.apply(this, arguments);
 98979              };
 98980            })()));
 98981          }
 98982        } catch (err) {
 98983          err.message = `${locs.join(', ')}: ${err.message}`;
 98984  
 98985          invariant(ref, 'expected reference');
 98986  
 98987          if (ref.optional) {
 98988            ref.ignore = true;
 98989            ref.incompatible = true;
 98990            _this3.reporter.warn(_this3.reporter.lang('optionalModuleScriptFail', err.message));
 98991            _this3.reporter.info(_this3.reporter.lang('optionalModuleFail'));
 98992  
 98993            // Cleanup node_modules
 98994            try {
 98995              yield Promise.all(locs.map((() => {
 98996                var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) {
 98997                  yield (_fs || _load_fs()).unlink(loc);
 98998                });
 98999  
 99000                return function (_x2) {
 99001                  return _ref9.apply(this, arguments);
 99002                };
 99003              })()));
 99004            } catch (e) {
 99005              _this3.reporter.error(_this3.reporter.lang('optionalModuleCleanupFail', e.message));
 99006            }
 99007          } else {
 99008            throw err;
 99009          }
 99010        }
 99011      })();
 99012    }
 99013  
 99014    packageCanBeInstalled(pkg) {
 99015      const cmds = this.getInstallCommands(pkg);
 99016      if (!cmds.length) {
 99017        return false;
 99018      }
 99019      if (this.config.packBuiltPackages && pkg.prebuiltVariants) {
 99020        for (const variant in pkg.prebuiltVariants) {
 99021          if (pkg._remote && pkg._remote.reference && pkg._remote.reference.includes(variant)) {
 99022            return false;
 99023          }
 99024        }
 99025      }
 99026      const ref = pkg._reference;
 99027      invariant(ref, 'Missing package reference');
 99028      if (!ref.fresh && !this.force) {
 99029        // this package hasn't been touched
 99030        return false;
 99031      }
 99032  
 99033      // Don't run lifecycle scripts for hoisted packages
 99034      if (!ref.locations.length) {
 99035        return false;
 99036      }
 99037  
 99038      // we haven't actually written this module out
 99039      if (ref.ignore) {
 99040        return false;
 99041      }
 99042      return true;
 99043    }
 99044  
 99045    runCommand(spinner, pkg) {
 99046      var _this4 = this;
 99047  
 99048      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 99049        const cmds = _this4.getInstallCommands(pkg);
 99050        spinner.setPrefix(++_this4.installed, pkg.name);
 99051        yield _this4.install(cmds, pkg, spinner);
 99052      })();
 99053    }
 99054  
 99055    // detect if there is a circularDependency in the dependency tree
 99056    detectCircularDependencies(root, seenManifests, pkg) {
 99057      const ref = pkg._reference;
 99058      invariant(ref, 'expected reference');
 99059  
 99060      const deps = ref.dependencies;
 99061      for (var _iterator5 = deps, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
 99062        var _ref10;
 99063  
 99064        if (_isArray5) {
 99065          if (_i5 >= _iterator5.length) break;
 99066          _ref10 = _iterator5[_i5++];
 99067        } else {
 99068          _i5 = _iterator5.next();
 99069          if (_i5.done) break;
 99070          _ref10 = _i5.value;
 99071        }
 99072  
 99073        const dep = _ref10;
 99074  
 99075        const pkgDep = this.resolver.getStrictResolvedPattern(dep);
 99076        if (seenManifests.has(pkgDep)) {
 99077          // there is a cycle but not with the root
 99078          continue;
 99079        }
 99080        seenManifests.add(pkgDep);
 99081        // found a dependency pointing to root
 99082        if (pkgDep == root) {
 99083          return true;
 99084        }
 99085        if (this.detectCircularDependencies(root, seenManifests, pkgDep)) {
 99086          return true;
 99087        }
 99088      }
 99089      return false;
 99090    }
 99091  
 99092    // find the next package to be installed
 99093    findInstallablePackage(workQueue, installed) {
 99094      for (var _iterator6 = workQueue, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
 99095        var _ref11;
 99096  
 99097        if (_isArray6) {
 99098          if (_i6 >= _iterator6.length) break;
 99099          _ref11 = _iterator6[_i6++];
 99100        } else {
 99101          _i6 = _iterator6.next();
 99102          if (_i6.done) break;
 99103          _ref11 = _i6.value;
 99104        }
 99105  
 99106        const pkg = _ref11;
 99107  
 99108        const ref = pkg._reference;
 99109        invariant(ref, 'expected reference');
 99110        const deps = ref.dependencies;
 99111  
 99112        let dependenciesFulfilled = true;
 99113        for (var _iterator7 = deps, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
 99114          var _ref12;
 99115  
 99116          if (_isArray7) {
 99117            if (_i7 >= _iterator7.length) break;
 99118            _ref12 = _iterator7[_i7++];
 99119          } else {
 99120            _i7 = _iterator7.next();
 99121            if (_i7.done) break;
 99122            _ref12 = _i7.value;
 99123          }
 99124  
 99125          const dep = _ref12;
 99126  
 99127          const pkgDep = this.resolver.getStrictResolvedPattern(dep);
 99128          if (!installed.has(pkgDep)) {
 99129            dependenciesFulfilled = false;
 99130            break;
 99131          }
 99132        }
 99133  
 99134        // all dependencies are installed
 99135        if (dependenciesFulfilled) {
 99136          return pkg;
 99137        }
 99138  
 99139        // detect circular dependency, mark this pkg as installable to break the circle
 99140        if (this.detectCircularDependencies(pkg, new Set(), pkg)) {
 99141          return pkg;
 99142        }
 99143      }
 99144      return null;
 99145    }
 99146  
 99147    worker(spinner, workQueue, installed, waitQueue) {
 99148      var _this5 = this;
 99149  
 99150      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 99151        while (workQueue.size > 0) {
 99152          // find a installable package
 99153          const pkg = _this5.findInstallablePackage(workQueue, installed);
 99154  
 99155          // can't find a package to install, register into waitQueue
 99156          if (pkg == null) {
 99157            spinner.clear();
 99158            yield new Promise(function (resolve) {
 99159              return waitQueue.add(resolve);
 99160            });
 99161            continue;
 99162          }
 99163  
 99164          // found a package to install
 99165          workQueue.delete(pkg);
 99166          if (_this5.packageCanBeInstalled(pkg)) {
 99167            yield _this5.runCommand(spinner, pkg);
 99168          }
 99169          installed.add(pkg);
 99170          for (var _iterator8 = waitQueue, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {
 99171            var _ref13;
 99172  
 99173            if (_isArray8) {
 99174              if (_i8 >= _iterator8.length) break;
 99175              _ref13 = _iterator8[_i8++];
 99176            } else {
 99177              _i8 = _iterator8.next();
 99178              if (_i8.done) break;
 99179              _ref13 = _i8.value;
 99180            }
 99181  
 99182            const workerResolve = _ref13;
 99183  
 99184            workerResolve();
 99185          }
 99186          waitQueue.clear();
 99187        }
 99188      })();
 99189    }
 99190  
 99191    init(seedPatterns) {
 99192      var _this6 = this;
 99193  
 99194      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 99195        const workQueue = new Set();
 99196        const installed = new Set();
 99197        const pkgs = _this6.resolver.getTopologicalManifests(seedPatterns);
 99198        let installablePkgs = 0;
 99199        // A map to keep track of what files exist before installation
 99200        const beforeFilesMap = new Map();
 99201        for (var _iterator9 = pkgs, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {
 99202          var _ref14;
 99203  
 99204          if (_isArray9) {
 99205            if (_i9 >= _iterator9.length) break;
 99206            _ref14 = _iterator9[_i9++];
 99207          } else {
 99208            _i9 = _iterator9.next();
 99209            if (_i9.done) break;
 99210            _ref14 = _i9.value;
 99211          }
 99212  
 99213          const pkg = _ref14;
 99214  
 99215          if (_this6.packageCanBeInstalled(pkg)) {
 99216            const ref = pkg._reference;
 99217            invariant(ref, 'expected reference');
 99218            yield Promise.all(ref.locations.map((() => {
 99219              var _ref19 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) {
 99220                beforeFilesMap.set(loc, (yield _this6.walk(loc)));
 99221                installablePkgs += 1;
 99222              });
 99223  
 99224              return function (_x6) {
 99225                return _ref19.apply(this, arguments);
 99226              };
 99227            })()));
 99228          }
 99229          workQueue.add(pkg);
 99230        }
 99231  
 99232        const set = _this6.reporter.activitySet(installablePkgs, Math.min(installablePkgs, _this6.config.childConcurrency));
 99233  
 99234        // waitQueue acts like a semaphore to allow workers to register to be notified
 99235        // when there are more work added to the work queue
 99236        const waitQueue = new Set();
 99237        yield Promise.all(set.spinners.map(function (spinner) {
 99238          return _this6.worker(spinner, workQueue, installed, waitQueue);
 99239        }));
 99240        // generate built package as prebuilt one for offline mirror
 99241        const offlineMirrorPath = _this6.config.getOfflineMirrorPath();
 99242        if (_this6.config.packBuiltPackages && offlineMirrorPath) {
 99243          for (var _iterator10 = pkgs, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {
 99244            var _ref15;
 99245  
 99246            if (_isArray10) {
 99247              if (_i10 >= _iterator10.length) break;
 99248              _ref15 = _iterator10[_i10++];
 99249            } else {
 99250              _i10 = _iterator10.next();
 99251              if (_i10.done) break;
 99252              _ref15 = _i10.value;
 99253            }
 99254  
 99255            const pkg = _ref15;
 99256  
 99257            if (_this6.packageCanBeInstalled(pkg)) {
 99258              let prebuiltPath = path.join(offlineMirrorPath, 'prebuilt');
 99259              yield (_fs || _load_fs()).mkdirp(prebuiltPath);
 99260              const prebuiltFilename = (0, (_packageNameUtils || _load_packageNameUtils()).getPlatformSpecificPackageFilename)(pkg);
 99261              prebuiltPath = path.join(prebuiltPath, prebuiltFilename + '.tgz');
 99262              const ref = pkg._reference;
 99263              invariant(ref, 'expected reference');
 99264              const builtPackagePaths = ref.locations;
 99265  
 99266              yield Promise.all(builtPackagePaths.map((() => {
 99267                var _ref16 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (builtPackagePath) {
 99268                  // don't use pack command, we want to avoid the file filters logic
 99269                  const stream = yield (0, (_pack || _load_pack()).packWithIgnoreAndHeaders)(builtPackagePath);
 99270  
 99271                  const hash = yield new Promise(function (resolve, reject) {
 99272                    const validateStream = new (_crypto || _load_crypto()).HashStream();
 99273                    stream.pipe(validateStream).pipe(fs.createWriteStream(prebuiltPath)).on('error', reject).on('close', function () {
 99274                      return resolve(validateStream.getHash());
 99275                    });
 99276                  });
 99277                  pkg.prebuiltVariants = pkg.prebuiltVariants || {};
 99278                  pkg.prebuiltVariants[prebuiltFilename] = hash;
 99279                });
 99280  
 99281                return function (_x3) {
 99282                  return _ref16.apply(this, arguments);
 99283                };
 99284              })()));
 99285            }
 99286          }
 99287        } else {
 99288          // cache all build artifacts
 99289          for (var _iterator11 = pkgs, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) {
 99290            var _ref17;
 99291  
 99292            if (_isArray11) {
 99293              if (_i11 >= _iterator11.length) break;
 99294              _ref17 = _iterator11[_i11++];
 99295            } else {
 99296              _i11 = _iterator11.next();
 99297              if (_i11.done) break;
 99298              _ref17 = _i11.value;
 99299            }
 99300  
 99301            const pkg = _ref17;
 99302  
 99303            if (_this6.packageCanBeInstalled(pkg)) {
 99304              const ref = pkg._reference;
 99305              invariant(ref, 'expected reference');
 99306              const beforeFiles = ref.locations.map(function (loc) {
 99307                return beforeFilesMap.get(loc);
 99308              });
 99309              yield Promise.all(beforeFiles.map((() => {
 99310                var _ref18 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (b, index) {
 99311                  invariant(b, 'files before installation should always be recorded');
 99312                  yield _this6.saveBuildArtifacts(ref.locations[index], pkg, b, set.spinners[0]);
 99313                });
 99314  
 99315                return function (_x4, _x5) {
 99316                  return _ref18.apply(this, arguments);
 99317                };
 99318              })()));
 99319            }
 99320          }
 99321        }
 99322  
 99323        set.end();
 99324      })();
 99325    }
 99326  }
 99327  exports.default = PackageInstallScripts;
 99328  
 99329  /***/ }),
 99330  /* 526 */
 99331  /***/ (function(module, exports, __webpack_require__) {
 99332  
 99333  "use strict";
 99334  
 99335  
 99336  Object.defineProperty(exports, "__esModule", {
 99337    value: true
 99338  });
 99339  
 99340  var _asyncToGenerator2;
 99341  
 99342  function _load_asyncToGenerator() {
 99343    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 99344  }
 99345  
 99346  var _extends2;
 99347  
 99348  function _load_extends() {
 99349    return _extends2 = _interopRequireDefault(__webpack_require__(20));
 99350  }
 99351  
 99352  var _misc;
 99353  
 99354  function _load_misc() {
 99355    return _misc = __webpack_require__(18);
 99356  }
 99357  
 99358  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 99359  
 99360  const objectPath = __webpack_require__(304);
 99361  
 99362  const path = __webpack_require__(0);
 99363  
 99364  class BaseRegistry {
 99365    constructor(cwd, registries, requestManager, reporter, enableDefaultRc, extraneousRcFiles) {
 99366      this.reporter = reporter;
 99367      this.requestManager = requestManager;
 99368      this.registries = registries;
 99369      this.config = {};
 99370      this.folder = '';
 99371      this.token = '';
 99372      this.loc = '';
 99373      this.cwd = cwd;
 99374      this.enableDefaultRc = enableDefaultRc;
 99375      this.extraneousRcFiles = extraneousRcFiles;
 99376    }
 99377  
 99378    // the filename to use for package metadata
 99379  
 99380  
 99381    //
 99382  
 99383  
 99384    //
 99385  
 99386    //
 99387  
 99388  
 99389    //
 99390  
 99391  
 99392    //
 99393  
 99394  
 99395    //
 99396  
 99397  
 99398    //
 99399  
 99400  
 99401    //
 99402  
 99403  
 99404    // absolute folder name to insert modules
 99405  
 99406  
 99407    // relative folder name to put these modules
 99408  
 99409  
 99410    setToken(token) {
 99411      this.token = token;
 99412    }
 99413  
 99414    setOtp(otp) {
 99415      this.otp = otp;
 99416    }
 99417  
 99418    getOption(key) {
 99419      return this.config[key];
 99420    }
 99421  
 99422    getAvailableRegistries() {
 99423      const config = this.config;
 99424      return Object.keys(config).reduce((registries, option) => {
 99425        if (option === 'registry' || option.split(':')[1] === 'registry') {
 99426          registries.push(config[option]);
 99427        }
 99428        return registries;
 99429      }, []);
 99430    }
 99431  
 99432    loadConfig() {
 99433      return Promise.resolve();
 99434    }
 99435  
 99436    checkOutdated(config, name, range) {
 99437      return Promise.reject(new Error('unimplemented'));
 99438    }
 99439  
 99440    saveHomeConfig(config) {
 99441      return Promise.reject(new Error('unimplemented'));
 99442    }
 99443  
 99444    request(pathname, opts = {}) {
 99445      return this.requestManager.request((0, (_extends2 || _load_extends()).default)({
 99446        url: pathname
 99447      }, opts));
 99448    }
 99449  
 99450    init(overrides = {}) {
 99451      var _this = this;
 99452  
 99453      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 99454        _this.mergeEnv('yarn_');
 99455        yield _this.loadConfig();
 99456  
 99457        for (var _iterator = Object.keys(overrides), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 99458          var _ref;
 99459  
 99460          if (_isArray) {
 99461            if (_i >= _iterator.length) break;
 99462            _ref = _iterator[_i++];
 99463          } else {
 99464            _i = _iterator.next();
 99465            if (_i.done) break;
 99466            _ref = _i.value;
 99467          }
 99468  
 99469          const override = _ref;
 99470  
 99471          const val = overrides[override];
 99472  
 99473          if (val !== undefined) {
 99474            _this.config[override] = val;
 99475          }
 99476        }
 99477        _this.loc = path.join(_this.cwd, _this.folder);
 99478      })();
 99479    }
 99480  
 99481    static normalizeConfig(config) {
 99482      for (const key in config) {
 99483        config[key] = BaseRegistry.normalizeConfigOption(config[key]);
 99484      }
 99485      return config;
 99486    }
 99487  
 99488    static normalizeConfigOption(val) {
 99489      if (val === 'true') {
 99490        return true;
 99491      } else if (val === 'false') {
 99492        return false;
 99493      } else {
 99494        return val;
 99495      }
 99496    }
 99497  
 99498    mergeEnv(prefix) {
 99499      // try environment variables
 99500      for (const envKey in process.env) {
 99501        let key = envKey.toLowerCase();
 99502  
 99503        // only accept keys prefixed with the prefix
 99504        if (key.indexOf(prefix.toLowerCase()) !== 0) {
 99505          continue;
 99506        }
 99507  
 99508        const val = BaseRegistry.normalizeConfigOption(process.env[envKey]);
 99509  
 99510        // remove config prefix
 99511        key = (0, (_misc || _load_misc()).removePrefix)(key, prefix.toLowerCase());
 99512  
 99513        // replace dunders with dots
 99514        key = key.replace(/__/g, '.');
 99515  
 99516        // replace underscores with dashes ignoring keys that start with an underscore
 99517        key = key.replace(/([^_])_/g, '$1-');
 99518  
 99519        // set it via a path
 99520        objectPath.set(this.config, key, val);
 99521      }
 99522    }
 99523  }
 99524  exports.default = BaseRegistry;
 99525  
 99526  /***/ }),
 99527  /* 527 */
 99528  /***/ (function(module, exports, __webpack_require__) {
 99529  
 99530  "use strict";
 99531  
 99532  
 99533  Object.defineProperty(exports, "__esModule", {
 99534    value: true
 99535  });
 99536  exports.DEFAULTS = undefined;
 99537  
 99538  var _asyncToGenerator2;
 99539  
 99540  function _load_asyncToGenerator() {
 99541    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 99542  }
 99543  
 99544  var _constants;
 99545  
 99546  function _load_constants() {
 99547    return _constants = __webpack_require__(8);
 99548  }
 99549  
 99550  var _npmRegistry;
 99551  
 99552  function _load_npmRegistry() {
 99553    return _npmRegistry = _interopRequireDefault(__webpack_require__(88));
 99554  }
 99555  
 99556  var _lockfile;
 99557  
 99558  function _load_lockfile() {
 99559    return _lockfile = __webpack_require__(19);
 99560  }
 99561  
 99562  var _fs;
 99563  
 99564  function _load_fs() {
 99565    return _fs = _interopRequireWildcard(__webpack_require__(5));
 99566  }
 99567  
 99568  var _yarnVersion;
 99569  
 99570  function _load_yarnVersion() {
 99571    return _yarnVersion = __webpack_require__(105);
 99572  }
 99573  
 99574  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 99575  
 99576  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 99577  
 99578  const userHome = __webpack_require__(67).default;
 99579  const path = __webpack_require__(0);
 99580  
 99581  const DEFAULTS = exports.DEFAULTS = {
 99582    'version-tag-prefix': 'v',
 99583    'version-git-tag': true,
 99584    'version-commit-hooks': true,
 99585    'version-git-sign': false,
 99586    'version-git-message': 'v%s',
 99587  
 99588    'init-version': '1.0.0',
 99589    'init-license': 'MIT',
 99590  
 99591    'save-prefix': '^',
 99592    'bin-links': true,
 99593    'ignore-scripts': false,
 99594    'ignore-optional': false,
 99595    registry: (_constants || _load_constants()).YARN_REGISTRY,
 99596    'strict-ssl': true,
 99597    'user-agent': [`yarn/${(_yarnVersion || _load_yarnVersion()).version}`, 'npm/?', `node/${process.version}`, process.platform, process.arch].join(' ')
 99598  };
 99599  
 99600  const RELATIVE_KEYS = ['yarn-offline-mirror', 'cache-folder', 'global-folder', 'offline-cache-folder', 'yarn-path'];
 99601  const FOLDER_KEY = ['yarn-offline-mirror', 'cache-folder', 'global-folder', 'offline-cache-folder'];
 99602  
 99603  const npmMap = {
 99604    'version-git-sign': 'sign-git-tag',
 99605    'version-tag-prefix': 'tag-version-prefix',
 99606    'version-git-tag': 'git-tag-version',
 99607    'version-commit-hooks': 'commit-hooks',
 99608    'version-git-message': 'message'
 99609  };
 99610  
 99611  class YarnRegistry extends (_npmRegistry || _load_npmRegistry()).default {
 99612    constructor(cwd, registries, requestManager, reporter, enableDefaultRc, extraneousRcFiles) {
 99613      super(cwd, registries, requestManager, reporter, enableDefaultRc, extraneousRcFiles);
 99614  
 99615      this.homeConfigLoc = path.join(userHome, '.yarnrc');
 99616      this.homeConfig = {};
 99617    }
 99618  
 99619    getOption(key) {
 99620      let val = this.config[key];
 99621  
 99622      // if this isn't set in a yarn config, then use npm
 99623      if (typeof val === 'undefined') {
 99624        val = this.registries.npm.getOption(npmMap[key]);
 99625      }
 99626  
 99627      if (typeof val === 'undefined') {
 99628        val = this.registries.npm.getOption(key);
 99629      }
 99630  
 99631      // if this isn't set in a yarn config or npm config, then use the default (or undefined)
 99632      if (typeof val === 'undefined') {
 99633        val = DEFAULTS[key];
 99634      }
 99635  
 99636      return val;
 99637    }
 99638  
 99639    loadConfig() {
 99640      var _this = this;
 99641  
 99642      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 99643        const locations = yield _this.getPossibleConfigLocations('yarnrc', _this.reporter);
 99644  
 99645        for (var _iterator = locations, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 99646          var _ref2;
 99647  
 99648          if (_isArray) {
 99649            if (_i >= _iterator.length) break;
 99650            _ref2 = _iterator[_i++];
 99651          } else {
 99652            _i = _iterator.next();
 99653            if (_i.done) break;
 99654            _ref2 = _i.value;
 99655          }
 99656  
 99657          const _ref = _ref2;
 99658          const isHome = _ref[0];
 99659          const loc = _ref[1];
 99660          const file = _ref[2];
 99661  
 99662          var _parse = (0, (_lockfile || _load_lockfile()).parse)(file, loc);
 99663  
 99664          const config = _parse.object;
 99665  
 99666  
 99667          if (isHome) {
 99668            _this.homeConfig = config;
 99669          }
 99670  
 99671          for (var _iterator2 = RELATIVE_KEYS, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 99672            var _ref3;
 99673  
 99674            if (_isArray2) {
 99675              if (_i2 >= _iterator2.length) break;
 99676              _ref3 = _iterator2[_i2++];
 99677            } else {
 99678              _i2 = _iterator2.next();
 99679              if (_i2.done) break;
 99680              _ref3 = _i2.value;
 99681            }
 99682  
 99683            const key = _ref3;
 99684  
 99685            const valueLoc = config[key];
 99686  
 99687            if (!_this.config[key] && valueLoc) {
 99688              const resolvedLoc = config[key] = path.resolve(path.dirname(loc), valueLoc);
 99689  
 99690              if (FOLDER_KEY.includes(key)) {
 99691                yield (_fs || _load_fs()).mkdirp(resolvedLoc);
 99692              }
 99693            }
 99694          }
 99695  
 99696          // merge with any existing environment variables
 99697          const env = config.env;
 99698          if (env) {
 99699            const existingEnv = _this.config.env;
 99700            if (existingEnv) {
 99701              _this.config.env = Object.assign({}, env, existingEnv);
 99702            }
 99703          }
 99704  
 99705          _this.config = Object.assign({}, config, _this.config);
 99706        }
 99707  
 99708        // default yarn config
 99709        _this.config = Object.assign({}, DEFAULTS, _this.config);
 99710      })();
 99711    }
 99712  
 99713    saveHomeConfig(config) {
 99714      var _this2 = this;
 99715  
 99716      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
 99717        YarnRegistry.normalizeConfig(config);
 99718  
 99719        for (const key in config) {
 99720          const val = config[key];
 99721  
 99722          // if the current config key was taken from home config then update
 99723          // the global config
 99724          if (_this2.homeConfig[key] === _this2.config[key]) {
 99725            _this2.config[key] = val;
 99726          }
 99727  
 99728          // update just the home config
 99729          _this2.homeConfig[key] = config[key];
 99730        }
 99731  
 99732        yield (_fs || _load_fs()).writeFilePreservingEol(_this2.homeConfigLoc, `${(0, (_lockfile || _load_lockfile()).stringify)(_this2.homeConfig)}\n`);
 99733      })();
 99734    }
 99735  }
 99736  exports.default = YarnRegistry;
 99737  YarnRegistry.filename = 'yarn.json';
 99738  
 99739  /***/ }),
 99740  /* 528 */
 99741  /***/ (function(module, exports, __webpack_require__) {
 99742  
 99743  "use strict";
 99744  
 99745  
 99746  Object.defineProperty(exports, "__esModule", {
 99747    value: true
 99748  });
 99749  
 99750  var _jsonReporter;
 99751  
 99752  function _load_jsonReporter() {
 99753    return _jsonReporter = _interopRequireDefault(__webpack_require__(211));
 99754  }
 99755  
 99756  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 99757  
 99758  class BufferReporter extends (_jsonReporter || _load_jsonReporter()).default {
 99759    constructor(opts) {
 99760      super(opts);
 99761      this._buffer = [];
 99762    }
 99763  
 99764    _dump(type, data, error) {
 99765      this._buffer.push({
 99766        type,
 99767        data,
 99768        error: !!error
 99769      });
 99770    }
 99771  
 99772    getBuffer() {
 99773      return this._buffer;
 99774    }
 99775  
 99776    getBufferText() {
 99777      return this._buffer.map(({ data }) => typeof data === 'string' ? data : JSON.stringify(data)).join('');
 99778    }
 99779  
 99780    getBufferJson() {
 99781      return JSON.parse(this.getBufferText());
 99782    }
 99783  }
 99784  exports.default = BufferReporter;
 99785  
 99786  /***/ }),
 99787  /* 529 */
 99788  /***/ (function(module, exports, __webpack_require__) {
 99789  
 99790  "use strict";
 99791  
 99792  
 99793  Object.defineProperty(exports, "__esModule", {
 99794    value: true
 99795  });
 99796  
 99797  var _asyncToGenerator2;
 99798  
 99799  function _load_asyncToGenerator() {
 99800    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
 99801  }
 99802  
 99803  var _baseReporter;
 99804  
 99805  function _load_baseReporter() {
 99806    return _baseReporter = _interopRequireDefault(__webpack_require__(108));
 99807  }
 99808  
 99809  var _progressBar;
 99810  
 99811  function _load_progressBar() {
 99812    return _progressBar = _interopRequireDefault(__webpack_require__(531));
 99813  }
 99814  
 99815  var _spinnerProgress;
 99816  
 99817  function _load_spinnerProgress() {
 99818    return _spinnerProgress = _interopRequireDefault(__webpack_require__(532));
 99819  }
 99820  
 99821  var _util;
 99822  
 99823  function _load_util() {
 99824    return _util = __webpack_require__(210);
 99825  }
 99826  
 99827  var _misc;
 99828  
 99829  function _load_misc() {
 99830    return _misc = __webpack_require__(18);
 99831  }
 99832  
 99833  var _treeHelper;
 99834  
 99835  function _load_treeHelper() {
 99836    return _treeHelper = __webpack_require__(530);
 99837  }
 99838  
 99839  var _inquirer;
 99840  
 99841  function _load_inquirer() {
 99842    return _inquirer = _interopRequireDefault(__webpack_require__(276));
 99843  }
 99844  
 99845  var _cliTable;
 99846  
 99847  function _load_cliTable() {
 99848    return _cliTable = _interopRequireDefault(__webpack_require__(570));
 99849  }
 99850  
 99851  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 99852  
 99853  var _require = __webpack_require__(3);
 99854  
 99855  const inspect = _require.inspect;
 99856  
 99857  const readline = __webpack_require__(198);
 99858  const chalk = __webpack_require__(30);
 99859  const stripAnsi = __webpack_require__(329);
 99860  const read = __webpack_require__(790);
 99861  const tty = __webpack_require__(104);
 99862  
 99863  const AUDIT_COL_WIDTHS = [15, 62];
 99864  
 99865  const auditSeverityColors = {
 99866    info: chalk.bold,
 99867    low: chalk.bold,
 99868    moderate: chalk.yellow,
 99869    high: chalk.red,
 99870    critical: chalk.bgRed
 99871  };
 99872  
 99873  // fixes bold on windows
 99874  if (process.platform === 'win32' && !(process.env.TERM && /^xterm/i.test(process.env.TERM))) {
 99875    chalk.bold._styles[0].close += '\u001b[m';
 99876  }
 99877  
 99878  class ConsoleReporter extends (_baseReporter || _load_baseReporter()).default {
 99879    constructor(opts) {
 99880      super(opts);
 99881  
 99882      this._lastCategorySize = 0;
 99883      this._spinners = new Set();
 99884      this.format = chalk;
 99885      this.format.stripColor = stripAnsi;
 99886      this.isSilent = !!opts.isSilent;
 99887    }
 99888  
 99889    _prependEmoji(msg, emoji) {
 99890      if (this.emoji && emoji && this.isTTY) {
 99891        msg = `${emoji}  ${msg}`;
 99892      }
 99893      return msg;
 99894    }
 99895  
 99896    _logCategory(category, color, msg) {
 99897      this._lastCategorySize = category.length;
 99898      this._log(`${this.format[color](category)} ${msg}`);
 99899    }
 99900  
 99901    _verbose(msg) {
 99902      this._logCategory('verbose', 'grey', `${process.uptime()} ${msg}`);
 99903    }
 99904  
 99905    _verboseInspect(obj) {
 99906      this.inspect(obj);
 99907    }
 99908  
 99909    close() {
 99910      for (var _iterator = this._spinners, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
 99911        var _ref;
 99912  
 99913        if (_isArray) {
 99914          if (_i >= _iterator.length) break;
 99915          _ref = _iterator[_i++];
 99916        } else {
 99917          _i = _iterator.next();
 99918          if (_i.done) break;
 99919          _ref = _i.value;
 99920        }
 99921  
 99922        const spinner = _ref;
 99923  
 99924        spinner.stop();
 99925      }
 99926      this._spinners.clear();
 99927      this.stopProgress();
 99928      super.close();
 99929    }
 99930  
 99931    table(head, body) {
 99932      //
 99933      head = head.map(field => this.format.underline(field));
 99934  
 99935      //
 99936      const rows = [head].concat(body);
 99937  
 99938      // get column widths
 99939      const cols = [];
 99940      for (let i = 0; i < head.length; i++) {
 99941        const widths = rows.map(row => this.format.stripColor(row[i]).length);
 99942        cols[i] = Math.max(...widths);
 99943      }
 99944  
 99945      //
 99946      const builtRows = rows.map(row => {
 99947        for (let i = 0; i < row.length; i++) {
 99948          const field = row[i];
 99949          const padding = cols[i] - this.format.stripColor(field).length;
 99950  
 99951          row[i] = field + ' '.repeat(padding);
 99952        }
 99953        return row.join(' ');
 99954      });
 99955  
 99956      this.log(builtRows.join('\n'));
 99957    }
 99958  
 99959    step(current, total, msg, emoji) {
 99960      msg = this._prependEmoji(msg, emoji);
 99961  
 99962      if (msg.endsWith('?')) {
 99963        msg = `${(0, (_misc || _load_misc()).removeSuffix)(msg, '?')}...?`;
 99964      } else {
 99965        msg += '...';
 99966      }
 99967  
 99968      this.log(`${this.format.dim(`[${current}/${total}]`)} ${msg}`);
 99969    }
 99970  
 99971    inspect(value) {
 99972      if (typeof value !== 'number' && typeof value !== 'string') {
 99973        value = inspect(value, {
 99974          breakLength: 0,
 99975          colors: this.isTTY,
 99976          depth: null,
 99977          maxArrayLength: null
 99978        });
 99979      }
 99980  
 99981      this.log(String(value), { force: true });
 99982    }
 99983  
 99984    list(key, items, hints) {
 99985      const gutterWidth = (this._lastCategorySize || 2) - 1;
 99986  
 99987      if (hints) {
 99988        for (var _iterator2 = items, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
 99989          var _ref2;
 99990  
 99991          if (_isArray2) {
 99992            if (_i2 >= _iterator2.length) break;
 99993            _ref2 = _iterator2[_i2++];
 99994          } else {
 99995            _i2 = _iterator2.next();
 99996            if (_i2.done) break;
 99997            _ref2 = _i2.value;
 99998          }
 99999  
100000          const item = _ref2;
100001  
100002          this._log(`${' '.repeat(gutterWidth)}- ${this.format.bold(item)}`);
100003          this._log(`  ${' '.repeat(gutterWidth)} ${hints[item]}`);
100004        }
100005      } else {
100006        for (var _iterator3 = items, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
100007          var _ref3;
100008  
100009          if (_isArray3) {
100010            if (_i3 >= _iterator3.length) break;
100011            _ref3 = _iterator3[_i3++];
100012          } else {
100013            _i3 = _iterator3.next();
100014            if (_i3.done) break;
100015            _ref3 = _i3.value;
100016          }
100017  
100018          const item = _ref3;
100019  
100020          this._log(`${' '.repeat(gutterWidth)}- ${item}`);
100021        }
100022      }
100023    }
100024  
100025    header(command, pkg) {
100026      this.log(this.format.bold(`${pkg.name} ${command} v${pkg.version}`));
100027    }
100028  
100029    footer(showPeakMemory) {
100030      this.stopProgress();
100031  
100032      const totalTime = (this.getTotalTime() / 1000).toFixed(2);
100033      let msg = `Done in ${totalTime}s.`;
100034      if (showPeakMemory) {
100035        const peakMemory = (this.peakMemory / 1024 / 1024).toFixed(2);
100036        msg += ` Peak memory usage ${peakMemory}MB.`;
100037      }
100038      this.log(this._prependEmoji(msg, '✨'));
100039    }
100040  
100041    log(msg, { force = false } = {}) {
100042      this._lastCategorySize = 0;
100043      this._log(msg, { force });
100044    }
100045  
100046    _log(msg, { force = false } = {}) {
100047      if (this.isSilent && !force) {
100048        return;
100049      }
100050      (0, (_util || _load_util()).clearLine)(this.stdout);
100051      this.stdout.write(`${msg}\n`);
100052    }
100053  
100054    success(msg) {
100055      this._logCategory('success', 'green', msg);
100056    }
100057  
100058    error(msg) {
100059      (0, (_util || _load_util()).clearLine)(this.stderr);
100060      this.stderr.write(`${this.format.red('error')} ${msg}\n`);
100061    }
100062  
100063    info(msg) {
100064      this._logCategory('info', 'blue', msg);
100065    }
100066  
100067    command(command) {
100068      this.log(this.format.dim(`$ ${command}`));
100069    }
100070  
100071    warn(msg) {
100072      (0, (_util || _load_util()).clearLine)(this.stderr);
100073      this.stderr.write(`${this.format.yellow('warning')} ${msg}\n`);
100074    }
100075  
100076    question(question, options = {}) {
100077      if (!process.stdout.isTTY) {
100078        return Promise.reject(new Error("Can't answer a question unless a user TTY"));
100079      }
100080  
100081      return new Promise((resolve, reject) => {
100082        read({
100083          prompt: `${this.format.dim('question')} ${question}: `,
100084          silent: !!options.password,
100085          output: this.stdout,
100086          input: this.stdin
100087        }, (err, answer) => {
100088          if (err) {
100089            if (err.message === 'canceled') {
100090              process.exitCode = 1;
100091            }
100092            reject(err);
100093          } else {
100094            if (!answer && options.required) {
100095              this.error(this.lang('answerRequired'));
100096              resolve(this.question(question, options));
100097            } else {
100098              resolve(answer);
100099            }
100100          }
100101        });
100102      });
100103    }
100104    // handles basic tree output to console
100105    tree(key, trees, { force = false } = {}) {
100106      this.stopProgress();
100107      //
100108      if (this.isSilent && !force) {
100109        return;
100110      }
100111      const output = ({ name, children, hint, color }, titlePrefix, childrenPrefix) => {
100112        const formatter = this.format;
100113        const out = (0, (_treeHelper || _load_treeHelper()).getFormattedOutput)({
100114          prefix: titlePrefix,
100115          hint,
100116          color,
100117          name,
100118          formatter
100119        });
100120        this.stdout.write(out);
100121  
100122        if (children && children.length) {
100123          (0, (_treeHelper || _load_treeHelper()).recurseTree)((0, (_treeHelper || _load_treeHelper()).sortTrees)(children), childrenPrefix, output);
100124        }
100125      };
100126      (0, (_treeHelper || _load_treeHelper()).recurseTree)((0, (_treeHelper || _load_treeHelper()).sortTrees)(trees), '', output);
100127    }
100128  
100129    activitySet(total, workers) {
100130      if (!this.isTTY || this.noProgress) {
100131        return super.activitySet(total, workers);
100132      }
100133  
100134      const spinners = [];
100135      const reporterSpinners = this._spinners;
100136  
100137      for (let i = 1; i < workers; i++) {
100138        this.log('');
100139      }
100140  
100141      for (let i = 0; i < workers; i++) {
100142        const spinner = new (_spinnerProgress || _load_spinnerProgress()).default(this.stderr, i);
100143        reporterSpinners.add(spinner);
100144        spinner.start();
100145  
100146        let prefix = null;
100147        let current = 0;
100148        const updatePrefix = () => {
100149          spinner.setPrefix(`${this.format.dim(`[${current === 0 ? '-' : current}/${total}]`)} `);
100150        };
100151        const clear = () => {
100152          prefix = null;
100153          current = 0;
100154          updatePrefix();
100155          spinner.setText('waiting...');
100156        };
100157        clear();
100158  
100159        spinners.unshift({
100160          clear,
100161  
100162          setPrefix(_current, _prefix) {
100163            current = _current;
100164            prefix = _prefix;
100165            spinner.setText(prefix);
100166            updatePrefix();
100167          },
100168  
100169          tick(msg) {
100170            if (prefix) {
100171              msg = `${prefix}: ${msg}`;
100172            }
100173            spinner.setText(msg);
100174          },
100175  
100176          end() {
100177            spinner.stop();
100178            reporterSpinners.delete(spinner);
100179          }
100180        });
100181      }
100182  
100183      return {
100184        spinners,
100185        end: () => {
100186          for (var _iterator4 = spinners, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
100187            var _ref4;
100188  
100189            if (_isArray4) {
100190              if (_i4 >= _iterator4.length) break;
100191              _ref4 = _iterator4[_i4++];
100192            } else {
100193              _i4 = _iterator4.next();
100194              if (_i4.done) break;
100195              _ref4 = _i4.value;
100196            }
100197  
100198            const spinner = _ref4;
100199  
100200            spinner.end();
100201          }
100202          readline.moveCursor(this.stdout, 0, -workers + 1);
100203        }
100204      };
100205    }
100206  
100207    activity() {
100208      if (!this.isTTY) {
100209        return {
100210          tick() {},
100211          end() {}
100212        };
100213      }
100214      const reporterSpinners = this._spinners;
100215  
100216      const spinner = new (_spinnerProgress || _load_spinnerProgress()).default(this.stderr);
100217      spinner.start();
100218  
100219      reporterSpinners.add(spinner);
100220  
100221      return {
100222        tick(name) {
100223          spinner.setText(name);
100224        },
100225  
100226        end() {
100227          spinner.stop();
100228          reporterSpinners.delete(spinner);
100229        }
100230      };
100231    }
100232  
100233    select(header, question, options) {
100234      if (!this.isTTY) {
100235        return Promise.reject(new Error("Can't answer a question unless a user TTY"));
100236      }
100237  
100238      const rl = readline.createInterface({
100239        input: this.stdin,
100240        output: this.stdout,
100241        terminal: true
100242      });
100243  
100244      const questions = options.map(opt => opt.name);
100245      const answers = options.map(opt => opt.value);
100246  
100247      function toIndex(input) {
100248        const index = answers.indexOf(input);
100249  
100250        if (index >= 0) {
100251          return index;
100252        } else {
100253          return +input;
100254        }
100255      }
100256  
100257      return new Promise(resolve => {
100258        this.info(header);
100259  
100260        for (let i = 0; i < questions.length; i++) {
100261          this.log(`  ${this.format.dim(`${i + 1})`)} ${questions[i]}`);
100262        }
100263  
100264        const ask = () => {
100265          rl.question(`${question}: `, input => {
100266            let index = toIndex(input);
100267  
100268            if (isNaN(index)) {
100269              this.log('Not a number');
100270              ask();
100271              return;
100272            }
100273  
100274            if (index <= 0 || index > options.length) {
100275              this.log('Outside answer range');
100276              ask();
100277              return;
100278            }
100279  
100280            // get index
100281            index--;
100282            rl.close();
100283            resolve(answers[index]);
100284          });
100285        };
100286  
100287        ask();
100288      });
100289    }
100290  
100291    progress(count) {
100292      if (this.noProgress || count <= 0) {
100293        return function () {
100294          // noop
100295        };
100296      }
100297  
100298      if (!this.isTTY) {
100299        return function () {
100300          // TODO what should the behaviour here be? we could buffer progress messages maybe
100301        };
100302      }
100303  
100304      // Clear any potentially old progress bars
100305      this.stopProgress();
100306  
100307      const bar = this._progressBar = new (_progressBar || _load_progressBar()).default(count, this.stderr, progress => {
100308        if (progress === this._progressBar) {
100309          this._progressBar = null;
100310        }
100311      });
100312  
100313      bar.render();
100314  
100315      return function () {
100316        bar.tick();
100317      };
100318    }
100319  
100320    stopProgress() {
100321      if (this._progressBar) {
100322        this._progressBar.stop();
100323      }
100324    }
100325  
100326    prompt(message, choices, options = {}) {
100327      var _this = this;
100328  
100329      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
100330        if (!process.stdout.isTTY) {
100331          return Promise.reject(new Error("Can't answer a question unless a user TTY"));
100332        }
100333  
100334        let pageSize;
100335        if (process.stdout instanceof tty.WriteStream) {
100336          pageSize = process.stdout.rows - 2;
100337        }
100338  
100339        const rl = readline.createInterface({
100340          input: _this.stdin,
100341          output: _this.stdout,
100342          terminal: true
100343        });
100344  
100345        // $FlowFixMe: Need to update the type of Inquirer
100346        const prompt = (_inquirer || _load_inquirer()).default.createPromptModule({
100347          input: _this.stdin,
100348          output: _this.stdout
100349        });
100350  
100351        var _options$name = options.name;
100352        const name = _options$name === undefined ? 'prompt' : _options$name;
100353        var _options$type = options.type;
100354        const type = _options$type === undefined ? 'input' : _options$type,
100355              validate = options.validate;
100356  
100357        const answers = yield prompt([{ name, type, message, choices, pageSize, validate }]);
100358  
100359        rl.close();
100360  
100361        return answers[name];
100362      })();
100363    }
100364  
100365    auditSummary(auditMetadata) {
100366      const totalDependencies = auditMetadata.totalDependencies,
100367            vulnerabilities = auditMetadata.vulnerabilities;
100368  
100369      const totalVulnerabilities = vulnerabilities.info + vulnerabilities.low + vulnerabilities.moderate + vulnerabilities.high + vulnerabilities.critical;
100370      const summary = this.lang('auditSummary', totalVulnerabilities > 0 ? this.rawText(chalk.red(totalVulnerabilities.toString())) : totalVulnerabilities, totalDependencies);
100371      this._log(summary);
100372  
100373      if (totalVulnerabilities) {
100374        const severities = [];
100375        if (vulnerabilities.info) {
100376          severities.push(this.lang('auditInfo', vulnerabilities.info));
100377        }
100378        if (vulnerabilities.low) {
100379          severities.push(this.lang('auditLow', vulnerabilities.low));
100380        }
100381        if (vulnerabilities.moderate) {
100382          severities.push(this.lang('auditModerate', vulnerabilities.moderate));
100383        }
100384        if (vulnerabilities.high) {
100385          severities.push(this.lang('auditHigh', vulnerabilities.high));
100386        }
100387        if (vulnerabilities.critical) {
100388          severities.push(this.lang('auditCritical', vulnerabilities.critical));
100389        }
100390        this._log(`${this.lang('auditSummarySeverity')} ${severities.join(' | ')}`);
100391      }
100392    }
100393  
100394    auditAction(recommendation) {
100395      const label = recommendation.action.resolves.length === 1 ? 'vulnerability' : 'vulnerabilities';
100396      this._log(this.lang('auditResolveCommand', this.rawText(chalk.inverse(recommendation.cmd)), recommendation.action.resolves.length, this.rawText(label)));
100397      if (recommendation.isBreaking) {
100398        this._log(this.lang('auditSemverMajorChange'));
100399      }
100400    }
100401  
100402    auditManualReview() {
100403      const tableOptions = {
100404        colWidths: [78]
100405      };
100406      const table = new (_cliTable || _load_cliTable()).default(tableOptions);
100407      table.push([{
100408        content: this.lang('auditManualReview'),
100409        vAlign: 'center',
100410        hAlign: 'center'
100411      }]);
100412  
100413      this._log(table.toString());
100414    }
100415  
100416    auditAdvisory(resolution, auditAdvisory) {
100417      function colorSeverity(severity, message) {
100418        return auditSeverityColors[severity](message || severity);
100419      }
100420  
100421      function makeAdvisoryTableRow(patchedIn) {
100422        const patchRows = [];
100423  
100424        if (patchedIn) {
100425          patchRows.push({ 'Patched in': patchedIn });
100426        }
100427  
100428        return [{ [chalk.bold(colorSeverity(auditAdvisory.severity))]: chalk.bold(auditAdvisory.title) }, { Package: auditAdvisory.module_name }, ...patchRows, { 'Dependency of': `${resolution.path.split('>')[0]} ${resolution.dev ? '[dev]' : ''}` }, { Path: resolution.path.split('>').join(' > ') }, { 'More info': `https://www.npmjs.com/advisories/${auditAdvisory.id}` }];
100429      }
100430  
100431      const tableOptions = {
100432        colWidths: AUDIT_COL_WIDTHS,
100433        wordWrap: true
100434      };
100435      const table = new (_cliTable || _load_cliTable()).default(tableOptions);
100436      const patchedIn = auditAdvisory.patched_versions.replace(' ', '') === '<0.0.0' ? 'No patch available' : auditAdvisory.patched_versions;
100437      table.push(...makeAdvisoryTableRow(patchedIn));
100438      this._log(table.toString());
100439    }
100440  }
100441  exports.default = ConsoleReporter;
100442  
100443  /***/ }),
100444  /* 530 */
100445  /***/ (function(module, exports, __webpack_require__) {
100446  
100447  "use strict";
100448  
100449  
100450  Object.defineProperty(exports, "__esModule", {
100451    value: true
100452  });
100453  exports.sortTrees = sortTrees;
100454  exports.recurseTree = recurseTree;
100455  exports.getFormattedOutput = getFormattedOutput;
100456  
100457  
100458  // public
100459  
100460  
100461  // types
100462  function sortTrees(trees) {
100463    return trees.sort(function (tree1, tree2) {
100464      return tree1.name.localeCompare(tree2.name);
100465    });
100466  }
100467  
100468  function recurseTree(tree, prefix, recurseFunc) {
100469    const treeLen = tree.length;
100470    const treeEnd = treeLen - 1;
100471    for (let i = 0; i < treeLen; i++) {
100472      const atEnd = i === treeEnd;
100473      recurseFunc(tree[i], prefix + getLastIndentChar(atEnd), prefix + getNextIndentChar(atEnd));
100474    }
100475  }
100476  
100477  function getFormattedOutput(fmt) {
100478    const item = formatColor(fmt.color, fmt.name, fmt.formatter);
100479    const suffix = getSuffix(fmt.hint, fmt.formatter);
100480    return `${fmt.prefix}─ ${item}${suffix}\n`;
100481  }
100482  
100483  function getNextIndentChar(end) {
100484    return end ? '   ' : '│  ';
100485  }
100486  
100487  function getLastIndentChar(end) {
100488    return end ? '└' : '├';
100489  }
100490  
100491  function getSuffix(hint, formatter) {
100492    return hint ? ` (${formatter.grey(hint)})` : '';
100493  }
100494  
100495  function formatColor(color, strToFormat, formatter) {
100496    return color ? formatter[color](strToFormat) : strToFormat;
100497  }
100498  
100499  /***/ }),
100500  /* 531 */
100501  /***/ (function(module, exports, __webpack_require__) {
100502  
100503  "use strict";
100504  
100505  
100506  Object.defineProperty(exports, "__esModule", {
100507    value: true
100508  });
100509  
100510  var _util;
100511  
100512  function _load_util() {
100513    return _util = __webpack_require__(210);
100514  }
100515  
100516  class ProgressBar {
100517    constructor(total, stdout = process.stderr, callback) {
100518      this.stdout = stdout;
100519      this.total = total;
100520      this.chars = ProgressBar.bars[0];
100521      this.delay = 60;
100522      this.curr = 0;
100523      this._callback = callback;
100524      (0, (_util || _load_util()).clearLine)(stdout);
100525    }
100526  
100527    tick() {
100528      if (this.curr >= this.total) {
100529        return;
100530      }
100531  
100532      this.curr++;
100533  
100534      // schedule render
100535      if (!this.id) {
100536        this.id = setTimeout(() => this.render(), this.delay);
100537      }
100538    }
100539  
100540    cancelTick() {
100541      if (this.id) {
100542        clearTimeout(this.id);
100543        this.id = null;
100544      }
100545    }
100546  
100547    stop() {
100548      // "stop" by setting current to end so `tick` becomes noop
100549      this.curr = this.total;
100550  
100551      this.cancelTick();
100552      (0, (_util || _load_util()).clearLine)(this.stdout);
100553      if (this._callback) {
100554        this._callback(this);
100555      }
100556    }
100557  
100558    render() {
100559      // clear throttle
100560      this.cancelTick();
100561  
100562      let ratio = this.curr / this.total;
100563      ratio = Math.min(Math.max(ratio, 0), 1);
100564  
100565      // progress without bar
100566      let bar = ` ${this.curr}/${this.total}`;
100567  
100568      // calculate size of actual bar
100569      // $FlowFixMe: investigate process.stderr.columns flow error
100570      const availableSpace = Math.max(0, this.stdout.columns - bar.length - 3);
100571      const width = Math.min(this.total, availableSpace);
100572      const completeLength = Math.round(width * ratio);
100573      const complete = this.chars[0].repeat(completeLength);
100574      const incomplete = this.chars[1].repeat(width - completeLength);
100575      bar = `[${complete}${incomplete}]${bar}`;
100576  
100577      (0, (_util || _load_util()).toStartOfLine)(this.stdout);
100578      this.stdout.write(bar);
100579    }
100580  }
100581  exports.default = ProgressBar;
100582  ProgressBar.bars = [['#', '-']];
100583  
100584  /***/ }),
100585  /* 532 */
100586  /***/ (function(module, exports, __webpack_require__) {
100587  
100588  "use strict";
100589  
100590  
100591  Object.defineProperty(exports, "__esModule", {
100592    value: true
100593  });
100594  
100595  var _util;
100596  
100597  function _load_util() {
100598    return _util = __webpack_require__(210);
100599  }
100600  
100601  class Spinner {
100602    constructor(stdout = process.stderr, lineNumber = 0) {
100603      this.current = 0;
100604      this.prefix = '';
100605      this.lineNumber = lineNumber;
100606      this.stdout = stdout;
100607      this.delay = 60;
100608      this.chars = Spinner.spinners[28].split('');
100609      this.text = '';
100610      this.id = null;
100611    }
100612  
100613    setPrefix(prefix) {
100614      this.prefix = prefix;
100615    }
100616    setText(text) {
100617      this.text = text;
100618    }
100619    start() {
100620      this.current = 0;
100621      this.render();
100622    }
100623    render() {
100624      if (this.id) {
100625        clearTimeout(this.id);
100626      }
100627      // build line ensuring we don't wrap to the next line
100628      let msg = `${this.prefix}${this.chars[this.current]} ${this.text}`;
100629      const columns = typeof this.stdout.columns === 'number' ? this.stdout.columns : 100;
100630      msg = msg.slice(0, columns);
100631      (0, (_util || _load_util()).writeOnNthLine)(this.stdout, this.lineNumber, msg);
100632      this.current = ++this.current % this.chars.length;
100633      this.id = setTimeout(() => this.render(), this.delay);
100634    }
100635    stop() {
100636      if (this.id) {
100637        clearTimeout(this.id);
100638        this.id = null;
100639      }
100640      (0, (_util || _load_util()).clearNthLine)(this.stdout, this.lineNumber);
100641    }
100642  }
100643  exports.default = Spinner;
100644  Spinner.spinners = ['|/-\\', '⠂-–—–-', '◐◓◑◒', '◴◷◶◵', '◰◳◲◱', '▖▘▝▗', '■□▪▫', '▌▀▐▄', '▉▊▋▌▍▎▏▎▍▌▋▊▉', '▁▃▄▅▆▇█▇▆▅▄▃', '←↖↑↗→↘↓↙', '┤┘┴└├┌┬┐', '◢◣◤◥', '.oO°Oo.', '.oO@*', '🌍🌎🌏', '◡◡ ⊙⊙ ◠◠', '☱☲☴', '⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏', '⠋⠙⠚⠞⠖⠦⠴⠲⠳⠓', '⠄⠆⠇⠋⠙⠸⠰⠠⠰⠸⠙⠋⠇⠆', '⠋⠙⠚⠒⠂⠂⠒⠲⠴⠦⠖⠒⠐⠐⠒⠓⠋', '⠁⠉⠙⠚⠒⠂⠂⠒⠲⠴⠤⠄⠄⠤⠴⠲⠒⠂⠂⠒⠚⠙⠉⠁', '⠈⠉⠋⠓⠒⠐⠐⠒⠖⠦⠤⠠⠠⠤⠦⠖⠒⠐⠐⠒⠓⠋⠉⠈', '⠁⠁⠉⠙⠚⠒⠂⠂⠒⠲⠴⠤⠄⠄⠤⠠⠠⠤⠦⠖⠒⠐⠐⠒⠓⠋⠉⠈⠈', '⢄⢂⢁⡁⡈⡐⡠', '⢹⢺⢼⣸⣇⡧⡗⡏', '⣾⣽⣻⢿⡿⣟⣯⣷', '⠁⠂⠄⡀⢀⠠⠐⠈'];
100645  
100646  /***/ }),
100647  /* 533 */
100648  /***/ (function(module, exports, __webpack_require__) {
100649  
100650  "use strict";
100651  
100652  
100653  Object.defineProperty(exports, "__esModule", {
100654    value: true
100655  });
100656  
100657  var _jsonReporter;
100658  
100659  function _load_jsonReporter() {
100660    return _jsonReporter = _interopRequireDefault(__webpack_require__(211));
100661  }
100662  
100663  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
100664  
100665  var _require = __webpack_require__(77);
100666  
100667  const EventEmitter = _require.EventEmitter;
100668  class EventReporter extends (_jsonReporter || _load_jsonReporter()).default {
100669  
100670    constructor(opts) {
100671      super(opts);
100672  
100673      // $FlowFixMe: looks like a flow bug
100674      EventEmitter.call(this);
100675    }
100676  
100677    _dump(type, data) {
100678      this.emit(type, data);
100679    }
100680  }
100681  
100682  exports.default = EventReporter;
100683  Object.assign(EventReporter.prototype, EventEmitter.prototype);
100684  
100685  /***/ }),
100686  /* 534 */
100687  /***/ (function(module, exports, __webpack_require__) {
100688  
100689  "use strict";
100690  
100691  
100692  Object.defineProperty(exports, "__esModule", {
100693    value: true
100694  });
100695  function formatFunction(...strs) {
100696    return strs.join(' ');
100697  }
100698  
100699  const defaultFormatter = exports.defaultFormatter = {
100700    bold: formatFunction,
100701    dim: formatFunction,
100702    italic: formatFunction,
100703    underline: formatFunction,
100704    inverse: formatFunction,
100705    strikethrough: formatFunction,
100706    black: formatFunction,
100707    red: formatFunction,
100708    green: formatFunction,
100709    yellow: formatFunction,
100710    blue: formatFunction,
100711    magenta: formatFunction,
100712    cyan: formatFunction,
100713    white: formatFunction,
100714    gray: formatFunction,
100715    grey: formatFunction,
100716    stripColor: formatFunction
100717  };
100718  
100719  /***/ }),
100720  /* 535 */
100721  /***/ (function(module, exports, __webpack_require__) {
100722  
100723  "use strict";
100724  
100725  
100726  Object.defineProperty(exports, "__esModule", {
100727    value: true
100728  });
100729  
100730  /* eslint max-len: 0 */
100731  
100732  const messages = {
100733    upToDate: 'Already up-to-date.',
100734    folderInSync: 'Folder in sync.',
100735    nothingToInstall: 'Nothing to install.',
100736    resolvingPackages: 'Resolving packages',
100737    checkingManifest: 'Validating package.json',
100738    fetchingPackages: 'Fetching packages',
100739    linkingDependencies: 'Linking dependencies',
100740    rebuildingPackages: 'Rebuilding all packages',
100741    buildingFreshPackages: 'Building fresh packages',
100742    cleaningModules: 'Cleaning modules',
100743    bumpingVersion: 'Bumping version',
100744    savingHar: 'Saving HAR file: $0',
100745    answer: 'Answer?',
100746    usage: 'Usage',
100747    installCommandRenamed: '`install` has been replaced with `add` to add new dependencies. Run $0 instead.',
100748    globalFlagRemoved: '`--global` has been deprecated. Please run $0 instead.',
100749    waitingInstance: 'Waiting for the other yarn instance to finish (pid $0, inside $1)',
100750    waitingNamedInstance: 'Waiting for the other yarn instance to finish ($0)',
100751    offlineRetrying: 'There appears to be trouble with your network connection. Retrying...',
100752    internalServerErrorRetrying: 'There appears to be trouble with the npm registry (returned $1). Retrying...',
100753    clearedCache: 'Cleared cache.',
100754    couldntClearPackageFromCache: "Couldn't clear package $0 from cache",
100755    clearedPackageFromCache: 'Cleared package $0 from cache',
100756    packWroteTarball: 'Wrote tarball to $0.',
100757    invalidBinField: 'Invalid bin field for $0.',
100758    invalidBinEntry: 'Invalid bin entry for $1 (in $0).',
100759    helpExamples: '  Examples:\n$0\n',
100760    helpCommands: '  Commands:\n$0\n',
100761    helpCommandsMore: '  Run `$0` for more information on specific commands.',
100762    helpLearnMore: '  Visit $0 to learn more about Yarn.\n',
100763  
100764    manifestPotentialTypo: 'Potential typo $0, did you mean $1?',
100765    manifestBuiltinModule: '$0 is also the name of a node core module',
100766    manifestNameDot: "Name can't start with a dot",
100767    manifestNameIllegalChars: 'Name contains illegal characters',
100768    manifestNameBlacklisted: 'Name is blacklisted',
100769    manifestLicenseInvalid: 'License should be a valid SPDX license expression',
100770    manifestLicenseNone: 'No license field',
100771    manifestStringExpected: '$0 is not a string',
100772    manifestDependencyCollision: '$0 has dependency $1 with range $2 that collides with a dependency in $3 of the same name with version $4',
100773    manifestDirectoryNotFound: 'Unable to read $0 directory of module $1',
100774  
100775    verboseFileCopy: 'Copying $0 to $1.',
100776    verboseFileLink: 'Creating hardlink at $0 to $1.',
100777    verboseFileSymlink: 'Creating symlink at $0 to $1.',
100778    verboseFileSkip: 'Skipping copying of file $0 as the file at $1 is the same size ($2) and mtime ($3).',
100779    verboseFileSkipSymlink: 'Skipping copying of $0 as the file at $1 is the same symlink ($2).',
100780    verboseFileSkipHardlink: 'Skipping copying of $0 as the file at $1 is the same hardlink ($2).',
100781    verboseFileRemoveExtraneous: 'Removing extraneous file $0.',
100782    verboseFilePhantomExtraneous: "File $0 would be marked as extraneous but has been removed as it's listed as a phantom file.",
100783    verboseFileSkipArtifact: 'Skipping copying of $0 as the file is marked as a built artifact and subject to change.',
100784    verboseFileFolder: 'Creating directory $0.',
100785  
100786    verboseRequestStart: 'Performing $0 request to $1.',
100787    verboseRequestFinish: 'Request $0 finished with status code $1.',
100788  
100789    configSet: 'Set $0 to $1.',
100790    configDelete: 'Deleted $0.',
100791    configNpm: 'npm config',
100792    configYarn: 'yarn config',
100793  
100794    couldntFindPackagejson: "Couldn't find a package.json file in $0",
100795    couldntFindMatch: "Couldn't find match for $0 in $1 for $2.",
100796    couldntFindPackageInCache: "Couldn't find any versions for $0 that matches $1 in our cache (possible versions are $2). This is usually caused by a missing entry in the lockfile, running Yarn without the --offline flag may help fix this issue.",
100797    couldntFindVersionThatMatchesRange: "Couldn't find any versions for $0 that matches $1",
100798    chooseVersionFromList: 'Please choose a version of $0 from this list:',
100799    moduleNotInManifest: "This module isn't specified in a package.json file.",
100800    moduleAlreadyInManifest: '$0 is already in $1. Please remove existing entry first before adding it to $2.',
100801    unknownFolderOrTarball: "Passed folder/tarball doesn't exist,",
100802    unknownPackage: "Couldn't find package $0.",
100803    unknownPackageName: "Couldn't find package name.",
100804    unknownUser: "Couldn't find user $0.",
100805    unknownRegistryResolver: 'Unknown registry resolver $0',
100806    userNotAnOwner: "User $0 isn't an owner of this package.",
100807    invalidVersionArgument: 'Use the $0 flag to create a new version.',
100808    invalidVersion: 'Invalid version supplied.',
100809    requiredVersionInRange: 'Required version in range.',
100810    packageNotFoundRegistry: "Couldn't find package $0 on the $1 registry.",
100811    requiredPackageNotFoundRegistry: "Couldn't find package $0 required by $1 on the $2 registry.",
100812    doesntExist: "Package $1 refers to a non-existing file '$0'.",
100813    missingRequiredPackageKey: `Package $0 doesn't have a $1.`,
100814    invalidAccess: 'Invalid argument for access, expected public or restricted.',
100815    invalidCommand: 'Invalid subcommand. Try $0',
100816    invalidGistFragment: 'Invalid gist fragment $0.',
100817    invalidHostedGitFragment: 'Invalid hosted git fragment $0.',
100818    invalidFragment: 'Invalid fragment $0.',
100819    invalidPackageName: 'Invalid package name.',
100820    invalidPackageVersion: "Can't add $0: invalid package version $1.",
100821    couldntFindManifestIn: "Couldn't find manifest in $0.",
100822    shrinkwrapWarning: 'npm-shrinkwrap.json found. This will not be updated or respected. See https://yarnpkg.com/en/docs/migrating-from-npm for more information.',
100823    npmLockfileWarning: 'package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.',
100824    lockfileOutdated: 'Outdated lockfile. Please run `yarn install` and try again.',
100825    lockfileMerged: 'Merge conflict detected in yarn.lock and successfully merged.',
100826    lockfileConflict: 'A merge conflict was found in yarn.lock but it could not be successfully merged, regenerating yarn.lock from scratch.',
100827    ignoredScripts: 'Ignored scripts due to flag.',
100828    missingAddDependencies: 'Missing list of packages to add to your project.',
100829    yesWarning: 'The yes flag has been set. This will automatically answer yes to all questions, which may have security implications.',
100830    networkWarning: "You don't appear to have an internet connection. Try the --offline flag to use the cache for registry queries.",
100831    flatGlobalError: 'The package $0 requires a flat dependency graph. Add `"flat": true` to your package.json and try again.',
100832    noName: `Package doesn't have a name.`,
100833    noVersion: `Package doesn't have a version.`,
100834    answerRequired: 'An answer is required.',
100835    missingWhyDependency: 'Missing package name, folder or path to file to identify why a package has been installed',
100836    bugReport: 'If you think this is a bug, please open a bug report with the information provided in $0.',
100837    unexpectedError: 'An unexpected error occurred: $0.',
100838    jsonError: 'Error parsing JSON at $0, $1.',
100839    noPermission: 'Cannot create $0 due to insufficient permissions.',
100840    noGlobalFolder: 'Cannot find a suitable global folder. Tried these: $0',
100841    allDependenciesUpToDate: 'All of your dependencies are up to date.',
100842    legendColorsForVersionUpdates: 'Color legend : \n $0    : Major Update backward-incompatible updates \n $1 : Minor Update backward-compatible features \n $2  : Patch Update backward-compatible bug fixes',
100843    frozenLockfileError: 'Your lockfile needs to be updated, but yarn was run with `--frozen-lockfile`.',
100844    fileWriteError: 'Could not write file $0: $1',
100845    multiplePackagesCantUnpackInSameDestination: 'Pattern $0 is trying to unpack in the same destination $1 as pattern $2. This could result in non-deterministic behavior, skipping.',
100846    incorrectLockfileEntry: 'Lockfile has incorrect entry for $0. Ignoring it.',
100847  
100848    invalidResolutionName: 'Resolution field $0 does not end with a valid package name and will be ignored',
100849    invalidResolutionVersion: 'Resolution field $0 has an invalid version entry and may be ignored',
100850    incompatibleResolutionVersion: 'Resolution field $0 is incompatible with requested version $1',
100851  
100852    yarnOutdated: "Your current version of Yarn is out of date. The latest version is $0, while you're on $1.",
100853    yarnOutdatedInstaller: 'To upgrade, download the latest installer at $0.',
100854    yarnOutdatedCommand: 'To upgrade, run the following command:',
100855  
100856    tooManyArguments: 'Too many arguments, maximum of $0.',
100857    tooFewArguments: 'Not enough arguments, expected at least $0.',
100858    noArguments: "This command doesn't require any arguments.",
100859  
100860    ownerRemoving: 'Removing owner $0 from package $1.',
100861    ownerRemoved: 'Owner removed.',
100862    ownerRemoveError: "Couldn't remove owner.",
100863    ownerGetting: 'Getting owners for package $0',
100864    ownerGettingFailed: "Couldn't get list of owners.",
100865    ownerAlready: 'This user is already an owner of this package.',
100866    ownerAdded: 'Added owner.',
100867    ownerAdding: 'Adding owner $0 to package $1',
100868    ownerAddingFailed: "Couldn't add owner.",
100869    ownerNone: 'No owners.',
100870  
100871    teamCreating: 'Creating team',
100872    teamRemoving: 'Removing team',
100873    teamAddingUser: 'Adding user to team',
100874    teamRemovingUser: 'Removing user from team',
100875    teamListing: 'Listing teams',
100876  
100877    cleaning: 'Cleaning modules',
100878    cleanCreatingFile: 'Creating $0',
100879    cleanCreatedFile: 'Created $0. Please review the contents of this file then run "yarn autoclean --force" to perform a clean.',
100880    cleanAlreadyExists: '$0 already exists. To revert to the default file, delete $0 then rerun this command.',
100881    cleanRequiresForce: 'This command required the "--force" flag to perform the clean. This is a destructive operation. Files specified in $0 will be deleted.',
100882    cleanDoesNotExist: '$0 does not exist. Autoclean will delete files specified by $0. Run "autoclean --init" to create $0 with the default entries.',
100883  
100884    binLinkCollision: "There's already a linked binary called $0 in your global Yarn bin. Could not link this package's $0 bin entry.",
100885    linkCollision: "There's already a package called $0 registered. This command has had no effect. If this command was run in another folder with the same name, the other folder is still linked. Please run yarn unlink in the other folder if you want to register this folder.",
100886    linkMissing: 'No registered package found called $0.',
100887    linkRegistered: 'Registered $0.',
100888    linkRegisteredMessage: 'You can now run `yarn link $0` in the projects where you want to use this package and it will be used instead.',
100889    linkUnregistered: 'Unregistered $0.',
100890    linkUnregisteredMessage: 'You can now run `yarn unlink $0` in the projects where you no longer want to use this package.',
100891    linkUsing: 'Using linked package for $0.',
100892    linkDisusing: 'Removed linked package $0.',
100893    linkDisusingMessage: 'You will need to run `yarn install --force` to re-install the package that was linked.',
100894    linkTargetMissing: 'The target of linked package $0 is missing. Removing link.',
100895  
100896    createInvalidBin: 'Invalid bin entry found in package $0.',
100897    createMissingPackage: 'Package not found - this is probably an internal error, and should be reported at https://github.com/yarnpkg/yarn/issues.',
100898  
100899    workspacesAddRootCheck: 'Running this command will add the dependency to the workspace root rather than the workspace itself, which might not be what you want - if you really meant it, make it explicit by running this command again with the -W flag (or --ignore-workspace-root-check).',
100900    workspacesRemoveRootCheck: 'Running this command will remove the dependency from the workspace root rather than the workspace itself, which might not be what you want - if you really meant it, make it explicit by running this command again with the -W flag (or --ignore-workspace-root-check).',
100901    workspacesFocusRootCheck: 'This command can only be run inside an individual workspace.',
100902    workspacesRequirePrivateProjects: 'Workspaces can only be enabled in private projects.',
100903    workspacesSettingMustBeArray: 'The workspaces field in package.json must be an array.',
100904    workspacesDisabled: 'Your project root defines workspaces but the feature is disabled in your Yarn config. Please check "workspaces-experimental" in your .yarnrc file.',
100905  
100906    workspacesNohoistRequirePrivatePackages: 'nohoist config is ignored in $0 because it is not a private package. If you think nohoist should be allowed in public packages, please submit an issue for your use case.',
100907    workspacesNohoistDisabled: `$0 defines nohoist but the feature is disabled in your Yarn config ("workspaces-nohoist-experimental" in .yarnrc file)`,
100908  
100909    workspaceRootNotFound: "Cannot find the root of your workspace - are you sure you're currently in a workspace?",
100910    workspaceMissingWorkspace: 'Missing workspace name.',
100911    workspaceMissingCommand: 'Missing command name.',
100912    workspaceUnknownWorkspace: 'Unknown workspace $0.',
100913    workspaceVersionMandatory: 'Missing version in workspace at $0, ignoring.',
100914    workspaceNameMandatory: 'Missing name in workspace at $0, ignoring.',
100915    workspaceNameDuplicate: 'There are more than one workspace with name $0',
100916  
100917    cacheFolderSkipped: 'Skipping preferred cache folder $0 because it is not writable.',
100918    cacheFolderMissing: "Yarn hasn't been able to find a cache folder it can use. Please use the explicit --cache-folder option to tell it what location to use, or make one of the preferred locations writable.",
100919    cacheFolderSelected: 'Selected the next writable cache folder in the list, will be $0.',
100920  
100921    execMissingCommand: 'Missing command name.',
100922  
100923    noScriptsAvailable: 'There are no scripts specified inside package.json.',
100924    noBinAvailable: 'There are no binary scripts available.',
100925    dashDashDeprecation: `From Yarn 1.0 onwards, scripts don't require "--" for options to be forwarded. In a future version, any explicit "--" will be forwarded as-is to the scripts.`,
100926    commandNotSpecified: 'No command specified.',
100927    binCommands: 'Commands available from binary scripts: ',
100928    possibleCommands: 'Project commands',
100929    commandQuestion: 'Which command would you like to run?',
100930    commandFailedWithCode: 'Command failed with exit code $0.',
100931    commandFailedWithSignal: 'Command failed with signal $0.',
100932    packageRequiresNodeGyp: 'This package requires node-gyp, which is not currently installed. Yarn will attempt to automatically install it. If this fails, you can run "yarn global add node-gyp" to manually install it.',
100933    nodeGypAutoInstallFailed: 'Failed to auto-install node-gyp. Please run "yarn global add node-gyp" manually. Error: $0',
100934  
100935    foundIncompatible: 'Found incompatible module.',
100936    incompatibleEngine: 'The engine $0 is incompatible with this module. Expected version $1. Got $2',
100937    incompatibleCPU: 'The CPU architecture $0 is incompatible with this module.',
100938    incompatibleOS: 'The platform $0 is incompatible with this module.',
100939    invalidEngine: 'The engine $0 appears to be invalid.',
100940    cannotRunWithIncompatibleEnv: 'Commands cannot run with an incompatible environment.',
100941  
100942    optionalCompatibilityExcluded: '$0 is an optional dependency and failed compatibility check. Excluding it from installation.',
100943    optionalModuleFail: 'This module is OPTIONAL, you can safely ignore this error',
100944    optionalModuleScriptFail: 'Error running install script for optional dependency: $0',
100945    optionalModuleCleanupFail: 'Could not cleanup build artifacts from failed install: $0',
100946  
100947    unmetPeer: '$0 has unmet peer dependency $1.',
100948    incorrectPeer: '$0 has incorrect peer dependency $1.',
100949    selectedPeer: 'Selecting $1 at level $2 as the peer dependency of $0.',
100950    missingBundledDependency: '$0 is missing a bundled dependency $1. This should be reported to the package maintainer.',
100951  
100952    savedNewDependency: 'Saved 1 new dependency.',
100953    savedNewDependencies: 'Saved $0 new dependencies.',
100954    directDependencies: 'Direct dependencies',
100955    allDependencies: 'All dependencies',
100956  
100957    foundWarnings: 'Found $0 warnings.',
100958    foundErrors: 'Found $0 errors.',
100959  
100960    savedLockfile: 'Saved lockfile.',
100961    noRequiredLockfile: 'No lockfile in this directory. Run `yarn install` to generate one.',
100962    noLockfileFound: 'No lockfile found.',
100963  
100964    invalidSemver: 'Invalid semver version',
100965    newVersion: 'New version',
100966    currentVersion: 'Current version',
100967    noVersionOnPublish: 'Proceeding with current version',
100968  
100969    manualVersionResolution: 'Unable to find a suitable version for $0, please choose one by typing one of the numbers below:',
100970    manualVersionResolutionOption: '$0 which resolved to $1',
100971  
100972    createdTag: 'Created tag.',
100973    createdTagFail: "Couldn't add tag.",
100974    deletedTag: 'Deleted tag.',
100975    deletedTagFail: "Couldn't delete tag.",
100976    gettingTags: 'Getting tags',
100977    deletingTags: 'Deleting tag',
100978    creatingTag: 'Creating tag $0 = $1',
100979  
100980    whyStart: 'Why do we have the module $0?',
100981    whyFinding: 'Finding dependency',
100982    whyCalculating: 'Calculating file sizes',
100983    whyUnknownMatch: "We couldn't find a match!",
100984    whyInitGraph: 'Initialising dependency graph',
100985    whyWhoKnows: "We don't know why this module exists",
100986    whyDiskSizeWithout: 'Disk size without dependencies: $0',
100987    whyDiskSizeUnique: 'Disk size with unique dependencies: $0',
100988    whyDiskSizeTransitive: 'Disk size with transitive dependencies: $0',
100989    whySharedDependencies: 'Number of shared dependencies: $0',
100990    whyHoistedTo: `Has been hoisted to $0`,
100991  
100992    whyHoistedFromSimple: `This module exists because it's hoisted from $0.`,
100993    whyNotHoistedSimple: `This module exists here because it's in the nohoist list $0.`,
100994    whyDependedOnSimple: `This module exists because $0 depends on it.`,
100995    whySpecifiedSimple: `This module exists because it's specified in $0.`,
100996    whyReasons: 'Reasons this module exists',
100997    whyHoistedFrom: 'Hoisted from $0',
100998    whyNotHoisted: `in the nohoist list $0`,
100999    whyDependedOn: '$0 depends on it',
101000    whySpecified: `Specified in $0`,
101001  
101002    whyMatch: `\r=> Found $0`,
101003  
101004    uninstalledPackages: 'Uninstalled packages.',
101005    uninstallRegenerate: 'Regenerating lockfile and installing missing dependencies',
101006  
101007    cleanRemovedFiles: 'Removed $0 files',
101008    cleanSavedSize: 'Saved $0 MB.',
101009  
101010    configFileFound: 'Found configuration file $0.',
101011    configPossibleFile: 'Checking for configuration file $0.',
101012  
101013    npmUsername: 'npm username',
101014    npmPassword: 'npm password',
101015    npmEmail: 'npm email',
101016    npmOneTimePassword: 'npm one-time password',
101017  
101018    loggingIn: 'Logging in',
101019    loggedIn: 'Logged in.',
101020    notRevokingEnvToken: 'Not revoking login token, specified via environment variable.',
101021    notRevokingConfigToken: 'Not revoking login token, specified via config file.',
101022    noTokenToRevoke: 'No login token to revoke.',
101023    revokingToken: 'Revoking token',
101024    revokedToken: 'Revoked login token.',
101025  
101026    loginAsPublic: 'Logging in as public',
101027    incorrectCredentials: 'Incorrect username or password.',
101028    incorrectOneTimePassword: 'Incorrect one-time password.',
101029    twoFactorAuthenticationEnabled: 'Two factor authentication enabled.',
101030    clearedCredentials: 'Cleared login credentials.',
101031  
101032    publishFail: "Couldn't publish package: $0",
101033    publishPrivate: 'Package marked as private, not publishing.',
101034    published: 'Published.',
101035    publishing: 'Publishing',
101036  
101037    nonInteractiveNoVersionSpecified: 'You must specify a new version with --new-version when running with --non-interactive.',
101038    nonInteractiveNoToken: "No token found and can't prompt for login when running with --non-interactive.",
101039  
101040    infoFail: 'Received invalid response from npm.',
101041    malformedRegistryResponse: 'Received malformed response from registry for $0. The registry may be down.',
101042    registryNoVersions: 'No valid versions found for $0. The package may be unpublished.',
101043  
101044    cantRequestOffline: "Can't make a request in offline mode ($0)",
101045    requestManagerNotSetupHAR: 'RequestManager was not setup to capture HAR files',
101046    requestError: 'Request $0 returned a $1',
101047    requestFailed: 'Request failed $0',
101048    tarballNotInNetworkOrCache: '$0: Tarball is not in network and can not be located in cache ($1)',
101049    fetchBadIntegrityCache: 'Incorrect integrity when fetching from the cache for $0. Cache has $1 and remote has $2. Run `yarn cache clean` to fix the problem',
101050    fetchBadHashCache: 'Incorrect hash when fetching from the cache for $0. Cache has $1 and remote has $2. Run `yarn cache clean` to fix the problem',
101051    fetchBadHashWithPath: "Integrity check failed for $0 (computed integrity doesn't match our records, got $2)",
101052    fetchBadIntegrityAlgorithm: 'Integrity checked failed for $0 (none of the specified algorithms are supported)',
101053    fetchErrorCorrupt: '$0. Mirror tarball appears to be corrupt. You can resolve this by running:\n\n  rm -rf $1\n  yarn install',
101054    errorExtractingTarball: 'Extracting tar content of $1 failed, the file appears to be corrupt: $0',
101055    updateInstalling: 'Installing $0...',
101056    hostedGitResolveError: 'Error connecting to repository. Please, check the url.',
101057    unauthorizedResponse: 'Received a 401 from $0. $1',
101058  
101059    unknownFetcherFor: 'Unknown fetcher for $0',
101060  
101061    downloadGitWithoutCommit: 'Downloading the git repo $0 over plain git without a commit hash',
101062    downloadHTTPWithoutCommit: 'Downloading the git repo $0 over HTTP without a commit hash',
101063  
101064    unplugDisabled: "Packages can only be unplugged when Plug'n'Play is enabled.",
101065  
101066    plugnplaySuggestV2L1: "Plug'n'Play support has been greatly improved on the Yarn v2 development branch.",
101067    plugnplaySuggestV2L2: 'Please give it a try and tell us what you think! - https://next.yarnpkg.com/getting-started/install',
101068    plugnplayWindowsSupport: "Plug'n'Play on Windows doesn't support the cache and project to be kept on separate drives",
101069  
101070    packageInstalledWithBinaries: 'Installed $0 with binaries:',
101071    packageHasBinaries: '$0 has binaries:',
101072    packageHasNoBinaries: '$0 has no binaries',
101073    packageBinaryNotFound: "Couldn't find a binary named $0",
101074  
101075    couldBeDeduped: '$0 could be deduped from $1 to $2',
101076    lockfileNotContainPattern: 'Lockfile does not contain pattern: $0',
101077    integrityCheckFailed: 'Integrity check failed',
101078    noIntegrityFile: "Couldn't find an integrity file",
101079    integrityFailedExpectedIsNotAJSON: 'Integrity check: integrity file is not a json',
101080    integrityCheckLinkedModulesDontMatch: "Integrity check: Linked modules don't match",
101081    integrityFlagsDontMatch: "Integrity check: Flags don't match",
101082    integrityLockfilesDontMatch: "Integrity check: Lock files don't match",
101083    integrityFailedFilesMissing: 'Integrity check: Files are missing',
101084    integrityPatternsDontMatch: "Integrity check: Top level patterns don't match",
101085    integrityModulesFoldersMissing: 'Integrity check: Some module folders are missing',
101086    integritySystemParamsDontMatch: "Integrity check: System parameters don't match",
101087    packageNotInstalled: '$0 not installed',
101088    optionalDepNotInstalled: 'Optional dependency $0 not installed',
101089    packageWrongVersion: '$0 is wrong version: expected $1, got $2',
101090    packageDontSatisfy: "$0 doesn't satisfy found match of $1",
101091  
101092    lockfileExists: 'Lockfile already exists, not importing.',
101093    skippingImport: 'Skipping import of $0 for $1',
101094    importFailed: 'Import of $0 for $1 failed, resolving normally.',
101095    importResolveFailed: 'Import of $0 failed starting in $1',
101096    importResolvedRangeMatch: 'Using version $0 of $1 instead of $2 for $3',
101097    importSourceFilesCorrupted: 'Failed to import from package-lock.json, source file(s) corrupted',
101098    importPackageLock: 'found npm package-lock.json, converting to yarn.lock',
101099    importNodeModules: 'creating yarn.lock from local node_modules folder',
101100    packageContainsYarnAsGlobal: 'Installing Yarn via Yarn will result in you having two separate versions of Yarn installed at the same time, which is not recommended. To update Yarn please follow https://yarnpkg.com/en/docs/install .',
101101  
101102    scopeNotValid: 'The specified scope is not valid.',
101103  
101104    deprecatedCommand: '$0 is deprecated. Please use $1.',
101105    deprecatedListArgs: 'Filtering by arguments is deprecated. Please use the pattern option instead.',
101106    implicitFileDeprecated: 'Using the "file:" protocol implicitly is deprecated. Please either prepend the protocol or prepend the path $0 with "./".',
101107    unsupportedNodeVersion: 'You are using Node $0 which is not supported and may encounter bugs or unexpected behavior. Yarn supports the following semver range: $1',
101108  
101109    verboseUpgradeBecauseRequested: 'Considering upgrade of $0 to $1 because it was directly requested.',
101110    verboseUpgradeBecauseOutdated: 'Considering upgrade of $0 to $1 because a newer version exists in the registry.',
101111    verboseUpgradeNotUnlocking: 'Not unlocking $0 in the lockfile because it is a new or direct dependency.',
101112    verboseUpgradeUnlocking: 'Unlocking $0 in the lockfile.',
101113    folderMissing: "Directory $0 doesn't exist",
101114    mutexPortBusy: 'Cannot use the network mutex on port $0. It is probably used by another app.',
101115  
101116    auditRunning: 'Auditing packages',
101117    auditSummary: '$0 vulnerabilities found - Packages audited: $1',
101118    auditSummarySeverity: 'Severity:',
101119    auditCritical: '$0 Critical',
101120    auditHigh: '$0 High',
101121    auditModerate: '$0 Moderate',
101122    auditLow: '$0 Low',
101123    auditInfo: '$0 Info',
101124    auditResolveCommand: '# Run $0 to resolve $1 $2',
101125    auditSemverMajorChange: 'SEMVER WARNING: Recommended action is a potentially breaking change',
101126    auditManualReview: 'Manual Review\nSome vulnerabilities require your attention to resolve\n\nVisit https://go.npm.me/audit-guide for additional guidance',
101127    auditRunAuditForDetails: 'Security audit found potential problems. Run "yarn audit" for additional details.',
101128    auditOffline: 'Skipping audit. Security audit cannot be performed in offline mode.'
101129  };
101130  
101131  exports.default = messages;
101132  
101133  /***/ }),
101134  /* 536 */
101135  /***/ (function(module, exports, __webpack_require__) {
101136  
101137  "use strict";
101138  
101139  
101140  Object.defineProperty(exports, "__esModule", {
101141    value: true
101142  });
101143  exports.en = undefined;
101144  
101145  var _en;
101146  
101147  function _load_en() {
101148    return _en = _interopRequireDefault(__webpack_require__(535));
101149  }
101150  
101151  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
101152  
101153  exports.en = (_en || _load_en()).default;
101154  
101155  /***/ }),
101156  /* 537 */
101157  /***/ (function(module, exports, __webpack_require__) {
101158  
101159  "use strict";
101160  
101161  
101162  Object.defineProperty(exports, "__esModule", {
101163    value: true
101164  });
101165  
101166  var _asyncToGenerator2;
101167  
101168  function _load_asyncToGenerator() {
101169    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
101170  }
101171  
101172  var _baseReporter;
101173  
101174  function _load_baseReporter() {
101175    return _baseReporter = _interopRequireDefault(__webpack_require__(108));
101176  }
101177  
101178  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
101179  
101180  /* eslint no-unused-vars: 0 */
101181  
101182  class NoopReporter extends (_baseReporter || _load_baseReporter()).default {
101183    lang(key, ...args) {
101184      return 'do nothing';
101185    }
101186    verbose(msg) {}
101187    verboseInspect(val) {}
101188    initPeakMemoryCounter() {}
101189    checkPeakMemory() {}
101190    close() {}
101191    getTotalTime() {
101192      return 0;
101193    }
101194    list(key, items, hints) {}
101195    tree(key, obj) {}
101196    step(current, total, message, emoji) {}
101197    error(message) {}
101198    info(message) {}
101199    warn(message) {}
101200    success(message) {}
101201    log(message) {}
101202    command(command) {}
101203    inspect(value) {}
101204    header(command, pkg) {}
101205    footer(showPeakMemory) {}
101206    table(head, body) {}
101207  
101208    activity() {
101209      return {
101210        tick(name) {},
101211        end() {}
101212      };
101213    }
101214  
101215    activitySet(total, workers) {
101216      return {
101217        spinners: Array(workers).fill({
101218          clear() {},
101219          setPrefix() {},
101220          tick() {},
101221          end() {}
101222        }),
101223        end() {}
101224      };
101225    }
101226  
101227    question(question, options = {}) {
101228      return Promise.reject(new Error('Not implemented'));
101229    }
101230  
101231    questionAffirm(question) {
101232      var _this = this;
101233  
101234      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
101235        yield _this.question(question);
101236        return false;
101237      })();
101238    }
101239  
101240    select(header, question, options) {
101241      return Promise.reject(new Error('Not implemented'));
101242    }
101243  
101244    progress(total) {
101245      return function () {};
101246    }
101247  
101248    disableProgress() {
101249      this.noProgress = true;
101250    }
101251  
101252    prompt(message, choices, options = {}) {
101253      return Promise.reject(new Error('Not implemented'));
101254    }
101255  }
101256  exports.default = NoopReporter;
101257  
101258  /***/ }),
101259  /* 538 */
101260  /***/ (function(module, exports, __webpack_require__) {
101261  
101262  "use strict";
101263  
101264  
101265  Object.defineProperty(exports, "__esModule", {
101266    value: true
101267  });
101268  
101269  var _extends2;
101270  
101271  function _load_extends() {
101272    return _extends2 = _interopRequireDefault(__webpack_require__(20));
101273  }
101274  
101275  var _packageRequest;
101276  
101277  function _load_packageRequest() {
101278    return _packageRequest = _interopRequireDefault(__webpack_require__(122));
101279  }
101280  
101281  var _baseResolver;
101282  
101283  function _load_baseResolver() {
101284    return _baseResolver = _interopRequireDefault(__webpack_require__(123));
101285  }
101286  
101287  var _workspaceLayout;
101288  
101289  function _load_workspaceLayout() {
101290    return _workspaceLayout = _interopRequireDefault(__webpack_require__(90));
101291  }
101292  
101293  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
101294  
101295  const invariant = __webpack_require__(9);
101296  
101297  class WorkspaceResolver extends (_baseResolver || _load_baseResolver()).default {
101298    static isWorkspace(pattern, workspaceLayout) {
101299      return !!workspaceLayout && !!workspaceLayout.getManifestByPattern(pattern);
101300    }
101301  
101302    constructor(request, fragment, workspaceLayout) {
101303      super(request, fragment);
101304      this.workspaceLayout = workspaceLayout;
101305    }
101306  
101307    resolve(downloadedManifest) {
101308      const workspace = this.workspaceLayout.getManifestByPattern(this.request.pattern);
101309      invariant(workspace, 'expected workspace');
101310      const manifest = workspace.manifest,
101311            loc = workspace.loc;
101312  
101313      if (manifest._remote && manifest._remote.registryRemote) {
101314        return Promise.resolve(manifest); //already downloaded
101315      }
101316      const registry = manifest._registry;
101317      invariant(registry, 'expected reference');
101318      let hash = '';
101319      let registryRemote;
101320      if (downloadedManifest && manifest.version === downloadedManifest.version) {
101321        registryRemote = downloadedManifest._remote;
101322        invariant(registryRemote, 'missing remote info');
101323        hash = registryRemote.hash;
101324        //override any local changes to manifest
101325        Object.keys(manifest).forEach(k => k.startsWith('_') || delete manifest[k]);
101326        Object.assign(manifest, downloadedManifest);
101327      } else if (manifest._remote && manifest._remote.hash) {
101328        invariant(workspace.manifest._remote, 'missing remote info');
101329        registryRemote = workspace.manifest._remote.registryRemote;
101330        hash = manifest._remote.hash;
101331      }
101332      if (registryRemote) {
101333        registryRemote = (0, (_extends2 || _load_extends()).default)({}, registryRemote);
101334      }
101335  
101336      manifest._remote = Object.assign(manifest._remote || {}, {
101337        type: 'workspace',
101338        registryRemote,
101339        registry,
101340        hash,
101341        reference: loc
101342      });
101343  
101344      manifest._uid = manifest.version;
101345  
101346      return Promise.resolve(manifest);
101347    }
101348  }
101349  exports.default = WorkspaceResolver;
101350  
101351  /***/ }),
101352  /* 539 */
101353  /***/ (function(module, exports, __webpack_require__) {
101354  
101355  "use strict";
101356  
101357  
101358  Object.defineProperty(exports, "__esModule", {
101359    value: true
101360  });
101361  
101362  var _asyncToGenerator2;
101363  
101364  function _load_asyncToGenerator() {
101365    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
101366  }
101367  
101368  var _hostedGitResolver;
101369  
101370  function _load_hostedGitResolver() {
101371    return _hostedGitResolver = _interopRequireDefault(__webpack_require__(109));
101372  }
101373  
101374  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
101375  
101376  class BitbucketResolver extends (_hostedGitResolver || _load_hostedGitResolver()).default {
101377  
101378    static getTarballUrl(parts, hash) {
101379      return `https://${this.hostname}/${parts.user}/${parts.repo}/get/${hash}.tar.gz`;
101380    }
101381  
101382    static getGitHTTPBaseUrl(parts) {
101383      return `https://${this.hostname}/${parts.user}/${parts.repo}`;
101384    }
101385  
101386    static getGitHTTPUrl(parts) {
101387      return `${BitbucketResolver.getGitHTTPBaseUrl(parts)}.git`;
101388    }
101389  
101390    static getGitSSHUrl(parts) {
101391      return `git+ssh://git@${this.hostname}/${parts.user}/${parts.repo}.git` + `${parts.hash ? '#' + decodeURIComponent(parts.hash) : ''}`;
101392    }
101393  
101394    static getHTTPFileUrl(parts, filename, commit) {
101395      return `https://${this.hostname}/${parts.user}/${parts.repo}/raw/${commit}/${filename}`;
101396    }
101397  
101398    hasHTTPCapability(url) {
101399      var _this = this;
101400  
101401      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
101402        // We don't follow redirects and reject a 302 since this means BitBucket
101403        // won't allow us to use the HTTP protocol for `git` access.
101404        // Most probably a private repo and this 302 is to a login page.
101405        const bitbucketHTTPSupport = yield _this.config.requestManager.request({
101406          url,
101407          method: 'HEAD',
101408          queue: _this.resolver.fetchingQueue,
101409          followRedirect: false,
101410          rejectStatusCode: 302
101411        });
101412        return bitbucketHTTPSupport !== false;
101413      })();
101414    }
101415  }
101416  exports.default = BitbucketResolver;
101417  BitbucketResolver.hostname = 'bitbucket.org';
101418  BitbucketResolver.protocol = 'bitbucket';
101419  
101420  /***/ }),
101421  /* 540 */
101422  /***/ (function(module, exports, __webpack_require__) {
101423  
101424  "use strict";
101425  
101426  
101427  Object.defineProperty(exports, "__esModule", {
101428    value: true
101429  });
101430  
101431  var _hostedGitResolver;
101432  
101433  function _load_hostedGitResolver() {
101434    return _hostedGitResolver = _interopRequireDefault(__webpack_require__(109));
101435  }
101436  
101437  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
101438  
101439  class GitLabResolver extends (_hostedGitResolver || _load_hostedGitResolver()).default {
101440  
101441    static getTarballUrl(parts, hash) {
101442      return `https://${this.hostname}/${parts.user}/${parts.repo}/repository/archive.tar.gz?ref=${hash}`;
101443    }
101444  
101445    static getGitHTTPBaseUrl(parts) {
101446      return `https://${this.hostname}/${parts.user}/${parts.repo}`;
101447    }
101448  
101449    static getGitHTTPUrl(parts) {
101450      return `${GitLabResolver.getGitHTTPBaseUrl(parts)}.git`;
101451    }
101452  
101453    static getGitSSHUrl(parts) {
101454      return `git+ssh://git@${this.hostname}/${parts.user}/${parts.repo}.git` + `${parts.hash ? '#' + decodeURIComponent(parts.hash) : ''}`;
101455    }
101456  
101457    static getHTTPFileUrl(parts, filename, commit) {
101458      return `https://${this.hostname}/${parts.user}/${parts.repo}/raw/${commit}/${filename}`;
101459    }
101460  }
101461  exports.default = GitLabResolver;
101462  GitLabResolver.hostname = 'gitlab.com';
101463  GitLabResolver.protocol = 'gitlab';
101464  
101465  /***/ }),
101466  /* 541 */
101467  /***/ (function(module, exports, __webpack_require__) {
101468  
101469  "use strict";
101470  
101471  
101472  Object.defineProperty(exports, "__esModule", {
101473    value: true
101474  });
101475  
101476  var _errors;
101477  
101478  function _load_errors() {
101479    return _errors = __webpack_require__(6);
101480  }
101481  
101482  var _exoticResolver;
101483  
101484  function _load_exoticResolver() {
101485    return _exoticResolver = _interopRequireDefault(__webpack_require__(89));
101486  }
101487  
101488  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
101489  
101490  class RegistryResolver extends (_exoticResolver || _load_exoticResolver()).default {
101491    constructor(request, fragment) {
101492      super(request, fragment);
101493  
101494      const match = fragment.match(/^(\S+):(@?.*?)(@(.*?)|)$/);
101495      if (match) {
101496        this.range = match[4] || 'latest';
101497        this.name = match[2];
101498      } else {
101499        throw new (_errors || _load_errors()).MessageError(this.reporter.lang('invalidFragment', fragment));
101500      }
101501  
101502      // $FlowFixMe
101503      this.registry = this.constructor.protocol;
101504    }
101505  
101506    resolve() {
101507      return this.fork(this.constructor.factory, false, this.name, this.range);
101508    }
101509  }
101510  exports.default = RegistryResolver;
101511  
101512  /***/ }),
101513  /* 542 */
101514  /***/ (function(module, exports, __webpack_require__) {
101515  
101516  "use strict";
101517  
101518  
101519  Object.defineProperty(exports, "__esModule", {
101520    value: true
101521  });
101522  
101523  var _asyncToGenerator2;
101524  
101525  function _load_asyncToGenerator() {
101526    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
101527  }
101528  
101529  var _tarballFetcher;
101530  
101531  function _load_tarballFetcher() {
101532    return _tarballFetcher = _interopRequireDefault(__webpack_require__(358));
101533  }
101534  
101535  var _exoticResolver;
101536  
101537  function _load_exoticResolver() {
101538    return _exoticResolver = _interopRequireDefault(__webpack_require__(89));
101539  }
101540  
101541  var _gitResolver;
101542  
101543  function _load_gitResolver() {
101544    return _gitResolver = _interopRequireDefault(__webpack_require__(124));
101545  }
101546  
101547  var _guessName;
101548  
101549  function _load_guessName() {
101550    return _guessName = _interopRequireDefault(__webpack_require__(169));
101551  }
101552  
101553  var _version;
101554  
101555  function _load_version() {
101556    return _version = _interopRequireWildcard(__webpack_require__(223));
101557  }
101558  
101559  var _crypto;
101560  
101561  function _load_crypto() {
101562    return _crypto = _interopRequireWildcard(__webpack_require__(168));
101563  }
101564  
101565  var _fs;
101566  
101567  function _load_fs() {
101568    return _fs = _interopRequireWildcard(__webpack_require__(5));
101569  }
101570  
101571  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
101572  
101573  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
101574  
101575  const invariant = __webpack_require__(9);
101576  
101577  class TarballResolver extends (_exoticResolver || _load_exoticResolver()).default {
101578    constructor(request, fragment) {
101579      super(request, fragment);
101580  
101581      var _versionUtil$explodeH = (_version || _load_version()).explodeHashedUrl(fragment);
101582  
101583      const hash = _versionUtil$explodeH.hash,
101584            url = _versionUtil$explodeH.url;
101585  
101586      this.hash = hash;
101587      this.url = url;
101588    }
101589  
101590    static isVersion(pattern) {
101591      // we can sometimes match git urls which we don't want
101592      if ((_gitResolver || _load_gitResolver()).default.isVersion(pattern)) {
101593        return false;
101594      }
101595  
101596      // full http url
101597      if (pattern.startsWith('http://') || pattern.startsWith('https://')) {
101598        return true;
101599      }
101600  
101601      // local file reference - ignore patterns with names
101602      if (pattern.indexOf('@') < 0) {
101603        if (pattern.endsWith('.tgz') || pattern.endsWith('.tar.gz')) {
101604          return true;
101605        }
101606      }
101607  
101608      return false;
101609    }
101610  
101611    resolve() {
101612      var _this = this;
101613  
101614      return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
101615        const shrunk = _this.request.getLocked('tarball');
101616        if (shrunk) {
101617          return shrunk;
101618        }
101619  
101620        const url = _this.url;
101621        let hash = _this.hash,
101622            registry = _this.registry;
101623  
101624        let pkgJson;
101625  
101626        // generate temp directory
101627        const dest = _this.config.getTemp((_crypto || _load_crypto()).hash(url));
101628  
101629        if (yield _this.config.isValidModuleDest(dest)) {
101630          var _ref = yield _this.config.readPackageMetadata(dest);
101631          // load from local cache
101632  
101633  
101634          pkgJson = _ref.package;
101635          hash = _ref.hash;
101636          registry = _ref.registry;
101637        } else {
101638          // delete if invalid
101639          yield (_fs || _load_fs()).unlink(dest);
101640  
101641          const fetcher = new (_tarballFetcher || _load_tarballFetcher()).default(dest, {
101642            type: 'tarball',
101643            reference: url,
101644            registry,
101645            hash
101646          }, _this.config);
101647  
101648          // fetch file and get it's hash
101649          const fetched = yield fetcher.fetch({
101650            name: (0, (_guessName || _load_guessName()).default)(url),
101651            version: '0.0.0',
101652            _registry: 'npm'
101653          });
101654          pkgJson = fetched.package;
101655          hash = fetched.hash;
101656  
101657          registry = pkgJson._registry;
101658          invariant(registry, 'expected registry');
101659        }
101660  
101661        // use the commit/tarball hash as the uid as we can't rely on the version as it's not
101662        // in the registry
101663        pkgJson._uid = hash;
101664  
101665        // set remote so it can be "fetched"
101666        pkgJson._remote = {
101667          type: 'copy',
101668          resolved: `${url}#${hash}`,
101669          hash,
101670          registry,
101671          reference: dest
101672        };
101673  
101674        return pkgJson;
101675      })();
101676    }
101677  }
101678  exports.default = TarballResolver;
101679  
101680  /***/ }),
101681  /* 543 */
101682  /***/ (function(module, exports, __webpack_require__) {
101683  
101684  "use strict";
101685  
101686  
101687  Object.defineProperty(exports, "__esModule", {
101688    value: true
101689  });
101690  
101691  var _baseResolver;
101692  
101693  function _load_baseResolver() {
101694    return _baseResolver = _interopRequireDefault(__webpack_require__(123));
101695  }
101696  
101697  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
101698  
101699  class RegistryResolver extends (_baseResolver || _load_baseResolver()).default {
101700    constructor(request, name, range) {
101701      super(request, `${name}@${range}`);
101702      this.name = name;
101703      this.range = range;
101704  
101705      this.registryConfig = request.config.registries[this.constructor.registry].config;
101706    }
101707  
101708  }
101709  exports.default = RegistryResolver;
101710  
101711  /***/ }),
101712  /* 544 */
101713  /***/ (function(module, exports, __webpack_require__) {
101714  
101715  "use strict";
101716  
101717  
101718  Object.defineProperty(exports, "__esModule", {
101719    value: true
101720  });
101721  
101722  var _npmResolver;
101723  
101724  function _load_npmResolver() {
101725    return _npmResolver = _interopRequireDefault(__webpack_require__(215));
101726  }
101727  
101728  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
101729  
101730  class YarnResolver extends (_npmResolver || _load_npmResolver()).default {}
101731  exports.default = YarnResolver;
101732  
101733  /***/ }),
101734  /* 545 */
101735  /***/ (function(module, exports, __webpack_require__) {
101736  
101737  "use strict";
101738  
101739  
101740  Object.defineProperty(exports, "__esModule", {
101741    value: true
101742  });
101743  exports.default = envReplace;
101744  const ENV_EXPR = /(\\*)\$\{([^}]+)\}/g;
101745  
101746  function envReplace(value, env = process.env) {
101747    if (typeof value !== 'string' || !value) {
101748      return value;
101749    }
101750  
101751    return value.replace(ENV_EXPR, (match, esc, envVarName) => {
101752      if (esc.length && esc.length % 2) {
101753        return match;
101754      }
101755      if (undefined === env[envVarName]) {
101756        throw new Error('Failed to replace env in config: ' + match);
101757      }
101758      return env[envVarName] || '';
101759    });
101760  }
101761  
101762  /***/ }),
101763  /* 546 */
101764  /***/ (function(module, exports, __webpack_require__) {
101765  
101766  "use strict";
101767  
101768  
101769  Object.defineProperty(exports, "__esModule", {
101770    value: true
101771  });
101772  exports.fixCmdWinSlashes = fixCmdWinSlashes;
101773  function fixCmdWinSlashes(cmd) {
101774    function findQuotes(quoteSymbol) {
101775      const quotes = [];
101776      const addQuote = (_, index) => {
101777        quotes.push({ from: index, to: index + _.length });
101778        return _;
101779      };
101780      const regEx = new RegExp(quoteSymbol + '.*' + quoteSymbol);
101781      cmd.replace(regEx, addQuote);
101782      return quotes;
101783    }
101784    const quotes = findQuotes('"').concat(findQuotes("'"));
101785  
101786    function isInsideQuotes(index) {
101787      return quotes.reduce((result, quote) => {
101788        return result || quote.from <= index && index <= quote.to;
101789      }, false);
101790    }
101791  
101792    const cmdPrePattern = '((?:^|&&|&|\\|\\||\\|)\\s*)';
101793    const cmdPattern = '(".*?"|\'.*?\'|\\S*)';
101794    const regExp = new RegExp(`${cmdPrePattern}${cmdPattern}`, 'g');
101795    return cmd.replace(regExp, (whole, pre, cmd, index) => {
101796      if ((pre[0] === '&' || pre[0] === '|') && isInsideQuotes(index)) {
101797        return whole;
101798      }
101799      return pre + cmd.replace(/\//g, '\\');
101800    });
101801  }
101802  
101803  /***/ }),
101804  /* 547 */
101805  /***/ (function(module, exports, __webpack_require__) {
101806  
101807  "use strict";
101808  
101809  
101810  Object.defineProperty(exports, "__esModule", {
101811    value: true
101812  });
101813  exports.generatePnpMap = undefined;
101814  
101815  var _asyncToGenerator2;
101816  
101817  function _load_asyncToGenerator() {
101818    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
101819  }
101820  
101821  let getPackageInformationStores = (() => {
101822    var _ref17 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, seedPatterns, { resolver, reporter, targetPath, workspaceLayout }) {
101823      const targetDirectory = path.dirname(targetPath);
101824      const offlineCacheFolder = config.offlineCacheFolder;
101825  
101826      const packageInformationStores = new Map();
101827      const blacklistedLocations = new Set();
101828  
101829      const getCachePath = function getCachePath(fsPath) {
101830        const cacheRelativePath = normalizePath(path.relative(config.cacheFolder, fsPath));
101831  
101832        // if fsPath is not inside cacheRelativePath, we just skip it
101833        if (cacheRelativePath.match(/^\.\.\//)) {
101834          return null;
101835        }
101836  
101837        return cacheRelativePath;
101838      };
101839  
101840      const resolveOfflineCacheFolder = function resolveOfflineCacheFolder(fsPath) {
101841        if (!offlineCacheFolder) {
101842          return fsPath;
101843        }
101844  
101845        const cacheRelativePath = getCachePath(fsPath);
101846  
101847        // if fsPath is not inside the cache, we shouldn't replace it (workspace)
101848        if (!cacheRelativePath) {
101849          return fsPath;
101850        }
101851  
101852        const components = cacheRelativePath.split(/\//g);
101853        const cacheEntry = components[0],
101854              internalPath = components.slice(1);
101855  
101856  
101857        return path.resolve(offlineCacheFolder, `${cacheEntry}${OFFLINE_CACHE_EXTENSION}`, internalPath.join('/'));
101858      };
101859  
101860      const normalizePath = function normalizePath(fsPath) {
101861        return process.platform === 'win32' ? fsPath.replace(backwardSlashRegExp, '/') : fsPath;
101862      };
101863  
101864      const normalizeDirectoryPath = function normalizeDirectoryPath(fsPath) {
101865        let relativePath = normalizePath(path.relative(targetDirectory, resolveOfflineCacheFolder(fsPath)));
101866  
101867        if (!relativePath.match(/^\.{0,2}\//) && !path.isAbsolute(relativePath)) {
101868          relativePath = `./${relativePath}`;
101869        }
101870  
101871        return relativePath.replace(/\/?$/, '/');
101872      };
101873  
101874      const getHashFrom = function getHashFrom(data) {
101875        const hashGenerator = crypto.createHash('sha1');
101876  
101877        for (var _iterator10 = data, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {
101878          var _ref18;
101879  
101880          if (_isArray10) {
101881            if (_i10 >= _iterator10.length) break;
101882            _ref18 = _iterator10[_i10++];
101883          } else {
101884            _i10 = _iterator10.next();
101885            if (_i10.done) break;
101886            _ref18 = _i10.value;
101887          }
101888  
101889          const datum = _ref18;
101890  
101891          hashGenerator.update(datum);
101892        }
101893  
101894        return hashGenerator.digest('hex');
101895      };
101896  
101897      const getResolverEntry = function getResolverEntry(pattern) {
101898        const pkg = resolver.getStrictResolvedPattern(pattern);
101899        const ref = pkg._reference;
101900  
101901        if (!ref) {
101902          return null;
101903        }
101904  
101905        invariant(ref.locations.length <= 1, 'Must have at most one location (usually in the cache)');
101906        const loc = ref.locations[0];
101907  
101908        if (!loc) {
101909          return null;
101910        }
101911  
101912        return { pkg, ref, loc };
101913      };
101914  
101915      const visit = (() => {
101916        var _ref19 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (precomputedResolutions, seedPatterns, parentData = []) {
101917          const resolutions = new Map(precomputedResolutions);
101918          const locations = new Map();
101919  
101920          // This first pass will compute the package reference of each of the given patterns
101921          // They will usually be the package version, but not always. We need to do this in a pre-process pass, because the
101922          // dependencies might depend on one another, so if we need to replace one of them, we need to compute it first
101923          for (var _iterator11 = seedPatterns, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) {
101924            var _ref20;
101925  
101926            if (_isArray11) {
101927              if (_i11 >= _iterator11.length) break;
101928              _ref20 = _iterator11[_i11++];
101929            } else {
101930              _i11 = _iterator11.next();
101931              if (_i11.done) break;
101932              _ref20 = _i11.value;
101933            }
101934  
101935            const pattern = _ref20;
101936  
101937            const entry = getResolverEntry(pattern);
101938  
101939            if (!entry) {
101940              continue;
101941            }
101942  
101943            const pkg = entry.pkg,
101944                  ref = entry.ref;
101945            let loc = entry.loc;
101946  
101947  
101948            const packageName = pkg.name;
101949            let packageReference = pkg.version;
101950  
101951            // If we have peer dependencies, then we generate a new virtual reference based on the parent one
101952            // We cannot generate this reference based on what those peer references resolve to, because they might not have
101953            // been computed yet (for example, consider the case where A has a peer dependency on B, and B a peer dependency
101954            // on A; it's valid, but it prevents us from computing A and B - and it's even worse with 3+ packages involved)
101955            const peerDependencies = new Set(Array.from(Object.keys(pkg.peerDependencies || {})));
101956  
101957            // As an optimization, we only setup virtual packages if their underlying packages are referenced multiple times
101958            // in the tree. This allow us to avoid having to create symlinks in the majority of cases
101959            if (peerDependencies.size > 0 && ref.requests.length > 1) {
101960              const hash = getHashFrom([...parentData, packageName, packageReference]);
101961  
101962              let symlinkSource;
101963              let symlinkFile;
101964  
101965              switch (ref.remote.type) {
101966                case 'workspace':
101967                  {
101968                    symlinkSource = loc;
101969                    symlinkFile = path.resolve(config.lockfileFolder, '.pnp', 'workspaces', `pnp-${hash}`, packageName);
101970  
101971                    loc = symlinkFile;
101972                  }
101973                  break;
101974  
101975                default:
101976                  {
101977                    const isFromCache = getCachePath(loc);
101978  
101979                    const hashName = isFromCache && offlineCacheFolder ? `pnp-${hash}${OFFLINE_CACHE_EXTENSION}` : `pnp-${hash}`;
101980                    const newLoc = path.resolve(config.lockfileFolder, '.pnp', 'externals', hashName, 'node_modules', packageName);
101981  
101982                    // The `node_modules/<pkgName>` part is already there when the package comes from the cache
101983                    if (isFromCache) {
101984                      const getBase = function getBase(source) {
101985                        return path.resolve(source, '../'.repeat(1 + packageName.split('/').length));
101986                      };
101987                      symlinkSource = resolveOfflineCacheFolder(getBase(loc));
101988                      symlinkFile = getBase(newLoc);
101989                    } else {
101990                      symlinkSource = loc;
101991                      symlinkFile = newLoc;
101992                    }
101993  
101994                    loc = newLoc;
101995                  }
101996                  break;
101997              }
101998  
101999              yield (_fs || _load_fs()).mkdirp(path.dirname(symlinkFile));
102000              yield (_fs || _load_fs()).symlink(symlinkSource, symlinkFile);
102001  
102002              packageReference = `pnp:${hash}`;
102003  
102004              // We blacklist this path so that we can print a nicer error message if someone tries to require it (it usually
102005              // means that they're using realpath on the return value of require.resolve)
102006              blacklistedLocations.add(normalizeDirectoryPath(loc));
102007            }
102008  
102009            // Now that we have the final reference, we need to store it
102010            resolutions.set(packageName, packageReference);
102011            locations.set(packageName, loc);
102012          }
102013  
102014          // Now that we have the final references, we can start the main loop, which will insert the packages into the store
102015          // if they aren't already there, and recurse over their own children
102016          for (var _iterator12 = seedPatterns, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) {
102017            var _ref21;
102018  
102019            if (_isArray12) {
102020              if (_i12 >= _iterator12.length) break;
102021              _ref21 = _iterator12[_i12++];
102022            } else {
102023              _i12 = _iterator12.next();
102024              if (_i12.done) break;
102025              _ref21 = _i12.value;
102026            }
102027  
102028            const pattern = _ref21;
102029  
102030            const entry = getResolverEntry(pattern);
102031  
102032            if (!entry) {
102033              continue;
102034            }
102035  
102036            const pkg = entry.pkg,
102037                  ref = entry.ref;
102038  
102039  
102040            const packageName = pkg.name;
102041  
102042            const packageReference = resolutions.get(packageName);
102043            invariant(packageReference, `Package reference should have been computed during the pre-pass`);
102044  
102045            const loc = locations.get(packageName);
102046            invariant(loc, `Package location should have been computed during the pre-pass`);
102047  
102048            // We can early exit if the package is already registered with the exact same name and reference, since even if
102049            // we might get slightly different dependencies (depending on how things were optimized), both sets are valid
102050            let packageInformationStore = packageInformationStores.get(packageName);
102051  
102052            if (!packageInformationStore) {
102053              packageInformationStore = new Map();
102054              packageInformationStores.set(packageName, packageInformationStore);
102055            }
102056  
102057            let packageInformation = packageInformationStore.get(packageReference);
102058  
102059            if (packageInformation) {
102060              continue;
102061            }
102062  
102063            packageInformation = {
102064              packageLocation: normalizeDirectoryPath(loc),
102065              packageDependencies: new Map()
102066            };
102067  
102068            // Split the dependencies between direct/peer - we will only recurse on the former
102069            const peerDependencies = new Set(Array.from(Object.keys(pkg.peerDependencies || {})));
102070            const directDependencies = ref.dependencies.filter(function (pattern) {
102071              const pkg = resolver.getStrictResolvedPattern(pattern);
102072              return !pkg || !peerDependencies.has(pkg.name);
102073            });
102074  
102075            // We inject the partial information in the store right now so that we won't cycle indefinitely
102076            packageInformationStore.set(packageReference, packageInformation);
102077  
102078            // We must inject the peer dependencies before iterating; one of our dependencies might have a peer dependency
102079            // on one of our peer dependencies, so it must be available from the start (we don't have to do that for direct
102080            // dependencies, because the "visit" function that will iterate over them will automatically add the to the
102081            // candidate resolutions as part of the first step, cf above)
102082  
102083            for (var _iterator13 = peerDependencies, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) {
102084              var _ref22;
102085  
102086              if (_isArray13) {
102087                if (_i13 >= _iterator13.length) break;
102088                _ref22 = _iterator13[_i13++];
102089              } else {
102090                _i13 = _iterator13.next();
102091                if (_i13.done) break;
102092                _ref22 = _i13.value;
102093              }
102094  
102095              const dependencyName = _ref22;
102096  
102097              const dependencyReference = resolutions.get(dependencyName);
102098  
102099              if (dependencyReference) {
102100                packageInformation.packageDependencies.set(dependencyName, dependencyReference);
102101              }
102102            }
102103  
102104            const childResolutions = yield visit(packageInformation.packageDependencies, directDependencies, [packageName, packageReference]);
102105  
102106            // We can now inject into our package the resolutions we got from the visit function
102107            for (var _iterator14 = childResolutions.entries(), _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) {
102108              var _ref24;
102109  
102110              if (_isArray14) {
102111                if (_i14 >= _iterator14.length) break;
102112                _ref24 = _iterator14[_i14++];
102113              } else {
102114                _i14 = _iterator14.next();
102115                if (_i14.done) break;
102116                _ref24 = _i14.value;
102117              }
102118  
102119              const _ref23 = _ref24;
102120              const name = _ref23[0];
102121              const reference = _ref23[1];
102122  
102123              packageInformation.packageDependencies.set(name, reference);
102124            }
102125  
102126            // Finally, unless a package depends on a previous version of itself (that would be weird but correct...), we
102127            // inject them an implicit dependency to themselves (so that they can require themselves)
102128            if (!packageInformation.packageDependencies.has(packageName)) {
102129              packageInformation.packageDependencies.set(packageName, packageReference);
102130            }
102131          }
102132  
102133          return resolutions;
102134        });
102135  
102136        return function visit(_x4, _x5) {
102137          return _ref19.apply(this, arguments);
102138        };
102139      })();
102140  
102141      // If we have workspaces, we need to iterate over them all in order to add them to the map
102142      // This is because they might not be declared as dependencies of the top-level project (and with reason, since the
102143      // top-level package might depend on a different than the one provided in the workspaces - cf Babel, which depends
102144      // on an old version of itself in order to compile itself)
102145      if (workspaceLayout) {
102146        for (var _iterator15 = Object.keys(workspaceLayout.workspaces), _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) {
102147          var _ref25;
102148  
102149          if (_isArray15) {
102150            if (_i15 >= _iterator15.length) break;
102151            _ref25 = _iterator15[_i15++];
102152          } else {
102153            _i15 = _iterator15.next();
102154            if (_i15.done) break;
102155            _ref25 = _i15.value;
102156          }
102157  
102158          const name = _ref25;
102159  
102160          const pkg = workspaceLayout.workspaces[name].manifest;
102161  
102162          // Skip the aggregator, since it's essentially a duplicate of the top-level package that we'll iterate later on
102163          if (pkg.workspaces) {
102164            continue;
102165          }
102166  
102167          const ref = pkg._reference;
102168          invariant(ref, `Workspaces should have a reference`);
102169  
102170          invariant(ref.locations.length === 1, `Workspaces should have exactly one location`);
102171          const loc = ref.locations[0];
102172          invariant(loc, `Workspaces should have a location`);
102173  
102174          let packageInformationStore = packageInformationStores.get(name);
102175  
102176          if (!packageInformationStore) {
102177            packageInformationStore = new Map();
102178            packageInformationStores.set(name, packageInformationStore);
102179          }
102180  
102181          packageInformationStore.set(pkg.version, {
102182            packageLocation: normalizeDirectoryPath(loc),
102183            packageDependencies: yield visit(new Map(), ref.dependencies, [name, pkg.version])
102184          });
102185        }
102186      }
102187  
102188      // Register the top-level package in our map
102189      // This will recurse on each of its dependencies as well.
102190      packageInformationStores.set(null, new Map([[null, {
102191        packageLocation: normalizeDirectoryPath(config.lockfileFolder),
102192        packageDependencies: yield visit(new Map(), seedPatterns)
102193      }]]));
102194  
102195      return [packageInformationStores, blacklistedLocations];
102196    });
102197  
102198    return function getPackageInformationStores(_x, _x2, _x3) {
102199      return _ref17.apply(this, arguments);
102200    };
102201  })();
102202  
102203  let generatePnpMap = exports.generatePnpMap = (() => {
102204    var _ref26 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, seedPatterns, { resolver, reporter, workspaceLayout, targetPath }) {
102205      var _ref27 = yield getPackageInformationStores(config, seedPatterns, {
102206        resolver,
102207        reporter,
102208        targetPath,
102209        workspaceLayout
102210      });
102211  
102212      const packageInformationStores = _ref27[0],
102213            blacklistedLocations = _ref27[1];
102214  
102215  
102216      const setupStaticTables = [generateMaps(packageInformationStores, blacklistedLocations), generateFindPackageLocator(packageInformationStores)].join(``);
102217  
102218      return pnpApi.replace(/\$\$SHEBANG/g, config.plugnplayShebang).replace(/\$\$BLACKLIST/g, JSON.stringify(config.plugnplayBlacklist)).replace(/\$\$SETUP_STATIC_TABLES\(\);/g, setupStaticTables);
102219    });
102220  
102221    return function generatePnpMap(_x6, _x7, _x8) {
102222      return _ref26.apply(this, arguments);
102223    };
102224  })();
102225  
102226  var _fs;
102227  
102228  function _load_fs() {
102229    return _fs = _interopRequireWildcard(__webpack_require__(5));
102230  }
102231  
102232  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
102233  
102234  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
102235  
102236  /* babel-plugin-inline-import './generate-pnp-map-api.tpl.js' */const pnpApi = '#!$$SHEBANG\n\n/* eslint-disable max-len, flowtype/require-valid-file-annotation, flowtype/require-return-type */\n/* global packageInformationStores, $$BLACKLIST, $$SETUP_STATIC_TABLES */\n\n// Used for the resolveUnqualified part of the resolution (ie resolving folder/index.js & file extensions)\n// Deconstructed so that they aren\'t affected by any fs monkeypatching occuring later during the execution\nconst {statSync, lstatSync, readlinkSync, readFileSync, existsSync, realpathSync} = require(\'fs\');\n\nconst Module = require(\'module\');\nconst path = require(\'path\');\nconst StringDecoder = require(\'string_decoder\');\n\nconst ignorePattern = $$BLACKLIST ? new RegExp($$BLACKLIST) : null;\n\nconst pnpFile = path.resolve(__dirname, __filename);\nconst builtinModules = new Set(Module.builtinModules || Object.keys(process.binding(\'natives\')));\n\nconst topLevelLocator = {name: null, reference: null};\nconst blacklistedLocator = {name: NaN, reference: NaN};\n\n// Used for compatibility purposes - cf setupCompatibilityLayer\nconst patchedModules = [];\nconst fallbackLocators = [topLevelLocator];\n\n// Matches backslashes of Windows paths\nconst backwardSlashRegExp = /\\\\/g;\n\n// Matches if the path must point to a directory (ie ends with /)\nconst isDirRegExp = /\\/$/;\n\n// Matches if the path starts with a valid path qualifier (./, ../, /)\n// eslint-disable-next-line no-unused-vars\nconst isStrictRegExp = /^\\.{0,2}\\//;\n\n// Splits a require request into its components, or return null if the request is a file path\nconst pathRegExp = /^(?![a-zA-Z]:[\\\\\\/]|\\\\\\\\|\\.{0,2}(?:\\/|$))((?:@[^\\/]+\\/)?[^\\/]+)\\/?(.*|)$/;\n\n// Keep a reference around ("module" is a common name in this context, so better rename it to something more significant)\nconst pnpModule = module;\n\n/**\n * Used to disable the resolution hooks (for when we want to fallback to the previous resolution - we then need\n * a way to "reset" the environment temporarily)\n */\n\nlet enableNativeHooks = true;\n\n/**\n * Simple helper function that assign an error code to an error, so that it can more easily be caught and used\n * by third-parties.\n */\n\nfunction makeError(code, message, data = {}) {\n  const error = new Error(message);\n  return Object.assign(error, {code, data});\n}\n\n/**\n * Ensures that the returned locator isn\'t a blacklisted one.\n *\n * Blacklisted packages are packages that cannot be used because their dependencies cannot be deduced. This only\n * happens with peer dependencies, which effectively have different sets of dependencies depending on their parents.\n *\n * In order to deambiguate those different sets of dependencies, the Yarn implementation of PnP will generate a\n * symlink for each combination of <package name>/<package version>/<dependent package> it will find, and will\n * blacklist the target of those symlinks. By doing this, we ensure that files loaded through a specific path\n * will always have the same set of dependencies, provided the symlinks are correctly preserved.\n *\n * Unfortunately, some tools do not preserve them, and when it happens PnP isn\'t able anymore to deduce the set of\n * dependencies based on the path of the file that makes the require calls. But since we\'ve blacklisted those paths,\n * we\'re able to print a more helpful error message that points out that a third-party package is doing something\n * incompatible!\n */\n\n// eslint-disable-next-line no-unused-vars\nfunction blacklistCheck(locator) {\n  if (locator === blacklistedLocator) {\n    throw makeError(\n      `BLACKLISTED`,\n      [\n        `A package has been resolved through a blacklisted path - this is usually caused by one of your tools calling`,\n        `"realpath" on the return value of "require.resolve". Since the returned values use symlinks to disambiguate`,\n        `peer dependencies, they must be passed untransformed to "require".`,\n      ].join(` `)\n    );\n  }\n\n  return locator;\n}\n\n$$SETUP_STATIC_TABLES();\n\n/**\n * Returns the module that should be used to resolve require calls. It\'s usually the direct parent, except if we\'re\n * inside an eval expression.\n */\n\nfunction getIssuerModule(parent) {\n  let issuer = parent;\n\n  while (issuer && (issuer.id === \'[eval]\' || issuer.id === \'<repl>\' || !issuer.filename)) {\n    issuer = issuer.parent;\n  }\n\n  return issuer;\n}\n\n/**\n * Returns information about a package in a safe way (will throw if they cannot be retrieved)\n */\n\nfunction getPackageInformationSafe(packageLocator) {\n  const packageInformation = exports.getPackageInformation(packageLocator);\n\n  if (!packageInformation) {\n    throw makeError(\n      `INTERNAL`,\n      `Couldn\'t find a matching entry in the dependency tree for the specified parent (this is probably an internal error)`\n    );\n  }\n\n  return packageInformation;\n}\n\n/**\n * Implements the node resolution for folder access and extension selection\n */\n\nfunction applyNodeExtensionResolution(unqualifiedPath, {extensions}) {\n  // We use this "infinite while" so that we can restart the process as long as we hit package folders\n  while (true) {\n    let stat;\n\n    try {\n      stat = statSync(unqualifiedPath);\n    } catch (error) {}\n\n    // If the file exists and is a file, we can stop right there\n\n    if (stat && !stat.isDirectory()) {\n      // If the very last component of the resolved path is a symlink to a file, we then resolve it to a file. We only\n      // do this first the last component, and not the rest of the path! This allows us to support the case of bin\n      // symlinks, where a symlink in "/xyz/pkg-name/.bin/bin-name" will point somewhere else (like "/xyz/pkg-name/index.js").\n      // In such a case, we want relative requires to be resolved relative to "/xyz/pkg-name/" rather than "/xyz/pkg-name/.bin/".\n      //\n      // Also note that the reason we must use readlink on the last component (instead of realpath on the whole path)\n      // is that we must preserve the other symlinks, in particular those used by pnp to deambiguate packages using\n      // peer dependencies. For example, "/xyz/.pnp/local/pnp-01234569/.bin/bin-name" should see its relative requires\n      // be resolved relative to "/xyz/.pnp/local/pnp-0123456789/" rather than "/xyz/pkg-with-peers/", because otherwise\n      // we would lose the information that would tell us what are the dependencies of pkg-with-peers relative to its\n      // ancestors.\n\n      if (lstatSync(unqualifiedPath).isSymbolicLink()) {\n        unqualifiedPath = path.normalize(path.resolve(path.dirname(unqualifiedPath), readlinkSync(unqualifiedPath)));\n      }\n\n      return unqualifiedPath;\n    }\n\n    // If the file is a directory, we must check if it contains a package.json with a "main" entry\n\n    if (stat && stat.isDirectory()) {\n      let pkgJson;\n\n      try {\n        pkgJson = JSON.parse(readFileSync(`${unqualifiedPath}/package.json`, \'utf-8\'));\n      } catch (error) {}\n\n      let nextUnqualifiedPath;\n\n      if (pkgJson && pkgJson.main) {\n        nextUnqualifiedPath = path.resolve(unqualifiedPath, pkgJson.main);\n      }\n\n      // If the "main" field changed the path, we start again from this new location\n\n      if (nextUnqualifiedPath && nextUnqualifiedPath !== unqualifiedPath) {\n        const resolution = applyNodeExtensionResolution(nextUnqualifiedPath, {extensions});\n\n        if (resolution !== null) {\n          return resolution;\n        }\n      }\n    }\n\n    // Otherwise we check if we find a file that match one of the supported extensions\n\n    const qualifiedPath = extensions\n      .map(extension => {\n        return `${unqualifiedPath}${extension}`;\n      })\n      .find(candidateFile => {\n        return existsSync(candidateFile);\n      });\n\n    if (qualifiedPath) {\n      return qualifiedPath;\n    }\n\n    // Otherwise, we check if the path is a folder - in such a case, we try to use its index\n\n    if (stat && stat.isDirectory()) {\n      const indexPath = extensions\n        .map(extension => {\n          return `${unqualifiedPath}/index${extension}`;\n        })\n        .find(candidateFile => {\n          return existsSync(candidateFile);\n        });\n\n      if (indexPath) {\n        return indexPath;\n      }\n    }\n\n    // Otherwise there\'s nothing else we can do :(\n\n    return null;\n  }\n}\n\n/**\n * This function creates fake modules that can be used with the _resolveFilename function.\n * Ideally it would be nice to be able to avoid this, since it causes useless allocations\n * and cannot be cached efficiently (we recompute the nodeModulePaths every time).\n *\n * Fortunately, this should only affect the fallback, and there hopefully shouldn\'t be a\n * lot of them.\n */\n\nfunction makeFakeModule(path) {\n  const fakeModule = new Module(path, false);\n  fakeModule.filename = path;\n  fakeModule.paths = Module._nodeModulePaths(path);\n  return fakeModule;\n}\n\n/**\n * Normalize path to posix format.\n */\n\nfunction normalizePath(fsPath) {\n  fsPath = path.normalize(fsPath);\n\n  if (process.platform === \'win32\') {\n    fsPath = fsPath.replace(backwardSlashRegExp, \'/\');\n  }\n\n  return fsPath;\n}\n\n/**\n * Forward the resolution to the next resolver (usually the native one)\n */\n\nfunction callNativeResolution(request, issuer) {\n  if (issuer.endsWith(\'/\')) {\n    issuer += \'internal.js\';\n  }\n\n  try {\n    enableNativeHooks = false;\n\n    // Since we would need to create a fake module anyway (to call _resolveLookupPath that\n    // would give us the paths to give to _resolveFilename), we can as well not use\n    // the {paths} option at all, since it internally makes _resolveFilename create another\n    // fake module anyway.\n    return Module._resolveFilename(request, makeFakeModule(issuer), false);\n  } finally {\n    enableNativeHooks = true;\n  }\n}\n\n/**\n * This key indicates which version of the standard is implemented by this resolver. The `std` key is the\n * Plug\'n\'Play standard, and any other key are third-party extensions. Third-party extensions are not allowed\n * to override the standard, and can only offer new methods.\n *\n * If an new version of the Plug\'n\'Play standard is released and some extensions conflict with newly added\n * functions, they\'ll just have to fix the conflicts and bump their own version number.\n */\n\nexports.VERSIONS = {std: 1};\n\n/**\n * Useful when used together with getPackageInformation to fetch information about the top-level package.\n */\n\nexports.topLevel = {name: null, reference: null};\n\n/**\n * Gets the package information for a given locator. Returns null if they cannot be retrieved.\n */\n\nexports.getPackageInformation = function getPackageInformation({name, reference}) {\n  const packageInformationStore = packageInformationStores.get(name);\n\n  if (!packageInformationStore) {\n    return null;\n  }\n\n  const packageInformation = packageInformationStore.get(reference);\n\n  if (!packageInformation) {\n    return null;\n  }\n\n  return packageInformation;\n};\n\n/**\n * Transforms a request (what\'s typically passed as argument to the require function) into an unqualified path.\n * This path is called "unqualified" because it only changes the package name to the package location on the disk,\n * which means that the end result still cannot be directly accessed (for example, it doesn\'t try to resolve the\n * file extension, or to resolve directories to their "index.js" content). Use the "resolveUnqualified" function\n * to convert them to fully-qualified paths, or just use "resolveRequest" that do both operations in one go.\n *\n * Note that it is extremely important that the `issuer` path ends with a forward slash if the issuer is to be\n * treated as a folder (ie. "/tmp/foo/" rather than "/tmp/foo" if "foo" is a directory). Otherwise relative\n * imports won\'t be computed correctly (they\'ll get resolved relative to "/tmp/" instead of "/tmp/foo/").\n */\n\nexports.resolveToUnqualified = function resolveToUnqualified(request, issuer, {considerBuiltins = true} = {}) {\n  // The \'pnpapi\' request is reserved and will always return the path to the PnP file, from everywhere\n\n  if (request === `pnpapi`) {\n    return pnpFile;\n  }\n\n  // Bailout if the request is a native module\n\n  if (considerBuiltins && builtinModules.has(request)) {\n    return null;\n  }\n\n  // We allow disabling the pnp resolution for some subpaths. This is because some projects, often legacy,\n  // contain multiple levels of dependencies (ie. a yarn.lock inside a subfolder of a yarn.lock). This is\n  // typically solved using workspaces, but not all of them have been converted already.\n\n  if (ignorePattern && ignorePattern.test(normalizePath(issuer))) {\n    const result = callNativeResolution(request, issuer);\n\n    if (result === false) {\n      throw makeError(\n        `BUILTIN_NODE_RESOLUTION_FAIL`,\n        `The builtin node resolution algorithm was unable to resolve the module referenced by "${request}" and requested from "${issuer}" (it didn\'t go through the pnp resolver because the issuer was explicitely ignored by the regexp "$$BLACKLIST")`,\n        {\n          request,\n          issuer,\n        }\n      );\n    }\n\n    return result;\n  }\n\n  let unqualifiedPath;\n\n  // If the request is a relative or absolute path, we just return it normalized\n\n  const dependencyNameMatch = request.match(pathRegExp);\n\n  if (!dependencyNameMatch) {\n    if (path.isAbsolute(request)) {\n      unqualifiedPath = path.normalize(request);\n    } else if (issuer.match(isDirRegExp)) {\n      unqualifiedPath = path.normalize(path.resolve(issuer, request));\n    } else {\n      unqualifiedPath = path.normalize(path.resolve(path.dirname(issuer), request));\n    }\n  }\n\n  // Things are more hairy if it\'s a package require - we then need to figure out which package is needed, and in\n  // particular the exact version for the given location on the dependency tree\n\n  if (dependencyNameMatch) {\n    const [, dependencyName, subPath] = dependencyNameMatch;\n\n    const issuerLocator = exports.findPackageLocator(issuer);\n\n    // If the issuer file doesn\'t seem to be owned by a package managed through pnp, then we resort to using the next\n    // resolution algorithm in the chain, usually the native Node resolution one\n\n    if (!issuerLocator) {\n      const result = callNativeResolution(request, issuer);\n\n      if (result === false) {\n        throw makeError(\n          `BUILTIN_NODE_RESOLUTION_FAIL`,\n          `The builtin node resolution algorithm was unable to resolve the module referenced by "${request}" and requested from "${issuer}" (it didn\'t go through the pnp resolver because the issuer doesn\'t seem to be part of the Yarn-managed dependency tree)`,\n          {\n            request,\n            issuer,\n          }\n        );\n      }\n\n      return result;\n    }\n\n    const issuerInformation = getPackageInformationSafe(issuerLocator);\n\n    // We obtain the dependency reference in regard to the package that request it\n\n    let dependencyReference = issuerInformation.packageDependencies.get(dependencyName);\n\n    // If we can\'t find it, we check if we can potentially load it from the packages that have been defined as potential fallbacks.\n    // It\'s a bit of a hack, but it improves compatibility with the existing Node ecosystem. Hopefully we should eventually be able\n    // to kill this logic and become stricter once pnp gets enough traction and the affected packages fix themselves.\n\n    if (issuerLocator !== topLevelLocator) {\n      for (let t = 0, T = fallbackLocators.length; dependencyReference === undefined && t < T; ++t) {\n        const fallbackInformation = getPackageInformationSafe(fallbackLocators[t]);\n        dependencyReference = fallbackInformation.packageDependencies.get(dependencyName);\n      }\n    }\n\n    // If we can\'t find the path, and if the package making the request is the top-level, we can offer nicer error messages\n\n    if (!dependencyReference) {\n      if (dependencyReference === null) {\n        if (issuerLocator === topLevelLocator) {\n          throw makeError(\n            `MISSING_PEER_DEPENDENCY`,\n            `You seem to be requiring a peer dependency ("${dependencyName}"), but it is not installed (which might be because you\'re the top-level package)`,\n            {request, issuer, dependencyName}\n          );\n        } else {\n          throw makeError(\n            `MISSING_PEER_DEPENDENCY`,\n            `Package "${issuerLocator.name}@${issuerLocator.reference}" is trying to access a peer dependency ("${dependencyName}") that should be provided by its direct ancestor but isn\'t`,\n            {request, issuer, issuerLocator: Object.assign({}, issuerLocator), dependencyName}\n          );\n        }\n      } else {\n        if (issuerLocator === topLevelLocator) {\n          throw makeError(\n            `UNDECLARED_DEPENDENCY`,\n            `You cannot require a package ("${dependencyName}") that is not declared in your dependencies (via "${issuer}")`,\n            {request, issuer, dependencyName}\n          );\n        } else {\n          const candidates = Array.from(issuerInformation.packageDependencies.keys());\n          throw makeError(\n            `UNDECLARED_DEPENDENCY`,\n            `Package "${issuerLocator.name}@${issuerLocator.reference}" (via "${issuer}") is trying to require the package "${dependencyName}" (via "${request}") without it being listed in its dependencies (${candidates.join(\n              `, `\n            )})`,\n            {request, issuer, issuerLocator: Object.assign({}, issuerLocator), dependencyName, candidates}\n          );\n        }\n      }\n    }\n\n    // We need to check that the package exists on the filesystem, because it might not have been installed\n\n    const dependencyLocator = {name: dependencyName, reference: dependencyReference};\n    const dependencyInformation = exports.getPackageInformation(dependencyLocator);\n    const dependencyLocation = path.resolve(__dirname, dependencyInformation.packageLocation);\n\n    if (!dependencyLocation) {\n      throw makeError(\n        `MISSING_DEPENDENCY`,\n        `Package "${dependencyLocator.name}@${dependencyLocator.reference}" is a valid dependency, but hasn\'t been installed and thus cannot be required (it might be caused if you install a partial tree, such as on production environments)`,\n        {request, issuer, dependencyLocator: Object.assign({}, dependencyLocator)}\n      );\n    }\n\n    // Now that we know which package we should resolve to, we only have to find out the file location\n\n    if (subPath) {\n      unqualifiedPath = path.resolve(dependencyLocation, subPath);\n    } else {\n      unqualifiedPath = dependencyLocation;\n    }\n  }\n\n  return path.normalize(unqualifiedPath);\n};\n\n/**\n * Transforms an unqualified path into a qualified path by using the Node resolution algorithm (which automatically\n * appends ".js" / ".json", and transforms directory accesses into "index.js").\n */\n\nexports.resolveUnqualified = function resolveUnqualified(\n  unqualifiedPath,\n  {extensions = Object.keys(Module._extensions)} = {}\n) {\n  const qualifiedPath = applyNodeExtensionResolution(unqualifiedPath, {extensions});\n\n  if (qualifiedPath) {\n    return path.normalize(qualifiedPath);\n  } else {\n    throw makeError(\n      `QUALIFIED_PATH_RESOLUTION_FAILED`,\n      `Couldn\'t find a suitable Node resolution for unqualified path "${unqualifiedPath}"`,\n      {unqualifiedPath}\n    );\n  }\n};\n\n/**\n * Transforms a request into a fully qualified path.\n *\n * Note that it is extremely important that the `issuer` path ends with a forward slash if the issuer is to be\n * treated as a folder (ie. "/tmp/foo/" rather than "/tmp/foo" if "foo" is a directory). Otherwise relative\n * imports won\'t be computed correctly (they\'ll get resolved relative to "/tmp/" instead of "/tmp/foo/").\n */\n\nexports.resolveRequest = function resolveRequest(request, issuer, {considerBuiltins, extensions} = {}) {\n  let unqualifiedPath;\n\n  try {\n    unqualifiedPath = exports.resolveToUnqualified(request, issuer, {considerBuiltins});\n  } catch (originalError) {\n    // If we get a BUILTIN_NODE_RESOLUTION_FAIL error there, it means that we\'ve had to use the builtin node\n    // resolution, which usually shouldn\'t happen. It might be because the user is trying to require something\n    // from a path loaded through a symlink (which is not possible, because we need something normalized to\n    // figure out which package is making the require call), so we try to make the same request using a fully\n    // resolved issuer and throws a better and more actionable error if it works.\n    if (originalError.code === `BUILTIN_NODE_RESOLUTION_FAIL`) {\n      let realIssuer;\n\n      try {\n        realIssuer = realpathSync(issuer);\n      } catch (error) {}\n\n      if (realIssuer) {\n        if (issuer.endsWith(`/`)) {\n          realIssuer = realIssuer.replace(/\\/?$/, `/`);\n        }\n\n        try {\n          exports.resolveToUnqualified(request, realIssuer, {considerBuiltins});\n        } catch (error) {\n          // If an error was thrown, the problem doesn\'t seem to come from a path not being normalized, so we\n          // can just throw the original error which was legit.\n          throw originalError;\n        }\n\n        // If we reach this stage, it means that resolveToUnqualified didn\'t fail when using the fully resolved\n        // file path, which is very likely caused by a module being invoked through Node with a path not being\n        // correctly normalized (ie you should use "node $(realpath script.js)" instead of "node script.js").\n        throw makeError(\n          `SYMLINKED_PATH_DETECTED`,\n          `A pnp module ("${request}") has been required from what seems to be a symlinked path ("${issuer}"). This is not possible, you must ensure that your modules are invoked through their fully resolved path on the filesystem (in this case "${realIssuer}").`,\n          {\n            request,\n            issuer,\n            realIssuer,\n          }\n        );\n      }\n    }\n    throw originalError;\n  }\n\n  if (unqualifiedPath === null) {\n    return null;\n  }\n\n  try {\n    return exports.resolveUnqualified(unqualifiedPath, {extensions});\n  } catch (resolutionError) {\n    if (resolutionError.code === \'QUALIFIED_PATH_RESOLUTION_FAILED\') {\n      Object.assign(resolutionError.data, {request, issuer});\n    }\n    throw resolutionError;\n  }\n};\n\n/**\n * Setups the hook into the Node environment.\n *\n * From this point on, any call to `require()` will go through the "resolveRequest" function, and the result will\n * be used as path of the file to load.\n */\n\nexports.setup = function setup() {\n  // A small note: we don\'t replace the cache here (and instead use the native one). This is an effort to not\n  // break code similar to "delete require.cache[require.resolve(FOO)]", where FOO is a package located outside\n  // of the Yarn dependency tree. In this case, we defer the load to the native loader. If we were to replace the\n  // cache by our own, the native loader would populate its own cache, which wouldn\'t be exposed anymore, so the\n  // delete call would be broken.\n\n  const originalModuleLoad = Module._load;\n\n  Module._load = function(request, parent, isMain) {\n    if (!enableNativeHooks) {\n      return originalModuleLoad.call(Module, request, parent, isMain);\n    }\n\n    // Builtins are managed by the regular Node loader\n\n    if (builtinModules.has(request)) {\n      try {\n        enableNativeHooks = false;\n        return originalModuleLoad.call(Module, request, parent, isMain);\n      } finally {\n        enableNativeHooks = true;\n      }\n    }\n\n    // The \'pnpapi\' name is reserved to return the PnP api currently in use by the program\n\n    if (request === `pnpapi`) {\n      return pnpModule.exports;\n    }\n\n    // Request `Module._resolveFilename` (ie. `resolveRequest`) to tell us which file we should load\n\n    const modulePath = Module._resolveFilename(request, parent, isMain);\n\n    // Check if the module has already been created for the given file\n\n    const cacheEntry = Module._cache[modulePath];\n\n    if (cacheEntry) {\n      return cacheEntry.exports;\n    }\n\n    // Create a new module and store it into the cache\n\n    const module = new Module(modulePath, parent);\n    Module._cache[modulePath] = module;\n\n    // The main module is exposed as global variable\n\n    if (isMain) {\n      process.mainModule = module;\n      module.id = \'.\';\n    }\n\n    // Try to load the module, and remove it from the cache if it fails\n\n    let hasThrown = true;\n\n    try {\n      module.load(modulePath);\n      hasThrown = false;\n    } finally {\n      if (hasThrown) {\n        delete Module._cache[modulePath];\n      }\n    }\n\n    // Some modules might have to be patched for compatibility purposes\n\n    for (const [filter, patchFn] of patchedModules) {\n      if (filter.test(request)) {\n        module.exports = patchFn(exports.findPackageLocator(parent.filename), module.exports);\n      }\n    }\n\n    return module.exports;\n  };\n\n  const originalModuleResolveFilename = Module._resolveFilename;\n\n  Module._resolveFilename = function(request, parent, isMain, options) {\n    if (!enableNativeHooks) {\n      return originalModuleResolveFilename.call(Module, request, parent, isMain, options);\n    }\n\n    let issuers;\n\n    if (options) {\n      const optionNames = new Set(Object.keys(options));\n      optionNames.delete(\'paths\');\n\n      if (optionNames.size > 0) {\n        throw makeError(\n          `UNSUPPORTED`,\n          `Some options passed to require() aren\'t supported by PnP yet (${Array.from(optionNames).join(\', \')})`\n        );\n      }\n\n      if (options.paths) {\n        issuers = options.paths.map(entry => `${path.normalize(entry)}/`);\n      }\n    }\n\n    if (!issuers) {\n      const issuerModule = getIssuerModule(parent);\n      const issuer = issuerModule ? issuerModule.filename : `${process.cwd()}/`;\n\n      issuers = [issuer];\n    }\n\n    let firstError;\n\n    for (const issuer of issuers) {\n      let resolution;\n\n      try {\n        resolution = exports.resolveRequest(request, issuer);\n      } catch (error) {\n        firstError = firstError || error;\n        continue;\n      }\n\n      return resolution !== null ? resolution : request;\n    }\n\n    throw firstError;\n  };\n\n  const originalFindPath = Module._findPath;\n\n  Module._findPath = function(request, paths, isMain) {\n    if (!enableNativeHooks) {\n      return originalFindPath.call(Module, request, paths, isMain);\n    }\n\n    for (const path of paths || []) {\n      let resolution;\n\n      try {\n        resolution = exports.resolveRequest(request, path);\n      } catch (error) {\n        continue;\n      }\n\n      if (resolution) {\n        return resolution;\n      }\n    }\n\n    return false;\n  };\n\n  process.versions.pnp = String(exports.VERSIONS.std);\n};\n\nexports.setupCompatibilityLayer = () => {\n  // ESLint currently doesn\'t have any portable way for shared configs to specify their own\n  // plugins that should be used (https://github.com/eslint/eslint/issues/10125). This will\n  // likely get fixed at some point, but it\'ll take time and in the meantime we\'ll just add\n  // additional fallback entries for common shared configs.\n\n  for (const name of [`react-scripts`]) {\n    const packageInformationStore = packageInformationStores.get(name);\n    if (packageInformationStore) {\n      for (const reference of packageInformationStore.keys()) {\n        fallbackLocators.push({name, reference});\n      }\n    }\n  }\n\n  // Modern versions of `resolve` support a specific entry point that custom resolvers can use\n  // to inject a specific resolution logic without having to patch the whole package.\n  //\n  // Cf: https://github.com/browserify/resolve/pull/174\n\n  patchedModules.push([\n    /^\\.\\/normalize-options\\.js$/,\n    (issuer, normalizeOptions) => {\n      if (!issuer || issuer.name !== \'resolve\') {\n        return normalizeOptions;\n      }\n\n      return (request, opts) => {\n        opts = opts || {};\n\n        if (opts.forceNodeResolution) {\n          return opts;\n        }\n\n        opts.preserveSymlinks = true;\n        opts.paths = function(request, basedir, getNodeModulesDir, opts) {\n          // Extract the name of the package being requested (1=full name, 2=scope name, 3=local name)\n          const parts = request.match(/^((?:(@[^\\/]+)\\/)?([^\\/]+))/);\n\n          // make sure that basedir ends with a slash\n          if (basedir.charAt(basedir.length - 1) !== \'/\') {\n            basedir = path.join(basedir, \'/\');\n          }\n          // This is guaranteed to return the path to the "package.json" file from the given package\n          const manifestPath = exports.resolveToUnqualified(`${parts[1]}/package.json`, basedir);\n\n          // The first dirname strips the package.json, the second strips the local named folder\n          let nodeModules = path.dirname(path.dirname(manifestPath));\n\n          // Strips the scope named folder if needed\n          if (parts[2]) {\n            nodeModules = path.dirname(nodeModules);\n          }\n\n          return [nodeModules];\n        };\n\n        return opts;\n      };\n    },\n  ]);\n};\n\nif (module.parent && module.parent.id === \'internal/preload\') {\n  exports.setupCompatibilityLayer();\n\n  exports.setup();\n}\n\nif (process.mainModule === module) {\n  exports.setupCompatibilityLayer();\n\n  const reportError = (code, message, data) => {\n    process.stdout.write(`${JSON.stringify([{code, message, data}, null])}\\n`);\n  };\n\n  const reportSuccess = resolution => {\n    process.stdout.write(`${JSON.stringify([null, resolution])}\\n`);\n  };\n\n  const processResolution = (request, issuer) => {\n    try {\n      reportSuccess(exports.resolveRequest(request, issuer));\n    } catch (error) {\n      reportError(error.code, error.message, error.data);\n    }\n  };\n\n  const processRequest = data => {\n    try {\n      const [request, issuer] = JSON.parse(data);\n      processResolution(request, issuer);\n    } catch (error) {\n      reportError(`INVALID_JSON`, error.message, error.data);\n    }\n  };\n\n  if (process.argv.length > 2) {\n    if (process.argv.length !== 4) {\n      process.stderr.write(`Usage: ${process.argv[0]} ${process.argv[1]} <request> <issuer>\\n`);\n      process.exitCode = 64; /* EX_USAGE */\n    } else {\n      processResolution(process.argv[2], process.argv[3]);\n    }\n  } else {\n    let buffer = \'\';\n    const decoder = new StringDecoder.StringDecoder();\n\n    process.stdin.on(\'data\', chunk => {\n      buffer += decoder.write(chunk);\n\n      do {\n        const index = buffer.indexOf(\'\\n\');\n        if (index === -1) {\n          break;\n        }\n\n        const line = buffer.slice(0, index);\n        buffer = buffer.slice(index + 1);\n\n        processRequest(line);\n      } while (true);\n    });\n  }\n}\n';
102237  
102238  
102239  const crypto = __webpack_require__(11);
102240  const invariant = __webpack_require__(9);
102241  const path = __webpack_require__(0);
102242  
102243  const backwardSlashRegExp = /\\/g;
102244  
102245  const OFFLINE_CACHE_EXTENSION = `.zip`;
102246  
102247  function generateMaps(packageInformationStores, blacklistedLocations) {
102248    let code = ``;
102249  
102250    // Bake the information stores into our generated code
102251    code += `let packageInformationStores = new Map([\n`;
102252    for (var _iterator = packageInformationStores, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
102253      var _ref2;
102254  
102255      if (_isArray) {
102256        if (_i >= _iterator.length) break;
102257        _ref2 = _iterator[_i++];
102258      } else {
102259        _i = _iterator.next();
102260        if (_i.done) break;
102261        _ref2 = _i.value;
102262      }
102263  
102264      const _ref = _ref2;
102265      const packageName = _ref[0];
102266      const packageInformationStore = _ref[1];
102267  
102268      code += `  [${JSON.stringify(packageName)}, new Map([\n`;
102269      for (var _iterator4 = packageInformationStore, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
102270        var _ref7;
102271  
102272        if (_isArray4) {
102273          if (_i4 >= _iterator4.length) break;
102274          _ref7 = _iterator4[_i4++];
102275        } else {
102276          _i4 = _iterator4.next();
102277          if (_i4.done) break;
102278          _ref7 = _i4.value;
102279        }
102280  
102281        const _ref6 = _ref7;
102282        const packageReference = _ref6[0];
102283        var _ref6$ = _ref6[1];
102284        const packageLocation = _ref6$.packageLocation;
102285        const packageDependencies = _ref6$.packageDependencies;
102286  
102287        code += `    [${JSON.stringify(packageReference)}, {\n`;
102288        code += `      packageLocation: path.resolve(__dirname, ${JSON.stringify(packageLocation)}),\n`;
102289        code += `      packageDependencies: new Map([\n`;
102290        for (var _iterator5 = packageDependencies.entries(), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
102291          var _ref9;
102292  
102293          if (_isArray5) {
102294            if (_i5 >= _iterator5.length) break;
102295            _ref9 = _iterator5[_i5++];
102296          } else {
102297            _i5 = _iterator5.next();
102298            if (_i5.done) break;
102299            _ref9 = _i5.value;
102300          }
102301  
102302          const _ref8 = _ref9;
102303          const dependencyName = _ref8[0];
102304          const dependencyReference = _ref8[1];
102305  
102306          code += `        [${JSON.stringify(dependencyName)}, ${JSON.stringify(dependencyReference)}],\n`;
102307        }
102308        code += `      ]),\n`;
102309        code += `    }],\n`;
102310      }
102311      code += `  ])],\n`;
102312    }
102313    code += `]);\n`;
102314  
102315    code += `\n`;
102316  
102317    // Also bake an inverse map that will allow us to find the package information based on the path
102318    code += `let locatorsByLocations = new Map([\n`;
102319    for (var _iterator2 = blacklistedLocations, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
102320      var _ref3;
102321  
102322      if (_isArray2) {
102323        if (_i2 >= _iterator2.length) break;
102324        _ref3 = _iterator2[_i2++];
102325      } else {
102326        _i2 = _iterator2.next();
102327        if (_i2.done) break;
102328        _ref3 = _i2.value;
102329      }
102330  
102331      const blacklistedLocation = _ref3;
102332  
102333      code += `  [${JSON.stringify(blacklistedLocation)}, blacklistedLocator],\n`;
102334    }
102335    for (var _iterator3 = packageInformationStores, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
102336      var _ref5;
102337  
102338      if (_isArray3) {
102339        if (_i3 >= _iterator3.length) break;
102340        _ref5 = _iterator3[_i3++];
102341      } else {
102342        _i3 = _iterator3.next();
102343        if (_i3.done) break;
102344        _ref5 = _i3.value;
102345      }
102346  
102347      const _ref4 = _ref5;
102348      const packageName = _ref4[0];
102349      const packageInformationStore = _ref4[1];
102350  
102351      for (var _iterator6 = packageInformationStore, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
102352        var _ref11;
102353  
102354        if (_isArray6) {
102355          if (_i6 >= _iterator6.length) break;
102356          _ref11 = _iterator6[_i6++];
102357        } else {
102358          _i6 = _iterator6.next();
102359          if (_i6.done) break;
102360          _ref11 = _i6.value;
102361        }
102362  
102363        const _ref10 = _ref11;
102364        const packageReference = _ref10[0];
102365        const packageLocation = _ref10[1].packageLocation;
102366  
102367        if (packageName !== null) {
102368          code += `  [${JSON.stringify(packageLocation)}, ${JSON.stringify({
102369            name: packageName,
102370            reference: packageReference
102371          })}],\n`;
102372        } else {
102373          code += `  [${JSON.stringify(packageLocation)}, topLevelLocator],\n`;
102374        }
102375      }
102376    }
102377    code += `]);\n`;
102378  
102379    return code;
102380  }
102381  
102382  function generateFindPackageLocator(packageInformationStores) {
102383    let code = ``;
102384  
102385    // We get the list of each string length we'll need to check in order to find the current package context
102386    const lengths = new Map();
102387  
102388    for (var _iterator7 = packageInformationStores.values(), _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
102389      var _ref12;
102390  
102391      if (_isArray7) {
102392        if (_i7 >= _iterator7.length) break;
102393        _ref12 = _iterator7[_i7++];
102394      } else {
102395        _i7 = _iterator7.next();
102396        if (_i7.done) break;
102397        _ref12 = _i7.value;
102398      }
102399  
102400      const packageInformationStore = _ref12;
102401  
102402      for (var _iterator9 = packageInformationStore.values(), _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {
102403        var _ref16;
102404  
102405        if (_isArray9) {
102406          if (_i9 >= _iterator9.length) break;
102407          _ref16 = _iterator9[_i9++];
102408        } else {
102409          _i9 = _iterator9.next();
102410          if (_i9.done) break;
102411          _ref16 = _i9.value;
102412        }
102413  
102414        const _ref15 = _ref16;
102415        const packageLocation = _ref15.packageLocation;
102416  
102417        if (packageLocation === null) {
102418          continue;
102419        }
102420  
102421        const length = packageLocation.length;
102422        const count = (lengths.get(length) || 0) + 1;
102423  
102424        lengths.set(length, count);
102425      }
102426    }
102427  
102428    // We must try the larger lengths before the smaller ones, because smaller ones might also match the longest ones
102429    // (for instance, /project/path will match /project/path/.pnp/global/node_modules/pnp-cf5f9c17b8f8db)
102430    const sortedLengths = Array.from(lengths.entries()).sort((a, b) => {
102431      return b[0] - a[0];
102432    });
102433  
102434    // Generate a function that, given a file path, returns the associated package name
102435    code += `exports.findPackageLocator = function findPackageLocator(location) {\n`;
102436    code += `  let relativeLocation = normalizePath(path.relative(__dirname, location));\n`;
102437    code += `\n`;
102438    code += `  if (!relativeLocation.match(isStrictRegExp))\n`;
102439    code += `    relativeLocation = \`./\${relativeLocation}\`;\n`;
102440    code += `\n`;
102441    code += `  if (location.match(isDirRegExp) && relativeLocation.charAt(relativeLocation.length - 1) !== '/')\n`;
102442    code += `    relativeLocation = \`\${relativeLocation}/\`;\n`;
102443    code += `\n`;
102444    code += `  let match;\n`;
102445  
102446    for (var _iterator8 = sortedLengths, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {
102447      var _ref14;
102448  
102449      if (_isArray8) {
102450        if (_i8 >= _iterator8.length) break;
102451        _ref14 = _iterator8[_i8++];
102452      } else {
102453        _i8 = _iterator8.next();
102454        if (_i8.done) break;
102455        _ref14 = _i8.value;
102456      }
102457  
102458      const _ref13 = _ref14;
102459      const length = _ref13[0];
102460  
102461      code += `\n`;
102462      code += `  if (relativeLocation.length >= ${length} && relativeLocation[${length - 1}] === '/')\n`;
102463      code += `    if (match = locatorsByLocations.get(relativeLocation.substr(0, ${length})))\n`;
102464      code += `      return blacklistCheck(match);\n`;
102465    }
102466  
102467    code += `\n`;
102468    code += `  return null;\n`;
102469    code += `};\n`;
102470  
102471    return code;
102472  }
102473  
102474  /***/ }),
102475  /* 548 */
102476  /***/ (function(module, exports, __webpack_require__) {
102477  
102478  "use strict";
102479  
102480  
102481  Object.defineProperty(exports, "__esModule", {
102482    value: true
102483  });
102484  exports.getTransitiveDevDependencies = getTransitiveDevDependencies;
102485  function dependenciesObjectToPatterns(dependencies) {
102486    if (!dependencies) {
102487      return [];
102488    }
102489    return Object.keys(dependencies).map(name => `${name}@${(dependencies || {})[name]}`);
102490  }
102491  
102492  // Enumerate all the transitive dependencies of a set of top-level packages
102493  function getTransitiveDependencies(lockfile, roots) {
102494    // Queue of dependency patterns to visit; set of already-visited patterns
102495    const queue = [];
102496    const patterns = new Set();
102497  
102498    const enqueue = pattern => {
102499      if (patterns.has(pattern)) {
102500        return;
102501      }
102502      patterns.add(pattern);
102503      queue.push(pattern);
102504    };
102505  
102506    roots.forEach(enqueue);
102507  
102508    // Final result set
102509    const transitiveDependencies = new Set();
102510  
102511    while (queue.length > 0) {
102512      const pattern = queue.shift();
102513      const lockManifest = lockfile.getLocked(pattern);
102514  
102515      if (!lockManifest) {
102516        continue;
102517      }
102518  
102519      // Add the dependency to the result set
102520      transitiveDependencies.add(`${lockManifest.name}@${lockManifest.version}`);
102521  
102522      // Enqueue any dependencies of the dependency for processing
102523  
102524      const dependencyPatterns = dependenciesObjectToPatterns(lockManifest.dependencies);
102525      dependencyPatterns.forEach(enqueue);
102526  
102527      const optionalDependencyPatterns = dependenciesObjectToPatterns(lockManifest.optionalDependencies);
102528      optionalDependencyPatterns.forEach(enqueue);
102529    }
102530  
102531    return transitiveDependencies;
102532  }
102533  
102534  function setDifference(x, y) {
102535    return new Set([...x].filter(value => !y.has(value)));
102536  }
102537  
102538  // Given a manifest, an optional workspace layout, and a lockfile, enumerate
102539  // all package versions that:
102540  // i) are present in the lockfile
102541  // ii) are a transitive dependency of some top-level devDependency
102542  // iii) are not a transitive dependency of some top-level production dependency
102543  function getTransitiveDevDependencies(packageManifest, workspaceLayout, lockfile) {
102544    // Enumerate the top-level package manifest as well as any workspace manifests
102545    const manifests = [packageManifest];
102546    if (workspaceLayout) {
102547      for (var _iterator = Object.keys(workspaceLayout.workspaces), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
102548        var _ref;
102549  
102550        if (_isArray) {
102551          if (_i >= _iterator.length) break;
102552          _ref = _iterator[_i++];
102553        } else {
102554          _i = _iterator.next();
102555          if (_i.done) break;
102556          _ref = _i.value;
102557        }
102558  
102559        const name = _ref;
102560  
102561        manifests.push(workspaceLayout.workspaces[name].manifest);
102562      }
102563    }
102564  
102565    // Collect all the top-level production and development dependencies across all manifests
102566    let productionRoots = [];
102567    let developmentRoots = [];
102568    for (var _iterator2 = manifests, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
102569      var _ref2;
102570  
102571      if (_isArray2) {
102572        if (_i2 >= _iterator2.length) break;
102573        _ref2 = _iterator2[_i2++];
102574      } else {
102575        _i2 = _iterator2.next();
102576        if (_i2.done) break;
102577        _ref2 = _i2.value;
102578      }
102579  
102580      const manifest = _ref2;
102581  
102582      productionRoots = productionRoots.concat(dependenciesObjectToPatterns(manifest.dependencies));
102583      productionRoots = productionRoots.concat(dependenciesObjectToPatterns(manifest.optionalDependencies));
102584      developmentRoots = developmentRoots.concat(dependenciesObjectToPatterns(manifest.devDependencies));
102585    }
102586  
102587    // Enumerate all the transitive production and development dependencies
102588    const productionDependencies = getTransitiveDependencies(lockfile, productionRoots);
102589    const developmentDependencies = getTransitiveDependencies(lockfile, developmentRoots);
102590  
102591    // Exclude any development dependencies that are also production dependencies
102592    return setDifference(developmentDependencies, productionDependencies);
102593  }
102594  
102595  /***/ }),
102596  /* 549 */
102597  /***/ (function(module, exports, __webpack_require__) {
102598  
102599  "use strict";
102600  
102601  
102602  Object.defineProperty(exports, "__esModule", {
102603    value: true
102604  });
102605  exports.parseRefs = exports.resolveVersion = exports.isCommitSha = undefined;
102606  
102607  var _asyncToGenerator2;
102608  
102609  function _load_asyncToGenerator() {
102610    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
102611  }
102612  
102613  var _misc;
102614  
102615  function _load_misc() {
102616    return _misc = __webpack_require__(18);
102617  }
102618  
102619  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
102620  
102621  const semver = __webpack_require__(22);
102622  
102623  const REF_PREFIX = 'refs/';
102624  const REF_TAG_PREFIX = 'refs/tags/';
102625  const REF_BRANCH_PREFIX = 'refs/heads/';
102626  const REF_PR_PREFIX = 'refs/pull/';
102627  
102628  // This regex is designed to match output from git of the style:
102629  //   ebeb6eafceb61dd08441ffe086c77eb472842494  refs/tags/v0.21.0
102630  // and extract the hash and ref name as capture groups
102631  const GIT_REF_LINE_REGEXP = /^([a-fA-F0-9]+)\s+(refs\/(?:tags|heads|pull|remotes)\/.*)$/;
102632  
102633  const COMMIT_SHA_REGEXP = /^[a-f0-9]{5,40}$/;
102634  const REF_NAME_REGEXP = /^refs\/(tags|heads)\/(.+)$/;
102635  
102636  const isCommitSha = exports.isCommitSha = target => COMMIT_SHA_REGEXP.test(target);
102637  
102638  const tryVersionAsGitCommit = ({ version, refs, git }) => {
102639    const lowercaseVersion = version.toLowerCase();
102640    if (!isCommitSha(lowercaseVersion)) {
102641      return Promise.resolve(null);
102642    }
102643    for (var _iterator = refs.entries(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
102644      var _ref2;
102645  
102646      if (_isArray) {
102647        if (_i >= _iterator.length) break;
102648        _ref2 = _iterator[_i++];
102649      } else {
102650        _i = _iterator.next();
102651        if (_i.done) break;
102652        _ref2 = _i.value;
102653      }
102654  
102655      const _ref = _ref2;
102656      const ref = _ref[0];
102657      const sha = _ref[1];
102658  
102659      if (sha.startsWith(lowercaseVersion)) {
102660        return Promise.resolve({ sha, ref });
102661      }
102662    }
102663    return git.resolveCommit(lowercaseVersion);
102664  };
102665  
102666  const tryEmptyVersionAsDefaultBranch = ({ version, git }) => version.trim() === '' ? git.resolveDefaultBranch() : Promise.resolve(null);
102667  
102668  const tryWildcardVersionAsDefaultBranch = ({ version, git }) => version === '*' ? git.resolveDefaultBranch() : Promise.resolve(null);
102669  
102670  const tryRef = (refs, ref) => {
102671    const sha = refs.get(ref);
102672    return sha ? { sha, ref } : null;
102673  };
102674  
102675  const tryVersionAsFullRef = ({ version, refs }) => version.startsWith('refs/') ? tryRef(refs, version) : null;
102676  
102677  const tryVersionAsTagName = ({ version, refs }) => tryRef(refs, `${REF_TAG_PREFIX}${version}`);
102678  
102679  const tryVersionAsPullRequestNo = ({ version, refs }) => tryRef(refs, `${REF_PR_PREFIX}${version}`);
102680  
102681  const tryVersionAsBranchName = ({ version, refs }) => tryRef(refs, `${REF_BRANCH_PREFIX}${version}`);
102682  
102683  const tryVersionAsDirectRef = ({ version, refs }) => tryRef(refs, `${REF_PREFIX}${version}`);
102684  
102685  const computeSemverNames = ({ config, refs }) => {
102686    const names = {
102687      tags: [],
102688      heads: []
102689    };
102690    for (var _iterator2 = refs.keys(), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
102691      var _ref3;
102692  
102693      if (_isArray2) {
102694        if (_i2 >= _iterator2.length) break;
102695        _ref3 = _iterator2[_i2++];
102696      } else {
102697        _i2 = _iterator2.next();
102698        if (_i2.done) break;
102699        _ref3 = _i2.value;
102700      }
102701  
102702      const ref = _ref3;
102703  
102704      const match = REF_NAME_REGEXP.exec(ref);
102705      if (!match) {
102706        continue;
102707      }
102708      const type = match[1],
102709            name = match[2];
102710  
102711      if (semver.valid(name, config.looseSemver)) {
102712        names[type].push(name);
102713      }
102714    }
102715    return names;
102716  };
102717  
102718  const findSemver = (version, config, namesList) => config.resolveConstraints(namesList, version);
102719  
102720  const tryVersionAsTagSemver = (() => {
102721    var _ref4 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* ({ version, config, refs }, names) {
102722      const result = yield findSemver(version.replace(/^semver:/, ''), config, names.tags);
102723      return result ? tryRef(refs, `${REF_TAG_PREFIX}${result}`) : null;
102724    });
102725  
102726    return function tryVersionAsTagSemver(_x, _x2) {
102727      return _ref4.apply(this, arguments);
102728    };
102729  })();
102730  
102731  const tryVersionAsBranchSemver = (() => {
102732    var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* ({ version, config, refs }, names) {
102733      const result = yield findSemver(version.replace(/^semver:/, ''), config, names.heads);
102734      return result ? tryRef(refs, `${REF_BRANCH_PREFIX}${result}`) : null;
102735    });
102736  
102737    return function tryVersionAsBranchSemver(_x3, _x4) {
102738      return _ref5.apply(this, arguments);
102739    };
102740  })();
102741  
102742  const tryVersionAsSemverRange = (() => {
102743    var _ref6 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (options) {
102744      const names = computeSemverNames(options);
102745      return (yield tryVersionAsTagSemver(options, names)) || tryVersionAsBranchSemver(options, names);
102746    });
102747  
102748    return function tryVersionAsSemverRange(_x5) {
102749      return _ref6.apply(this, arguments);
102750    };
102751  })();
102752  
102753  const VERSION_RESOLUTION_STEPS = [tryEmptyVersionAsDefaultBranch, tryVersionAsGitCommit, tryVersionAsFullRef, tryVersionAsTagName, tryVersionAsPullRequestNo, tryVersionAsBranchName, tryVersionAsSemverRange, tryWildcardVersionAsDefaultBranch, tryVersionAsDirectRef];
102754  
102755  /**
102756   * Resolve a git-url hash (version) to a git commit sha and branch/tag ref
102757   * Returns null if the version cannot be resolved to any commit
102758   */
102759  
102760  const resolveVersion = exports.resolveVersion = (() => {
102761    var _ref7 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (options) {
102762      for (var _iterator3 = VERSION_RESOLUTION_STEPS, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
102763        var _ref8;
102764  
102765        if (_isArray3) {
102766          if (_i3 >= _iterator3.length) break;
102767          _ref8 = _iterator3[_i3++];
102768        } else {
102769          _i3 = _iterator3.next();
102770          if (_i3.done) break;
102771          _ref8 = _i3.value;
102772        }
102773  
102774        const testFunction = _ref8;
102775  
102776        const result = yield testFunction(options);
102777        if (result !== null) {
102778          return result;
102779        }
102780      }
102781      return null;
102782    });
102783  
102784    return function resolveVersion(_x6) {
102785      return _ref7.apply(this, arguments);
102786    };
102787  })();
102788  
102789  /**
102790   * Parse Git ref lines into hash of ref names to SHA hashes
102791   */
102792  
102793  const parseRefs = exports.parseRefs = stdout => {
102794    // store references
102795    const refs = new Map();
102796  
102797    // line delimited
102798    const refLines = stdout.split('\n');
102799  
102800    for (var _iterator4 = refLines, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
102801      var _ref9;
102802  
102803      if (_isArray4) {
102804        if (_i4 >= _iterator4.length) break;
102805        _ref9 = _iterator4[_i4++];
102806      } else {
102807        _i4 = _iterator4.next();
102808        if (_i4.done) break;
102809        _ref9 = _i4.value;
102810      }
102811  
102812      const line = _ref9;
102813  
102814      const match = GIT_REF_LINE_REGEXP.exec(line);
102815  
102816      if (match) {
102817        const sha = match[1],
102818              tagName = match[2];
102819  
102820        // As documented in gitrevisions:
102821        //   https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html#_specifying_revisions
102822        // "A suffix ^ followed by an empty brace pair means the object could be a tag,
102823        //   and dereference the tag recursively until a non-tag object is found."
102824        // In other words, the hash without ^{} is the hash of the tag,
102825        //   and the hash with ^{} is the hash of the commit at which the tag was made.
102826  
102827        const name = (0, (_misc || _load_misc()).removeSuffix)(tagName, '^{}');
102828  
102829        refs.set(name, sha);
102830      }
102831    }
102832  
102833    return refs;
102834  };
102835  
102836  /***/ }),
102837  /* 550 */
102838  /***/ (function(module, exports, __webpack_require__) {
102839  
102840  "use strict";
102841  
102842  
102843  Object.defineProperty(exports, "__esModule", {
102844    value: true
102845  });
102846  exports.LogicalDependencyTree = undefined;
102847  
102848  var _npmLogicalTree;
102849  
102850  function _load_npmLogicalTree() {
102851    return _npmLogicalTree = _interopRequireDefault(__webpack_require__(766));
102852  }
102853  
102854  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
102855  
102856  class LogicalDependencyTree {
102857    constructor(packageJson, packageLock) {
102858      this.tree = (0, (_npmLogicalTree || _load_npmLogicalTree()).default)(JSON.parse(packageJson), JSON.parse(packageLock));
102859    }
102860  
102861    _findNode(name, parentNames) {
102862      const parentTree = parentNames ? parentNames.reduce((node, ancestor) => {
102863        const ancestorNode = node.dependencies.get(ancestor);
102864        return ancestorNode;
102865      }, this.tree) : this.tree;
102866      const node = parentTree.dependencies.get(name);
102867      return node;
102868    }
102869    getFixedVersionPattern(name, parentNames) {
102870      const node = this._findNode(name, parentNames);
102871      const version = node.version;
102872      return `${node.name}@${version}`;
102873    }
102874  }
102875  exports.LogicalDependencyTree = LogicalDependencyTree;
102876  
102877  /***/ }),
102878  /* 551 */
102879  /***/ (function(module, exports, __webpack_require__) {
102880  
102881  "use strict";
102882  
102883  
102884  Object.defineProperty(exports, "__esModule", {
102885    value: true
102886  });
102887  
102888  var _asyncToGenerator2;
102889  
102890  function _load_asyncToGenerator() {
102891    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
102892  }
102893  
102894  var _constants;
102895  
102896  function _load_constants() {
102897    return _constants = __webpack_require__(8);
102898  }
102899  
102900  var _util;
102901  
102902  function _load_util() {
102903    return _util = __webpack_require__(219);
102904  }
102905  
102906  var _index;
102907  
102908  function _load_index() {
102909    return _index = __webpack_require__(78);
102910  }
102911  
102912  var _inferLicense;
102913  
102914  function _load_inferLicense() {
102915    return _inferLicense = _interopRequireDefault(__webpack_require__(552));
102916  }
102917  
102918  var _fs;
102919  
102920  function _load_fs() {
102921    return _fs = _interopRequireWildcard(__webpack_require__(5));
102922  }
102923  
102924  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
102925  
102926  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
102927  
102928  const semver = __webpack_require__(22);
102929  const path = __webpack_require__(0);
102930  const url = __webpack_require__(24);
102931  
102932  const VALID_BIN_KEYS = /^(?!\.{0,2}$)[a-z0-9._-]+$/i;
102933  
102934  const LICENSE_RENAMES = {
102935    'MIT/X11': 'MIT',
102936    X11: 'MIT'
102937  };
102938  
102939  exports.default = (() => {
102940    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (info, moduleLoc, reporter, warn, looseSemver) {
102941      const files = yield (_fs || _load_fs()).readdir(moduleLoc);
102942  
102943      // clean info.version
102944      if (typeof info.version === 'string') {
102945        info.version = semver.clean(info.version, looseSemver) || info.version;
102946      }
102947  
102948      // if name or version aren't set then set them to empty strings
102949      info.name = info.name || '';
102950      info.version = info.version || '';
102951  
102952      // if the man field is a string then coerce it to an array
102953      if (typeof info.man === 'string') {
102954        info.man = [info.man];
102955      }
102956  
102957      // if the keywords field is a string then split it on any whitespace
102958      if (typeof info.keywords === 'string') {
102959        info.keywords = info.keywords.split(/\s+/g);
102960      }
102961  
102962      // if there's no contributors field but an authors field then expand it
102963      if (!info.contributors && files.indexOf('AUTHORS') >= 0) {
102964        const authorsFilepath = path.join(moduleLoc, 'AUTHORS');
102965        const authorsFilestats = yield (_fs || _load_fs()).stat(authorsFilepath);
102966        if (authorsFilestats.isFile()) {
102967          let authors = yield (_fs || _load_fs()).readFile(authorsFilepath);
102968          authors = authors.split(/\r?\n/g) // split on lines
102969          .map(function (line) {
102970            return line.replace(/^\s*#.*$/, '').trim();
102971          }) // remove comments
102972          .filter(function (line) {
102973            return !!line;
102974          }); // remove empty lines
102975          info.contributors = authors;
102976        }
102977      }
102978  
102979      // expand people fields to objects
102980      if (typeof info.author === 'string' || typeof info.author === 'object') {
102981        info.author = (0, (_util || _load_util()).normalizePerson)(info.author);
102982      }
102983      if (Array.isArray(info.contributors)) {
102984        info.contributors = info.contributors.map((_util || _load_util()).normalizePerson);
102985      }
102986      if (Array.isArray(info.maintainers)) {
102987        info.maintainers = info.maintainers.map((_util || _load_util()).normalizePerson);
102988      }
102989  
102990      // if there's no readme field then load the README file from the cwd
102991      if (!info.readme) {
102992        const readmeCandidates = files.filter(function (filename) {
102993          const lower = filename.toLowerCase();
102994          return lower === 'readme' || lower.indexOf('readme.') === 0;
102995        }).sort(function (filename1, filename2) {
102996          // favor files with extensions
102997          return filename2.indexOf('.') - filename1.indexOf('.');
102998        });
102999  
103000        for (var _iterator = readmeCandidates, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
103001          var _ref2;
103002  
103003          if (_isArray) {
103004            if (_i >= _iterator.length) break;
103005            _ref2 = _iterator[_i++];
103006          } else {
103007            _i = _iterator.next();
103008            if (_i.done) break;
103009            _ref2 = _i.value;
103010          }
103011  
103012          const readmeFilename = _ref2;
103013  
103014          const readmeFilepath = path.join(moduleLoc, readmeFilename);
103015          const readmeFileStats = yield (_fs || _load_fs()).stat(readmeFilepath);
103016          if (readmeFileStats.isFile()) {
103017            info.readmeFilename = readmeFilename;
103018            info.readme = yield (_fs || _load_fs()).readFile(readmeFilepath);
103019            break;
103020          }
103021        }
103022      }
103023  
103024      // if there's no description then take the first paragraph from the readme
103025      if (!info.description && info.readme) {
103026        const desc = (0, (_util || _load_util()).extractDescription)(info.readme);
103027        if (desc) {
103028          info.description = desc;
103029        }
103030      }
103031  
103032      // support array of engine keys
103033      if (Array.isArray(info.engines)) {
103034        const engines = {};
103035        for (var _iterator2 = info.engines, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
103036          var _ref3;
103037  
103038          if (_isArray2) {
103039            if (_i2 >= _iterator2.length) break;
103040            _ref3 = _iterator2[_i2++];
103041          } else {
103042            _i2 = _iterator2.next();
103043            if (_i2.done) break;
103044            _ref3 = _i2.value;
103045          }
103046  
103047          const str = _ref3;
103048  
103049          if (typeof str === 'string') {
103050            var _str$trim$split = str.trim().split(/ +/g);
103051  
103052            const name = _str$trim$split[0],
103053                  patternParts = _str$trim$split.slice(1);
103054  
103055            engines[name] = patternParts.join(' ');
103056          }
103057        }
103058        info.engines = engines;
103059      }
103060  
103061      // if the repository field is a string then assume it's a git repo and expand it
103062      if (typeof info.repository === 'string') {
103063        info.repository = {
103064          type: 'git',
103065          url: info.repository
103066        };
103067      }
103068  
103069      const repo = info.repository;
103070  
103071      // explode info.repository.url if it's a hosted git shorthand
103072      if (repo && typeof repo === 'object' && typeof repo.url === 'string') {
103073        repo.url = (0, (_index || _load_index()).hostedGitFragmentToGitUrl)(repo.url, reporter);
103074      }
103075  
103076      // allow bugs to be specified as a string, expand it to an object with a single url prop
103077      if (typeof info.bugs === 'string') {
103078        info.bugs = { url: info.bugs };
103079      }
103080  
103081      // normalize homepage url to http
103082      if (typeof info.homepage === 'string') {
103083        const parts = url.parse(info.homepage);
103084        parts.protocol = parts.protocol || 'http:';
103085        if (parts.pathname && !parts.hostname) {
103086          parts.hostname = parts.pathname;
103087          parts.pathname = '';
103088        }
103089        info.homepage = url.format(parts);
103090      }
103091  
103092      // if the `bin` field is as string then expand it to an object with a single property
103093      // based on the original `bin` field and `name field`
103094      // { name: "foo", bin: "cli.js" } -> { name: "foo", bin: { foo: "cli.js" } }
103095      if (typeof info.name === 'string' && typeof info.bin === 'string' && info.bin.length > 0) {
103096        // Remove scoped package name for consistency with NPM's bin field fixing behaviour
103097        const name = info.name.replace(/^@[^\/]+\//, '');
103098        info.bin = { [name]: info.bin };
103099      }
103100  
103101      // Validate that the bin entries reference only files within their package, and that
103102      // their name is a valid file name
103103      if (typeof info.bin === 'object' && info.bin !== null) {
103104        const bin = info.bin;
103105        for (var _iterator3 = Object.keys(bin), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
103106          var _ref4;
103107  
103108          if (_isArray3) {
103109            if (_i3 >= _iterator3.length) break;
103110            _ref4 = _iterator3[_i3++];
103111          } else {
103112            _i3 = _iterator3.next();
103113            if (_i3.done) break;
103114            _ref4 = _i3.value;
103115          }
103116  
103117          const key = _ref4;
103118  
103119          const target = bin[key];
103120          if (!VALID_BIN_KEYS.test(key) || !(0, (_util || _load_util()).isValidBin)(target)) {
103121            delete bin[key];
103122            warn(reporter.lang('invalidBinEntry', info.name, key));
103123          } else {
103124            bin[key] = path.normalize(target);
103125          }
103126        }
103127      } else if (typeof info.bin !== 'undefined') {
103128        delete info.bin;
103129        warn(reporter.lang('invalidBinField', info.name));
103130      }
103131  
103132      // bundleDependencies is an alias for bundledDependencies
103133      if (info.bundledDependencies) {
103134        info.bundleDependencies = info.bundledDependencies;
103135        delete info.bundledDependencies;
103136      }
103137  
103138      let scripts;
103139  
103140      // dummy script object to shove file inferred scripts onto
103141      if (info.scripts && typeof info.scripts === 'object') {
103142        scripts = info.scripts;
103143      } else {
103144        scripts = {};
103145      }
103146  
103147      // if there's a server.js file and no start script then set it to `node server.js`
103148      if (!scripts.start && files.indexOf('server.js') >= 0) {
103149        scripts.start = 'node server.js';
103150      }
103151  
103152      // if there's a binding.gyp file and no install script then set it to `node-gyp rebuild`
103153      if (!scripts.install && files.indexOf('binding.gyp') >= 0) {
103154        scripts.install = 'node-gyp rebuild';
103155      }
103156  
103157      // set scripts if we've polluted the empty object
103158      if (Object.keys(scripts).length) {
103159        info.scripts = scripts;
103160      }
103161  
103162      const dirs = info.directories;
103163  
103164      if (dirs && typeof dirs === 'object') {
103165        const binDir = dirs.bin;
103166  
103167        if (!info.bin && binDir && typeof binDir === 'string') {
103168          const bin = info.bin = {};
103169          const fullBinDir = path.join(moduleLoc, binDir);
103170  
103171          if (yield (_fs || _load_fs()).exists(fullBinDir)) {
103172            for (var _iterator4 = yield (_fs || _load_fs()).readdir(fullBinDir), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
103173              var _ref5;
103174  
103175              if (_isArray4) {
103176                if (_i4 >= _iterator4.length) break;
103177                _ref5 = _iterator4[_i4++];
103178              } else {
103179                _i4 = _iterator4.next();
103180                if (_i4.done) break;
103181                _ref5 = _i4.value;
103182              }
103183  
103184              const scriptName = _ref5;
103185  
103186              if (scriptName[0] === '.') {
103187                continue;
103188              }
103189              bin[scriptName] = path.join('.', binDir, scriptName);
103190            }
103191          } else {
103192            warn(reporter.lang('manifestDirectoryNotFound', binDir, info.name));
103193          }
103194        }
103195  
103196        const manDir = dirs.man;
103197  
103198        if (!info.man && typeof manDir === 'string') {
103199          const man = info.man = [];
103200          const fullManDir = path.join(moduleLoc, manDir);
103201  
103202          if (yield (_fs || _load_fs()).exists(fullManDir)) {
103203            for (var _iterator5 = yield (_fs || _load_fs()).readdir(fullManDir), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
103204              var _ref6;
103205  
103206              if (_isArray5) {
103207                if (_i5 >= _iterator5.length) break;
103208                _ref6 = _iterator5[_i5++];
103209              } else {
103210                _i5 = _iterator5.next();
103211                if (_i5.done) break;
103212                _ref6 = _i5.value;
103213              }
103214  
103215              const filename = _ref6;
103216  
103217              if (/^(.*?)\.[0-9]$/.test(filename)) {
103218                man.push(path.join('.', manDir, filename));
103219              }
103220            }
103221          } else {
103222            warn(reporter.lang('manifestDirectoryNotFound', manDir, info.name));
103223          }
103224        }
103225      }
103226  
103227      delete info.directories;
103228  
103229      // normalize licenses field
103230      const licenses = info.licenses;
103231      if (Array.isArray(licenses) && !info.license) {
103232        let licenseTypes = [];
103233  
103234        for (var _iterator6 = licenses, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
103235          var _ref7;
103236  
103237          if (_isArray6) {
103238            if (_i6 >= _iterator6.length) break;
103239            _ref7 = _iterator6[_i6++];
103240          } else {
103241            _i6 = _iterator6.next();
103242            if (_i6.done) break;
103243            _ref7 = _i6.value;
103244          }
103245  
103246          let license = _ref7;
103247  
103248          if (license && typeof license === 'object') {
103249            license = license.type;
103250          }
103251          if (typeof license === 'string') {
103252            licenseTypes.push(license);
103253          }
103254        }
103255  
103256        licenseTypes = licenseTypes.filter((_util || _load_util()).isValidLicense);
103257  
103258        if (licenseTypes.length === 1) {
103259          info.license = licenseTypes[0];
103260        } else if (licenseTypes.length) {
103261          info.license = `(${licenseTypes.join(' OR ')})`;
103262        }
103263      }
103264  
103265      const license = info.license;
103266  
103267      // normalize license
103268      if (license && typeof license === 'object') {
103269        info.license = license.type;
103270      }
103271  
103272      // get license file
103273      const licenseFile = files.find(function (filename) {
103274        const lower = filename.toLowerCase();
103275        return lower === 'license' || lower.startsWith('license.') || lower === 'unlicense' || lower.startsWith('unlicense.');
103276      });
103277      if (licenseFile) {
103278        const licenseFilepath = path.join(moduleLoc, licenseFile);
103279        const licenseFileStats = yield (_fs || _load_fs()).stat(licenseFilepath);
103280        if (licenseFileStats.isFile()) {
103281          const licenseContent = yield (_fs || _load_fs()).readFile(licenseFilepath);
103282          const inferredLicense = (0, (_inferLicense || _load_inferLicense()).default)(licenseContent);
103283          info.licenseText = licenseContent;
103284  
103285          const license = info.license;
103286  
103287          if (typeof license === 'string') {
103288            if (inferredLicense && (0, (_util || _load_util()).isValidLicense)(inferredLicense) && !(0, (_util || _load_util()).isValidLicense)(license)) {
103289              // some packages don't specify their license version but we can infer it based on their license file
103290              const basicLicense = license.toLowerCase().replace(/(-like|\*)$/g, '');
103291              const expandedLicense = inferredLicense.toLowerCase();
103292              if (expandedLicense.startsWith(basicLicense)) {
103293                // TODO consider doing something to notify the user
103294                info.license = inferredLicense;
103295              }
103296            }
103297          } else if (inferredLicense) {
103298            // if there's no license then infer it based on the license file
103299            info.license = inferredLicense;
103300          } else {
103301            // valid expression to refer to a license in a file
103302            info.license = `SEE LICENSE IN ${licenseFile}`;
103303          }
103304        }
103305      }
103306  
103307      if (typeof info.license === 'string') {
103308        // sometimes licenses are known by different names, reduce them
103309        info.license = LICENSE_RENAMES[info.license] || info.license;
103310      } else if (typeof info.readme === 'string') {
103311        // the license might be at the bottom of the README
103312        const inferredLicense = (0, (_inferLicense || _load_inferLicense()).default)(info.readme);
103313        if (inferredLicense) {
103314          info.license = inferredLicense;
103315        }
103316      }
103317  
103318      // get notice file
103319      const noticeFile = files.find(function (filename) {
103320        const lower = filename.toLowerCase();
103321        return lower === 'notice' || lower.startsWith('notice.');
103322      });
103323      if (noticeFile) {
103324        const noticeFilepath = path.join(moduleLoc, noticeFile);
103325        const noticeFileStats = yield (_fs || _load_fs()).stat(noticeFilepath);
103326        if (noticeFileStats.isFile()) {
103327          info.noticeText = yield (_fs || _load_fs()).readFile(noticeFilepath);
103328        }
103329      }
103330  
103331      for (var _iterator7 = (_constants || _load_constants()).MANIFEST_FIELDS, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
103332        var _ref8;
103333  
103334        if (_isArray7) {
103335          if (_i7 >= _iterator7.length) break;
103336          _ref8 = _iterator7[_i7++];
103337        } else {
103338          _i7 = _iterator7.next();
103339          if (_i7.done) break;
103340          _ref8 = _i7.value;
103341        }
103342  
103343        const dependencyType = _ref8;
103344  
103345        const dependencyList = info[dependencyType];
103346        if (dependencyList && typeof dependencyList === 'object') {
103347          delete dependencyList['//'];
103348          for (const name in dependencyList) {
103349            dependencyList[name] = dependencyList[name] || '';
103350          }
103351        }
103352      }
103353    });
103354  
103355    return function (_x, _x2, _x3, _x4, _x5) {
103356      return _ref.apply(this, arguments);
103357    };
103358  })();
103359  
103360  /***/ }),
103361  /* 552 */
103362  /***/ (function(module, exports, __webpack_require__) {
103363  
103364  "use strict";
103365  
103366  
103367  Object.defineProperty(exports, "__esModule", {
103368    value: true
103369  });
103370  exports.default = inferLicense;
103371  
103372  var _licenses;
103373  
103374  function _load_licenses() {
103375    return _licenses = _interopRequireDefault(__webpack_require__(553));
103376  }
103377  
103378  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
103379  
103380  function clean(str) {
103381    return str.replace(/[^A-Za-z\s]/g, ' ').replace(/[\s]+/g, ' ').trim().toLowerCase();
103382  }
103383  
103384  const REGEXES = {
103385    Apache: [/Apache License\b/],
103386    BSD: [/BSD\b/],
103387    ISC: [/The ISC License/, /ISC\b/],
103388    MIT: [/MIT\b/],
103389    Unlicense: [/http:\/\/unlicense.org\//],
103390    WTFPL: [/DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE/, /WTFPL\b/]
103391  };
103392  
103393  function inferLicense(license) {
103394    // check if we have any explicit licenses
103395    const cleanLicense = clean(license);
103396    for (const licenseName in (_licenses || _load_licenses()).default) {
103397      const testLicense = (_licenses || _load_licenses()).default[licenseName];
103398      if (cleanLicense.search(testLicense) >= 0) {
103399        return licenseName;
103400      }
103401    }
103402  
103403    // infer based on some keywords
103404    for (const licenseName in REGEXES) {
103405      for (var _iterator = REGEXES[licenseName], _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
103406        var _ref;
103407  
103408        if (_isArray) {
103409          if (_i >= _iterator.length) break;
103410          _ref = _iterator[_i++];
103411        } else {
103412          _i = _iterator.next();
103413          if (_i.done) break;
103414          _ref = _i.value;
103415        }
103416  
103417        const regex = _ref;
103418  
103419        if (license.search(regex) >= 0) {
103420          return `${licenseName}*`;
103421        }
103422      }
103423    }
103424  
103425    return null;
103426  }
103427  
103428  /***/ }),
103429  /* 553 */
103430  /***/ (function(module, exports, __webpack_require__) {
103431  
103432  "use strict";
103433  
103434  
103435  Object.defineProperty(exports, "__esModule", {
103436    value: true
103437  });
103438  
103439  
103440  /* eslint-disable max-len */
103441  
103442  /**
103443   * DO NOT EDIT THIS FILE MANUALLY.
103444   * THIS FILE WAS GENERATED BY "generate-licenses-js.js".
103445   */
103446  
103447  exports.default = {
103448    'Apache-2.0': new RegExp('(licensed under the apache license version the license you may not use this file except in compliance with the license you may obtain a copy of the license at http www apache org licenses license unless required by applicable law or agreed to in writing software distributed under the license is distributed on an as is basis without warranties or conditions of any kind either express or implied see the license for the specific language governing permissions and limitations under the license$|apache license version january http www apache org licenses terms and conditions for use reproduction and distribution definitions license shall mean the terms and conditions for use reproduction and distribution as defined by sections through of this document licensor shall mean the copyright owner or entity authorized by the copyright owner that is granting the license legal entity shall mean the union of the acting entity and all other entities that control are controlled by or are under common control with that entity for the purposes of this definition control means i the power direct or indirect to cause the direction or management of such entity whether by contract or otherwise or ii ownership of fifty percent or more of the outstanding shares or iii beneficial ownership of such entity you or your shall mean an individual or legal entity exercising permissions granted by this license source form shall mean the preferred form for making modifications including but not limited to software source code documentation source and configuration files object form shall mean any form resulting from mechanical transformation or translation of a source form including but not limited to compiled object code generated documentation and conversions to other media types work shall mean the work of authorship whether in source or object form made available under the license as indicated by a copyright notice that is included in or attached to the work an example is provided in the appendix below derivative works shall mean any work whether in source or object form that is based on or derived from the work and for which the editorial revisions annotations elaborations or other modifications represent as a whole an original work of authorship for the purposes of this license derivative works shall not include works that remain separable from or merely link or bind by name to the interfaces of the work and derivative works thereof contribution shall mean any work of authorship including the original version of the work and any modifications or additions to that work or derivative works thereof that is intentionally submitted to licensor for inclusion in the work by the copyright owner or by an individual or legal entity authorized to submit on behalf of the copyright owner for the purposes of this definition submitted means any form of electronic verbal or written communication sent to the licensor or its representatives including but not limited to communication on electronic mailing lists source code control systems and issue tracking systems that are managed by or on behalf of the licensor for the purpose of discussing and improving the work but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as not a contribution contributor shall mean licensor and any individual or legal entity on behalf of whom a contribution has been received by licensor and subsequently incorporated within the work grant of copyright license subject to the terms and conditions of this license each contributor hereby grants to you a perpetual worldwide non exclusive no charge royalty free irrevocable copyright license to reproduce prepare derivative works of publicly display publicly perform sublicense and distribute the work and such derivative works in source or object form grant of patent license subject to the terms and conditions of this license each contributor hereby grants to you a perpetual worldwide non exclusive no charge royalty free irrevocable except as stated in this section patent license to make have made use offer to sell sell import and otherwise transfer the work where such license applies only to those patent claims licensable by such contributor that are necessarily infringed by their contribution s alone or by combination of their contribution s with the work to which such contribution s was submitted if you institute patent litigation against any entity including a cross claim or counterclaim in a lawsuit alleging that the work or a contribution incorporated within the work constitutes direct or contributory patent infringement then any patent licenses granted to you under this license for that work shall terminate as of the date such litigation is filed redistribution you may reproduce and distribute copies of the work or derivative works thereof in any medium with or without modifications and in source or object form provided that you meet the following conditions a you must give any other recipients of the work or derivative works a copy of this license and b you must cause any modified files to carry prominent notices stating that you changed the files and c you must retain in the source form of any derivative works that you distribute all copyright patent trademark and attribution notices from the source form of the work excluding those notices that do not pertain to any part of the derivative works and d if the work includes a notice text file as part of its distribution then any derivative works that you distribute must include a readable copy of the attribution notices contained within such notice file excluding those notices that do not pertain to any part of the derivative works in at least one of the following places within a notice text file distributed as part of the derivative works within the source form or documentation if provided along with the derivative works or within a display generated by the derivative works if and wherever such third party notices normally appear the contents of the notice file are for informational purposes only and do not modify the license you may add your own attribution notices within derivative works that you distribute alongside or as an addendum to the notice text from the work provided that such additional attribution notices cannot be construed as modifying the license you may add your own copyright statement to your modifications and may provide additional or different license terms and conditions for use reproduction or distribution of your modifications or for any such derivative works as a whole provided your use reproduction and distribution of the work otherwise complies with the conditions stated in this license submission of contributions unless you explicitly state otherwise any contribution intentionally submitted for inclusion in the work by you to the licensor shall be under the terms and conditions of this license without any additional terms or conditions notwithstanding the above nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with licensor regarding such contributions trademarks this license does not grant permission to use the trade names trademarks service marks or product names of the licensor except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the notice file disclaimer of warranty unless required by applicable law or agreed to in writing licensor provides the work and each contributor provides its contributions on an as is basis without warranties or conditions of any kind either express or implied including without limitation any warranties or conditions of title non infringement merchantability or fitness for a particular purpose you are solely responsible for determining the appropriateness of using or redistributing the work and assume any risks associated with your exercise of permissions under this license limitation of liability in no event and under no legal theory whether in tort including negligence contract or otherwise unless required by applicable law such as deliberate and grossly negligent acts or agreed to in writing shall any contributor be liable to you for damages including any direct indirect special incidental or consequential damages of any character arising as a result of this license or out of the use or inability to use the work including but not limited to damages for loss of goodwill work stoppage computer failure or malfunction or any and all other commercial damages or losses even if such contributor has been advised of the possibility of such damages accepting warranty or additional liability while redistributing the work or derivative works thereof you may choose to offer and charge a fee for acceptance of support warranty indemnity or other liability obligations and or rights consistent with this license however in accepting such obligations you may act only on your own behalf and on your sole responsibility not on behalf of any other contributor and only if you agree to indemnify defend and hold each contributor harmless for any liability incurred by or claims asserted against such contributor by reason of your accepting any such warranty or additional liability end of terms and conditions$)', 'g'),
103449    'BSD-2-Clause': new RegExp('(redistribution and use in source and binary forms with or without modification are permitted provided that the following conditions are met redistributions of source code must retain the above copyright notice this list of conditions and the following disclaimer 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 this(.*?| )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(.*?| )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(.*?| )even if advised of the possibility of such damage$|redistribution and use in source and binary forms with or without modification are permitted provided that the following conditions are met redistributions of source code must retain the above copyright notice this list of conditions and the following disclaimer 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 this 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(.*?| )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$)', 'g'),
103450    'BSD-3-Clause': new RegExp('(redistribution and use in source and binary forms with or without modification are permitted provided that the following conditions are met redistributions of source code must retain the above copyright notice this list of conditions and the following disclaimer 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 neither the name of(.*?| )nor the names of the contributors may be used to endorse or promote products derived from this software without specific prior written permission this 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(.*?| )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$|(redistribution and use in source and binary forms with or without modification are permitted provided that the following conditions are met redistributions of source code must retain the above copyright notice this list of conditions and the following disclaimer 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 the names of any contributors may not be used to endorse or promote products derived from this software without specific prior written permission this 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 holders and 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$|redistribution and use in source and binary forms with or without modification are permitted provided that the following conditions are met redistributions of source code must retain the above copyright notice this list of conditions and the following disclaimer 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 neither the name(.*?| )nor the names of(.*?| )contributors may be used to endorse or promote products derived from this software without specific prior written permission this software is provided by(.*?| )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(.*?| )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$))', 'g'),
103451    MIT: new RegExp('permission is hereby granted free of charge to any person obtaining a copy of this software and associated documentation files the software to deal in the software without restriction including without limitation the rights to use copy modify merge publish distribute sublicense and or sell copies of the software and to permit persons to whom the software is furnished to do so subject to the following conditions the above copyright notice and this permission notice shall be included in all copies or substantial portions of the software the software is provided as is without warranty of any kind express or implied including but not limited to the warranties of merchantability fitness for a particular purpose and noninfringement in no event shall the authors or copyright holders be liable for any claim damages or other liability whether in an action of contract tort or otherwise arising from out of or in connection with the software or the use or other dealings in the software$', 'g'),
103452    Unlicense: new RegExp('this is free and unencumbered software released into the public domain anyone is free to copy modify publish use compile sell or distribute this software either in source code form or as a compiled binary for any purpose commercial or non commercial and by any means in jurisdictions that recognize copyright laws the author or authors of this software dedicate any and all copyright interest in the software to the public domain we make this dedication for the benefit of the public at large and to the detriment of our heirs and successors we intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law the software is provided as is without warranty of any kind express or implied including but not limited to the warranties of merchantability fitness for a particular purpose and noninfringement in no event shall the authors be liable for any claim damages or other liability whether in an action of contract tort or otherwise arising from out of or in connection with the software or the use or other dealings in the software for more information please refer to wildcard$', 'g')
103453  };
103454  
103455  /***/ }),
103456  /* 554 */
103457  /***/ (function(module, exports, __webpack_require__) {
103458  
103459  "use strict";
103460  
103461  
103462  Object.defineProperty(exports, "__esModule", {
103463    value: true
103464  });
103465  
103466  exports.default = function (info, moduleLoc, lockfileFolder) {
103467    // It won't work if we don't yet know what's the folder we'll use as root. It's not a
103468    // big deal tho, because it only happens when trying to figure out the root, and we
103469    // don't need to know the dependencies / devDependencies at this time.
103470    if (!lockfileFolder) {
103471      return;
103472    }
103473  
103474    for (var _iterator = (_constants || _load_constants()).DEPENDENCY_TYPES, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
103475      var _ref;
103476  
103477      if (_isArray) {
103478        if (_i >= _iterator.length) break;
103479        _ref = _iterator[_i++];
103480      } else {
103481        _i = _iterator.next();
103482        if (_i.done) break;
103483        _ref = _i.value;
103484      }
103485  
103486      const dependencyType = _ref;
103487  
103488      const dependencies = info[dependencyType];
103489      if (!dependencies) {
103490        continue;
103491      }
103492  
103493      for (var _iterator2 = Object.keys(dependencies), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
103494        var _ref2;
103495  
103496        if (_isArray2) {
103497          if (_i2 >= _iterator2.length) break;
103498          _ref2 = _iterator2[_i2++];
103499        } else {
103500          _i2 = _iterator2.next();
103501          if (_i2.done) break;
103502          _ref2 = _i2.value;
103503        }
103504  
103505        const name = _ref2;
103506  
103507        let value = dependencies[name];
103508  
103509        if (path.isAbsolute(value)) {
103510          value = (_fileResolver || _load_fileResolver()).FILE_PROTOCOL_PREFIX + value;
103511        }
103512  
103513        let prefix;
103514        if (value.startsWith((_fileResolver || _load_fileResolver()).FILE_PROTOCOL_PREFIX)) {
103515          prefix = (_fileResolver || _load_fileResolver()).FILE_PROTOCOL_PREFIX;
103516        } else if (value.startsWith((_linkResolver || _load_linkResolver()).LINK_PROTOCOL_PREFIX)) {
103517          prefix = (_linkResolver || _load_linkResolver()).LINK_PROTOCOL_PREFIX;
103518        } else {
103519          continue;
103520        }
103521        (0, (_invariant || _load_invariant()).default)(prefix, 'prefix is definitely defined here');
103522  
103523        const unprefixed = value.substr(prefix.length);
103524        const hasPathPrefix = /^\.(\/|$)/.test(unprefixed);
103525  
103526        const absoluteTarget = path.resolve(lockfileFolder, moduleLoc, unprefixed);
103527        let relativeTarget = path.relative(lockfileFolder, absoluteTarget) || '.';
103528  
103529        if (absoluteTarget === lockfileFolder) {
103530          relativeTarget = '.';
103531        } else if (hasPathPrefix) {
103532          // TODO: This logic should be removed during the next major bump
103533          // If the original value was using the "./" prefix, then we output a similar path.
103534          // We need to do this because otherwise it would cause problems with already existing
103535          // lockfile, which would see some of their entries being unrecognized.
103536          relativeTarget = relativeTarget.replace(/^(?!\.{0,2}\/)/, `./`);
103537        }
103538  
103539        dependencies[name] = prefix + relativeTarget.replace(/\\/g, '/');
103540      }
103541    }
103542  };
103543  
103544  var _constants;
103545  
103546  function _load_constants() {
103547    return _constants = __webpack_require__(8);
103548  }
103549  
103550  var _fileResolver;
103551  
103552  function _load_fileResolver() {
103553    return _fileResolver = __webpack_require__(213);
103554  }
103555  
103556  var _linkResolver;
103557  
103558  function _load_linkResolver() {
103559    return _linkResolver = __webpack_require__(362);
103560  }
103561  
103562  var _invariant;
103563  
103564  function _load_invariant() {
103565    return _invariant = _interopRequireDefault(__webpack_require__(9));
103566  }
103567  
103568  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
103569  
103570  const path = __webpack_require__(0);
103571  
103572  /***/ }),
103573  /* 555 */
103574  /***/ (function(module, exports, __webpack_require__) {
103575  
103576  "use strict";
103577  
103578  
103579  Object.defineProperty(exports, "__esModule", {
103580    value: true
103581  });
103582  exports.default = {
103583    autohr: 'author',
103584    autor: 'author',
103585    contributers: 'contributors',
103586    depdenencies: 'dependencies',
103587    dependancies: 'dependencies',
103588    dependecies: 'dependencies',
103589    depends: 'dependencies',
103590    'dev-dependencies': 'devDependencies',
103591    devDependences: 'devDependencies',
103592    devDepenencies: 'devDependencies',
103593    devEependencies: 'devDependencies',
103594    devdependencies: 'devDependencies',
103595    hampage: 'homepage',
103596    hompage: 'homepage',
103597    prefereGlobal: 'preferGlobal',
103598    publicationConfig: 'publishConfig',
103599    repo: 'repository',
103600    repostitory: 'repository',
103601    script: 'scripts'
103602  };
103603  
103604  /***/ }),
103605  /* 556 */
103606  /***/ (function(module, exports, __webpack_require__) {
103607  
103608  "use strict";
103609  
103610  
103611  Object.defineProperty(exports, "__esModule", {
103612    value: true
103613  });
103614  exports.default = parsePackageName;
103615  
103616  
103617  const PKG_INPUT = /(^\S?[^\s@]+)(?:@(\S+))?$/;
103618  
103619  function parsePackageName(input) {
103620    var _PKG_INPUT$exec = PKG_INPUT.exec(input);
103621  
103622    const name = _PKG_INPUT$exec[1],
103623          version = _PKG_INPUT$exec[2];
103624  
103625    return { name, version };
103626  }
103627  
103628  /***/ }),
103629  /* 557 */
103630  /***/ (function(module, exports, __webpack_require__) {
103631  
103632  "use strict";
103633  
103634  
103635  Object.defineProperty(exports, "__esModule", {
103636    value: true
103637  });
103638  
103639  var _asyncToGenerator2;
103640  
103641  function _load_asyncToGenerator() {
103642    return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2));
103643  }
103644  
103645  let makePortableProxyScriptUnix = (() => {
103646    var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (source, destination, options) {
103647      const environment = options.extraEnvironment ? Array.from(options.extraEnvironment.entries()).map(function ([key, value]) {
103648        return `${key}="${value}"`;
103649      }).join(' ') + ' ' : '';
103650  
103651      const prependedArguments = options.prependArguments ? ' ' + options.prependArguments.map(function (arg) {
103652        return `"${arg}"`;
103653      }).join(' ') : '';
103654      const appendedArguments = options.appendArguments ? ' ' + options.appendArguments.map(function (arg) {
103655        return `"${arg}"`;
103656      }).join(' ') : '';
103657  
103658      const filePath = `${destination}/${options.proxyBasename || path.basename(source)}`;
103659  
103660      // Unless impossible we want to preserve any symlinks used to call us when forwarding the call to the binary (so we
103661      // cannot use realpath or transform relative paths into absolute ones), but we also need to tell the sh interpreter
103662      // that the symlink should be resolved relative to the script directory (hence dirname "$0" at runtime).
103663      const sourcePath = path.isAbsolute(source) ? source : `$(dirname "$0")/../${source}`;
103664  
103665      yield (_fs || _load_fs()).mkdirp(destination);
103666  
103667      if (process.platform === 'win32') {
103668        yield (_fs || _load_fs()).writeFile(filePath + '.cmd', `@${environment}"${sourcePath}" ${prependedArguments} ${appendedArguments} %*\r\n`);
103669      } else {
103670        yield (_fs || _load_fs()).writeFile(filePath, `#!/bin/sh\n\n${environment}exec "${sourcePath}"${prependedArguments} "$@"${appendedArguments}\n`);
103671        yield (_fs || _load_fs()).chmod(filePath, 0o755);
103672      }
103673    });
103674  
103675    return function makePortableProxyScriptUnix(_x, _x2, _x3) {
103676      return _ref.apply(this, arguments);
103677    };
103678  })();
103679  
103680  exports.makePortableProxyScript = makePortableProxyScript;
103681  
103682  var _fs;
103683  
103684  function _load_fs() {
103685    return _fs = _interopRequireWildcard(__webpack_require__(5));
103686  }
103687  
103688  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
103689  
103690  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
103691  
103692  const path = __webpack_require__(0);
103693  
103694  function makePortableProxyScript(source, destination,
103695  // $FlowFixMe Flow doesn't support exact types with empty default values
103696  options = {}) {
103697    return makePortableProxyScriptUnix(source, destination, options);
103698  }
103699  
103700  /***/ }),
103701  /* 558 */
103702  /***/ (function(module, exports, __webpack_require__) {
103703  
103704  "use strict";
103705  
103706  
103707  Object.defineProperty(exports, "__esModule", {
103708    value: true
103709  });
103710  exports.findRc = findRc;
103711  
103712  var _fs;
103713  
103714  function _load_fs() {
103715    return _fs = __webpack_require__(4);
103716  }
103717  
103718  var _path;
103719  
103720  function _load_path() {
103721    return _path = _interopRequireWildcard(__webpack_require__(0));
103722  }
103723  
103724  var _constants;
103725  
103726  function _load_constants() {
103727    return _constants = __webpack_require__(8);
103728  }
103729  
103730  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
103731  
103732  const etc = '/etc';
103733  
103734  const isWin = process.platform === 'win32';
103735  const home = isWin ? process.env.USERPROFILE : process.env.HOME;
103736  
103737  function getRcPaths(name, cwd) {
103738    const configPaths = [];
103739  
103740    function pushConfigPath(...segments) {
103741      configPaths.push((_path || _load_path()).join(...segments));
103742      if (segments[segments.length - 1] === `.${name}rc`) {
103743        configPaths.push((_path || _load_path()).join(...segments.slice(0, -1), `.${name}rc.yml`));
103744      }
103745    }
103746  
103747    function unshiftConfigPath(...segments) {
103748      if (segments[segments.length - 1] === `.${name}rc`) {
103749        configPaths.unshift((_path || _load_path()).join(...segments.slice(0, -1), `.${name}rc.yml`));
103750      }
103751      configPaths.unshift((_path || _load_path()).join(...segments));
103752    }
103753  
103754    if (!isWin) {
103755      pushConfigPath(etc, name, 'config');
103756      pushConfigPath(etc, `${name}rc`);
103757    }
103758  
103759    if (home) {
103760      pushConfigPath((_constants || _load_constants()).CONFIG_DIRECTORY);
103761      pushConfigPath(home, '.config', name, 'config');
103762      pushConfigPath(home, '.config', name);
103763      pushConfigPath(home, `.${name}`, 'config');
103764      pushConfigPath(home, `.${name}rc`);
103765    }
103766  
103767    // add .yarnrc locations relative to the cwd
103768    while (true) {
103769      unshiftConfigPath(cwd, `.${name}rc`);
103770  
103771      const upperCwd = (_path || _load_path()).dirname(cwd);
103772      if (upperCwd === cwd) {
103773        // we've reached the root
103774        break;
103775      } else {
103776        // continue since there's still more directories to search
103777        cwd = upperCwd;
103778      }
103779    }
103780  
103781    const envVariable = `${name}_config`.toUpperCase();
103782  
103783    if (process.env[envVariable]) {
103784      pushConfigPath(process.env[envVariable]);
103785    }
103786  
103787    return configPaths;
103788  }
103789  
103790  function parseRcPaths(paths, parser) {
103791    return Object.assign({}, ...paths.map(path => {
103792      try {
103793        return parser((0, (_fs || _load_fs()).readFileSync)(path).toString(), path);
103794      } catch (error) {
103795        if (error.code === 'ENOENT' || error.code === 'EISDIR') {
103796          return {};
103797        } else {
103798          throw error;
103799        }
103800      }
103801    }));
103802  }
103803  
103804  function findRc(name, cwd, parser) {
103805    return parseRcPaths(getRcPaths(name, cwd), parser);
103806  }
103807  
103808  /***/ }),
103809  /* 559 */
103810  /***/ (function(module, exports, __webpack_require__) {
103811  
103812  module.exports = { "default": __webpack_require__(591), __esModule: true };
103813  
103814  /***/ }),
103815  /* 560 */
103816  /***/ (function(module, exports, __webpack_require__) {
103817  
103818  var DuplexStream = __webpack_require__(791)
103819    , util         = __webpack_require__(3)
103820    , Buffer       = __webpack_require__(45).Buffer
103821  
103822  
103823  function BufferList (callback) {
103824    if (!(this instanceof BufferList))
103825      return new BufferList(callback)
103826  
103827    this._bufs  = []
103828    this.length = 0
103829  
103830    if (typeof callback == 'function') {
103831      this._callback = callback
103832  
103833      var piper = function piper (err) {
103834        if (this._callback) {
103835          this._callback(err)
103836          this._callback = null
103837        }
103838      }.bind(this)
103839  
103840      this.on('pipe', function onPipe (src) {
103841        src.on('error', piper)
103842      })
103843      this.on('unpipe', function onUnpipe (src) {
103844        src.removeListener('error', piper)
103845      })
103846    } else {
103847      this.append(callback)
103848    }
103849  
103850    DuplexStream.call(this)
103851  }
103852  
103853  
103854  util.inherits(BufferList, DuplexStream)
103855  
103856  
103857  BufferList.prototype._offset = function _offset (offset) {
103858    var tot = 0, i = 0, _t
103859    if (offset === 0) return [ 0, 0 ]
103860    for (; i < this._bufs.length; i++) {
103861      _t = tot + this._bufs[i].length
103862      if (offset < _t || i == this._bufs.length - 1)
103863        return [ i, offset - tot ]
103864      tot = _t
103865    }
103866  }
103867  
103868  
103869  BufferList.prototype.append = function append (buf) {
103870    var i = 0
103871  
103872    if (Buffer.isBuffer(buf)) {
103873      this._appendBuffer(buf);
103874    } else if (Array.isArray(buf)) {
103875      for (; i < buf.length; i++)
103876        this.append(buf[i])
103877    } else if (buf instanceof BufferList) {
103878      // unwrap argument into individual BufferLists
103879      for (; i < buf._bufs.length; i++)
103880        this.append(buf._bufs[i])
103881    } else if (buf != null) {
103882      // coerce number arguments to strings, since Buffer(number) does
103883      // uninitialized memory allocation
103884      if (typeof buf == 'number')
103885        buf = buf.toString()
103886  
103887      this._appendBuffer(Buffer.from(buf));
103888    }
103889  
103890    return this
103891  }
103892  
103893  
103894  BufferList.prototype._appendBuffer = function appendBuffer (buf) {
103895    this._bufs.push(buf)
103896    this.length += buf.length
103897  }
103898  
103899  
103900  BufferList.prototype._write = function _write (buf, encoding, callback) {
103901    this._appendBuffer(buf)
103902  
103903    if (typeof callback == 'function')
103904      callback()
103905  }
103906  
103907  
103908  BufferList.prototype._read = function _read (size) {
103909    if (!this.length)
103910      return this.push(null)
103911  
103912    size = Math.min(size, this.length)
103913    this.push(this.slice(0, size))
103914    this.consume(size)
103915  }
103916  
103917  
103918  BufferList.prototype.end = function end (chunk) {
103919    DuplexStream.prototype.end.call(this, chunk)
103920  
103921    if (this._callback) {
103922      this._callback(null, this.slice())
103923      this._callback = null
103924    }
103925  }
103926  
103927  
103928  BufferList.prototype.get = function get (index) {
103929    return this.slice(index, index + 1)[0]
103930  }
103931  
103932  
103933  BufferList.prototype.slice = function slice (start, end) {
103934    if (typeof start == 'number' && start < 0)
103935      start += this.length
103936    if (typeof end == 'number' && end < 0)
103937      end += this.length
103938    return this.copy(null, 0, start, end)
103939  }
103940  
103941  
103942  BufferList.prototype.copy = function copy (dst, dstStart, srcStart, srcEnd) {
103943    if (typeof srcStart != 'number' || srcStart < 0)
103944      srcStart = 0
103945    if (typeof srcEnd != 'number' || srcEnd > this.length)
103946      srcEnd = this.length
103947    if (srcStart >= this.length)
103948      return dst || Buffer.alloc(0)
103949    if (srcEnd <= 0)
103950      return dst || Buffer.alloc(0)
103951  
103952    var copy   = !!dst
103953      , off    = this._offset(srcStart)
103954      , len    = srcEnd - srcStart
103955      , bytes  = len
103956      , bufoff = (copy && dstStart) || 0
103957      , start  = off[1]
103958      , l
103959      , i
103960  
103961    // copy/slice everything
103962    if (srcStart === 0 && srcEnd == this.length) {
103963      if (!copy) { // slice, but full concat if multiple buffers
103964        return this._bufs.length === 1
103965          ? this._bufs[0]
103966          : Buffer.concat(this._bufs, this.length)
103967      }
103968  
103969      // copy, need to copy individual buffers
103970      for (i = 0; i < this._bufs.length; i++) {
103971        this._bufs[i].copy(dst, bufoff)
103972        bufoff += this._bufs[i].length
103973      }
103974  
103975      return dst
103976    }
103977  
103978    // easy, cheap case where it's a subset of one of the buffers
103979    if (bytes <= this._bufs[off[0]].length - start) {
103980      return copy
103981        ? this._bufs[off[0]].copy(dst, dstStart, start, start + bytes)
103982        : this._bufs[off[0]].slice(start, start + bytes)
103983    }
103984  
103985    if (!copy) // a slice, we need something to copy in to
103986      dst = Buffer.allocUnsafe(len)
103987  
103988    for (i = off[0]; i < this._bufs.length; i++) {
103989      l = this._bufs[i].length - start
103990  
103991      if (bytes > l) {
103992        this._bufs[i].copy(dst, bufoff, start)
103993      } else {
103994        this._bufs[i].copy(dst, bufoff, start, start + bytes)
103995        break
103996      }
103997  
103998      bufoff += l
103999      bytes -= l
104000  
104001      if (start)
104002        start = 0
104003    }
104004  
104005    return dst
104006  }
104007  
104008  BufferList.prototype.shallowSlice = function shallowSlice (start, end) {
104009    start = start || 0
104010    end = end || this.length
104011  
104012    if (start < 0)
104013      start += this.length
104014    if (end < 0)
104015      end += this.length
104016  
104017    var startOffset = this._offset(start)
104018      , endOffset = this._offset(end)
104019      , buffers = this._bufs.slice(startOffset[0], endOffset[0] + 1)
104020  
104021    if (endOffset[1] == 0)
104022      buffers.pop()
104023    else
104024      buffers[buffers.length-1] = buffers[buffers.length-1].slice(0, endOffset[1])
104025  
104026    if (startOffset[1] != 0)
104027      buffers[0] = buffers[0].slice(startOffset[1])
104028  
104029    return new BufferList(buffers)
104030  }
104031  
104032  BufferList.prototype.toString = function toString (encoding, start, end) {
104033    return this.slice(start, end).toString(encoding)
104034  }
104035  
104036  BufferList.prototype.consume = function consume (bytes) {
104037    while (this._bufs.length) {
104038      if (bytes >= this._bufs[0].length) {
104039        bytes -= this._bufs[0].length
104040        this.length -= this._bufs[0].length
104041        this._bufs.shift()
104042      } else {
104043        this._bufs[0] = this._bufs[0].slice(bytes)
104044        this.length -= bytes
104045        break
104046      }
104047    }
104048    return this
104049  }
104050  
104051  
104052  BufferList.prototype.duplicate = function duplicate () {
104053    var i = 0
104054      , copy = new BufferList()
104055  
104056    for (; i < this._bufs.length; i++)
104057      copy.append(this._bufs[i])
104058  
104059    return copy
104060  }
104061  
104062  
104063  BufferList.prototype.destroy = function destroy () {
104064    this._bufs.length = 0
104065    this.length = 0
104066    this.push(null)
104067  }
104068  
104069  
104070  ;(function () {
104071    var methods = {
104072        'readDoubleBE' : 8
104073      , 'readDoubleLE' : 8
104074      , 'readFloatBE'  : 4
104075      , 'readFloatLE'  : 4
104076      , 'readInt32BE'  : 4
104077      , 'readInt32LE'  : 4
104078      , 'readUInt32BE' : 4
104079      , 'readUInt32LE' : 4
104080      , 'readInt16BE'  : 2
104081      , 'readInt16LE'  : 2
104082      , 'readUInt16BE' : 2
104083      , 'readUInt16LE' : 2
104084      , 'readInt8'     : 1
104085      , 'readUInt8'    : 1
104086    }
104087  
104088    for (var m in methods) {
104089      (function (m) {
104090        BufferList.prototype[m] = function (offset) {
104091          return this.slice(offset, offset + methods[m])[m](0)
104092        }
104093      }(m))
104094    }
104095  }())
104096  
104097  
104098  module.exports = BufferList
104099  
104100  
104101  /***/ }),
104102  /* 561 */
104103  /***/ (function(module, exports) {
104104  
104105  function allocUnsafe (size) {
104106    if (typeof size !== 'number') {
104107      throw new TypeError('"size" argument must be a number')
104108    }
104109  
104110    if (size < 0) {
104111      throw new RangeError('"size" argument must not be negative')
104112    }
104113  
104114    if (Buffer.allocUnsafe) {
104115      return Buffer.allocUnsafe(size)
104116    } else {
104117      return new Buffer(size)
104118    }
104119  }
104120  
104121  module.exports = allocUnsafe
104122  
104123  
104124  /***/ }),
104125  /* 562 */
104126  /***/ (function(module, exports) {
104127  
104128  /* Node.js 6.4.0 and up has full support */
104129  var hasFullSupport = (function () {
104130    try {
104131      if (!Buffer.isEncoding('latin1')) {
104132        return false
104133      }
104134  
104135      var buf = Buffer.alloc ? Buffer.alloc(4) : new Buffer(4)
104136  
104137      buf.fill('ab', 'ucs2')
104138  
104139      return (buf.toString('hex') === '61006200')
104140    } catch (_) {
104141      return false
104142    }
104143  }())
104144  
104145  function isSingleByte (val) {
104146    return (val.length === 1 && val.charCodeAt(0) < 256)
104147  }
104148  
104149  function fillWithNumber (buffer, val, start, end) {
104150    if (start < 0 || end > buffer.length) {
104151      throw new RangeError('Out of range index')
104152    }
104153  
104154    start = start >>> 0
104155    end = end === undefined ? buffer.length : end >>> 0
104156  
104157    if (end > start) {
104158      buffer.fill(val, start, end)
104159    }
104160  
104161    return buffer
104162  }
104163  
104164  function fillWithBuffer (buffer, val, start, end) {
104165    if (start < 0 || end > buffer.length) {
104166      throw new RangeError('Out of range index')
104167    }
104168  
104169    if (end <= start) {
104170      return buffer
104171    }
104172  
104173    start = start >>> 0
104174    end = end === undefined ? buffer.length : end >>> 0
104175  
104176    var pos = start
104177    var len = val.length
104178    while (pos <= (end - len)) {
104179      val.copy(buffer, pos)
104180      pos += len
104181    }
104182  
104183    if (pos !== end) {
104184      val.copy(buffer, pos, 0, end - pos)
104185    }
104186  
104187    return buffer
104188  }
104189  
104190  function fill (buffer, val, start, end, encoding) {
104191    if (hasFullSupport) {
104192      return buffer.fill(val, start, end, encoding)
104193    }
104194  
104195    if (typeof val === 'number') {
104196      return fillWithNumber(buffer, val, start, end)
104197    }
104198  
104199    if (typeof val === 'string') {
104200      if (typeof start === 'string') {
104201        encoding = start
104202        start = 0
104203        end = buffer.length
104204      } else if (typeof end === 'string') {
104205        encoding = end
104206        end = buffer.length
104207      }
104208  
104209      if (encoding !== undefined && typeof encoding !== 'string') {
104210        throw new TypeError('encoding must be a string')
104211      }
104212  
104213      if (encoding === 'latin1') {
104214        encoding = 'binary'
104215      }
104216  
104217      if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
104218        throw new TypeError('Unknown encoding: ' + encoding)
104219      }
104220  
104221      if (val === '') {
104222        return fillWithNumber(buffer, 0, start, end)
104223      }
104224  
104225      if (isSingleByte(val)) {
104226        return fillWithNumber(buffer, val.charCodeAt(0), start, end)
104227      }
104228  
104229      val = new Buffer(val, encoding)
104230    }
104231  
104232    if (Buffer.isBuffer(val)) {
104233      return fillWithBuffer(buffer, val, start, end)
104234    }
104235  
104236    // Other values (e.g. undefined, boolean, object) results in zero-fill
104237    return fillWithNumber(buffer, 0, start, end)
104238  }
104239  
104240  module.exports = fill
104241  
104242  
104243  /***/ }),
104244  /* 563 */
104245  /***/ (function(module, exports) {
104246  
104247  var toString = Object.prototype.toString
104248  
104249  var isModern = (
104250    typeof Buffer.alloc === 'function' &&
104251    typeof Buffer.allocUnsafe === 'function' &&
104252    typeof Buffer.from === 'function'
104253  )
104254  
104255  function isArrayBuffer (input) {
104256    return toString.call(input).slice(8, -1) === 'ArrayBuffer'
104257  }
104258  
104259  function fromArrayBuffer (obj, byteOffset, length) {
104260    byteOffset >>>= 0
104261  
104262    var maxLength = obj.byteLength - byteOffset
104263  
104264    if (maxLength < 0) {
104265      throw new RangeError("'offset' is out of bounds")
104266    }
104267  
104268    if (length === undefined) {
104269      length = maxLength
104270    } else {
104271      length >>>= 0
104272  
104273      if (length > maxLength) {
104274        throw new RangeError("'length' is out of bounds")
104275      }
104276    }
104277  
104278    return isModern
104279      ? Buffer.from(obj.slice(byteOffset, byteOffset + length))
104280      : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length)))
104281  }
104282  
104283  function fromString (string, encoding) {
104284    if (typeof encoding !== 'string' || encoding === '') {
104285      encoding = 'utf8'
104286    }
104287  
104288    if (!Buffer.isEncoding(encoding)) {
104289      throw new TypeError('"encoding" must be a valid string encoding')
104290    }
104291  
104292    return isModern
104293      ? Buffer.from(string, encoding)
104294      : new Buffer(string, encoding)
104295  }
104296  
104297  function bufferFrom (value, encodingOrOffset, length) {
104298    if (typeof value === 'number') {
104299      throw new TypeError('"value" argument must not be a number')
104300    }
104301  
104302    if (isArrayBuffer(value)) {
104303      return fromArrayBuffer(value, encodingOrOffset, length)
104304    }
104305  
104306    if (typeof value === 'string') {
104307      return fromString(value, encodingOrOffset)
104308    }
104309  
104310    return isModern
104311      ? Buffer.from(value)
104312      : new Buffer(value)
104313  }
104314  
104315  module.exports = bufferFrom
104316  
104317  
104318  /***/ }),
104319  /* 564 */
104320  /***/ (function(module, exports, __webpack_require__) {
104321  
104322  "use strict";
104323  /*!
104324   * bytes
104325   * Copyright(c) 2012-2014 TJ Holowaychuk
104326   * Copyright(c) 2015 Jed Watson
104327   * MIT Licensed
104328   */
104329  
104330  
104331  
104332  /**
104333   * Module exports.
104334   * @public
104335   */
104336  
104337  module.exports = bytes;
104338  module.exports.format = format;
104339  module.exports.parse = parse;
104340  
104341  /**
104342   * Module variables.
104343   * @private
104344   */
104345  
104346  var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g;
104347  
104348  var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/;
104349  
104350  var map = {
104351    b:  1,
104352    kb: 1 << 10,
104353    mb: 1 << 20,
104354    gb: 1 << 30,
104355    tb: ((1 << 30) * 1024)
104356  };
104357  
104358  var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb)$/i;
104359  
104360  /**
104361   * Convert the given value in bytes into a string or parse to string to an integer in bytes.
104362   *
104363   * @param {string|number} value
104364   * @param {{
104365   *  case: [string],
104366   *  decimalPlaces: [number]
104367   *  fixedDecimals: [boolean]
104368   *  thousandsSeparator: [string]
104369   *  unitSeparator: [string]
104370   *  }} [options] bytes options.
104371   *
104372   * @returns {string|number|null}
104373   */
104374  
104375  function bytes(value, options) {
104376    if (typeof value === 'string') {
104377      return parse(value);
104378    }
104379  
104380    if (typeof value === 'number') {
104381      return format(value, options);
104382    }
104383  
104384    return null;
104385  }
104386  
104387  /**
104388   * Format the given value in bytes into a string.
104389   *
104390   * If the value is negative, it is kept as such. If it is a float,
104391   * it is rounded.
104392   *
104393   * @param {number} value
104394   * @param {object} [options]
104395   * @param {number} [options.decimalPlaces=2]
104396   * @param {number} [options.fixedDecimals=false]
104397   * @param {string} [options.thousandsSeparator=]
104398   * @param {string} [options.unit=]
104399   * @param {string} [options.unitSeparator=]
104400   *
104401   * @returns {string|null}
104402   * @public
104403   */
104404  
104405  function format(value, options) {
104406    if (!Number.isFinite(value)) {
104407      return null;
104408    }
104409  
104410    var mag = Math.abs(value);
104411    var thousandsSeparator = (options && options.thousandsSeparator) || '';
104412    var unitSeparator = (options && options.unitSeparator) || '';
104413    var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2;
104414    var fixedDecimals = Boolean(options && options.fixedDecimals);
104415    var unit = (options && options.unit) || '';
104416  
104417    if (!unit || !map[unit.toLowerCase()]) {
104418      if (mag >= map.tb) {
104419        unit = 'TB';
104420      } else if (mag >= map.gb) {
104421        unit = 'GB';
104422      } else if (mag >= map.mb) {
104423        unit = 'MB';
104424      } else if (mag >= map.kb) {
104425        unit = 'KB';
104426      } else {
104427        unit = 'B';
104428      }
104429    }
104430  
104431    var val = value / map[unit.toLowerCase()];
104432    var str = val.toFixed(decimalPlaces);
104433  
104434    if (!fixedDecimals) {
104435      str = str.replace(formatDecimalsRegExp, '$1');
104436    }
104437  
104438    if (thousandsSeparator) {
104439      str = str.replace(formatThousandsRegExp, thousandsSeparator);
104440    }
104441  
104442    return str + unitSeparator + unit;
104443  }
104444  
104445  /**
104446   * Parse the string value into an integer in bytes.
104447   *
104448   * If no unit is given, it is assumed the value is in bytes.
104449   *
104450   * @param {number|string} val
104451   *
104452   * @returns {number|null}
104453   * @public
104454   */
104455  
104456  function parse(val) {
104457    if (typeof val === 'number' && !isNaN(val)) {
104458      return val;
104459    }
104460  
104461    if (typeof val !== 'string') {
104462      return null;
104463    }
104464  
104465    // Test if the string passed is valid
104466    var results = parseRegExp.exec(val);
104467    var floatValue;
104468    var unit = 'b';
104469  
104470    if (!results) {
104471      // Nothing could be extracted from the given string
104472      floatValue = parseInt(val, 10);
104473      unit = 'b'
104474    } else {
104475      // Retrieve the value and the unit
104476      floatValue = parseFloat(results[1]);
104477      unit = results[4].toLowerCase();
104478    }
104479  
104480    return Math.floor(map[unit] * floatValue);
104481  }
104482  
104483  
104484  /***/ }),
104485  /* 565 */
104486  /***/ (function(module, exports, __webpack_require__) {
104487  
104488  "use strict";
104489  
104490  module.exports = (flag, argv) => {
104491  	argv = argv || process.argv;
104492  	const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');
104493  	const pos = argv.indexOf(prefix + flag);
104494  	const terminatorPos = argv.indexOf('--');
104495  	return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);
104496  };
104497  
104498  
104499  /***/ }),
104500  /* 566 */
104501  /***/ (function(module, exports, __webpack_require__) {
104502  
104503  "use strict";
104504  
104505  const os = __webpack_require__(46);
104506  const hasFlag = __webpack_require__(565);
104507  
104508  const env = process.env;
104509  
104510  let forceColor;
104511  if (hasFlag('no-color') ||
104512  	hasFlag('no-colors') ||
104513  	hasFlag('color=false')) {
104514  	forceColor = false;
104515  } else if (hasFlag('color') ||
104516  	hasFlag('colors') ||
104517  	hasFlag('color=true') ||
104518  	hasFlag('color=always')) {
104519  	forceColor = true;
104520  }
104521  if ('FORCE_COLOR' in env) {
104522  	forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;
104523  }
104524  
104525  function translateLevel(level) {
104526  	if (level === 0) {
104527  		return false;
104528  	}
104529  
104530  	return {
104531  		level,
104532  		hasBasic: true,
104533  		has256: level >= 2,
104534  		has16m: level >= 3
104535  	};
104536  }
104537  
104538  function supportsColor(stream) {
104539  	if (forceColor === false) {
104540  		return 0;
104541  	}
104542  
104543  	if (hasFlag('color=16m') ||
104544  		hasFlag('color=full') ||
104545  		hasFlag('color=truecolor')) {
104546  		return 3;
104547  	}
104548  
104549  	if (hasFlag('color=256')) {
104550  		return 2;
104551  	}
104552  
104553  	if (stream && !stream.isTTY && forceColor !== true) {
104554  		return 0;
104555  	}
104556  
104557  	const min = forceColor ? 1 : 0;
104558  
104559  	if (process.platform === 'win32') {
104560  		// Node.js 7.5.0 is the first version of Node.js to include a patch to
104561  		// libuv that enables 256 color output on Windows. Anything earlier and it
104562  		// won't work. However, here we target Node.js 8 at minimum as it is an LTS
104563  		// release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows
104564  		// release that supports 256 colors. Windows 10 build 14931 is the first release
104565  		// that supports 16m/TrueColor.
104566  		const osRelease = os.release().split('.');
104567  		if (
104568  			Number(process.versions.node.split('.')[0]) >= 8 &&
104569  			Number(osRelease[0]) >= 10 &&
104570  			Number(osRelease[2]) >= 10586
104571  		) {
104572  			return Number(osRelease[2]) >= 14931 ? 3 : 2;
104573  		}
104574  
104575  		return 1;
104576  	}
104577  
104578  	if ('CI' in env) {
104579  		if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {
104580  			return 1;
104581  		}
104582  
104583  		return min;
104584  	}
104585  
104586  	if ('TEAMCITY_VERSION' in env) {
104587  		return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
104588  	}
104589  
104590  	if (env.COLORTERM === 'truecolor') {
104591  		return 3;
104592  	}
104593  
104594  	if ('TERM_PROGRAM' in env) {
104595  		const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);
104596  
104597  		switch (env.TERM_PROGRAM) {
104598  			case 'iTerm.app':
104599  				return version >= 3 ? 3 : 2;
104600  			case 'Apple_Terminal':
104601  				return 2;
104602  			// No default
104603  		}
104604  	}
104605  
104606  	if (/-256(color)?$/i.test(env.TERM)) {
104607  		return 2;
104608  	}
104609  
104610  	if (/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
104611  		return 1;
104612  	}
104613  
104614  	if ('COLORTERM' in env) {
104615  		return 1;
104616  	}
104617  
104618  	if (env.TERM === 'dumb') {
104619  		return min;
104620  	}
104621  
104622  	return min;
104623  }
104624  
104625  function getSupportLevel(stream) {
104626  	const level = supportsColor(stream);
104627  	return translateLevel(level);
104628  }
104629  
104630  module.exports = {
104631  	supportsColor: getSupportLevel,
104632  	stdout: getSupportLevel(process.stdout),
104633  	stderr: getSupportLevel(process.stderr)
104634  };
104635  
104636  
104637  /***/ }),
104638  /* 567 */
104639  /***/ (function(module, exports, __webpack_require__) {
104640  
104641  "use strict";
104642  
104643  const TEMPLATE_REGEX = /(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi;
104644  const STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g;
104645  const STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/;
104646  const ESCAPE_REGEX = /\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi;
104647  
104648  const ESCAPES = new Map([
104649  	['n', '\n'],
104650  	['r', '\r'],
104651  	['t', '\t'],
104652  	['b', '\b'],
104653  	['f', '\f'],
104654  	['v', '\v'],
104655  	['0', '\0'],
104656  	['\\', '\\'],
104657  	['e', '\u001B'],
104658  	['a', '\u0007']
104659  ]);
104660  
104661  function unescape(c) {
104662  	if ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) {
104663  		return String.fromCharCode(parseInt(c.slice(1), 16));
104664  	}
104665  
104666  	return ESCAPES.get(c) || c;
104667  }
104668  
104669  function parseArguments(name, args) {
104670  	const results = [];
104671  	const chunks = args.trim().split(/\s*,\s*/g);
104672  	let matches;
104673  
104674  	for (const chunk of chunks) {
104675  		if (!isNaN(chunk)) {
104676  			results.push(Number(chunk));
104677  		} else if ((matches = chunk.match(STRING_REGEX))) {
104678  			results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr));
104679  		} else {
104680  			throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);
104681  		}
104682  	}
104683  
104684  	return results;
104685  }
104686  
104687  function parseStyle(style) {
104688  	STYLE_REGEX.lastIndex = 0;
104689  
104690  	const results = [];
104691  	let matches;
104692  
104693  	while ((matches = STYLE_REGEX.exec(style)) !== null) {
104694  		const name = matches[1];
104695  
104696  		if (matches[2]) {
104697  			const args = parseArguments(name, matches[2]);
104698  			results.push([name].concat(args));
104699  		} else {
104700  			results.push([name]);
104701  		}
104702  	}
104703  
104704  	return results;
104705  }
104706  
104707  function buildStyle(chalk, styles) {
104708  	const enabled = {};
104709  
104710  	for (const layer of styles) {
104711  		for (const style of layer.styles) {
104712  			enabled[style[0]] = layer.inverse ? null : style.slice(1);
104713  		}
104714  	}
104715  
104716  	let current = chalk;
104717  	for (const styleName of Object.keys(enabled)) {
104718  		if (Array.isArray(enabled[styleName])) {
104719  			if (!(styleName in current)) {
104720  				throw new Error(`Unknown Chalk style: ${styleName}`);
104721  			}
104722  
104723  			if (enabled[styleName].length > 0) {
104724  				current = current[styleName].apply(current, enabled[styleName]);
104725  			} else {
104726  				current = current[styleName];
104727  			}
104728  		}
104729  	}
104730  
104731  	return current;
104732  }
104733  
104734  module.exports = (chalk, tmp) => {
104735  	const styles = [];
104736  	const chunks = [];
104737  	let chunk = [];
104738  
104739  	// eslint-disable-next-line max-params
104740  	tmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => {
104741  		if (escapeChar) {
104742  			chunk.push(unescape(escapeChar));
104743  		} else if (style) {
104744  			const str = chunk.join('');
104745  			chunk = [];
104746  			chunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));
104747  			styles.push({inverse, styles: parseStyle(style)});
104748  		} else if (close) {
104749  			if (styles.length === 0) {
104750  				throw new Error('Found extraneous } in Chalk template literal');
104751  			}
104752  
104753  			chunks.push(buildStyle(chalk, styles)(chunk.join('')));
104754  			chunk = [];
104755  			styles.pop();
104756  		} else {
104757  			chunk.push(chr);
104758  		}
104759  	});
104760  
104761  	chunks.push(chunk.join(''));
104762  
104763  	if (styles.length > 0) {
104764  		const errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`;
104765  		throw new Error(errMsg);
104766  	}
104767  
104768  	return chunks.join('');
104769  };
104770  
104771  
104772  /***/ }),
104773  /* 568 */
104774  /***/ (function(module, exports, __webpack_require__) {
104775  
104776  module.exports = chownr
104777  chownr.sync = chownrSync
104778  
104779  var fs = __webpack_require__(4)
104780  , path = __webpack_require__(0)
104781  
104782  function chownr (p, uid, gid, cb) {
104783    fs.readdir(p, function (er, children) {
104784      // any error other than ENOTDIR means it's not readable, or
104785      // doesn't exist.  give up.
104786      if (er && er.code !== "ENOTDIR") return cb(er)
104787      if (er || !children.length) return fs.chown(p, uid, gid, cb)
104788  
104789      var len = children.length
104790      , errState = null
104791      children.forEach(function (child) {
104792        var pathChild = path.resolve(p, child);
104793        fs.lstat(pathChild, function(er, stats) {
104794          if (er)
104795            return cb(er)
104796          if (!stats.isSymbolicLink())
104797            chownr(pathChild, uid, gid, then)
104798          else
104799            then()
104800          })
104801      })
104802      function then (er) {
104803        if (errState) return
104804        if (er) return cb(errState = er)
104805        if (-- len === 0) return fs.chown(p, uid, gid, cb)
104806      }
104807    })
104808  }
104809  
104810  function chownrSync (p, uid, gid) {
104811    var children
104812    try {
104813      children = fs.readdirSync(p)
104814    } catch (er) {
104815      if (er && er.code === "ENOTDIR") return fs.chownSync(p, uid, gid)
104816      throw er
104817    }
104818    if (!children.length) return fs.chownSync(p, uid, gid)
104819  
104820    children.forEach(function (child) {
104821      var pathChild = path.resolve(p, child)
104822      var stats = fs.lstatSync(pathChild)
104823      if (!stats.isSymbolicLink())
104824        chownrSync(pathChild, uid, gid)
104825    })
104826    return fs.chownSync(p, uid, gid)
104827  }
104828  
104829  
104830  /***/ }),
104831  /* 569 */
104832  /***/ (function(module, exports, __webpack_require__) {
104833  
104834  "use strict";
104835  
104836  
104837  var env = process.env
104838  
104839  var vendors = [
104840    // Constant, Name, Envs
104841    ['TRAVIS', 'Travis CI', 'TRAVIS'],
104842    ['CIRCLE', 'CircleCI', 'CIRCLECI'],
104843    ['GITLAB', 'GitLab CI', 'GITLAB_CI'],
104844    ['APPVEYOR', 'AppVeyor', 'APPVEYOR'],
104845    ['CODESHIP', 'Codeship', {CI_NAME: 'codeship'}],
104846    ['DRONE', 'Drone', 'DRONE'],
104847    ['MAGNUM', 'Magnum CI', 'MAGNUM'],
104848    ['SEMAPHORE', 'Semaphore', 'SEMAPHORE'],
104849    ['JENKINS', 'Jenkins', 'JENKINS_URL', 'BUILD_ID'],
104850    ['BAMBOO', 'Bamboo', 'bamboo_planKey'],
104851    ['TFS', 'Team Foundation Server', 'TF_BUILD'],
104852    ['TEAMCITY', 'TeamCity', 'TEAMCITY_VERSION'],
104853    ['BUILDKITE', 'Buildkite', 'BUILDKITE'],
104854    ['HUDSON', 'Hudson', 'HUDSON_URL'],
104855    ['TASKCLUSTER', 'TaskCluster', 'TASK_ID', 'RUN_ID'],
104856    ['GOCD', 'GoCD', 'GO_PIPELINE_LABEL'],
104857    ['BITBUCKET', 'Bitbucket Pipelines', 'BITBUCKET_COMMIT'],
104858    ['CODEBUILD', 'AWS CodeBuild', 'CODEBUILD_BUILD_ARN']
104859  ]
104860  
104861  exports.name = null
104862  
104863  vendors.forEach(function (vendor) {
104864    var constant = vendor.shift()
104865    var name = vendor.shift()
104866    var isCI = vendor.every(function (obj) {
104867      if (typeof obj === 'string') return !!env[obj]
104868      return Object.keys(obj).every(function (k) {
104869        return env[k] === obj[k]
104870      })
104871    })
104872    exports[constant] = isCI
104873    if (isCI) exports.name = name
104874  })
104875  
104876  exports.isCI = !!(
104877    env.CI ||                      // Travis CI, CircleCI, Gitlab CI, Appveyor, CodeShip
104878    env.CONTINUOUS_INTEGRATION ||  // Travis CI
104879    env.BUILD_NUMBER ||            // Jenkins, TeamCity
104880    exports.name ||
104881    false
104882  )
104883  
104884  
104885  /***/ }),
104886  /* 570 */
104887  /***/ (function(module, exports, __webpack_require__) {
104888  
104889  module.exports = __webpack_require__(573);
104890  
104891  /***/ }),
104892  /* 571 */
104893  /***/ (function(module, exports, __webpack_require__) {
104894  
104895  var kindOf = __webpack_require__(180);
104896  var utils = __webpack_require__(376);
104897  
104898  /**
104899   * A representation of a cell within the table.
104900   * Implementations must have `init` and `draw` methods,
104901   * as well as `colSpan`, `rowSpan`, `desiredHeight` and `desiredWidth` properties.
104902   * @param options
104903   * @constructor
104904   */
104905  function Cell(options){
104906    this.setOptions(options);
104907  }
104908  
104909  Cell.prototype.setOptions = function(options){
104910    if(['boolean', 'number', 'string'].indexOf(kindOf(options)) !== -1){
104911      options = {content:''+options};
104912    }
104913    options = options || {};
104914    this.options = options;
104915    var content = options.content;
104916    if (['boolean', 'number', 'string'].indexOf(kindOf(content)) !== -1) {
104917      this.content = String(content);
104918    } else if (!content) {
104919      this.content = '';
104920    } else {
104921      throw new Error('Content needs to be a primitive, got: ' + (typeof  content));
104922    }
104923    this.colSpan = options.colSpan || 1;
104924    this.rowSpan = options.rowSpan || 1;
104925  };
104926  
104927  Cell.prototype.mergeTableOptions = function(tableOptions,cells){
104928    this.cells = cells;
104929  
104930    var optionsChars = this.options.chars || {};
104931    var tableChars = tableOptions.chars;
104932    var chars = this.chars = {};
104933    CHAR_NAMES.forEach(function(name){
104934       setOption(optionsChars,tableChars,name,chars);
104935    });
104936  
104937    this.truncate = this.options.truncate || tableOptions.truncate;
104938  
104939    var style = this.options.style = this.options.style || {};
104940    var tableStyle = tableOptions.style;
104941    setOption(style, tableStyle, 'padding-left', this);
104942    setOption(style, tableStyle, 'padding-right', this);
104943    this.head = style.head || tableStyle.head;
104944    this.border = style.border || tableStyle.border;
104945  
104946    var fixedWidth = tableOptions.colWidths[this.x];
104947    if(tableOptions.wordWrap && fixedWidth){
104948      fixedWidth -= this.paddingLeft + this.paddingRight;
104949      if(this.colSpan){
104950        var i = 1;
104951        while(i<this.colSpan){
104952          fixedWidth += tableOptions.colWidths[this.x + i];
104953          i++;
104954        }
104955      }
104956      this.lines = utils.colorizeLines(utils.wordWrap(fixedWidth,this.content));
104957    }
104958    else {
104959      this.lines = utils.colorizeLines(this.content.split('\n'));
104960    }
104961  
104962    this.desiredWidth = utils.strlen(this.content) + this.paddingLeft + this.paddingRight;
104963    this.desiredHeight = this.lines.length;
104964  };
104965  
104966  /**
104967   * Each cell will have it's `x` and `y` values set by the `layout-manager` prior to
104968   * `init` being called;
104969   * @type {Number}
104970   */
104971  
104972  Cell.prototype.x = null;
104973  Cell.prototype.y = null;
104974  
104975  /**
104976   * Initializes the Cells data structure.
104977   *
104978   * @param tableOptions - A fully populated set of tableOptions.
104979   * In addition to the standard default values, tableOptions must have fully populated the
104980   * `colWidths` and `rowWidths` arrays. Those arrays must have lengths equal to the number
104981   * of columns or rows (respectively) in this table, and each array item must be a Number.
104982   *
104983   */
104984  Cell.prototype.init = function(tableOptions){
104985    var x = this.x;
104986    var y = this.y;
104987    this.widths = tableOptions.colWidths.slice(x, x + this.colSpan);
104988    this.heights = tableOptions.rowHeights.slice(y, y + this.rowSpan);
104989    this.width = this.widths.reduce(sumPlusOne, -1);
104990    this.height = this.heights.reduce(sumPlusOne, -1);
104991  
104992    this.hAlign = this.options.hAlign || tableOptions.colAligns[x];
104993    this.vAlign = this.options.vAlign || tableOptions.rowAligns[y];
104994  
104995    this.drawRight = x + this.colSpan == tableOptions.colWidths.length;
104996  };
104997  
104998  /**
104999   * Draws the given line of the cell.
105000   * This default implementation defers to methods `drawTop`, `drawBottom`, `drawLine` and `drawEmpty`.
105001   * @param lineNum - can be `top`, `bottom` or a numerical line number.
105002   * @param spanningCell - will be a number if being called from a RowSpanCell, and will represent how
105003   * many rows below it's being called from. Otherwise it's undefined.
105004   * @returns {String} The representation of this line.
105005   */
105006  Cell.prototype.draw = function(lineNum,spanningCell){
105007    if(lineNum == 'top') return this.drawTop(this.drawRight);
105008    if(lineNum == 'bottom') return this.drawBottom(this.drawRight);
105009    var padLen = Math.max(this.height - this.lines.length, 0);
105010    var padTop;
105011    switch (this.vAlign){
105012      case 'center':
105013        padTop = Math.ceil(padLen / 2);
105014        break;
105015      case 'bottom':
105016        padTop = padLen;
105017        break;
105018      default :
105019        padTop = 0;
105020    }
105021    if( (lineNum < padTop) || (lineNum >= (padTop + this.lines.length))){
105022      return this.drawEmpty(this.drawRight,spanningCell);
105023    }
105024    var forceTruncation = (this.lines.length > this.height) && (lineNum + 1 >= this.height);
105025    return this.drawLine(lineNum - padTop, this.drawRight, forceTruncation,spanningCell);
105026  };
105027  
105028  /**
105029   * Renders the top line of the cell.
105030   * @param drawRight - true if this method should render the right edge of the cell.
105031   * @returns {String}
105032   */
105033  Cell.prototype.drawTop = function(drawRight){
105034    var content = [];
105035    if(this.cells){  //TODO: cells should always exist - some tests don't fill it in though
105036      this.widths.forEach(function(width,index){
105037        content.push(this._topLeftChar(index));
105038        content.push(
105039          utils.repeat(this.chars[this.y == 0 ? 'top' : 'mid'],width)
105040        );
105041      },this);
105042    }
105043    else {
105044      content.push(this._topLeftChar(0));
105045      content.push(utils.repeat(this.chars[this.y == 0 ? 'top' : 'mid'],this.width));
105046    }
105047    if(drawRight){
105048      content.push(this.chars[this.y == 0 ? 'topRight' : 'rightMid']);
105049    }
105050    return this.wrapWithStyleColors('border',content.join(''));
105051  };
105052  
105053  Cell.prototype._topLeftChar = function(offset){
105054    var x = this.x+offset;
105055    var leftChar;
105056    if(this.y == 0){
105057      leftChar = x == 0 ? 'topLeft' : (offset == 0 ? 'topMid' : 'top');
105058    } else  {
105059      if(x == 0){
105060        leftChar = 'leftMid';
105061      }
105062      else {
105063        leftChar = offset == 0 ? 'midMid' : 'bottomMid';
105064        if(this.cells){  //TODO: cells should always exist - some tests don't fill it in though
105065          var spanAbove = this.cells[this.y-1][x] instanceof Cell.ColSpanCell;
105066          if(spanAbove){
105067            leftChar = offset == 0 ? 'topMid' : 'mid';
105068          }
105069          if(offset == 0){
105070            var i = 1;
105071            while(this.cells[this.y][x-i] instanceof Cell.ColSpanCell){
105072              i++;
105073            }
105074            if(this.cells[this.y][x-i] instanceof Cell.RowSpanCell){
105075              leftChar = 'leftMid';
105076            }
105077          }
105078        }
105079      }
105080    }
105081    return this.chars[leftChar];
105082  };
105083  
105084  Cell.prototype.wrapWithStyleColors = function(styleProperty,content){
105085    if(this[styleProperty] && this[styleProperty].length){
105086      try {
105087        var colors = __webpack_require__(589);
105088        for(var i = this[styleProperty].length - 1; i >= 0; i--){
105089          colors = colors[this[styleProperty][i]];
105090        }
105091        return colors(content);
105092      } catch (e) {
105093        return content;
105094      }
105095    }
105096    else {
105097      return content;
105098    }
105099  };
105100  
105101  /**
105102   * Renders a line of text.
105103   * @param lineNum - Which line of text to render. This is not necessarily the line within the cell.
105104   * There may be top-padding above the first line of text.
105105   * @param drawRight - true if this method should render the right edge of the cell.
105106   * @param forceTruncationSymbol - `true` if the rendered text should end with the truncation symbol even
105107   * if the text fits. This is used when the cell is vertically truncated. If `false` the text should
105108   * only include the truncation symbol if the text will not fit horizontally within the cell width.
105109   * @param spanningCell - a number of if being called from a RowSpanCell. (how many rows below). otherwise undefined.
105110   * @returns {String}
105111   */
105112  Cell.prototype.drawLine = function(lineNum,drawRight,forceTruncationSymbol,spanningCell){
105113    var left = this.chars[this.x == 0 ? 'left' : 'middle'];
105114    if(this.x && spanningCell && this.cells){
105115      var cellLeft = this.cells[this.y+spanningCell][this.x-1];
105116      while(cellLeft instanceof ColSpanCell){
105117        cellLeft = this.cells[cellLeft.y][cellLeft.x-1];
105118      }
105119      if(!(cellLeft instanceof RowSpanCell)){
105120        left = this.chars['rightMid'];
105121      }
105122    }
105123    var leftPadding = utils.repeat(' ', this.paddingLeft);
105124    var right = (drawRight ? this.chars['right'] : '');
105125    var rightPadding = utils.repeat(' ', this.paddingRight);
105126    var line = this.lines[lineNum];
105127    var len = this.width - (this.paddingLeft + this.paddingRight);
105128    if(forceTruncationSymbol) line += this.truncate || '…';
105129    var content = utils.truncate(line,len,this.truncate);
105130    content = utils.pad(content, len, ' ', this.hAlign);
105131    content = leftPadding + content + rightPadding;
105132    return this.stylizeLine(left,content,right);
105133  };
105134  
105135  Cell.prototype.stylizeLine = function(left,content,right){
105136    left = this.wrapWithStyleColors('border',left);
105137    right = this.wrapWithStyleColors('border',right);
105138    if(this.y === 0){
105139      content = this.wrapWithStyleColors('head',content);
105140    }
105141    return left + content + right;
105142  };
105143  
105144  /**
105145   * Renders the bottom line of the cell.
105146   * @param drawRight - true if this method should render the right edge of the cell.
105147   * @returns {String}
105148   */
105149  Cell.prototype.drawBottom = function(drawRight){
105150    var left = this.chars[this.x == 0 ? 'bottomLeft' : 'bottomMid'];
105151    var content = utils.repeat(this.chars.bottom,this.width);
105152    var right = drawRight ? this.chars['bottomRight'] : '';
105153    return this.wrapWithStyleColors('border',left + content + right);
105154  };
105155  
105156  /**
105157   * Renders a blank line of text within the cell. Used for top and/or bottom padding.
105158   * @param drawRight - true if this method should render the right edge of the cell.
105159   * @param spanningCell - a number of if being called from a RowSpanCell. (how many rows below). otherwise undefined.
105160   * @returns {String}
105161   */
105162  Cell.prototype.drawEmpty = function(drawRight,spanningCell){
105163    var left = this.chars[this.x == 0 ? 'left' : 'middle'];
105164    if(this.x && spanningCell && this.cells){
105165      var cellLeft = this.cells[this.y+spanningCell][this.x-1];
105166      while(cellLeft instanceof ColSpanCell){
105167        cellLeft = this.cells[cellLeft.y][cellLeft.x-1];
105168      }
105169      if(!(cellLeft instanceof RowSpanCell)){
105170        left = this.chars['rightMid'];
105171      }
105172    }
105173    var right = (drawRight ? this.chars['right'] : '');
105174    var content = utils.repeat(' ',this.width);
105175    return this.stylizeLine(left , content , right);
105176  };
105177  
105178  /**
105179   * A Cell that doesn't do anything. It just draws empty lines.
105180   * Used as a placeholder in column spanning.
105181   * @constructor
105182   */
105183  function ColSpanCell(){}
105184  
105185  ColSpanCell.prototype.draw = function(){
105186    return '';
105187  };
105188  
105189  ColSpanCell.prototype.init = function(tableOptions){};
105190  
105191  
105192  /**
105193   * A placeholder Cell for a Cell that spans multiple rows.
105194   * It delegates rendering to the original cell, but adds the appropriate offset.
105195   * @param originalCell
105196   * @constructor
105197   */
105198  function RowSpanCell(originalCell){
105199    this.originalCell = originalCell;
105200  }
105201  
105202  RowSpanCell.prototype.init = function(tableOptions){
105203    var y = this.y;
105204    var originalY = this.originalCell.y;
105205    this.cellOffset = y - originalY;
105206    this.offset = findDimension(tableOptions.rowHeights,originalY,this.cellOffset);
105207  };
105208  
105209  RowSpanCell.prototype.draw = function(lineNum){
105210    if(lineNum == 'top'){
105211      return this.originalCell.draw(this.offset,this.cellOffset);
105212    }
105213    if(lineNum == 'bottom'){
105214      return this.originalCell.draw('bottom');
105215    }
105216    return this.originalCell.draw(this.offset + 1 + lineNum);
105217  };
105218  
105219  ColSpanCell.prototype.mergeTableOptions =
105220  RowSpanCell.prototype.mergeTableOptions = function(){};
105221  
105222  // HELPER FUNCTIONS
105223  function setOption(objA,objB,nameB,targetObj){
105224    var nameA = nameB.split('-');
105225    if(nameA.length > 1) {
105226      nameA[1] = nameA[1].charAt(0).toUpperCase() + nameA[1].substr(1);
105227      nameA = nameA.join('');
105228      targetObj[nameA] = objA[nameA] || objA[nameB] || objB[nameA] || objB[nameB];
105229    }
105230    else {
105231      targetObj[nameB] = objA[nameB] || objB[nameB];
105232    }
105233  }
105234  
105235  function findDimension(dimensionTable, startingIndex, span){
105236    var ret = dimensionTable[startingIndex];
105237    for(var i = 1; i < span; i++){
105238      ret += 1 + dimensionTable[startingIndex + i];
105239    }
105240    return ret;
105241  }
105242  
105243  function sumPlusOne(a,b){
105244    return a+b+1;
105245  }
105246  
105247  var CHAR_NAMES = [  'top'
105248    , 'top-mid'
105249    , 'top-left'
105250    , 'top-right'
105251    , 'bottom'
105252    , 'bottom-mid'
105253    , 'bottom-left'
105254    , 'bottom-right'
105255    , 'left'
105256    , 'left-mid'
105257    , 'mid'
105258    , 'mid-mid'
105259    , 'right'
105260    , 'right-mid'
105261    , 'middle'
105262  ];
105263  module.exports = Cell;
105264  module.exports.ColSpanCell = ColSpanCell;
105265  module.exports.RowSpanCell = RowSpanCell;
105266  
105267  
105268  /***/ }),
105269  /* 572 */
105270  /***/ (function(module, exports, __webpack_require__) {
105271  
105272  var kindOf = __webpack_require__(180);
105273  var objectAssign = __webpack_require__(303);
105274  var Cell = __webpack_require__(571);
105275  var RowSpanCell = Cell.RowSpanCell;
105276  var ColSpanCell = Cell.ColSpanCell;
105277  
105278  (function(){
105279    function layoutTable(table){
105280      table.forEach(function(row,rowIndex){
105281        row.forEach(function(cell,columnIndex){
105282          cell.y = rowIndex;
105283          cell.x = columnIndex;
105284          for(var y = rowIndex; y >= 0; y--){
105285            var row2 = table[y];
105286            var xMax = (y === rowIndex) ? columnIndex : row2.length;
105287            for(var x = 0; x < xMax; x++){
105288              var cell2 = row2[x];
105289              while(cellsConflict(cell,cell2)){
105290                cell.x++;
105291              }
105292            }
105293          }
105294        });
105295      });
105296    }
105297  
105298    function maxWidth(table) {
105299      var mw = 0;
105300      table.forEach(function (row) {
105301        row.forEach(function (cell) {
105302          mw = Math.max(mw,cell.x + (cell.colSpan || 1));
105303        });
105304      });
105305      return mw;
105306    }
105307  
105308    function maxHeight(table){
105309      return table.length;
105310    }
105311  
105312    function cellsConflict(cell1,cell2){
105313      var yMin1 = cell1.y;
105314      var yMax1 = cell1.y - 1 + (cell1.rowSpan || 1);
105315      var yMin2 = cell2.y;
105316      var yMax2 = cell2.y - 1 + (cell2.rowSpan || 1);
105317      var yConflict = !(yMin1 > yMax2 || yMin2 > yMax1);
105318  
105319      var xMin1= cell1.x;
105320      var xMax1 = cell1.x - 1 + (cell1.colSpan || 1);
105321      var xMin2= cell2.x;
105322      var xMax2 = cell2.x - 1 + (cell2.colSpan || 1);
105323      var xConflict = !(xMin1 > xMax2 || xMin2 > xMax1);
105324  
105325      return yConflict && xConflict;
105326    }
105327  
105328    function conflictExists(rows,x,y){
105329      var i_max = Math.min(rows.length-1,y);
105330      var cell = {x:x,y:y};
105331      for(var i = 0; i <= i_max; i++){
105332        var row = rows[i];
105333        for(var j = 0; j < row.length; j++){
105334          if(cellsConflict(cell,row[j])){
105335            return true;
105336          }
105337        }
105338      }
105339      return false;
105340    }
105341  
105342    function allBlank(rows,y,xMin,xMax){
105343      for(var x = xMin; x < xMax; x++){
105344        if(conflictExists(rows,x,y)){
105345          return false;
105346        }
105347      }
105348      return true;
105349    }
105350  
105351    function addRowSpanCells(table){
105352      table.forEach(function(row,rowIndex){
105353        row.forEach(function(cell){
105354          for(var i = 1; i < cell.rowSpan; i++){
105355            var rowSpanCell = new RowSpanCell(cell);
105356            rowSpanCell.x = cell.x;
105357            rowSpanCell.y = cell.y + i;
105358            rowSpanCell.colSpan = cell.colSpan;
105359            insertCell(rowSpanCell,table[rowIndex+i]);
105360          }
105361        });
105362      });
105363    }
105364  
105365    function addColSpanCells(cellRows){
105366      for(var rowIndex = cellRows.length-1; rowIndex >= 0; rowIndex--) {
105367        var cellColumns = cellRows[rowIndex];
105368        for (var columnIndex = 0; columnIndex < cellColumns.length; columnIndex++) {
105369          var cell = cellColumns[columnIndex];
105370          for (var k = 1; k < cell.colSpan; k++) {
105371            var colSpanCell = new ColSpanCell();
105372            colSpanCell.x = cell.x + k;
105373            colSpanCell.y = cell.y;
105374            cellColumns.splice(columnIndex + 1, 0, colSpanCell);
105375          }
105376        }
105377      }
105378    }
105379  
105380    function insertCell(cell,row){
105381      var x = 0;
105382      while(x < row.length && (row[x].x < cell.x)) {
105383        x++;
105384      }
105385      row.splice(x,0,cell);
105386    }
105387  
105388    function fillInTable(table){
105389      var h_max = maxHeight(table);
105390      var w_max = maxWidth(table);
105391      for(var y = 0; y < h_max; y++){
105392        for(var x = 0; x < w_max; x++){
105393          if(!conflictExists(table,x,y)){
105394            var opts = {x:x,y:y,colSpan:1,rowSpan:1};
105395            x++;
105396            while(x < w_max && !conflictExists(table,x,y)){
105397              opts.colSpan++;
105398              x++;
105399            }
105400            var y2 = y + 1;
105401            while(y2 < h_max && allBlank(table,y2,opts.x,opts.x+opts.colSpan)){
105402              opts.rowSpan++;
105403              y2++;
105404            }
105405  
105406            var cell = new Cell(opts);
105407            cell.x = opts.x;
105408            cell.y = opts.y;
105409            insertCell(cell,table[y]);
105410          }
105411        }
105412      }
105413    }
105414  
105415    function generateCells(rows){
105416      return rows.map(function(row){
105417        if(kindOf(row) !== 'array'){
105418          var key = Object.keys(row)[0];
105419          row = row[key];
105420          if(kindOf(row) === 'array'){
105421            row = row.slice();
105422            row.unshift(key);
105423          }
105424          else {
105425            row = [key,row];
105426          }
105427        }
105428        return row.map(function(cell){
105429          return new Cell(cell);
105430        });
105431      });
105432    }
105433  
105434    function makeTableLayout(rows){
105435      var cellRows = generateCells(rows);
105436      layoutTable(cellRows);
105437      fillInTable(cellRows);
105438      addRowSpanCells(cellRows);
105439      addColSpanCells(cellRows);
105440      return cellRows;
105441    }
105442  
105443    module.exports = {
105444      makeTableLayout: makeTableLayout,
105445      layoutTable: layoutTable,
105446      addRowSpanCells: addRowSpanCells,
105447      maxWidth:maxWidth,
105448      fillInTable:fillInTable,
105449      computeWidths:makeComputeWidths('colSpan','desiredWidth','x',1),
105450      computeHeights:makeComputeWidths('rowSpan','desiredHeight','y',1)
105451    };
105452  })();
105453  
105454  function makeComputeWidths(colSpan,desiredWidth,x,forcedMin){
105455    return function(vals,table){
105456      var result = [];
105457      var spanners = [];
105458      table.forEach(function(row){
105459        row.forEach(function(cell){
105460          if((cell[colSpan] || 1) > 1){
105461            spanners.push(cell);
105462          }
105463          else {
105464            result[cell[x]] = Math.max(result[cell[x]] || 0, cell[desiredWidth] || 0, forcedMin);
105465          }
105466        });
105467      });
105468  
105469      vals.forEach(function(val,index){
105470        if(kindOf(val) === 'number'){
105471          result[index] = val;
105472        }
105473      });
105474  
105475      //spanners.forEach(function(cell){
105476      for(var k = spanners.length - 1; k >=0; k--){
105477        var cell = spanners[k];
105478        var span = cell[colSpan];
105479        var col = cell[x];
105480        var existingWidth = result[col];
105481        var editableCols = kindOf(vals[col]) === 'number' ? 0 : 1;
105482        for(var i = 1; i < span; i ++){
105483          existingWidth += 1 + result[col + i];
105484          if(kindOf(vals[col + i]) !== 'number'){
105485            editableCols++;
105486          }
105487        }
105488        if(cell[desiredWidth] > existingWidth){
105489          i = 0;
105490          while(editableCols > 0 && cell[desiredWidth] > existingWidth){
105491            if(kindOf(vals[col+i]) !== 'number'){
105492              var dif = Math.round( (cell[desiredWidth] - existingWidth) / editableCols );
105493              existingWidth += dif;
105494              result[col + i] += dif;
105495              editableCols--;
105496            }
105497            i++;
105498          }
105499        }
105500      }
105501  
105502      objectAssign(vals,result);
105503      for(var j = 0; j < vals.length; j++){
105504        vals[j] = Math.max(forcedMin, vals[j] || 0);
105505      }
105506    };
105507  }
105508  
105509  
105510  /***/ }),
105511  /* 573 */
105512  /***/ (function(module, exports, __webpack_require__) {
105513  
105514  var utils = __webpack_require__(376);
105515  var tableLayout = __webpack_require__(572);
105516  
105517  function Table(options){
105518    this.options = utils.mergeOptions(options);
105519  }
105520  
105521  Table.prototype.__proto__ = Array.prototype;
105522  
105523  Table.prototype.toString = function(){
105524    var array = this;
105525    var headersPresent = this.options.head && this.options.head.length;
105526    if(headersPresent){
105527      array = [this.options.head];
105528      if(this.length){
105529        array.push.apply(array,this);
105530      }
105531    }
105532    else {
105533      this.options.style.head=[];
105534    }
105535  
105536    var cells = tableLayout.makeTableLayout(array);
105537  
105538    cells.forEach(function(row){
105539      row.forEach(function(cell){
105540        cell.mergeTableOptions(this.options,cells);
105541      },this);
105542    },this);
105543  
105544    tableLayout.computeWidths(this.options.colWidths,cells);
105545    tableLayout.computeHeights(this.options.rowHeights,cells);
105546  
105547    cells.forEach(function(row,rowIndex){
105548      row.forEach(function(cell,cellIndex){
105549        cell.init(this.options);
105550      },this);
105551    },this);
105552  
105553    var result = [];
105554  
105555    for(var rowIndex = 0; rowIndex < cells.length; rowIndex++){
105556      var row = cells[rowIndex];
105557      var heightOfRow = this.options.rowHeights[rowIndex];
105558  
105559      if(rowIndex === 0 || !this.options.style.compact || (rowIndex == 1 && headersPresent)){
105560        doDraw(row,'top',result);
105561      }
105562  
105563      for(var lineNum = 0; lineNum < heightOfRow; lineNum++){
105564        doDraw(row,lineNum,result);
105565      }
105566  
105567      if(rowIndex + 1 == cells.length){
105568        doDraw(row,'bottom',result);
105569      }
105570    }
105571  
105572    return result.join('\n');
105573  };
105574  
105575  function doDraw(row,lineNum,result){
105576    var line = [];
105577    row.forEach(function(cell){
105578      line.push(cell.draw(lineNum));
105579    });
105580    var str = line.join('');
105581    if(str.length) result.push(str);
105582  }
105583  
105584  Table.prototype.__defineGetter__('width', function (){
105585    var str = this.toString().split("\n");
105586    return str[0].length;
105587  });
105588  
105589  module.exports = Table;
105590  
105591  
105592  /***/ }),
105593  /* 574 */
105594  /***/ (function(module, exports, __webpack_require__) {
105595  
105596  "use strict";
105597  
105598  
105599  exports = module.exports = cliWidth;
105600  
105601  function normalizeOpts(options) {
105602    var defaultOpts = {
105603      defaultWidth: 0,
105604      output: process.stdout,
105605      tty: __webpack_require__(104)
105606    };
105607  
105608    if (!options) {
105609      return defaultOpts;
105610    } else {
105611      Object.keys(defaultOpts).forEach(function (key) {
105612        if (!options[key]) {
105613          options[key] = defaultOpts[key];
105614        }
105615      });
105616  
105617      return options;
105618    }
105619  }
105620  
105621  function cliWidth(options) {
105622    var opts = normalizeOpts(options);
105623  
105624    if (opts.output.getWindowSize) {
105625      return opts.output.getWindowSize()[0] || opts.defaultWidth;
105626    } else {
105627      if (opts.tty.getWindowSize) {
105628        return opts.tty.getWindowSize()[1] || opts.defaultWidth;
105629      } else {
105630        if (opts.output.columns) {
105631          return opts.output.columns;
105632        } else {
105633          if (process.env.CLI_WIDTH) {
105634            var width = parseInt(process.env.CLI_WIDTH, 10);
105635  
105636            if (!isNaN(width) && width !== 0) {
105637              return width;
105638            }
105639          }
105640        }
105641  
105642        return opts.defaultWidth;
105643      }
105644    }
105645  };
105646  
105647  
105648  /***/ }),
105649  /* 575 */
105650  /***/ (function(module, exports, __webpack_require__) {
105651  
105652  "use strict";
105653  /* eslint-disable babel/new-cap, xo/throw-new-error */
105654  
105655  module.exports = function (str, pos) {
105656  	if (str === null || str === undefined) {
105657  		throw TypeError();
105658  	}
105659  
105660  	str = String(str);
105661  
105662  	var size = str.length;
105663  	var i = pos ? Number(pos) : 0;
105664  
105665  	if (Number.isNaN(i)) {
105666  		i = 0;
105667  	}
105668  
105669  	if (i < 0 || i >= size) {
105670  		return undefined;
105671  	}
105672  
105673  	var first = str.charCodeAt(i);
105674  
105675  	if (first >= 0xD800 && first <= 0xDBFF && size > i + 1) {
105676  		var second = str.charCodeAt(i + 1);
105677  
105678  		if (second >= 0xDC00 && second <= 0xDFFF) {
105679  			return ((first - 0xD800) * 0x400) + second - 0xDC00 + 0x10000;
105680  		}
105681  	}
105682  
105683  	return first;
105684  };
105685  
105686  
105687  /***/ }),
105688  /* 576 */
105689  /***/ (function(module, exports, __webpack_require__) {
105690  
105691  var conversions = __webpack_require__(378);
105692  var route = __webpack_require__(577);
105693  
105694  var convert = {};
105695  
105696  var models = Object.keys(conversions);
105697  
105698  function wrapRaw(fn) {
105699  	var wrappedFn = function (args) {
105700  		if (args === undefined || args === null) {
105701  			return args;
105702  		}
105703  
105704  		if (arguments.length > 1) {
105705  			args = Array.prototype.slice.call(arguments);
105706  		}
105707  
105708  		return fn(args);
105709  	};
105710  
105711  	// preserve .conversion property if there is one
105712  	if ('conversion' in fn) {
105713  		wrappedFn.conversion = fn.conversion;
105714  	}
105715  
105716  	return wrappedFn;
105717  }
105718  
105719  function wrapRounded(fn) {
105720  	var wrappedFn = function (args) {
105721  		if (args === undefined || args === null) {
105722  			return args;
105723  		}
105724  
105725  		if (arguments.length > 1) {
105726  			args = Array.prototype.slice.call(arguments);
105727  		}
105728  
105729  		var result = fn(args);
105730  
105731  		// we're assuming the result is an array here.
105732  		// see notice in conversions.js; don't use box types
105733  		// in conversion functions.
105734  		if (typeof result === 'object') {
105735  			for (var len = result.length, i = 0; i < len; i++) {
105736  				result[i] = Math.round(result[i]);
105737  			}
105738  		}
105739  
105740  		return result;
105741  	};
105742  
105743  	// preserve .conversion property if there is one
105744  	if ('conversion' in fn) {
105745  		wrappedFn.conversion = fn.conversion;
105746  	}
105747  
105748  	return wrappedFn;
105749  }
105750  
105751  models.forEach(function (fromModel) {
105752  	convert[fromModel] = {};
105753  
105754  	Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});
105755  	Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});
105756  
105757  	var routes = route(fromModel);
105758  	var routeModels = Object.keys(routes);
105759  
105760  	routeModels.forEach(function (toModel) {
105761  		var fn = routes[toModel];
105762  
105763  		convert[fromModel][toModel] = wrapRounded(fn);
105764  		convert[fromModel][toModel].raw = wrapRaw(fn);
105765  	});
105766  });
105767  
105768  module.exports = convert;
105769  
105770  
105771  /***/ }),
105772  /* 577 */
105773  /***/ (function(module, exports, __webpack_require__) {
105774  
105775  var conversions = __webpack_require__(378);
105776  
105777  /*
105778  	this function routes a model to all other models.
105779  
105780  	all functions that are routed have a property `.conversion` attached
105781  	to the returned synthetic function. This property is an array
105782  	of strings, each with the steps in between the 'from' and 'to'
105783  	color models (inclusive).
105784  
105785  	conversions that are not possible simply are not included.
105786  */
105787  
105788  function buildGraph() {
105789  	var graph = {};
105790  	// https://jsperf.com/object-keys-vs-for-in-with-closure/3
105791  	var models = Object.keys(conversions);
105792  
105793  	for (var len = models.length, i = 0; i < len; i++) {
105794  		graph[models[i]] = {
105795  			// http://jsperf.com/1-vs-infinity
105796  			// micro-opt, but this is simple.
105797  			distance: -1,
105798  			parent: null
105799  		};
105800  	}
105801  
105802  	return graph;
105803  }
105804  
105805  // https://en.wikipedia.org/wiki/Breadth-first_search
105806  function deriveBFS(fromModel) {
105807  	var graph = buildGraph();
105808  	var queue = [fromModel]; // unshift -> queue -> pop
105809  
105810  	graph[fromModel].distance = 0;
105811  
105812  	while (queue.length) {
105813  		var current = queue.pop();
105814  		var adjacents = Object.keys(conversions[current]);
105815  
105816  		for (var len = adjacents.length, i = 0; i < len; i++) {
105817  			var adjacent = adjacents[i];
105818  			var node = graph[adjacent];
105819  
105820  			if (node.distance === -1) {
105821  				node.distance = graph[current].distance + 1;
105822  				node.parent = current;
105823  				queue.unshift(adjacent);
105824  			}
105825  		}
105826  	}
105827  
105828  	return graph;
105829  }
105830  
105831  function link(from, to) {
105832  	return function (args) {
105833  		return to(from(args));
105834  	};
105835  }
105836  
105837  function wrapConversion(toModel, graph) {
105838  	var path = [graph[toModel].parent, toModel];
105839  	var fn = conversions[graph[toModel].parent][toModel];
105840  
105841  	var cur = graph[toModel].parent;
105842  	while (graph[cur].parent) {
105843  		path.unshift(graph[cur].parent);
105844  		fn = link(conversions[graph[cur].parent][cur], fn);
105845  		cur = graph[cur].parent;
105846  	}
105847  
105848  	fn.conversion = path;
105849  	return fn;
105850  }
105851  
105852  module.exports = function (fromModel) {
105853  	var graph = deriveBFS(fromModel);
105854  	var conversion = {};
105855  
105856  	var models = Object.keys(graph);
105857  	for (var len = models.length, i = 0; i < len; i++) {
105858  		var toModel = models[i];
105859  		var node = graph[toModel];
105860  
105861  		if (node.parent === null) {
105862  			// no possible conversion, or this node is the source model.
105863  			continue;
105864  		}
105865  
105866  		conversion[toModel] = wrapConversion(toModel, graph);
105867  	}
105868  
105869  	return conversion;
105870  };
105871  
105872  
105873  
105874  /***/ }),
105875  /* 578 */
105876  /***/ (function(module, exports) {
105877  
105878  module.exports = {
105879  	"aliceblue": [240, 248, 255],
105880  	"antiquewhite": [250, 235, 215],
105881  	"aqua": [0, 255, 255],
105882  	"aquamarine": [127, 255, 212],
105883  	"azure": [240, 255, 255],
105884  	"beige": [245, 245, 220],
105885  	"bisque": [255, 228, 196],
105886  	"black": [0, 0, 0],
105887  	"blanchedalmond": [255, 235, 205],
105888  	"blue": [0, 0, 255],
105889  	"blueviolet": [138, 43, 226],
105890  	"brown": [165, 42, 42],
105891  	"burlywood": [222, 184, 135],
105892  	"cadetblue": [95, 158, 160],
105893  	"chartreuse": [127, 255, 0],
105894  	"chocolate": [210, 105, 30],
105895  	"coral": [255, 127, 80],
105896  	"cornflowerblue": [100, 149, 237],
105897  	"cornsilk": [255, 248, 220],
105898  	"crimson": [220, 20, 60],
105899  	"cyan": [0, 255, 255],
105900  	"darkblue": [0, 0, 139],
105901  	"darkcyan": [0, 139, 139],
105902  	"darkgoldenrod": [184, 134, 11],
105903  	"darkgray": [169, 169, 169],
105904  	"darkgreen": [0, 100, 0],
105905  	"darkgrey": [169, 169, 169],
105906  	"darkkhaki": [189, 183, 107],
105907  	"darkmagenta": [139, 0, 139],
105908  	"darkolivegreen": [85, 107, 47],
105909  	"darkorange": [255, 140, 0],
105910  	"darkorchid": [153, 50, 204],
105911  	"darkred": [139, 0, 0],
105912  	"darksalmon": [233, 150, 122],
105913  	"darkseagreen": [143, 188, 143],
105914  	"darkslateblue": [72, 61, 139],
105915  	"darkslategray": [47, 79, 79],
105916  	"darkslategrey": [47, 79, 79],
105917  	"darkturquoise": [0, 206, 209],
105918  	"darkviolet": [148, 0, 211],
105919  	"deeppink": [255, 20, 147],
105920  	"deepskyblue": [0, 191, 255],
105921  	"dimgray": [105, 105, 105],
105922  	"dimgrey": [105, 105, 105],
105923  	"dodgerblue": [30, 144, 255],
105924  	"firebrick": [178, 34, 34],
105925  	"floralwhite": [255, 250, 240],
105926  	"forestgreen": [34, 139, 34],
105927  	"fuchsia": [255, 0, 255],
105928  	"gainsboro": [220, 220, 220],
105929  	"ghostwhite": [248, 248, 255],
105930  	"gold": [255, 215, 0],
105931  	"goldenrod": [218, 165, 32],
105932  	"gray": [128, 128, 128],
105933  	"green": [0, 128, 0],
105934  	"greenyellow": [173, 255, 47],
105935  	"grey": [128, 128, 128],
105936  	"honeydew": [240, 255, 240],
105937  	"hotpink": [255, 105, 180],
105938  	"indianred": [205, 92, 92],
105939  	"indigo": [75, 0, 130],
105940  	"ivory": [255, 255, 240],
105941  	"khaki": [240, 230, 140],
105942  	"lavender": [230, 230, 250],
105943  	"lavenderblush": [255, 240, 245],
105944  	"lawngreen": [124, 252, 0],
105945  	"lemonchiffon": [255, 250, 205],
105946  	"lightblue": [173, 216, 230],
105947  	"lightcoral": [240, 128, 128],
105948  	"lightcyan": [224, 255, 255],
105949  	"lightgoldenrodyellow": [250, 250, 210],
105950  	"lightgray": [211, 211, 211],
105951  	"lightgreen": [144, 238, 144],
105952  	"lightgrey": [211, 211, 211],
105953  	"lightpink": [255, 182, 193],
105954  	"lightsalmon": [255, 160, 122],
105955  	"lightseagreen": [32, 178, 170],
105956  	"lightskyblue": [135, 206, 250],
105957  	"lightslategray": [119, 136, 153],
105958  	"lightslategrey": [119, 136, 153],
105959  	"lightsteelblue": [176, 196, 222],
105960  	"lightyellow": [255, 255, 224],
105961  	"lime": [0, 255, 0],
105962  	"limegreen": [50, 205, 50],
105963  	"linen": [250, 240, 230],
105964  	"magenta": [255, 0, 255],
105965  	"maroon": [128, 0, 0],
105966  	"mediumaquamarine": [102, 205, 170],
105967  	"mediumblue": [0, 0, 205],
105968  	"mediumorchid": [186, 85, 211],
105969  	"mediumpurple": [147, 112, 219],
105970  	"mediumseagreen": [60, 179, 113],
105971  	"mediumslateblue": [123, 104, 238],
105972  	"mediumspringgreen": [0, 250, 154],
105973  	"mediumturquoise": [72, 209, 204],
105974  	"mediumvioletred": [199, 21, 133],
105975  	"midnightblue": [25, 25, 112],
105976  	"mintcream": [245, 255, 250],
105977  	"mistyrose": [255, 228, 225],
105978  	"moccasin": [255, 228, 181],
105979  	"navajowhite": [255, 222, 173],
105980  	"navy": [0, 0, 128],
105981  	"oldlace": [253, 245, 230],
105982  	"olive": [128, 128, 0],
105983  	"olivedrab": [107, 142, 35],
105984  	"orange": [255, 165, 0],
105985  	"orangered": [255, 69, 0],
105986  	"orchid": [218, 112, 214],
105987  	"palegoldenrod": [238, 232, 170],
105988  	"palegreen": [152, 251, 152],
105989  	"paleturquoise": [175, 238, 238],
105990  	"palevioletred": [219, 112, 147],
105991  	"papayawhip": [255, 239, 213],
105992  	"peachpuff": [255, 218, 185],
105993  	"peru": [205, 133, 63],
105994  	"pink": [255, 192, 203],
105995  	"plum": [221, 160, 221],
105996  	"powderblue": [176, 224, 230],
105997  	"purple": [128, 0, 128],
105998  	"rebeccapurple": [102, 51, 153],
105999  	"red": [255, 0, 0],
106000  	"rosybrown": [188, 143, 143],
106001  	"royalblue": [65, 105, 225],
106002  	"saddlebrown": [139, 69, 19],
106003  	"salmon": [250, 128, 114],
106004  	"sandybrown": [244, 164, 96],
106005  	"seagreen": [46, 139, 87],
106006  	"seashell": [255, 245, 238],
106007  	"sienna": [160, 82, 45],
106008  	"silver": [192, 192, 192],
106009  	"skyblue": [135, 206, 235],
106010  	"slateblue": [106, 90, 205],
106011  	"slategray": [112, 128, 144],
106012  	"slategrey": [112, 128, 144],
106013  	"snow": [255, 250, 250],
106014  	"springgreen": [0, 255, 127],
106015  	"steelblue": [70, 130, 180],
106016  	"tan": [210, 180, 140],
106017  	"teal": [0, 128, 128],
106018  	"thistle": [216, 191, 216],
106019  	"tomato": [255, 99, 71],
106020  	"turquoise": [64, 224, 208],
106021  	"violet": [238, 130, 238],
106022  	"wheat": [245, 222, 179],
106023  	"white": [255, 255, 255],
106024  	"whitesmoke": [245, 245, 245],
106025  	"yellow": [255, 255, 0],
106026  	"yellowgreen": [154, 205, 50]
106027  };
106028  
106029  /***/ }),
106030  /* 579 */
106031  /***/ (function(module, exports, __webpack_require__) {
106032  
106033  /*
106034  
106035  The MIT License (MIT)
106036  
106037  Original Library
106038    - Copyright (c) Marak Squires
106039  
106040  Additional functionality
106041   - Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
106042  
106043  Permission is hereby granted, free of charge, to any person obtaining a copy
106044  of this software and associated documentation files (the "Software"), to deal
106045  in the Software without restriction, including without limitation the rights
106046  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
106047  copies of the Software, and to permit persons to whom the Software is
106048  furnished to do so, subject to the following conditions:
106049  
106050  The above copyright notice and this permission notice shall be included in
106051  all copies or substantial portions of the Software.
106052  
106053  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
106054  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
106055  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
106056  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
106057  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
106058  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
106059  THE SOFTWARE.
106060  
106061  */
106062  
106063  var colors = {};
106064  module['exports'] = colors;
106065  
106066  colors.themes = {};
106067  
106068  var util = __webpack_require__(3);
106069  var ansiStyles = colors.styles = __webpack_require__(586);
106070  var defineProps = Object.defineProperties;
106071  var newLineRegex = new RegExp(/[\r\n]+/g);
106072  
106073  colors.supportsColor = __webpack_require__(588).supportsColor;
106074  
106075  if (typeof colors.enabled === 'undefined') {
106076    colors.enabled = colors.supportsColor() !== false;
106077  }
106078  
106079  colors.enable = function() {
106080    colors.enabled = true;
106081  };
106082  
106083  colors.disable = function() {
106084    colors.enabled = false;
106085  };
106086  
106087  colors.stripColors = colors.strip = function(str) {
106088    return ('' + str).replace(/\x1B\[\d+m/g, '');
106089  };
106090  
106091  // eslint-disable-next-line no-unused-vars
106092  var stylize = colors.stylize = function stylize(str, style) {
106093    if (!colors.enabled) {
106094      return str+'';
106095    }
106096  
106097    return ansiStyles[style].open + str + ansiStyles[style].close;
106098  };
106099  
106100  var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
106101  var escapeStringRegexp = function(str) {
106102    if (typeof str !== 'string') {
106103      throw new TypeError('Expected a string');
106104    }
106105    return str.replace(matchOperatorsRe, '\\$&');
106106  };
106107  
106108  function build(_styles) {
106109    var builder = function builder() {
106110      return applyStyle.apply(builder, arguments);
106111    };
106112    builder._styles = _styles;
106113    // __proto__ is used because we must return a function, but there is
106114    // no way to create a function with a different prototype.
106115    builder.__proto__ = proto;
106116    return builder;
106117  }
106118  
106119  var styles = (function() {
106120    var ret = {};
106121    ansiStyles.grey = ansiStyles.gray;
106122    Object.keys(ansiStyles).forEach(function(key) {
106123      ansiStyles[key].closeRe =
106124        new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
106125      ret[key] = {
106126        get: function() {
106127          return build(this._styles.concat(key));
106128        },
106129      };
106130    });
106131    return ret;
106132  })();
106133  
106134  var proto = defineProps(function colors() {}, styles);
106135  
106136  function applyStyle() {
106137    var args = Array.prototype.slice.call(arguments);
106138  
106139    var str = args.map(function(arg) {
106140      if (arg != undefined && arg.constructor === String) {
106141        return arg;
106142      } else {
106143        return util.inspect(arg);
106144      }
106145    }).join(' ');
106146  
106147    if (!colors.enabled || !str) {
106148      return str;
106149    }
106150  
106151    var newLinesPresent = str.indexOf('\n') != -1;
106152  
106153    var nestedStyles = this._styles;
106154  
106155    var i = nestedStyles.length;
106156    while (i--) {
106157      var code = ansiStyles[nestedStyles[i]];
106158      str = code.open + str.replace(code.closeRe, code.open) + code.close;
106159      if (newLinesPresent) {
106160        str = str.replace(newLineRegex, function(match) {
106161          return code.close + match + code.open;
106162        });
106163      }
106164    }
106165  
106166    return str;
106167  }
106168  
106169  colors.setTheme = function(theme) {
106170    if (typeof theme === 'string') {
106171      console.log('colors.setTheme now only accepts an object, not a string.  ' +
106172        'If you are trying to set a theme from a file, it is now your (the ' +
106173        'caller\'s) responsibility to require the file.  The old syntax ' +
106174        'looked like colors.setTheme(__dirname + ' +
106175        '\'/../themes/generic-logging.js\'); The new syntax looks like '+
106176        'colors.setTheme(require(__dirname + ' +
106177        '\'/../themes/generic-logging.js\'));');
106178      return;
106179    }
106180    for (var style in theme) {
106181      (function(style) {
106182        colors[style] = function(str) {
106183          if (typeof theme[style] === 'object') {
106184            var out = str;
106185            for (var i in theme[style]) {
106186              out = colors[theme[style][i]](out);
106187            }
106188            return out;
106189          }
106190          return colors[theme[style]](str);
106191        };
106192      })(style);
106193    }
106194  };
106195  
106196  function init() {
106197    var ret = {};
106198    Object.keys(styles).forEach(function(name) {
106199      ret[name] = {
106200        get: function() {
106201          return build([name]);
106202        },
106203      };
106204    });
106205    return ret;
106206  }
106207  
106208  var sequencer = function sequencer(map, str) {
106209    var exploded = str.split('');
106210    exploded = exploded.map(map);
106211    return exploded.join('');
106212  };
106213  
106214  // custom formatter methods
106215  colors.trap = __webpack_require__(580);
106216  colors.zalgo = __webpack_require__(581);
106217  
106218  // maps
106219  colors.maps = {};
106220  colors.maps.america = __webpack_require__(582)(colors);
106221  colors.maps.zebra = __webpack_require__(585)(colors);
106222  colors.maps.rainbow = __webpack_require__(583)(colors);
106223  colors.maps.random = __webpack_require__(584)(colors);
106224  
106225  for (var map in colors.maps) {
106226    (function(map) {
106227      colors[map] = function(str) {
106228        return sequencer(colors.maps[map], str);
106229      };
106230    })(map);
106231  }
106232  
106233  defineProps(colors, init());
106234  
106235  
106236  /***/ }),
106237  /* 580 */
106238  /***/ (function(module, exports) {
106239  
106240  module['exports'] = function runTheTrap(text, options) {
106241    var result = '';
106242    text = text || 'Run the trap, drop the bass';
106243    text = text.split('');
106244    var trap = {
106245      a: ['\u0040', '\u0104', '\u023a', '\u0245', '\u0394', '\u039b', '\u0414'],
106246      b: ['\u00df', '\u0181', '\u0243', '\u026e', '\u03b2', '\u0e3f'],
106247      c: ['\u00a9', '\u023b', '\u03fe'],
106248      d: ['\u00d0', '\u018a', '\u0500', '\u0501', '\u0502', '\u0503'],
106249      e: ['\u00cb', '\u0115', '\u018e', '\u0258', '\u03a3', '\u03be', '\u04bc',
106250           '\u0a6c'],
106251      f: ['\u04fa'],
106252      g: ['\u0262'],
106253      h: ['\u0126', '\u0195', '\u04a2', '\u04ba', '\u04c7', '\u050a'],
106254      i: ['\u0f0f'],
106255      j: ['\u0134'],
106256      k: ['\u0138', '\u04a0', '\u04c3', '\u051e'],
106257      l: ['\u0139'],
106258      m: ['\u028d', '\u04cd', '\u04ce', '\u0520', '\u0521', '\u0d69'],
106259      n: ['\u00d1', '\u014b', '\u019d', '\u0376', '\u03a0', '\u048a'],
106260      o: ['\u00d8', '\u00f5', '\u00f8', '\u01fe', '\u0298', '\u047a', '\u05dd',
106261           '\u06dd', '\u0e4f'],
106262      p: ['\u01f7', '\u048e'],
106263      q: ['\u09cd'],
106264      r: ['\u00ae', '\u01a6', '\u0210', '\u024c', '\u0280', '\u042f'],
106265      s: ['\u00a7', '\u03de', '\u03df', '\u03e8'],
106266      t: ['\u0141', '\u0166', '\u0373'],
106267      u: ['\u01b1', '\u054d'],
106268      v: ['\u05d8'],
106269      w: ['\u0428', '\u0460', '\u047c', '\u0d70'],
106270      x: ['\u04b2', '\u04fe', '\u04fc', '\u04fd'],
106271      y: ['\u00a5', '\u04b0', '\u04cb'],
106272      z: ['\u01b5', '\u0240'],
106273    };
106274    text.forEach(function(c) {
106275      c = c.toLowerCase();
106276      var chars = trap[c] || [' '];
106277      var rand = Math.floor(Math.random() * chars.length);
106278      if (typeof trap[c] !== 'undefined') {
106279        result += trap[c][rand];
106280      } else {
106281        result += c;
106282      }
106283    });
106284    return result;
106285  };
106286  
106287  
106288  /***/ }),
106289  /* 581 */
106290  /***/ (function(module, exports) {
106291  
106292  // please no
106293  module['exports'] = function zalgo(text, options) {
106294    text = text || '   he is here   ';
106295    var soul = {
106296      'up': [
106297        '̍', '̎', '̄', '̅',
106298        '̿', '̑', '̆', '̐',
106299        '͒', '͗', '͑', '̇',
106300        '̈', '̊', '͂', '̓',
106301        '̈', '͊', '͋', '͌',
106302        '̃', '̂', '̌', '͐',
106303        '̀', '́', '̋', '̏',
106304        '̒', '̓', '̔', '̽',
106305        '̉', 'ͣ', 'ͤ', 'ͥ',
106306        'ͦ', 'ͧ', 'ͨ', 'ͩ',
106307        'ͪ', 'ͫ', 'ͬ', 'ͭ',
106308        'ͮ', 'ͯ', '̾', '͛',
106309        '͆', '̚',
106310      ],
106311      'down': [
106312        '̖', '̗', '̘', '̙',
106313        '̜', '̝', '̞', '̟',
106314        '̠', '̤', '̥', '̦',
106315        '̩', '̪', '̫', '̬',
106316        '̭', '̮', '̯', '̰',
106317        '̱', '̲', '̳', '̹',
106318        '̺', '̻', '̼', 'ͅ',
106319        '͇', '͈', '͉', '͍',
106320        '͎', '͓', '͔', '͕',
106321        '͖', '͙', '͚', '̣',
106322      ],
106323      'mid': [
106324        '̕', '̛', '̀', '́',
106325        '͘', '̡', '̢', '̧',
106326        '̨', '̴', '̵', '̶',
106327        '͜', '͝', '͞',
106328        '͟', '͠', '͢', '̸',
106329        '̷', '͡', ' ҉',
106330      ],
106331    };
106332    var all = [].concat(soul.up, soul.down, soul.mid);
106333  
106334    function randomNumber(range) {
106335      var r = Math.floor(Math.random() * range);
106336      return r;
106337    }
106338  
106339    function isChar(character) {
106340      var bool = false;
106341      all.filter(function(i) {
106342        bool = (i === character);
106343      });
106344      return bool;
106345    }
106346  
106347  
106348    function heComes(text, options) {
106349      var result = '';
106350      var counts;
106351      var l;
106352      options = options || {};
106353      options['up'] =
106354        typeof options['up'] !== 'undefined' ? options['up'] : true;
106355      options['mid'] =
106356        typeof options['mid'] !== 'undefined' ? options['mid'] : true;
106357      options['down'] =
106358        typeof options['down'] !== 'undefined' ? options['down'] : true;
106359      options['size'] =
106360        typeof options['size'] !== 'undefined' ? options['size'] : 'maxi';
106361      text = text.split('');
106362      for (l in text) {
106363        if (isChar(l)) {
106364          continue;
106365        }
106366        result = result + text[l];
106367        counts = {'up': 0, 'down': 0, 'mid': 0};
106368        switch (options.size) {
106369        case 'mini':
106370          counts.up = randomNumber(8);
106371          counts.mid = randomNumber(2);
106372          counts.down = randomNumber(8);
106373          break;
106374        case 'maxi':
106375          counts.up = randomNumber(16) + 3;
106376          counts.mid = randomNumber(4) + 1;
106377          counts.down = randomNumber(64) + 3;
106378          break;
106379        default:
106380          counts.up = randomNumber(8) + 1;
106381          counts.mid = randomNumber(6) / 2;
106382          counts.down = randomNumber(8) + 1;
106383          break;
106384        }
106385  
106386        var arr = ['up', 'mid', 'down'];
106387        for (var d in arr) {
106388          var index = arr[d];
106389          for (var i = 0; i <= counts[index]; i++) {
106390            if (options[index]) {
106391              result = result + soul[index][randomNumber(soul[index].length)];
106392            }
106393          }
106394        }
106395      }
106396      return result;
106397    }
106398    // don't summon him
106399    return heComes(text, options);
106400  };
106401  
106402  
106403  
106404  /***/ }),
106405  /* 582 */
106406  /***/ (function(module, exports) {
106407  
106408  module['exports'] = function(colors) {
106409    return function(letter, i, exploded) {
106410      if (letter === ' ') return letter;
106411      switch (i%3) {
106412        case 0: return colors.red(letter);
106413        case 1: return colors.white(letter);
106414        case 2: return colors.blue(letter);
106415      }
106416    };
106417  };
106418  
106419  
106420  /***/ }),
106421  /* 583 */
106422  /***/ (function(module, exports) {
106423  
106424  module['exports'] = function(colors) {
106425    // RoY G BiV
106426    var rainbowColors = ['red', 'yellow', 'green', 'blue', 'magenta'];
106427    return function(letter, i, exploded) {
106428      if (letter === ' ') {
106429        return letter;
106430      } else {
106431        return colors[rainbowColors[i++ % rainbowColors.length]](letter);
106432      }
106433    };
106434  };
106435  
106436  
106437  
106438  /***/ }),
106439  /* 584 */
106440  /***/ (function(module, exports) {
106441  
106442  module['exports'] = function(colors) {
106443    var available = ['underline', 'inverse', 'grey', 'yellow', 'red', 'green',
106444      'blue', 'white', 'cyan', 'magenta'];
106445    return function(letter, i, exploded) {
106446      return letter === ' ' ? letter :
106447        colors[
106448          available[Math.round(Math.random() * (available.length - 2))]
106449        ](letter);
106450    };
106451  };
106452  
106453  
106454  /***/ }),
106455  /* 585 */
106456  /***/ (function(module, exports) {
106457  
106458  module['exports'] = function(colors) {
106459    return function(letter, i, exploded) {
106460      return i % 2 === 0 ? letter : colors.inverse(letter);
106461    };
106462  };
106463  
106464  
106465  /***/ }),
106466  /* 586 */
106467  /***/ (function(module, exports) {
106468  
106469  /*
106470  The MIT License (MIT)
106471  
106472  Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
106473  
106474  Permission is hereby granted, free of charge, to any person obtaining a copy
106475  of this software and associated documentation files (the "Software"), to deal
106476  in the Software without restriction, including without limitation the rights
106477  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
106478  copies of the Software, and to permit persons to whom the Software is
106479  furnished to do so, subject to the following conditions:
106480  
106481  The above copyright notice and this permission notice shall be included in
106482  all copies or substantial portions of the Software.
106483  
106484  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
106485  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
106486  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
106487  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
106488  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
106489  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
106490  THE SOFTWARE.
106491  
106492  */
106493  
106494  var styles = {};
106495  module['exports'] = styles;
106496  
106497  var codes = {
106498    reset: [0, 0],
106499  
106500    bold: [1, 22],
106501    dim: [2, 22],
106502    italic: [3, 23],
106503    underline: [4, 24],
106504    inverse: [7, 27],
106505    hidden: [8, 28],
106506    strikethrough: [9, 29],
106507  
106508    black: [30, 39],
106509    red: [31, 39],
106510    green: [32, 39],
106511    yellow: [33, 39],
106512    blue: [34, 39],
106513    magenta: [35, 39],
106514    cyan: [36, 39],
106515    white: [37, 39],
106516    gray: [90, 39],
106517    grey: [90, 39],
106518  
106519    bgBlack: [40, 49],
106520    bgRed: [41, 49],
106521    bgGreen: [42, 49],
106522    bgYellow: [43, 49],
106523    bgBlue: [44, 49],
106524    bgMagenta: [45, 49],
106525    bgCyan: [46, 49],
106526    bgWhite: [47, 49],
106527  
106528    // legacy styles for colors pre v1.0.0
106529    blackBG: [40, 49],
106530    redBG: [41, 49],
106531    greenBG: [42, 49],
106532    yellowBG: [43, 49],
106533    blueBG: [44, 49],
106534    magentaBG: [45, 49],
106535    cyanBG: [46, 49],
106536    whiteBG: [47, 49],
106537  
106538  };
106539  
106540  Object.keys(codes).forEach(function(key) {
106541    var val = codes[key];
106542    var style = styles[key] = [];
106543    style.open = '\u001b[' + val[0] + 'm';
106544    style.close = '\u001b[' + val[1] + 'm';
106545  });
106546  
106547  
106548  /***/ }),
106549  /* 587 */
106550  /***/ (function(module, exports, __webpack_require__) {
106551  
106552  "use strict";
106553  /*
106554  MIT License
106555  
106556  Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
106557  
106558  Permission is hereby granted, free of charge, to any person obtaining a copy of
106559  this software and associated documentation files (the "Software"), to deal in
106560  the Software without restriction, including without limitation the rights to
106561  use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
106562  of the Software, and to permit persons to whom the Software is furnished to do
106563  so, subject to the following conditions:
106564  
106565  The above copyright notice and this permission notice shall be included in all
106566  copies or substantial portions of the Software.
106567  
106568  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
106569  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
106570  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
106571  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
106572  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
106573  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
106574  SOFTWARE.
106575  */
106576  
106577  
106578  
106579  module.exports = function(flag, argv) {
106580    argv = argv || process.argv;
106581  
106582    var terminatorPos = argv.indexOf('--');
106583    var prefix = /^-{1,2}/.test(flag) ? '' : '--';
106584    var pos = argv.indexOf(prefix + flag);
106585  
106586    return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);
106587  };
106588  
106589  
106590  /***/ }),
106591  /* 588 */
106592  /***/ (function(module, exports, __webpack_require__) {
106593  
106594  "use strict";
106595  /*
106596  The MIT License (MIT)
106597  
106598  Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
106599  
106600  Permission is hereby granted, free of charge, to any person obtaining a copy
106601  of this software and associated documentation files (the "Software"), to deal
106602  in the Software without restriction, including without limitation the rights
106603  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
106604  copies of the Software, and to permit persons to whom the Software is
106605  furnished to do so, subject to the following conditions:
106606  
106607  The above copyright notice and this permission notice shall be included in
106608  all copies or substantial portions of the Software.
106609  
106610  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
106611  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
106612  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
106613  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
106614  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
106615  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
106616  THE SOFTWARE.
106617  
106618  */
106619  
106620  
106621  
106622  var os = __webpack_require__(46);
106623  var hasFlag = __webpack_require__(587);
106624  
106625  var env = process.env;
106626  
106627  var forceColor = void 0;
106628  if (hasFlag('no-color') || hasFlag('no-colors') || hasFlag('color=false')) {
106629    forceColor = false;
106630  } else if (hasFlag('color') || hasFlag('colors') || hasFlag('color=true')
106631             || hasFlag('color=always')) {
106632    forceColor = true;
106633  }
106634  if ('FORCE_COLOR' in env) {
106635    forceColor = env.FORCE_COLOR.length === 0
106636      || parseInt(env.FORCE_COLOR, 10) !== 0;
106637  }
106638  
106639  function translateLevel(level) {
106640    if (level === 0) {
106641      return false;
106642    }
106643  
106644    return {
106645      level: level,
106646      hasBasic: true,
106647      has256: level >= 2,
106648      has16m: level >= 3,
106649    };
106650  }
106651  
106652  function supportsColor(stream) {
106653    if (forceColor === false) {
106654      return 0;
106655    }
106656  
106657    if (hasFlag('color=16m') || hasFlag('color=full')
106658        || hasFlag('color=truecolor')) {
106659      return 3;
106660    }
106661  
106662    if (hasFlag('color=256')) {
106663      return 2;
106664    }
106665  
106666    if (stream && !stream.isTTY && forceColor !== true) {
106667      return 0;
106668    }
106669  
106670    var min = forceColor ? 1 : 0;
106671  
106672    if (process.platform === 'win32') {
106673      // Node.js 7.5.0 is the first version of Node.js to include a patch to
106674      // libuv that enables 256 color output on Windows. Anything earlier and it
106675      // won't work. However, here we target Node.js 8 at minimum as it is an LTS
106676      // release, and Node.js 7 is not. Windows 10 build 10586 is the first
106677      // Windows release that supports 256 colors. Windows 10 build 14931 is the
106678      // first release that supports 16m/TrueColor.
106679      var osRelease = os.release().split('.');
106680      if (Number(process.versions.node.split('.')[0]) >= 8
106681          && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
106682        return Number(osRelease[2]) >= 14931 ? 3 : 2;
106683      }
106684  
106685      return 1;
106686    }
106687  
106688    if ('CI' in env) {
106689      if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(function(sign) {
106690        return sign in env;
106691      }) || env.CI_NAME === 'codeship') {
106692        return 1;
106693      }
106694  
106695      return min;
106696    }
106697  
106698    if ('TEAMCITY_VERSION' in env) {
106699      return (/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0
106700      );
106701    }
106702  
106703    if ('TERM_PROGRAM' in env) {
106704      var version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);
106705  
106706      switch (env.TERM_PROGRAM) {
106707        case 'iTerm.app':
106708          return version >= 3 ? 3 : 2;
106709        case 'Hyper':
106710          return 3;
106711        case 'Apple_Terminal':
106712          return 2;
106713        // No default
106714      }
106715    }
106716  
106717    if (/-256(color)?$/i.test(env.TERM)) {
106718      return 2;
106719    }
106720  
106721    if (/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
106722      return 1;
106723    }
106724  
106725    if ('COLORTERM' in env) {
106726      return 1;
106727    }
106728  
106729    if (env.TERM === 'dumb') {
106730      return min;
106731    }
106732  
106733    return min;
106734  }
106735  
106736  function getSupportLevel(stream) {
106737    var level = supportsColor(stream);
106738    return translateLevel(level);
106739  }
106740  
106741  module.exports = {
106742    supportsColor: getSupportLevel,
106743    stdout: getSupportLevel(process.stdout),
106744    stderr: getSupportLevel(process.stderr),
106745  };
106746  
106747  
106748  /***/ }),
106749  /* 589 */
106750  /***/ (function(module, exports, __webpack_require__) {
106751  
106752  //
106753  // Remark: Requiring this file will use the "safe" colors API,
106754  // which will not touch String.prototype.
106755  //
106756  //   var colors = require('colors/safe');
106757  //   colors.red("foo")
106758  //
106759  //
106760  var colors = __webpack_require__(579);
106761  module['exports'] = colors;
106762  
106763  
106764  /***/ }),
106765  /* 590 */
106766  /***/ (function(module, exports) {
106767  
106768  module.exports = defer;
106769  
106770  /**
106771   * Runs provided function on next iteration of the event loop
106772   *
106773   * @param {function} fn - function to run
106774   */
106775  function defer(fn)
106776  {
106777    var nextTick = typeof setImmediate == 'function'
106778      ? setImmediate
106779      : (
106780        typeof process == 'object' && typeof process.nextTick == 'function'
106781        ? process.nextTick
106782        : null
106783      );
106784  
106785    if (nextTick)
106786    {
106787      nextTick(fn);
106788    }
106789    else
106790    {
106791      setTimeout(fn, 0);
106792    }
106793  }
106794  
106795  
106796  /***/ }),
106797  /* 591 */
106798  /***/ (function(module, exports, __webpack_require__) {
106799  
106800  __webpack_require__(595);
106801  module.exports = __webpack_require__(31).Object.assign;
106802  
106803  
106804  /***/ }),
106805  /* 592 */
106806  /***/ (function(module, exports, __webpack_require__) {
106807  
106808  "use strict";
106809  
106810  // 19.1.2.1 Object.assign(target, source, ...)
106811  var getKeys = __webpack_require__(172);
106812  var gOPS = __webpack_require__(593);
106813  var pIE = __webpack_require__(594);
106814  var toObject = __webpack_require__(173);
106815  var IObject = __webpack_require__(171);
106816  var $assign = Object.assign;
106817  
106818  // should work with symbols and should have deterministic property order (V8 bug)
106819  module.exports = !$assign || __webpack_require__(112)(function () {
106820    var A = {};
106821    var B = {};
106822    // eslint-disable-next-line no-undef
106823    var S = Symbol();
106824    var K = 'abcdefghijklmnopqrst';
106825    A[S] = 7;
106826    K.split('').forEach(function (k) { B[k] = k; });
106827    return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
106828  }) ? function assign(target, source) { // eslint-disable-line no-unused-vars
106829    var T = toObject(target);
106830    var aLen = arguments.length;
106831    var index = 1;
106832    var getSymbols = gOPS.f;
106833    var isEnum = pIE.f;
106834    while (aLen > index) {
106835      var S = IObject(arguments[index++]);
106836      var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
106837      var length = keys.length;
106838      var j = 0;
106839      var key;
106840      while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];
106841    } return T;
106842  } : $assign;
106843  
106844  
106845  /***/ }),
106846  /* 593 */
106847  /***/ (function(module, exports) {
106848  
106849  exports.f = Object.getOwnPropertySymbols;
106850  
106851  
106852  /***/ }),
106853  /* 594 */
106854  /***/ (function(module, exports) {
106855  
106856  exports.f = {}.propertyIsEnumerable;
106857  
106858  
106859  /***/ }),
106860  /* 595 */
106861  /***/ (function(module, exports, __webpack_require__) {
106862  
106863  // 19.1.3.1 Object.assign(target, source)
106864  var $export = __webpack_require__(60);
106865  
106866  $export($export.S + $export.F, 'Object', { assign: __webpack_require__(592) });
106867  
106868  
106869  /***/ }),
106870  /* 596 */
106871  /***/ (function(module, exports, __webpack_require__) {
106872  
106873  "use strict";
106874  
106875  var arrayFindIndex = __webpack_require__(479);
106876  
106877  module.exports = function () {
106878  	var unhandledRejections = [];
106879  
106880  	function onUnhandledRejection(reason, promise) {
106881  		unhandledRejections.push({reason: reason, promise: promise});
106882  	}
106883  
106884  	function onRejectionHandled(promise) {
106885  		var index = arrayFindIndex(unhandledRejections, function (x) {
106886  			return x.promise === promise;
106887  		});
106888  
106889  		unhandledRejections.splice(index, 1);
106890  	}
106891  
106892  	function currentlyUnhandled() {
106893  		return unhandledRejections.map(function (entry) {
106894  			return {
106895  				reason: entry.reason,
106896  				promise: entry.promise
106897  			};
106898  		});
106899  	}
106900  
106901  	return {
106902  		onUnhandledRejection: onUnhandledRejection,
106903  		onRejectionHandled: onRejectionHandled,
106904  		currentlyUnhandled: currentlyUnhandled
106905  	};
106906  };
106907  
106908  
106909  /***/ }),
106910  /* 597 */
106911  /***/ (function(module, exports, __webpack_require__) {
106912  
106913  "use strict";
106914  
106915  var core = __webpack_require__(596);
106916  
106917  module.exports = function (p) {
106918  	p = p || process;
106919  	var c = core();
106920  
106921  	p.on('unhandledRejection', c.onUnhandledRejection);
106922  	p.on('rejectionHandled', c.onRejectionHandled);
106923  
106924  	return c.currentlyUnhandled;
106925  };
106926  
106927  
106928  /***/ }),
106929  /* 598 */
106930  /***/ (function(module, exports, __webpack_require__) {
106931  
106932  "use strict";
106933  
106934  var token = '%[a-f0-9]{2}';
106935  var singleMatcher = new RegExp(token, 'gi');
106936  var multiMatcher = new RegExp('(' + token + ')+', 'gi');
106937  
106938  function decodeComponents(components, split) {
106939  	try {
106940  		// Try to decode the entire string first
106941  		return decodeURIComponent(components.join(''));
106942  	} catch (err) {
106943  		// Do nothing
106944  	}
106945  
106946  	if (components.length === 1) {
106947  		return components;
106948  	}
106949  
106950  	split = split || 1;
106951  
106952  	// Split the array in 2 parts
106953  	var left = components.slice(0, split);
106954  	var right = components.slice(split);
106955  
106956  	return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));
106957  }
106958  
106959  function decode(input) {
106960  	try {
106961  		return decodeURIComponent(input);
106962  	} catch (err) {
106963  		var tokens = input.match(singleMatcher);
106964  
106965  		for (var i = 1; i < tokens.length; i++) {
106966  			input = decodeComponents(tokens, i).join('');
106967  
106968  			tokens = input.match(singleMatcher);
106969  		}
106970  
106971  		return input;
106972  	}
106973  }
106974  
106975  function customDecodeURIComponent(input) {
106976  	// Keep track of all the replacements and prefill the map with the `BOM`
106977  	var replaceMap = {
106978  		'%FE%FF': '\uFFFD\uFFFD',
106979  		'%FF%FE': '\uFFFD\uFFFD'
106980  	};
106981  
106982  	var match = multiMatcher.exec(input);
106983  	while (match) {
106984  		try {
106985  			// Decode as big chunks as possible
106986  			replaceMap[match[0]] = decodeURIComponent(match[0]);
106987  		} catch (err) {
106988  			var result = decode(match[0]);
106989  
106990  			if (result !== match[0]) {
106991  				replaceMap[match[0]] = result;
106992  			}
106993  		}
106994  
106995  		match = multiMatcher.exec(input);
106996  	}
106997  
106998  	// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else
106999  	replaceMap['%C2'] = '\uFFFD';
107000  
107001  	var entries = Object.keys(replaceMap);
107002  
107003  	for (var i = 0; i < entries.length; i++) {
107004  		// Replace all decoded components
107005  		var key = entries[i];
107006  		input = input.replace(new RegExp(key, 'g'), replaceMap[key]);
107007  	}
107008  
107009  	return input;
107010  }
107011  
107012  module.exports = function (encodedURI) {
107013  	if (typeof encodedURI !== 'string') {
107014  		throw new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');
107015  	}
107016  
107017  	try {
107018  		encodedURI = encodedURI.replace(/\+/g, ' ');
107019  
107020  		// Try the built in decoder first
107021  		return decodeURIComponent(encodedURI);
107022  	} catch (err) {
107023  		// Fallback to a more advanced decoder
107024  		return customDecodeURIComponent(encodedURI);
107025  	}
107026  };
107027  
107028  
107029  /***/ }),
107030  /* 599 */
107031  /***/ (function(module, exports, __webpack_require__) {
107032  
107033  var pSlice = Array.prototype.slice;
107034  var objectKeys = __webpack_require__(601);
107035  var isArguments = __webpack_require__(600);
107036  
107037  var deepEqual = module.exports = function (actual, expected, opts) {
107038    if (!opts) opts = {};
107039    // 7.1. All identical values are equivalent, as determined by ===.
107040    if (actual === expected) {
107041      return true;
107042  
107043    } else if (actual instanceof Date && expected instanceof Date) {
107044      return actual.getTime() === expected.getTime();
107045  
107046    // 7.3. Other pairs that do not both pass typeof value == 'object',
107047    // equivalence is determined by ==.
107048    } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {
107049      return opts.strict ? actual === expected : actual == expected;
107050  
107051    // 7.4. For all other Object pairs, including Array objects, equivalence is
107052    // determined by having the same number of owned properties (as verified
107053    // with Object.prototype.hasOwnProperty.call), the same set of keys
107054    // (although not necessarily the same order), equivalent values for every
107055    // corresponding key, and an identical 'prototype' property. Note: this
107056    // accounts for both named and indexed properties on Arrays.
107057    } else {
107058      return objEquiv(actual, expected, opts);
107059    }
107060  }
107061  
107062  function isUndefinedOrNull(value) {
107063    return value === null || value === undefined;
107064  }
107065  
107066  function isBuffer (x) {
107067    if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;
107068    if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {
107069      return false;
107070    }
107071    if (x.length > 0 && typeof x[0] !== 'number') return false;
107072    return true;
107073  }
107074  
107075  function objEquiv(a, b, opts) {
107076    var i, key;
107077    if (isUndefinedOrNull(a) || isUndefinedOrNull(b))
107078      return false;
107079    // an identical 'prototype' property.
107080    if (a.prototype !== b.prototype) return false;
107081    //~~~I've managed to break Object.keys through screwy arguments passing.
107082    //   Converting to array solves the problem.
107083    if (isArguments(a)) {
107084      if (!isArguments(b)) {
107085        return false;
107086      }
107087      a = pSlice.call(a);
107088      b = pSlice.call(b);
107089      return deepEqual(a, b, opts);
107090    }
107091    if (isBuffer(a)) {
107092      if (!isBuffer(b)) {
107093        return false;
107094      }
107095      if (a.length !== b.length) return false;
107096      for (i = 0; i < a.length; i++) {
107097        if (a[i] !== b[i]) return false;
107098      }
107099      return true;
107100    }
107101    try {
107102      var ka = objectKeys(a),
107103          kb = objectKeys(b);
107104    } catch (e) {//happens when one is a string literal and the other isn't
107105      return false;
107106    }
107107    // having the same number of owned properties (keys incorporates
107108    // hasOwnProperty)
107109    if (ka.length != kb.length)
107110      return false;
107111    //the same set of keys (although not necessarily the same order),
107112    ka.sort();
107113    kb.sort();
107114    //~~~cheap key test
107115    for (i = ka.length - 1; i >= 0; i--) {
107116      if (ka[i] != kb[i])
107117        return false;
107118    }
107119    //equivalent values for every corresponding key, and
107120    //~~~possibly expensive deep test
107121    for (i = ka.length - 1; i >= 0; i--) {
107122      key = ka[i];
107123      if (!deepEqual(a[key], b[key], opts)) return false;
107124    }
107125    return typeof a === typeof b;
107126  }
107127  
107128  
107129  /***/ }),
107130  /* 600 */
107131  /***/ (function(module, exports) {
107132  
107133  var supportsArgumentsClass = (function(){
107134    return Object.prototype.toString.call(arguments)
107135  })() == '[object Arguments]';
107136  
107137  exports = module.exports = supportsArgumentsClass ? supported : unsupported;
107138  
107139  exports.supported = supported;
107140  function supported(object) {
107141    return Object.prototype.toString.call(object) == '[object Arguments]';
107142  };
107143  
107144  exports.unsupported = unsupported;
107145  function unsupported(object){
107146    return object &&
107147      typeof object == 'object' &&
107148      typeof object.length == 'number' &&
107149      Object.prototype.hasOwnProperty.call(object, 'callee') &&
107150      !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||
107151      false;
107152  };
107153  
107154  
107155  /***/ }),
107156  /* 601 */
107157  /***/ (function(module, exports) {
107158  
107159  exports = module.exports = typeof Object.keys === 'function'
107160    ? Object.keys : shim;
107161  
107162  exports.shim = shim;
107163  function shim (obj) {
107164    var keys = [];
107165    for (var key in obj) keys.push(key);
107166    return keys;
107167  }
107168  
107169  
107170  /***/ }),
107171  /* 602 */
107172  /***/ (function(module, exports, __webpack_require__) {
107173  
107174  var Stream = __webpack_require__(23).Stream;
107175  var util = __webpack_require__(3);
107176  
107177  module.exports = DelayedStream;
107178  function DelayedStream() {
107179    this.source = null;
107180    this.dataSize = 0;
107181    this.maxDataSize = 1024 * 1024;
107182    this.pauseStream = true;
107183  
107184    this._maxDataSizeExceeded = false;
107185    this._released = false;
107186    this._bufferedEvents = [];
107187  }
107188  util.inherits(DelayedStream, Stream);
107189  
107190  DelayedStream.create = function(source, options) {
107191    var delayedStream = new this();
107192  
107193    options = options || {};
107194    for (var option in options) {
107195      delayedStream[option] = options[option];
107196    }
107197  
107198    delayedStream.source = source;
107199  
107200    var realEmit = source.emit;
107201    source.emit = function() {
107202      delayedStream._handleEmit(arguments);
107203      return realEmit.apply(source, arguments);
107204    };
107205  
107206    source.on('error', function() {});
107207    if (delayedStream.pauseStream) {
107208      source.pause();
107209    }
107210  
107211    return delayedStream;
107212  };
107213  
107214  Object.defineProperty(DelayedStream.prototype, 'readable', {
107215    configurable: true,
107216    enumerable: true,
107217    get: function() {
107218      return this.source.readable;
107219    }
107220  });
107221  
107222  DelayedStream.prototype.setEncoding = function() {
107223    return this.source.setEncoding.apply(this.source, arguments);
107224  };
107225  
107226  DelayedStream.prototype.resume = function() {
107227    if (!this._released) {
107228      this.release();
107229    }
107230  
107231    this.source.resume();
107232  };
107233  
107234  DelayedStream.prototype.pause = function() {
107235    this.source.pause();
107236  };
107237  
107238  DelayedStream.prototype.release = function() {
107239    this._released = true;
107240  
107241    this._bufferedEvents.forEach(function(args) {
107242      this.emit.apply(this, args);
107243    }.bind(this));
107244    this._bufferedEvents = [];
107245  };
107246  
107247  DelayedStream.prototype.pipe = function() {
107248    var r = Stream.prototype.pipe.apply(this, arguments);
107249    this.resume();
107250    return r;
107251  };
107252  
107253  DelayedStream.prototype._handleEmit = function(args) {
107254    if (this._released) {
107255      this.emit.apply(this, args);
107256      return;
107257    }
107258  
107259    if (args[0] === 'data') {
107260      this.dataSize += args[1].length;
107261      this._checkIfMaxDataSizeExceeded();
107262    }
107263  
107264    this._bufferedEvents.push(args);
107265  };
107266  
107267  DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {
107268    if (this._maxDataSizeExceeded) {
107269      return;
107270    }
107271  
107272    if (this.dataSize <= this.maxDataSize) {
107273      return;
107274    }
107275  
107276    this._maxDataSizeExceeded = true;
107277    var message =
107278      'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'
107279    this.emit('error', new Error(message));
107280  };
107281  
107282  
107283  /***/ }),
107284  /* 603 */
107285  /***/ (function(module, exports, __webpack_require__) {
107286  
107287  "use strict";
107288  
107289  
107290  // detect either spaces or tabs but not both to properly handle tabs
107291  // for indentation and spaces for alignment
107292  const INDENT_RE = /^(?:( )+|\t+)/;
107293  
107294  function getMostUsed(indents) {
107295  	let result = 0;
107296  	let maxUsed = 0;
107297  	let maxWeight = 0;
107298  
107299  	for (const entry of indents) {
107300  		// TODO: use destructuring when targeting Node.js 6
107301  		const key = entry[0];
107302  		const val = entry[1];
107303  
107304  		const u = val[0];
107305  		const w = val[1];
107306  
107307  		if (u > maxUsed || (u === maxUsed && w > maxWeight)) {
107308  			maxUsed = u;
107309  			maxWeight = w;
107310  			result = Number(key);
107311  		}
107312  	}
107313  
107314  	return result;
107315  }
107316  
107317  module.exports = str => {
107318  	if (typeof str !== 'string') {
107319  		throw new TypeError('Expected a string');
107320  	}
107321  
107322  	// used to see if tabs or spaces are the most used
107323  	let tabs = 0;
107324  	let spaces = 0;
107325  
107326  	// remember the size of previous line's indentation
107327  	let prev = 0;
107328  
107329  	// remember how many indents/unindents as occurred for a given size
107330  	// and how much lines follow a given indentation
107331  	//
107332  	// indents = {
107333  	//    3: [1, 0],
107334  	//    4: [1, 5],
107335  	//    5: [1, 0],
107336  	//   12: [1, 0],
107337  	// }
107338  	const indents = new Map();
107339  
107340  	// pointer to the array of last used indent
107341  	let current;
107342  
107343  	// whether the last action was an indent (opposed to an unindent)
107344  	let isIndent;
107345  
107346  	for (const line of str.split(/\n/g)) {
107347  		if (!line) {
107348  			// ignore empty lines
107349  			continue;
107350  		}
107351  
107352  		let indent;
107353  		const matches = line.match(INDENT_RE);
107354  
107355  		if (matches) {
107356  			indent = matches[0].length;
107357  
107358  			if (matches[1]) {
107359  				spaces++;
107360  			} else {
107361  				tabs++;
107362  			}
107363  		} else {
107364  			indent = 0;
107365  		}
107366  
107367  		const diff = indent - prev;
107368  		prev = indent;
107369  
107370  		if (diff) {
107371  			// an indent or unindent has been detected
107372  
107373  			isIndent = diff > 0;
107374  
107375  			current = indents.get(isIndent ? diff : -diff);
107376  
107377  			if (current) {
107378  				current[0]++;
107379  			} else {
107380  				current = [1, 0];
107381  				indents.set(diff, current);
107382  			}
107383  		} else if (current) {
107384  			// if the last action was an indent, increment the weight
107385  			current[1] += Number(isIndent);
107386  		}
107387  	}
107388  
107389  	const amount = getMostUsed(indents);
107390  
107391  	let type;
107392  	let indent;
107393  	if (!amount) {
107394  		type = null;
107395  		indent = '';
107396  	} else if (spaces >= tabs) {
107397  		type = 'space';
107398  		indent = ' '.repeat(amount);
107399  	} else {
107400  		type = 'tab';
107401  		indent = '\t'.repeat(amount);
107402  	}
107403  
107404  	return {
107405  		amount,
107406  		type,
107407  		indent
107408  	};
107409  };
107410  
107411  
107412  /***/ }),
107413  /* 604 */
107414  /***/ (function(module, exports, __webpack_require__) {
107415  
107416  /*
107417  * Copyright (c) 2013, Yahoo! Inc. All rights reserved.
107418  * Copyrights licensed under the New BSD License.
107419  * See the accompanying LICENSE file for terms.
107420  */
107421  
107422  var CacheObject = function (conf) {
107423      conf = conf || {};
107424      conf.ttl = parseInt(conf.ttl, 10) || 300; //0 is not permissible
107425      conf.cachesize = parseInt(conf.cachesize, 10) || 1000; //0 is not permissible
107426      
107427      this.ttl = conf.ttl * 1000;
107428      this.max = conf.cachesize;
107429  
107430      this.count = 0;
107431      this.data = {};
107432      var next = __webpack_require__(480);
107433  
107434      this.set = function (key, value, callback) {
107435          var self = this;
107436          next(function () {
107437              if (self.data[key]) {
107438                  if (self.data[key].newer) {
107439                      if (self.data[key].older) {
107440                          self.data[key].newer.older = self.data[key].older;
107441                          self.data[key].older.newer = self.data[key].newer;
107442                      } else {
107443                          self.tail = self.data[key].newer;
107444                          delete self.tail.older;
107445                      }
107446  
107447                      self.data[key].older = self.head;
107448                      self.head.newer = self.data[key];
107449                      delete self.data[key].newer;
107450                      self.head = self.data[key];
107451                  }
107452  
107453                  self.head.val = value;
107454                  self.head.hit = 0;
107455                  self.head.ts = Date.now();
107456              } else {
107457                  // key is not exist
107458                  self.data[key] = {
107459                      "key" : key,
107460                      "val" : value,
107461                      "hit" : 0,
107462                      "ts" : Date.now()
107463                  };
107464  
107465                  if (!self.head) {
107466                      // cache is empty
107467                      self.head = self.data[key];
107468                      self.tail = self.data[key];
107469                  } else {
107470                      // insert the new entry to the front
107471                      self.head.newer = self.data[key];
107472                      self.data[key].older = self.head;
107473                      self.head = self.data[key];
107474                  }
107475  
107476                  if (self.count >= self.max) {
107477                      // remove the tail
107478                      var temp = self.tail;
107479                      self.tail = self.tail.newer;
107480                      delete self.tail.next;
107481                      delete self.data[temp.key];
107482                  } else {
107483                      self.count = self.count + 1;
107484                  }
107485              }
107486              /* jshint -W030 */
107487              callback && callback(null, value);
107488          });
107489      };
107490  
107491      this.get = function (key, callback) {
107492          var self = this;
107493          if (!callback) {
107494              throw('cache.get callback is required.');
107495          }
107496  
107497          next(function () {
107498              if (!self.data[key]) {
107499                  return callback(null, undefined);
107500              }
107501              var value;
107502              if (conf.ttl !== 0 && (Date.now() - self.data[key].ts) >= self.ttl) {
107503                  if (self.data[key].newer) {
107504                      if (self.data[key].older) {
107505                          // in the middle of the list
107506                          self.data[key].newer.older = self.data[key].older;
107507                          self.data[key].older.newer = self.data[key].newer;
107508                      } else {
107509                          // tail
107510                          self.tail = self.data[key].newer;
107511                          delete self.tail.older;
107512                      }
107513                  } else {
107514                      // the first item
107515                      if (self.data[key].older) {
107516                          self.head = self.data[key].older;
107517                          delete self.head.newer;
107518                      } else {
107519                          // 1 items
107520                          delete self.head;
107521                          delete self.tail;
107522                      }
107523                  }
107524  
107525                  delete self.data[key];
107526                  self.count = self.count - 1;
107527              } else {
107528                  self.data[key].hit = self.data[key].hit + 1;
107529                  value = self.data[key].val;
107530              }
107531              callback(null, value);
107532          });
107533      };
107534  };
107535  
107536  module.exports = CacheObject;
107537  
107538  
107539  /***/ }),
107540  /* 605 */
107541  /***/ (function(module, exports, __webpack_require__) {
107542  
107543  /*
107544  * Copyright (c) 2013, Yahoo! Inc. All rights reserved.
107545  * Copyrights licensed under the New BSD License.
107546  * See the accompanying LICENSE file for terms.
107547  */
107548  
107549  var CacheObject = __webpack_require__(604),
107550      deepCopy = __webpack_require__(749),
107551      dns = __webpack_require__(964);
107552  
107553  
107554  // original function storage
107555  var EnhanceDns = function (conf) {
107556          conf = conf || {};
107557          conf.ttl = parseInt(conf.ttl, 10) || 300; //0 is not allowed ie it ttl is set to 0, it will take the default
107558          conf.cachesize = parseInt(conf.cachesize, 10); //0 is allowed but it will disable the caching
107559  
107560          if (isNaN(conf.cachesize)) {
107561              conf.cachesize = 1000; //set default cache size to 1000 records max
107562          }
107563          if (!conf.enable || conf.cachesize <= 0 || dns.internalCache) {
107564              //cache already exists, means this code has already execute ie method are already overwritten
107565              return dns;
107566          }
107567          
107568          // original function storage
107569          var backup_object = {
107570                  lookup : dns.lookup,
107571                  resolve : dns.resolve,
107572                  resolve4 : dns.resolve4,
107573                  resolve6 : dns.resolve6,
107574                  resolveMx : dns.resolveMx,
107575                  resolveTxt : dns.resolveTxt,
107576                  resolveSrv : dns.resolveSrv,
107577                  resolveNs : dns.resolveNs,
107578                  resolveCname : dns.resolveCname,
107579                  reverse : dns.reverse
107580              },
107581              // cache storage instance
107582              cache = conf.cache ? /*istanbul ignore next*/ new conf.cache(conf) : new CacheObject(conf);
107583          
107584          // insert cache object to the instance
107585          dns.internalCache = cache;
107586  
107587          // override dns.lookup method
107588          dns.lookup = function (domain, options, callback) {
107589              var family = 0;
107590              var hints = 0;
107591              var all = false;
107592              if (arguments.length === 2) {
107593                  callback = options;
107594                  options = family;
107595              } else if (typeof options === 'object') {
107596                  if (options.family) {
107597                      family = +options.family;
107598                      if (family !== 4 && family !== 6) {
107599                          callback(new Error('invalid argument: `family` must be 4 or 6'));
107600                          return;
107601                      }
107602                  }
107603                  /*istanbul ignore next - "hints" require node 0.12+*/
107604                  if (options.hints) {
107605                      hints = +options.hints;
107606                  }
107607                  all = (options.all === true);
107608              } else if (options) {
107609                  family = +options;
107610                  if (family !== 4 && family !== 6) {
107611                      callback(new Error('invalid argument: `family` must be 4 or 6'));
107612                      return;
107613                  }
107614              }
107615  
107616              cache.get('lookup_' + domain + '_' + family + '_' + hints + '_' + all, function (error, record) {
107617                  if (record) {
107618                      /*istanbul ignore next - "all" option require node 4+*/
107619                      if (Array.isArray(record)) {
107620                          return callback(error, record);
107621                      }
107622                      return callback(error, record.address, record.family);
107623                  }
107624  
107625                  try{
107626                      backup_object.lookup(domain, options, function (err, address, family_r) {
107627                          if (err) {
107628                              return callback(err);
107629                          }
107630                          var value;
107631                          /*istanbul ignore next - "all" option require node 4+*/
107632                          if (Array.isArray(address)) {
107633                              value = address;
107634                          } else {
107635                              value = {
107636                                  'address' : address,
107637                                  'family' : family_r
107638                              };
107639                          }
107640                          cache.set('lookup_' + domain + '_' + family + '_' + hints + '_' +  all, value, function () {
107641                              callback(err, address, family_r);
107642                          });
107643                      });
107644                  } catch (err) {
107645                      /*istanbul ignore next - doesn't throw in node 0.10*/
107646                      callback(err);
107647                  }
107648              });
107649          };
107650  
107651          // override dns.resolve method
107652          dns.resolve = function (domain, type, callback) {
107653              var type_new, callback_new;
107654  
107655              if (typeof type === 'string') {
107656                  type_new = type;
107657                  callback_new = callback;
107658              } else {
107659                  type_new = "A";
107660                  callback_new = type;
107661              }
107662  
107663              cache.get('resolve_' + domain + '_' + type_new, function (error, record) {
107664                  if (record) {
107665                      return callback_new(error, deepCopy(record), true);
107666                  }
107667                  try {
107668                      backup_object.resolve(domain, type_new, function (err, addresses) {
107669                          if (err) {
107670                              return callback_new(err);
107671                          }
107672                          cache.set('resolve_' + domain + '_' + type_new, addresses, function () {
107673                              callback_new(err, deepCopy(addresses), false);
107674                          });
107675                      });
107676                  } catch (err) {
107677                      /*istanbul ignore next - doesn't throw in node 0.10*/
107678                      callback_new(err);
107679                  }
107680              });
107681          };
107682  
107683          // override dns.resolve4 method
107684          dns.resolve4 = function (domain, callback) {
107685              cache.get('resolve4_' + domain, function (error, record) {
107686                  if (record) {
107687                      return callback(error, deepCopy(record));
107688                  }
107689                  try {
107690                      backup_object.resolve4(domain, function (err, addresses) {
107691                          if (err) {
107692                              return callback(err);
107693                          }
107694                          cache.set('resolve4_' + domain, addresses, function () {
107695                              callback(err, deepCopy(addresses));
107696                          });
107697                      });
107698                  } catch (err) {
107699                      /*istanbul ignore next - doesn't throw in node 0.10*/
107700                      callback(err);
107701                  }
107702              });
107703          };
107704  
107705          // override dns.resolve6 method
107706          dns.resolve6 = function (domain, callback) {
107707              cache.get('resolve6_' + domain, function (error, record) {
107708                  if (record) {
107709                      return callback(error, deepCopy(record));
107710                  }
107711                  try {
107712                      backup_object.resolve6(domain, function (err, addresses) {
107713                          if (err) {
107714                              return callback(err);
107715                          }
107716                          cache.set('resolve6_' + domain, addresses, function () {
107717                              callback(err, deepCopy(addresses));
107718                          });
107719                      });
107720                  } catch (err) {
107721                      /*istanbul ignore next - doesn't throw in node 0.10*/
107722                      callback(err);
107723                  }
107724              });
107725          };
107726  
107727          // override dns.resolveMx method
107728          dns.resolveMx = function (domain, callback) {
107729              cache.get('resolveMx_' + domain, function (error, record) {
107730                  if (record) {
107731                      return callback(error, deepCopy(record));
107732                  }
107733                  try {
107734                      backup_object.resolveMx(domain, function (err, addresses) {
107735                          if (err) {
107736                              return callback(err);
107737                          }
107738                          cache.set('resolveMx_' + domain, addresses, function () {
107739                              callback(err, deepCopy(addresses));
107740                          });
107741                      });
107742                  } catch (err) {
107743                      /*istanbul ignore next - doesn't throw in node 0.10*/
107744                      callback(err);
107745                  }
107746              });
107747          };
107748  
107749          // override dns.resolveTxt method
107750          dns.resolveTxt = function (domain, callback) {
107751              cache.get('resolveTxt_' + domain, function (error, record) {
107752                  if (record) {
107753                      return callback(error, deepCopy(record));
107754                  }
107755                  try {
107756                      backup_object.resolveTxt(domain, function (err, addresses) {
107757                          if (err) {
107758                              return callback(err);
107759                          }
107760                          cache.set('resolveTxt_' + domain, addresses, function () {
107761                              callback(err, deepCopy(addresses));
107762                          });
107763                      });
107764                  } catch (err) {
107765                      /*istanbul ignore next - doesn't throw in node 0.10*/
107766                      callback(err);
107767                  }
107768              });
107769          };
107770  
107771          // override dns.resolveSrv method
107772          dns.resolveSrv = function (domain, callback) {
107773              cache.get('resolveSrv_' + domain, function (error, record) {
107774                  if (record) {
107775                      return callback(error, deepCopy(record));
107776                  }
107777                  try {
107778                      backup_object.resolveSrv(domain, function (err, addresses) {
107779                          if (err) {
107780                              return callback(err);
107781                          }
107782                          cache.set('resolveSrv_' + domain, addresses, function () {
107783                              callback(err, deepCopy(addresses));
107784                          });
107785                      });
107786                  } catch (err) {
107787                      /*istanbul ignore next - doesn't throw in node 0.10*/
107788                      callback(err);
107789                  }
107790              });
107791          };
107792  
107793          // override dns.resolveNs method
107794          dns.resolveNs = function (domain, callback) {
107795              cache.get('resolveNs_' + domain, function (error, record) {
107796                  if (record) {
107797                      return callback(error, deepCopy(record));
107798                  }
107799                  try {
107800                      backup_object.resolveNs(domain, function (err, addresses) {
107801                          if (err) {
107802                              return callback(err);
107803                          }
107804                          cache.set('resolveNs_' + domain, addresses, function () {
107805                              callback(err, deepCopy(addresses));
107806                          });
107807                      });
107808                  } catch (err) {
107809                      /*istanbul ignore next - doesn't throw in node 0.10*/
107810                      callback(err);
107811                  }
107812              });
107813          };
107814  
107815          // override dns.resolveCname method
107816          dns.resolveCname = function (domain, callback) {
107817              cache.get('resolveCname_' + domain, function (error, record) {
107818                  if (record) {
107819                      return callback(error, deepCopy(record));
107820                  }
107821                  try {
107822                      backup_object.resolveCname(domain, function (err, addresses) {
107823                          if (err) {
107824                              return callback(err);
107825                          }
107826                          cache.set('resolveCname_' + domain, addresses, function () {
107827                              callback(err, deepCopy(addresses));
107828                          });
107829                      });
107830                  } catch (err) {
107831                      /*istanbul ignore next - doesn't throw in node 0.10*/
107832                      callback(err);
107833                  }
107834              });
107835          };
107836  
107837          // override dns.reverse method
107838          dns.reverse = function (ip, callback) {
107839              cache.get('reverse_' + ip, function (error, record) {
107840                  if (record) {
107841                      return callback(error, deepCopy(record));
107842                  }
107843                  try {
107844                      backup_object.reverse(ip, function (err, addresses) {
107845                          if (err) {
107846                              return callback(err);
107847                          }
107848                          cache.set('reverse_' + ip, addresses, function () {
107849                              callback(err, deepCopy(addresses));
107850                          });
107851                      });
107852                  } catch (err) {
107853                      /*istanbul ignore next - doesn't throw in node 0.10*/
107854                      callback(err);
107855                  }
107856              });
107857          };
107858          return dns;
107859  };
107860  
107861  module.exports = function(conf) {
107862      return new EnhanceDns(conf);
107863  };
107864  
107865  
107866  /***/ }),
107867  /* 606 */
107868  /***/ (function(module, exports, __webpack_require__) {
107869  
107870  // Named EC curves
107871  
107872  // Requires ec.js, jsbn.js, and jsbn2.js
107873  var BigInteger = __webpack_require__(81).BigInteger
107874  var ECCurveFp = __webpack_require__(139).ECCurveFp
107875  
107876  
107877  // ----------------
107878  // X9ECParameters
107879  
107880  // constructor
107881  function X9ECParameters(curve,g,n,h) {
107882      this.curve = curve;
107883      this.g = g;
107884      this.n = n;
107885      this.h = h;
107886  }
107887  
107888  function x9getCurve() {
107889      return this.curve;
107890  }
107891  
107892  function x9getG() {
107893      return this.g;
107894  }
107895  
107896  function x9getN() {
107897      return this.n;
107898  }
107899  
107900  function x9getH() {
107901      return this.h;
107902  }
107903  
107904  X9ECParameters.prototype.getCurve = x9getCurve;
107905  X9ECParameters.prototype.getG = x9getG;
107906  X9ECParameters.prototype.getN = x9getN;
107907  X9ECParameters.prototype.getH = x9getH;
107908  
107909  // ----------------
107910  // SECNamedCurves
107911  
107912  function fromHex(s) { return new BigInteger(s, 16); }
107913  
107914  function secp128r1() {
107915      // p = 2^128 - 2^97 - 1
107916      var p = fromHex("FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF");
107917      var a = fromHex("FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC");
107918      var b = fromHex("E87579C11079F43DD824993C2CEE5ED3");
107919      //byte[] S = Hex.decode("000E0D4D696E6768756151750CC03A4473D03679");
107920      var n = fromHex("FFFFFFFE0000000075A30D1B9038A115");
107921      var h = BigInteger.ONE;
107922      var curve = new ECCurveFp(p, a, b);
107923      var G = curve.decodePointHex("04"
107924                  + "161FF7528B899B2D0C28607CA52C5B86"
107925  		+ "CF5AC8395BAFEB13C02DA292DDED7A83");
107926      return new X9ECParameters(curve, G, n, h);
107927  }
107928  
107929  function secp160k1() {
107930      // p = 2^160 - 2^32 - 2^14 - 2^12 - 2^9 - 2^8 - 2^7 - 2^3 - 2^2 - 1
107931      var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73");
107932      var a = BigInteger.ZERO;
107933      var b = fromHex("7");
107934      //byte[] S = null;
107935      var n = fromHex("0100000000000000000001B8FA16DFAB9ACA16B6B3");
107936      var h = BigInteger.ONE;
107937      var curve = new ECCurveFp(p, a, b);
107938      var G = curve.decodePointHex("04"
107939                  + "3B4C382CE37AA192A4019E763036F4F5DD4D7EBB"
107940                  + "938CF935318FDCED6BC28286531733C3F03C4FEE");
107941      return new X9ECParameters(curve, G, n, h);
107942  }
107943  
107944  function secp160r1() {
107945      // p = 2^160 - 2^31 - 1
107946      var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF");
107947      var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC");
107948      var b = fromHex("1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45");
107949      //byte[] S = Hex.decode("1053CDE42C14D696E67687561517533BF3F83345");
107950      var n = fromHex("0100000000000000000001F4C8F927AED3CA752257");
107951      var h = BigInteger.ONE;
107952      var curve = new ECCurveFp(p, a, b);
107953      var G = curve.decodePointHex("04"
107954  		+ "4A96B5688EF573284664698968C38BB913CBFC82"
107955  		+ "23A628553168947D59DCC912042351377AC5FB32");
107956      return new X9ECParameters(curve, G, n, h);
107957  }
107958  
107959  function secp192k1() {
107960      // p = 2^192 - 2^32 - 2^12 - 2^8 - 2^7 - 2^6 - 2^3 - 1
107961      var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37");
107962      var a = BigInteger.ZERO;
107963      var b = fromHex("3");
107964      //byte[] S = null;
107965      var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D");
107966      var h = BigInteger.ONE;
107967      var curve = new ECCurveFp(p, a, b);
107968      var G = curve.decodePointHex("04"
107969                  + "DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D"
107970                  + "9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D");
107971      return new X9ECParameters(curve, G, n, h);
107972  }
107973  
107974  function secp192r1() {
107975      // p = 2^192 - 2^64 - 1
107976      var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF");
107977      var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC");
107978      var b = fromHex("64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1");
107979      //byte[] S = Hex.decode("3045AE6FC8422F64ED579528D38120EAE12196D5");
107980      var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831");
107981      var h = BigInteger.ONE;
107982      var curve = new ECCurveFp(p, a, b);
107983      var G = curve.decodePointHex("04"
107984                  + "188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012"
107985                  + "07192B95FFC8DA78631011ED6B24CDD573F977A11E794811");
107986      return new X9ECParameters(curve, G, n, h);
107987  }
107988  
107989  function secp224r1() {
107990      // p = 2^224 - 2^96 + 1
107991      var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001");
107992      var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE");
107993      var b = fromHex("B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4");
107994      //byte[] S = Hex.decode("BD71344799D5C7FCDC45B59FA3B9AB8F6A948BC5");
107995      var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D");
107996      var h = BigInteger.ONE;
107997      var curve = new ECCurveFp(p, a, b);
107998      var G = curve.decodePointHex("04"
107999                  + "B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21"
108000                  + "BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34");
108001      return new X9ECParameters(curve, G, n, h);
108002  }
108003  
108004  function secp256r1() {
108005      // p = 2^224 (2^32 - 1) + 2^192 + 2^96 - 1
108006      var p = fromHex("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF");
108007      var a = fromHex("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC");
108008      var b = fromHex("5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B");
108009      //byte[] S = Hex.decode("C49D360886E704936A6678E1139D26B7819F7E90");
108010      var n = fromHex("FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551");
108011      var h = BigInteger.ONE;
108012      var curve = new ECCurveFp(p, a, b);
108013      var G = curve.decodePointHex("04"
108014                  + "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296"
108015  		+ "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5");
108016      return new X9ECParameters(curve, G, n, h);
108017  }
108018  
108019  // TODO: make this into a proper hashtable
108020  function getSECCurveByName(name) {
108021      if(name == "secp128r1") return secp128r1();
108022      if(name == "secp160k1") return secp160k1();
108023      if(name == "secp160r1") return secp160r1();
108024      if(name == "secp192k1") return secp192k1();
108025      if(name == "secp192r1") return secp192r1();
108026      if(name == "secp224r1") return secp224r1();
108027      if(name == "secp256r1") return secp256r1();
108028      return null;
108029  }
108030  
108031  module.exports = {
108032    "secp128r1":secp128r1,
108033    "secp160k1":secp160k1,
108034    "secp160r1":secp160r1,
108035    "secp192k1":secp192k1,
108036    "secp192r1":secp192r1,
108037    "secp224r1":secp224r1,
108038    "secp256r1":secp256r1
108039  }
108040  
108041  
108042  /***/ }),
108043  /* 607 */
108044  /***/ (function(module, exports, __webpack_require__) {
108045  
108046  "use strict";
108047  /*!
108048   * expand-brackets <https://github.com/jonschlinkert/expand-brackets>
108049   *
108050   * Copyright (c) 2015 Jon Schlinkert.
108051   * Licensed under the MIT license.
108052   */
108053  
108054  
108055  
108056  var isPosixBracket = __webpack_require__(739);
108057  
108058  /**
108059   * POSIX character classes
108060   */
108061  
108062  var POSIX = {
108063    alnum: 'a-zA-Z0-9',
108064    alpha: 'a-zA-Z',
108065    blank: ' \\t',
108066    cntrl: '\\x00-\\x1F\\x7F',
108067    digit: '0-9',
108068    graph: '\\x21-\\x7E',
108069    lower: 'a-z',
108070    print: '\\x20-\\x7E',
108071    punct: '-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~',
108072    space: ' \\t\\r\\n\\v\\f',
108073    upper: 'A-Z',
108074    word:  'A-Za-z0-9_',
108075    xdigit: 'A-Fa-f0-9',
108076  };
108077  
108078  /**
108079   * Expose `brackets`
108080   */
108081  
108082  module.exports = brackets;
108083  
108084  function brackets(str) {
108085    if (!isPosixBracket(str)) {
108086      return str;
108087    }
108088  
108089    var negated = false;
108090    if (str.indexOf('[^') !== -1) {
108091      negated = true;
108092      str = str.split('[^').join('[');
108093    }
108094    if (str.indexOf('[!') !== -1) {
108095      negated = true;
108096      str = str.split('[!').join('[');
108097    }
108098  
108099    var a = str.split('[');
108100    var b = str.split(']');
108101    var imbalanced = a.length !== b.length;
108102  
108103    var parts = str.split(/(?::\]\[:|\[?\[:|:\]\]?)/);
108104    var len = parts.length, i = 0;
108105    var end = '', beg = '';
108106    var res = [];
108107  
108108    // start at the end (innermost) first
108109    while (len--) {
108110      var inner = parts[i++];
108111      if (inner === '^[!' || inner === '[!') {
108112        inner = '';
108113        negated = true;
108114      }
108115  
108116      var prefix = negated ? '^' : '';
108117      var ch = POSIX[inner];
108118  
108119      if (ch) {
108120        res.push('[' + prefix + ch + ']');
108121      } else if (inner) {
108122        if (/^\[?\w-\w\]?$/.test(inner)) {
108123          if (i === parts.length) {
108124            res.push('[' + prefix + inner);
108125          } else if (i === 1) {
108126            res.push(prefix + inner + ']');
108127          } else {
108128            res.push(prefix + inner);
108129          }
108130        } else {
108131          if (i === 1) {
108132            beg += inner;
108133          } else if (i === parts.length) {
108134            end += inner;
108135          } else {
108136            res.push('[' + prefix + inner + ']');
108137          }
108138        }
108139      }
108140    }
108141  
108142    var result = res.join('|');
108143    var rlen = res.length || 1;
108144    if (rlen > 1) {
108145      result = '(?:' + result + ')';
108146      rlen = 1;
108147    }
108148    if (beg) {
108149      rlen++;
108150      if (beg.charAt(0) === '[') {
108151        if (imbalanced) {
108152          beg = '\\[' + beg.slice(1);
108153        } else {
108154          beg += ']';
108155        }
108156      }
108157      result = beg + result;
108158    }
108159    if (end) {
108160      rlen++;
108161      if (end.slice(-1) === ']') {
108162        if (imbalanced) {
108163          end = end.slice(0, end.length - 1) + '\\]';
108164        } else {
108165          end = '[' + end;
108166        }
108167      }
108168      result += end;
108169    }
108170  
108171    if (rlen > 1) {
108172      result = result.split('][').join(']|[');
108173      if (result.indexOf('|') !== -1 && !/\(\?/.test(result)) {
108174        result = '(?:' + result + ')';
108175      }
108176    }
108177  
108178    result = result.replace(/\[+=|=\]+/g, '\\b');
108179    return result;
108180  }
108181  
108182  brackets.makeRe = function(pattern) {
108183    try {
108184      return new RegExp(brackets(pattern));
108185    } catch (err) {}
108186  };
108187  
108188  brackets.isMatch = function(str, pattern) {
108189    try {
108190      return brackets.makeRe(pattern).test(str);
108191    } catch (err) {
108192      return false;
108193    }
108194  };
108195  
108196  brackets.match = function(arr, pattern) {
108197    var len = arr.length, i = 0;
108198    var res = arr.slice();
108199  
108200    var re = brackets.makeRe(pattern);
108201    while (i < len) {
108202      var ele = arr[i++];
108203      if (!re.test(ele)) {
108204        continue;
108205      }
108206      res.splice(i, 1);
108207    }
108208    return res;
108209  };
108210  
108211  
108212  /***/ }),
108213  /* 608 */
108214  /***/ (function(module, exports, __webpack_require__) {
108215  
108216  "use strict";
108217  /*!
108218   * expand-range <https://github.com/jonschlinkert/expand-range>
108219   *
108220   * Copyright (c) 2014-2015, Jon Schlinkert.
108221   * Licensed under the MIT license.
108222   */
108223  
108224  
108225  
108226  var fill = __webpack_require__(609);
108227  
108228  module.exports = function expandRange(str, options, fn) {
108229    if (typeof str !== 'string') {
108230      throw new TypeError('expand-range expects a string.');
108231    }
108232  
108233    if (typeof options === 'function') {
108234      fn = options;
108235      options = {};
108236    }
108237  
108238    if (typeof options === 'boolean') {
108239      options = {};
108240      options.makeRe = true;
108241    }
108242  
108243    // create arguments to pass to fill-range
108244    var opts = options || {};
108245    var args = str.split('..');
108246    var len = args.length;
108247    if (len > 3) { return str; }
108248  
108249    // if only one argument, it can't expand so return it
108250    if (len === 1) { return args; }
108251  
108252    // if `true`, tell fill-range to regexify the string
108253    if (typeof fn === 'boolean' && fn === true) {
108254      opts.makeRe = true;
108255    }
108256  
108257    args.push(opts);
108258    return fill.apply(null, args.concat(fn));
108259  };
108260  
108261  
108262  /***/ }),
108263  /* 609 */
108264  /***/ (function(module, exports, __webpack_require__) {
108265  
108266  "use strict";
108267  /*!
108268   * fill-range <https://github.com/jonschlinkert/fill-range>
108269   *
108270   * Copyright (c) 2014-2018, Jon Schlinkert.
108271   * Released under the MIT License.
108272   */
108273  
108274  
108275  
108276  var isObject = __webpack_require__(611);
108277  var isNumber = __webpack_require__(610);
108278  var randomize = __webpack_require__(787);
108279  var repeatStr = __webpack_require__(797);
108280  var repeat = __webpack_require__(411);
108281  
108282  /**
108283   * Expose `fillRange`
108284   */
108285  
108286  module.exports = fillRange;
108287  
108288  /**
108289   * Return a range of numbers or letters.
108290   *
108291   * @param  {String} `a` Start of the range
108292   * @param  {String} `b` End of the range
108293   * @param  {String} `step` Increment or decrement to use.
108294   * @param  {Function} `fn` Custom function to modify each element in the range.
108295   * @return {Array}
108296   */
108297  
108298  function fillRange(a, b, step, options, fn) {
108299    if (a == null || b == null) {
108300      throw new Error('fill-range expects the first and second args to be strings.');
108301    }
108302  
108303    if (typeof step === 'function') {
108304      fn = step; options = {}; step = null;
108305    }
108306  
108307    if (typeof options === 'function') {
108308      fn = options; options = {};
108309    }
108310  
108311    if (isObject(step)) {
108312      options = step; step = '';
108313    }
108314  
108315    var expand, regex = false, sep = '';
108316    var opts = options || {};
108317  
108318    if (typeof opts.silent === 'undefined') {
108319      opts.silent = true;
108320    }
108321  
108322    step = step || opts.step;
108323  
108324    // store a ref to unmodified arg
108325    var origA = a, origB = b;
108326  
108327    b = (b.toString() === '-0') ? 0 : b;
108328  
108329    if (opts.optimize || opts.makeRe) {
108330      step = step ? (step += '~') : step;
108331      expand = true;
108332      regex = true;
108333      sep = '~';
108334    }
108335  
108336    // handle special step characters
108337    if (typeof step === 'string') {
108338      var match = stepRe().exec(step);
108339  
108340      if (match) {
108341        var i = match.index;
108342        var m = match[0];
108343  
108344        // repeat string
108345        if (m === '+') {
108346          return repeat(a, b);
108347  
108348        // randomize a, `b` times
108349        } else if (m === '?') {
108350          return [randomize(a, b)];
108351  
108352        // expand right, no regex reduction
108353        } else if (m === '>') {
108354          step = step.substr(0, i) + step.substr(i + 1);
108355          expand = true;
108356  
108357        // expand to an array, or if valid create a reduced
108358        // string for a regex logic `or`
108359        } else if (m === '|') {
108360          step = step.substr(0, i) + step.substr(i + 1);
108361          expand = true;
108362          regex = true;
108363          sep = m;
108364  
108365        // expand to an array, or if valid create a reduced
108366        // string for a regex range
108367        } else if (m === '~') {
108368          step = step.substr(0, i) + step.substr(i + 1);
108369          expand = true;
108370          regex = true;
108371          sep = m;
108372        }
108373      } else if (!isNumber(step)) {
108374        if (!opts.silent) {
108375          throw new TypeError('fill-range: invalid step.');
108376        }
108377        return null;
108378      }
108379    }
108380  
108381    if (/[.&*()[\]^%$#@!]/.test(a) || /[.&*()[\]^%$#@!]/.test(b)) {
108382      if (!opts.silent) {
108383        throw new RangeError('fill-range: invalid range arguments.');
108384      }
108385      return null;
108386    }
108387  
108388    // has neither a letter nor number, or has both letters and numbers
108389    // this needs to be after the step logic
108390    if (!noAlphaNum(a) || !noAlphaNum(b) || hasBoth(a) || hasBoth(b)) {
108391      if (!opts.silent) {
108392        throw new RangeError('fill-range: invalid range arguments.');
108393      }
108394      return null;
108395    }
108396  
108397    // validate arguments
108398    var isNumA = isNumber(zeros(a));
108399    var isNumB = isNumber(zeros(b));
108400  
108401    if ((!isNumA && isNumB) || (isNumA && !isNumB)) {
108402      if (!opts.silent) {
108403        throw new TypeError('fill-range: first range argument is incompatible with second.');
108404      }
108405      return null;
108406    }
108407  
108408    // by this point both are the same, so we
108409    // can use A to check going forward.
108410    var isNum = isNumA;
108411    var num = formatStep(step);
108412  
108413    // is the range alphabetical? or numeric?
108414    if (isNum) {
108415      // if numeric, coerce to an integer
108416      a = +a; b = +b;
108417    } else {
108418      // otherwise, get the charCode to expand alpha ranges
108419      a = a.charCodeAt(0);
108420      b = b.charCodeAt(0);
108421    }
108422  
108423    // is the pattern descending?
108424    var isDescending = a > b;
108425  
108426    // don't create a character class if the args are < 0
108427    if (a < 0 || b < 0) {
108428      expand = false;
108429      regex = false;
108430    }
108431  
108432    // detect padding
108433    var padding = isPadded(origA, origB);
108434    var res, pad, arr = [];
108435    var ii = 0;
108436  
108437    // character classes, ranges and logical `or`
108438    if (regex) {
108439      if (shouldExpand(a, b, num, isNum, padding, opts)) {
108440        // make sure the correct separator is used
108441        if (sep === '|' || sep === '~') {
108442          sep = detectSeparator(a, b, num, isNum, isDescending);
108443        }
108444        return wrap([origA, origB], sep, opts);
108445      }
108446    }
108447  
108448    while (isDescending ? (a >= b) : (a <= b)) {
108449      if (padding && isNum) {
108450        pad = padding(a);
108451      }
108452  
108453      // custom function
108454      if (typeof fn === 'function') {
108455        res = fn(a, isNum, pad, ii++);
108456  
108457      // letters
108458      } else if (!isNum) {
108459        if (regex && isInvalidChar(a)) {
108460          res = null;
108461        } else {
108462          res = String.fromCharCode(a);
108463        }
108464  
108465      // numbers
108466      } else {
108467        res = formatPadding(a, pad);
108468      }
108469  
108470      // add result to the array, filtering any nulled values
108471      if (res !== null) arr.push(res);
108472  
108473      // increment or decrement
108474      if (isDescending) {
108475        a -= num;
108476      } else {
108477        a += num;
108478      }
108479    }
108480  
108481    // now that the array is expanded, we need to handle regex
108482    // character classes, ranges or logical `or` that wasn't
108483    // already handled before the loop
108484    if ((regex || expand) && !opts.noexpand) {
108485      // make sure the correct separator is used
108486      if (sep === '|' || sep === '~') {
108487        sep = detectSeparator(a, b, num, isNum, isDescending);
108488      }
108489      if (arr.length === 1 || a < 0 || b < 0) { return arr; }
108490      return wrap(arr, sep, opts);
108491    }
108492  
108493    return arr;
108494  }
108495  
108496  /**
108497   * Wrap the string with the correct regex
108498   * syntax.
108499   */
108500  
108501  function wrap(arr, sep, opts) {
108502    if (sep === '~') { sep = '-'; }
108503    var str = arr.join(sep);
108504    var pre = opts && opts.regexPrefix;
108505  
108506    // regex logical `or`
108507    if (sep === '|') {
108508      str = pre ? pre + str : str;
108509      str = '(' + str + ')';
108510    }
108511  
108512    // regex character class
108513    if (sep === '-') {
108514      str = (pre && pre === '^')
108515        ? pre + str
108516        : str;
108517      str = '[' + str + ']';
108518    }
108519    return [str];
108520  }
108521  
108522  /**
108523   * Check for invalid characters
108524   */
108525  
108526  function isCharClass(a, b, step, isNum, isDescending) {
108527    if (isDescending) { return false; }
108528    if (isNum) { return a <= 9 && b <= 9; }
108529    if (a < b) { return step === 1; }
108530    return false;
108531  }
108532  
108533  /**
108534   * Detect the correct separator to use
108535   */
108536  
108537  function shouldExpand(a, b, num, isNum, padding, opts) {
108538    if (isNum && (a > 9 || b > 9)) { return false; }
108539    return !padding && num === 1 && a < b;
108540  }
108541  
108542  /**
108543   * Detect the correct separator to use
108544   */
108545  
108546  function detectSeparator(a, b, step, isNum, isDescending) {
108547    var isChar = isCharClass(a, b, step, isNum, isDescending);
108548    if (!isChar) {
108549      return '|';
108550    }
108551    return '~';
108552  }
108553  
108554  /**
108555   * Correctly format the step based on type
108556   */
108557  
108558  function formatStep(step) {
108559    return Math.abs(step >> 0) || 1;
108560  }
108561  
108562  /**
108563   * Format padding, taking leading `-` into account
108564   */
108565  
108566  function formatPadding(ch, pad) {
108567    var res = pad ? pad + ch : ch;
108568    if (pad && ch.toString().charAt(0) === '-') {
108569      res = '-' + pad + ch.toString().substr(1);
108570    }
108571    return res.toString();
108572  }
108573  
108574  /**
108575   * Check for invalid characters
108576   */
108577  
108578  function isInvalidChar(str) {
108579    var ch = toStr(str);
108580    return ch === '\\'
108581      || ch === '['
108582      || ch === ']'
108583      || ch === '^'
108584      || ch === '('
108585      || ch === ')'
108586      || ch === '`';
108587  }
108588  
108589  /**
108590   * Convert to a string from a charCode
108591   */
108592  
108593  function toStr(ch) {
108594    return String.fromCharCode(ch);
108595  }
108596  
108597  
108598  /**
108599   * Step regex
108600   */
108601  
108602  function stepRe() {
108603    return /\?|>|\||\+|\~/g;
108604  }
108605  
108606  /**
108607   * Return true if `val` has either a letter
108608   * or a number
108609   */
108610  
108611  function noAlphaNum(val) {
108612    return /[a-z0-9]/i.test(val);
108613  }
108614  
108615  /**
108616   * Return true if `val` has both a letter and
108617   * a number (invalid)
108618   */
108619  
108620  function hasBoth(val) {
108621    return /[a-z][0-9]|[0-9][a-z]/i.test(val);
108622  }
108623  
108624  /**
108625   * Normalize zeros for checks
108626   */
108627  
108628  function zeros(val) {
108629    if (/^-*0+$/.test(val.toString())) {
108630      return '0';
108631    }
108632    return val;
108633  }
108634  
108635  /**
108636   * Return true if `val` has leading zeros,
108637   * or a similar valid pattern.
108638   */
108639  
108640  function hasZeros(val) {
108641    return /[^.]\.|^-*0+[0-9]/.test(val);
108642  }
108643  
108644  /**
108645   * If the string is padded, returns a curried function with
108646   * the a cached padding string, or `false` if no padding.
108647   *
108648   * @param  {*} `origA` String or number.
108649   * @return {String|Boolean}
108650   */
108651  
108652  function isPadded(origA, origB) {
108653    if (hasZeros(origA) || hasZeros(origB)) {
108654      var alen = length(origA);
108655      var blen = length(origB);
108656  
108657      var len = alen >= blen
108658        ? alen
108659        : blen;
108660  
108661      return function (a) {
108662        return repeatStr('0', len - length(a));
108663      };
108664    }
108665    return false;
108666  }
108667  
108668  /**
108669   * Get the string length of `val`
108670   */
108671  
108672  function length(val) {
108673    return val.toString().length;
108674  }
108675  
108676  
108677  /***/ }),
108678  /* 610 */
108679  /***/ (function(module, exports, __webpack_require__) {
108680  
108681  "use strict";
108682  /*!
108683   * is-number <https://github.com/jonschlinkert/is-number>
108684   *
108685   * Copyright (c) 2014-2015, Jon Schlinkert.
108686   * Licensed under the MIT License.
108687   */
108688  
108689  
108690  
108691  var typeOf = __webpack_require__(180);
108692  
108693  module.exports = function isNumber(num) {
108694    var type = typeOf(num);
108695    if (type !== 'number' && type !== 'string') {
108696      return false;
108697    }
108698    var n = +num;
108699    return (n - n + 1) >= 0 && num !== '';
108700  };
108701  
108702  
108703  /***/ }),
108704  /* 611 */
108705  /***/ (function(module, exports, __webpack_require__) {
108706  
108707  "use strict";
108708  /*!
108709   * isobject <https://github.com/jonschlinkert/isobject>
108710   *
108711   * Copyright (c) 2014-2015, Jon Schlinkert.
108712   * Licensed under the MIT License.
108713   */
108714  
108715  
108716  
108717  var isArray = __webpack_require__(398);
108718  
108719  module.exports = function isObject(val) {
108720    return val != null && typeof val === 'object' && isArray(val) === false;
108721  };
108722  
108723  
108724  /***/ }),
108725  /* 612 */
108726  /***/ (function(module, exports, __webpack_require__) {
108727  
108728  "use strict";
108729  /*!
108730   * extglob <https://github.com/jonschlinkert/extglob>
108731   *
108732   * Copyright (c) 2015, Jon Schlinkert.
108733   * Licensed under the MIT License.
108734   */
108735  
108736  
108737  
108738  /**
108739   * Module dependencies
108740   */
108741  
108742  var isExtglob = __webpack_require__(178);
108743  var re, cache = {};
108744  
108745  /**
108746   * Expose `extglob`
108747   */
108748  
108749  module.exports = extglob;
108750  
108751  /**
108752   * Convert the given extglob `string` to a regex-compatible
108753   * string.
108754   *
108755   * ```js
108756   * var extglob = require('extglob');
108757   * extglob('!(a?(b))');
108758   * //=> '(?!a(?:b)?)[^/]*?'
108759   * ```
108760   *
108761   * @param {String} `str` The string to convert.
108762   * @param {Object} `options`
108763   *   @option {Boolean} [options] `esc` If `false` special characters will not be escaped. Defaults to `true`.
108764   *   @option {Boolean} [options] `regex` If `true` a regular expression is returned instead of a string.
108765   * @return {String}
108766   * @api public
108767   */
108768  
108769  
108770  function extglob(str, opts) {
108771    opts = opts || {};
108772    var o = {}, i = 0;
108773  
108774    // fix common character reversals
108775    // '*!(.js)' => '*.!(js)'
108776    str = str.replace(/!\(([^\w*()])/g, '$1!(');
108777  
108778    // support file extension negation
108779    str = str.replace(/([*\/])\.!\([*]\)/g, function (m, ch) {
108780      if (ch === '/') {
108781        return escape('\\/[^.]+');
108782      }
108783      return escape('[^.]+');
108784    });
108785  
108786    // create a unique key for caching by
108787    // combining the string and options
108788    var key = str
108789      + String(!!opts.regex)
108790      + String(!!opts.contains)
108791      + String(!!opts.escape);
108792  
108793    if (cache.hasOwnProperty(key)) {
108794      return cache[key];
108795    }
108796  
108797    if (!(re instanceof RegExp)) {
108798      re = regex();
108799    }
108800  
108801    opts.negate = false;
108802    var m;
108803  
108804    while (m = re.exec(str)) {
108805      var prefix = m[1];
108806      var inner = m[3];
108807      if (prefix === '!') {
108808        opts.negate = true;
108809      }
108810  
108811      var id = '__EXTGLOB_' + (i++) + '__';
108812      // use the prefix of the _last_ (outtermost) pattern
108813      o[id] = wrap(inner, prefix, opts.escape);
108814      str = str.split(m[0]).join(id);
108815    }
108816  
108817    var keys = Object.keys(o);
108818    var len = keys.length;
108819  
108820    // we have to loop again to allow us to convert
108821    // patterns in reverse order (starting with the
108822    // innermost/last pattern first)
108823    while (len--) {
108824      var prop = keys[len];
108825      str = str.split(prop).join(o[prop]);
108826    }
108827  
108828    var result = opts.regex
108829      ? toRegex(str, opts.contains, opts.negate)
108830      : str;
108831  
108832    result = result.split('.').join('\\.');
108833  
108834    // cache the result and return it
108835    return (cache[key] = result);
108836  }
108837  
108838  /**
108839   * Convert `string` to a regex string.
108840   *
108841   * @param  {String} `str`
108842   * @param  {String} `prefix` Character that determines how to wrap the string.
108843   * @param  {Boolean} `esc` If `false` special characters will not be escaped. Defaults to `true`.
108844   * @return {String}
108845   */
108846  
108847  function wrap(inner, prefix, esc) {
108848    if (esc) inner = escape(inner);
108849  
108850    switch (prefix) {
108851      case '!':
108852        return '(?!' + inner + ')[^/]' + (esc ? '%%%~' : '*?');
108853      case '@':
108854        return '(?:' + inner + ')';
108855      case '+':
108856        return '(?:' + inner + ')+';
108857      case '*':
108858        return '(?:' + inner + ')' + (esc ? '%%' : '*')
108859      case '?':
108860        return '(?:' + inner + '|)';
108861      default:
108862        return inner;
108863    }
108864  }
108865  
108866  function escape(str) {
108867    str = str.split('*').join('[^/]%%%~');
108868    str = str.split('.').join('\\.');
108869    return str;
108870  }
108871  
108872  /**
108873   * extglob regex.
108874   */
108875  
108876  function regex() {
108877    return /(\\?[@?!+*$]\\?)(\(([^()]*?)\))/;
108878  }
108879  
108880  /**
108881   * Negation regex
108882   */
108883  
108884  function negate(str) {
108885    return '(?!^' + str + ').*$';
108886  }
108887  
108888  /**
108889   * Create the regex to do the matching. If
108890   * the leading character in the `pattern` is `!`
108891   * a negation regex is returned.
108892   *
108893   * @param {String} `pattern`
108894   * @param {Boolean} `contains` Allow loose matching.
108895   * @param {Boolean} `isNegated` True if the pattern is a negation pattern.
108896   */
108897  
108898  function toRegex(pattern, contains, isNegated) {
108899    var prefix = contains ? '^' : '';
108900    var after = contains ? '$' : '';
108901    pattern = ('(?:' + pattern + ')' + after);
108902    if (isNegated) {
108903      pattern = prefix + negate(pattern);
108904    }
108905    return new RegExp(prefix + pattern);
108906  }
108907  
108908  
108909  /***/ }),
108910  /* 613 */
108911  /***/ (function(module, exports, __webpack_require__) {
108912  
108913  /*
108914   * extsprintf.js: extended POSIX-style sprintf
108915   */
108916  
108917  var mod_assert = __webpack_require__(28);
108918  var mod_util = __webpack_require__(3);
108919  
108920  /*
108921   * Public interface
108922   */
108923  exports.sprintf = jsSprintf;
108924  exports.printf = jsPrintf;
108925  exports.fprintf = jsFprintf;
108926  
108927  /*
108928   * Stripped down version of s[n]printf(3c).  We make a best effort to throw an
108929   * exception when given a format string we don't understand, rather than
108930   * ignoring it, so that we won't break existing programs if/when we go implement
108931   * the rest of this.
108932   *
108933   * This implementation currently supports specifying
108934   *	- field alignment ('-' flag),
108935   * 	- zero-pad ('0' flag)
108936   *	- always show numeric sign ('+' flag),
108937   *	- field width
108938   *	- conversions for strings, decimal integers, and floats (numbers).
108939   *	- argument size specifiers.  These are all accepted but ignored, since
108940   *	  Javascript has no notion of the physical size of an argument.
108941   *
108942   * Everything else is currently unsupported, most notably precision, unsigned
108943   * numbers, non-decimal numbers, and characters.
108944   */
108945  function jsSprintf(fmt)
108946  {
108947  	var regex = [
108948  	    '([^%]*)',				/* normal text */
108949  	    '%',				/* start of format */
108950  	    '([\'\\-+ #0]*?)',			/* flags (optional) */
108951  	    '([1-9]\\d*)?',			/* width (optional) */
108952  	    '(\\.([1-9]\\d*))?',		/* precision (optional) */
108953  	    '[lhjztL]*?',			/* length mods (ignored) */
108954  	    '([diouxXfFeEgGaAcCsSp%jr])'	/* conversion */
108955  	].join('');
108956  
108957  	var re = new RegExp(regex);
108958  	var args = Array.prototype.slice.call(arguments, 1);
108959  	var flags, width, precision, conversion;
108960  	var left, pad, sign, arg, match;
108961  	var ret = '';
108962  	var argn = 1;
108963  
108964  	mod_assert.equal('string', typeof (fmt));
108965  
108966  	while ((match = re.exec(fmt)) !== null) {
108967  		ret += match[1];
108968  		fmt = fmt.substring(match[0].length);
108969  
108970  		flags = match[2] || '';
108971  		width = match[3] || 0;
108972  		precision = match[4] || '';
108973  		conversion = match[6];
108974  		left = false;
108975  		sign = false;
108976  		pad = ' ';
108977  
108978  		if (conversion == '%') {
108979  			ret += '%';
108980  			continue;
108981  		}
108982  
108983  		if (args.length === 0)
108984  			throw (new Error('too few args to sprintf'));
108985  
108986  		arg = args.shift();
108987  		argn++;
108988  
108989  		if (flags.match(/[\' #]/))
108990  			throw (new Error(
108991  			    'unsupported flags: ' + flags));
108992  
108993  		if (precision.length > 0)
108994  			throw (new Error(
108995  			    'non-zero precision not supported'));
108996  
108997  		if (flags.match(/-/))
108998  			left = true;
108999  
109000  		if (flags.match(/0/))
109001  			pad = '0';
109002  
109003  		if (flags.match(/\+/))
109004  			sign = true;
109005  
109006  		switch (conversion) {
109007  		case 's':
109008  			if (arg === undefined || arg === null)
109009  				throw (new Error('argument ' + argn +
109010  				    ': attempted to print undefined or null ' +
109011  				    'as a string'));
109012  			ret += doPad(pad, width, left, arg.toString());
109013  			break;
109014  
109015  		case 'd':
109016  			arg = Math.floor(arg);
109017  			/*jsl:fallthru*/
109018  		case 'f':
109019  			sign = sign && arg > 0 ? '+' : '';
109020  			ret += sign + doPad(pad, width, left,
109021  			    arg.toString());
109022  			break;
109023  
109024  		case 'x':
109025  			ret += doPad(pad, width, left, arg.toString(16));
109026  			break;
109027  
109028  		case 'j': /* non-standard */
109029  			if (width === 0)
109030  				width = 10;
109031  			ret += mod_util.inspect(arg, false, width);
109032  			break;
109033  
109034  		case 'r': /* non-standard */
109035  			ret += dumpException(arg);
109036  			break;
109037  
109038  		default:
109039  			throw (new Error('unsupported conversion: ' +
109040  			    conversion));
109041  		}
109042  	}
109043  
109044  	ret += fmt;
109045  	return (ret);
109046  }
109047  
109048  function jsPrintf() {
109049  	var args = Array.prototype.slice.call(arguments);
109050  	args.unshift(process.stdout);
109051  	jsFprintf.apply(null, args);
109052  }
109053  
109054  function jsFprintf(stream) {
109055  	var args = Array.prototype.slice.call(arguments, 1);
109056  	return (stream.write(jsSprintf.apply(this, args)));
109057  }
109058  
109059  function doPad(chr, width, left, str)
109060  {
109061  	var ret = str;
109062  
109063  	while (ret.length < width) {
109064  		if (left)
109065  			ret += chr;
109066  		else
109067  			ret = chr + ret;
109068  	}
109069  
109070  	return (ret);
109071  }
109072  
109073  /*
109074   * This function dumps long stack traces for exceptions having a cause() method.
109075   * See node-verror for an example.
109076   */
109077  function dumpException(ex)
109078  {
109079  	var ret;
109080  
109081  	if (!(ex instanceof Error))
109082  		throw (new Error(jsSprintf('invalid type for %%r: %j', ex)));
109083  
109084  	/* Note that V8 prepends "ex.stack" with ex.toString(). */
109085  	ret = 'EXCEPTION: ' + ex.constructor.name + ': ' + ex.stack;
109086  
109087  	if (ex.cause && typeof (ex.cause) === 'function') {
109088  		var cex = ex.cause();
109089  		if (cex) {
109090  			ret += '\nCaused by: ' + dumpException(cex);
109091  		}
109092  	}
109093  
109094  	return (ret);
109095  }
109096  
109097  
109098  /***/ }),
109099  /* 614 */
109100  /***/ (function(module, exports) {
109101  
109102  /*!
109103   * filename-regex <https://github.com/regexps/filename-regex>
109104   *
109105   * Copyright (c) 2014-2015, Jon Schlinkert
109106   * Licensed under the MIT license.
109107   */
109108  
109109  module.exports = function filenameRegex() {
109110    return /([^\\\/]+)$/;
109111  };
109112  
109113  
109114  /***/ }),
109115  /* 615 */
109116  /***/ (function(module, exports, __webpack_require__) {
109117  
109118  "use strict";
109119  /*!
109120   * for-in <https://github.com/jonschlinkert/for-in>
109121   *
109122   * Copyright (c) 2014-2017, Jon Schlinkert.
109123   * Released under the MIT License.
109124   */
109125  
109126  
109127  
109128  module.exports = function forIn(obj, fn, thisArg) {
109129    for (var key in obj) {
109130      if (fn.call(thisArg, obj[key], key, obj) === false) {
109131        break;
109132      }
109133    }
109134  };
109135  
109136  
109137  /***/ }),
109138  /* 616 */
109139  /***/ (function(module, exports, __webpack_require__) {
109140  
109141  module.exports = ForeverAgent
109142  ForeverAgent.SSL = ForeverAgentSSL
109143  
109144  var util = __webpack_require__(3)
109145    , Agent = __webpack_require__(87).Agent
109146    , net = __webpack_require__(164)
109147    , tls = __webpack_require__(467)
109148    , AgentSSL = __webpack_require__(196).Agent
109149    
109150  function getConnectionName(host, port) {  
109151    var name = ''
109152    if (typeof host === 'string') {
109153      name = host + ':' + port
109154    } else {
109155      // For node.js v012.0 and iojs-v1.5.1, host is an object. And any existing localAddress is part of the connection name.
109156      name = host.host + ':' + host.port + ':' + (host.localAddress ? (host.localAddress + ':') : ':')
109157    }
109158    return name
109159  }    
109160  
109161  function ForeverAgent(options) {
109162    var self = this
109163    self.options = options || {}
109164    self.requests = {}
109165    self.sockets = {}
109166    self.freeSockets = {}
109167    self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets
109168    self.minSockets = self.options.minSockets || ForeverAgent.defaultMinSockets
109169    self.on('free', function(socket, host, port) {
109170      var name = getConnectionName(host, port)
109171  
109172      if (self.requests[name] && self.requests[name].length) {
109173        self.requests[name].shift().onSocket(socket)
109174      } else if (self.sockets[name].length < self.minSockets) {
109175        if (!self.freeSockets[name]) self.freeSockets[name] = []
109176        self.freeSockets[name].push(socket)
109177        
109178        // if an error happens while we don't use the socket anyway, meh, throw the socket away
109179        var onIdleError = function() {
109180          socket.destroy()
109181        }
109182        socket._onIdleError = onIdleError
109183        socket.on('error', onIdleError)
109184      } else {
109185        // If there are no pending requests just destroy the
109186        // socket and it will get removed from the pool. This
109187        // gets us out of timeout issues and allows us to
109188        // default to Connection:keep-alive.
109189        socket.destroy()
109190      }
109191    })
109192  
109193  }
109194  util.inherits(ForeverAgent, Agent)
109195  
109196  ForeverAgent.defaultMinSockets = 5
109197  
109198  
109199  ForeverAgent.prototype.createConnection = net.createConnection
109200  ForeverAgent.prototype.addRequestNoreuse = Agent.prototype.addRequest
109201  ForeverAgent.prototype.addRequest = function(req, host, port) {
109202    var name = getConnectionName(host, port)
109203    
109204    if (typeof host !== 'string') {
109205      var options = host
109206      port = options.port
109207      host = options.host
109208    }
109209  
109210    if (this.freeSockets[name] && this.freeSockets[name].length > 0 && !req.useChunkedEncodingByDefault) {
109211      var idleSocket = this.freeSockets[name].pop()
109212      idleSocket.removeListener('error', idleSocket._onIdleError)
109213      delete idleSocket._onIdleError
109214      req._reusedSocket = true
109215      req.onSocket(idleSocket)
109216    } else {
109217      this.addRequestNoreuse(req, host, port)
109218    }
109219  }
109220  
109221  ForeverAgent.prototype.removeSocket = function(s, name, host, port) {
109222    if (this.sockets[name]) {
109223      var index = this.sockets[name].indexOf(s)
109224      if (index !== -1) {
109225        this.sockets[name].splice(index, 1)
109226      }
109227    } else if (this.sockets[name] && this.sockets[name].length === 0) {
109228      // don't leak
109229      delete this.sockets[name]
109230      delete this.requests[name]
109231    }
109232    
109233    if (this.freeSockets[name]) {
109234      var index = this.freeSockets[name].indexOf(s)
109235      if (index !== -1) {
109236        this.freeSockets[name].splice(index, 1)
109237        if (this.freeSockets[name].length === 0) {
109238          delete this.freeSockets[name]
109239        }
109240      }
109241    }
109242  
109243    if (this.requests[name] && this.requests[name].length) {
109244      // If we have pending requests and a socket gets closed a new one
109245      // needs to be created to take over in the pool for the one that closed.
109246      this.createSocket(name, host, port).emit('free')
109247    }
109248  }
109249  
109250  function ForeverAgentSSL (options) {
109251    ForeverAgent.call(this, options)
109252  }
109253  util.inherits(ForeverAgentSSL, ForeverAgent)
109254  
109255  ForeverAgentSSL.prototype.createConnection = createConnectionSSL
109256  ForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest
109257  
109258  function createConnectionSSL (port, host, options) {
109259    if (typeof port === 'object') {
109260      options = port;
109261    } else if (typeof host === 'object') {
109262      options = host;
109263    } else if (typeof options === 'object') {
109264      options = options;
109265    } else {
109266      options = {};
109267    }
109268  
109269    if (typeof port === 'number') {
109270      options.port = port;
109271    }
109272  
109273    if (typeof host === 'string') {
109274      options.host = host;
109275    }
109276  
109277    return tls.connect(options);
109278  }
109279  
109280  
109281  /***/ }),
109282  /* 617 */
109283  /***/ (function(module, exports, __webpack_require__) {
109284  
109285  var CombinedStream = __webpack_require__(379);
109286  var util = __webpack_require__(3);
109287  var path = __webpack_require__(0);
109288  var http = __webpack_require__(87);
109289  var https = __webpack_require__(196);
109290  var parseUrl = __webpack_require__(24).parse;
109291  var fs = __webpack_require__(4);
109292  var mime = __webpack_require__(400);
109293  var asynckit = __webpack_require__(485);
109294  var populate = __webpack_require__(618);
109295  
109296  // Public API
109297  module.exports = FormData;
109298  
109299  // make it a Stream
109300  util.inherits(FormData, CombinedStream);
109301  
109302  /**
109303   * Create readable "multipart/form-data" streams.
109304   * Can be used to submit forms
109305   * and file uploads to other web applications.
109306   *
109307   * @constructor
109308   * @param {Object} options - Properties to be added/overriden for FormData and CombinedStream
109309   */
109310  function FormData(options) {
109311    if (!(this instanceof FormData)) {
109312      return new FormData();
109313    }
109314  
109315    this._overheadLength = 0;
109316    this._valueLength = 0;
109317    this._valuesToMeasure = [];
109318  
109319    CombinedStream.call(this);
109320  
109321    options = options || {};
109322    for (var option in options) {
109323      this[option] = options[option];
109324    }
109325  }
109326  
109327  FormData.LINE_BREAK = '\r\n';
109328  FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream';
109329  
109330  FormData.prototype.append = function(field, value, options) {
109331  
109332    options = options || {};
109333  
109334    // allow filename as single option
109335    if (typeof options == 'string') {
109336      options = {filename: options};
109337    }
109338  
109339    var append = CombinedStream.prototype.append.bind(this);
109340  
109341    // all that streamy business can't handle numbers
109342    if (typeof value == 'number') {
109343      value = '' + value;
109344    }
109345  
109346    // https://github.com/felixge/node-form-data/issues/38
109347    if (util.isArray(value)) {
109348      // Please convert your array into string
109349      // the way web server expects it
109350      this._error(new Error('Arrays are not supported.'));
109351      return;
109352    }
109353  
109354    var header = this._multiPartHeader(field, value, options);
109355    var footer = this._multiPartFooter();
109356  
109357    append(header);
109358    append(value);
109359    append(footer);
109360  
109361    // pass along options.knownLength
109362    this._trackLength(header, value, options);
109363  };
109364  
109365  FormData.prototype._trackLength = function(header, value, options) {
109366    var valueLength = 0;
109367  
109368    // used w/ getLengthSync(), when length is known.
109369    // e.g. for streaming directly from a remote server,
109370    // w/ a known file a size, and not wanting to wait for
109371    // incoming file to finish to get its size.
109372    if (options.knownLength != null) {
109373      valueLength += +options.knownLength;
109374    } else if (Buffer.isBuffer(value)) {
109375      valueLength = value.length;
109376    } else if (typeof value === 'string') {
109377      valueLength = Buffer.byteLength(value);
109378    }
109379  
109380    this._valueLength += valueLength;
109381  
109382    // @check why add CRLF? does this account for custom/multiple CRLFs?
109383    this._overheadLength +=
109384      Buffer.byteLength(header) +
109385      FormData.LINE_BREAK.length;
109386  
109387    // empty or either doesn't have path or not an http response
109388    if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) {
109389      return;
109390    }
109391  
109392    // no need to bother with the length
109393    if (!options.knownLength) {
109394      this._valuesToMeasure.push(value);
109395    }
109396  };
109397  
109398  FormData.prototype._lengthRetriever = function(value, callback) {
109399  
109400    if (value.hasOwnProperty('fd')) {
109401  
109402      // take read range into a account
109403      // `end` = Infinity –> read file till the end
109404      //
109405      // TODO: Looks like there is bug in Node fs.createReadStream
109406      // it doesn't respect `end` options without `start` options
109407      // Fix it when node fixes it.
109408      // https://github.com/joyent/node/issues/7819
109409      if (value.end != undefined && value.end != Infinity && value.start != undefined) {
109410  
109411        // when end specified
109412        // no need to calculate range
109413        // inclusive, starts with 0
109414        callback(null, value.end + 1 - (value.start ? value.start : 0));
109415  
109416      // not that fast snoopy
109417      } else {
109418        // still need to fetch file size from fs
109419        fs.stat(value.path, function(err, stat) {
109420  
109421          var fileSize;
109422  
109423          if (err) {
109424            callback(err);
109425            return;
109426          }
109427  
109428          // update final size based on the range options
109429          fileSize = stat.size - (value.start ? value.start : 0);
109430          callback(null, fileSize);
109431        });
109432      }
109433  
109434    // or http response
109435    } else if (value.hasOwnProperty('httpVersion')) {
109436      callback(null, +value.headers['content-length']);
109437  
109438    // or request stream http://github.com/mikeal/request
109439    } else if (value.hasOwnProperty('httpModule')) {
109440      // wait till response come back
109441      value.on('response', function(response) {
109442        value.pause();
109443        callback(null, +response.headers['content-length']);
109444      });
109445      value.resume();
109446  
109447    // something else
109448    } else {
109449      callback('Unknown stream');
109450    }
109451  };
109452  
109453  FormData.prototype._multiPartHeader = function(field, value, options) {
109454    // custom header specified (as string)?
109455    // it becomes responsible for boundary
109456    // (e.g. to handle extra CRLFs on .NET servers)
109457    if (typeof options.header == 'string') {
109458      return options.header;
109459    }
109460  
109461    var contentDisposition = this._getContentDisposition(value, options);
109462    var contentType = this._getContentType(value, options);
109463  
109464    var contents = '';
109465    var headers  = {
109466      // add custom disposition as third element or keep it two elements if not
109467      'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []),
109468      // if no content type. allow it to be empty array
109469      'Content-Type': [].concat(contentType || [])
109470    };
109471  
109472    // allow custom headers.
109473    if (typeof options.header == 'object') {
109474      populate(headers, options.header);
109475    }
109476  
109477    var header;
109478    for (var prop in headers) {
109479      if (!headers.hasOwnProperty(prop)) continue;
109480      header = headers[prop];
109481  
109482      // skip nullish headers.
109483      if (header == null) {
109484        continue;
109485      }
109486  
109487      // convert all headers to arrays.
109488      if (!Array.isArray(header)) {
109489        header = [header];
109490      }
109491  
109492      // add non-empty headers.
109493      if (header.length) {
109494        contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK;
109495      }
109496    }
109497  
109498    return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK;
109499  };
109500  
109501  FormData.prototype._getContentDisposition = function(value, options) {
109502  
109503    var filename
109504      , contentDisposition
109505      ;
109506  
109507    if (typeof options.filepath === 'string') {
109508      // custom filepath for relative paths
109509      filename = path.normalize(options.filepath).replace(/\\/g, '/');
109510    } else if (options.filename || value.name || value.path) {
109511      // custom filename take precedence
109512      // formidable and the browser add a name property
109513      // fs- and request- streams have path property
109514      filename = path.basename(options.filename || value.name || value.path);
109515    } else if (value.readable && value.hasOwnProperty('httpVersion')) {
109516      // or try http response
109517      filename = path.basename(value.client._httpMessage.path);
109518    }
109519  
109520    if (filename) {
109521      contentDisposition = 'filename="' + filename + '"';
109522    }
109523  
109524    return contentDisposition;
109525  };
109526  
109527  FormData.prototype._getContentType = function(value, options) {
109528  
109529    // use custom content-type above all
109530    var contentType = options.contentType;
109531  
109532    // or try `name` from formidable, browser
109533    if (!contentType && value.name) {
109534      contentType = mime.lookup(value.name);
109535    }
109536  
109537    // or try `path` from fs-, request- streams
109538    if (!contentType && value.path) {
109539      contentType = mime.lookup(value.path);
109540    }
109541  
109542    // or if it's http-reponse
109543    if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) {
109544      contentType = value.headers['content-type'];
109545    }
109546  
109547    // or guess it from the filepath or filename
109548    if (!contentType && (options.filepath || options.filename)) {
109549      contentType = mime.lookup(options.filepath || options.filename);
109550    }
109551  
109552    // fallback to the default content type if `value` is not simple value
109553    if (!contentType && typeof value == 'object') {
109554      contentType = FormData.DEFAULT_CONTENT_TYPE;
109555    }
109556  
109557    return contentType;
109558  };
109559  
109560  FormData.prototype._multiPartFooter = function() {
109561    return function(next) {
109562      var footer = FormData.LINE_BREAK;
109563  
109564      var lastPart = (this._streams.length === 0);
109565      if (lastPart) {
109566        footer += this._lastBoundary();
109567      }
109568  
109569      next(footer);
109570    }.bind(this);
109571  };
109572  
109573  FormData.prototype._lastBoundary = function() {
109574    return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK;
109575  };
109576  
109577  FormData.prototype.getHeaders = function(userHeaders) {
109578    var header;
109579    var formHeaders = {
109580      'content-type': 'multipart/form-data; boundary=' + this.getBoundary()
109581    };
109582  
109583    for (header in userHeaders) {
109584      if (userHeaders.hasOwnProperty(header)) {
109585        formHeaders[header.toLowerCase()] = userHeaders[header];
109586      }
109587    }
109588  
109589    return formHeaders;
109590  };
109591  
109592  FormData.prototype.getBoundary = function() {
109593    if (!this._boundary) {
109594      this._generateBoundary();
109595    }
109596  
109597    return this._boundary;
109598  };
109599  
109600  FormData.prototype._generateBoundary = function() {
109601    // This generates a 50 character boundary similar to those used by Firefox.
109602    // They are optimized for boyer-moore parsing.
109603    var boundary = '--------------------------';
109604    for (var i = 0; i < 24; i++) {
109605      boundary += Math.floor(Math.random() * 10).toString(16);
109606    }
109607  
109608    this._boundary = boundary;
109609  };
109610  
109611  // Note: getLengthSync DOESN'T calculate streams length
109612  // As workaround one can calculate file size manually
109613  // and add it as knownLength option
109614  FormData.prototype.getLengthSync = function() {
109615    var knownLength = this._overheadLength + this._valueLength;
109616  
109617    // Don't get confused, there are 3 "internal" streams for each keyval pair
109618    // so it basically checks if there is any value added to the form
109619    if (this._streams.length) {
109620      knownLength += this._lastBoundary().length;
109621    }
109622  
109623    // https://github.com/form-data/form-data/issues/40
109624    if (!this.hasKnownLength()) {
109625      // Some async length retrievers are present
109626      // therefore synchronous length calculation is false.
109627      // Please use getLength(callback) to get proper length
109628      this._error(new Error('Cannot calculate proper length in synchronous way.'));
109629    }
109630  
109631    return knownLength;
109632  };
109633  
109634  // Public API to check if length of added values is known
109635  // https://github.com/form-data/form-data/issues/196
109636  // https://github.com/form-data/form-data/issues/262
109637  FormData.prototype.hasKnownLength = function() {
109638    var hasKnownLength = true;
109639  
109640    if (this._valuesToMeasure.length) {
109641      hasKnownLength = false;
109642    }
109643  
109644    return hasKnownLength;
109645  };
109646  
109647  FormData.prototype.getLength = function(cb) {
109648    var knownLength = this._overheadLength + this._valueLength;
109649  
109650    if (this._streams.length) {
109651      knownLength += this._lastBoundary().length;
109652    }
109653  
109654    if (!this._valuesToMeasure.length) {
109655      process.nextTick(cb.bind(this, null, knownLength));
109656      return;
109657    }
109658  
109659    asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) {
109660      if (err) {
109661        cb(err);
109662        return;
109663      }
109664  
109665      values.forEach(function(length) {
109666        knownLength += length;
109667      });
109668  
109669      cb(null, knownLength);
109670    });
109671  };
109672  
109673  FormData.prototype.submit = function(params, cb) {
109674    var request
109675      , options
109676      , defaults = {method: 'post'}
109677      ;
109678  
109679    // parse provided url if it's string
109680    // or treat it as options object
109681    if (typeof params == 'string') {
109682  
109683      params = parseUrl(params);
109684      options = populate({
109685        port: params.port,
109686        path: params.pathname,
109687        host: params.hostname,
109688        protocol: params.protocol
109689      }, defaults);
109690  
109691    // use custom params
109692    } else {
109693  
109694      options = populate(params, defaults);
109695      // if no port provided use default one
109696      if (!options.port) {
109697        options.port = options.protocol == 'https:' ? 443 : 80;
109698      }
109699    }
109700  
109701    // put that good code in getHeaders to some use
109702    options.headers = this.getHeaders(params.headers);
109703  
109704    // https if specified, fallback to http in any other case
109705    if (options.protocol == 'https:') {
109706      request = https.request(options);
109707    } else {
109708      request = http.request(options);
109709    }
109710  
109711    // get content length and fire away
109712    this.getLength(function(err, length) {
109713      if (err) {
109714        this._error(err);
109715        return;
109716      }
109717  
109718      // add content length
109719      request.setHeader('Content-Length', length);
109720  
109721      this.pipe(request);
109722      if (cb) {
109723        request.on('error', cb);
109724        request.on('response', cb.bind(this, null));
109725      }
109726    }.bind(this));
109727  
109728    return request;
109729  };
109730  
109731  FormData.prototype._error = function(err) {
109732    if (!this.error) {
109733      this.error = err;
109734      this.pause();
109735      this.emit('error', err);
109736    }
109737  };
109738  
109739  FormData.prototype.toString = function () {
109740    return '[object FormData]';
109741  };
109742  
109743  
109744  /***/ }),
109745  /* 618 */
109746  /***/ (function(module, exports) {
109747  
109748  // populates missing values
109749  module.exports = function(dst, src) {
109750  
109751    Object.keys(src).forEach(function(prop)
109752    {
109753      dst[prop] = dst[prop] || src[prop];
109754    });
109755  
109756    return dst;
109757  };
109758  
109759  
109760  /***/ }),
109761  /* 619 */
109762  /***/ (function(module, exports, __webpack_require__) {
109763  
109764  module.exports = __webpack_require__(4).constants || __webpack_require__(466)
109765  
109766  
109767  /***/ }),
109768  /* 620 */
109769  /***/ (function(module, exports, __webpack_require__) {
109770  
109771  "use strict";
109772  /*!
109773   * glob-base <https://github.com/jonschlinkert/glob-base>
109774   *
109775   * Copyright (c) 2015, Jon Schlinkert.
109776   * Licensed under the MIT License.
109777   */
109778  
109779  
109780  
109781  var path = __webpack_require__(0);
109782  var parent = __webpack_require__(621);
109783  var isGlob = __webpack_require__(179);
109784  
109785  module.exports = function globBase(pattern) {
109786    if (typeof pattern !== 'string') {
109787      throw new TypeError('glob-base expects a string.');
109788    }
109789  
109790    var res = {};
109791    res.base = parent(pattern);
109792    res.isGlob = isGlob(pattern);
109793  
109794    if (res.base !== '.') {
109795      res.glob = pattern.substr(res.base.length);
109796      if (res.glob.charAt(0) === '/') {
109797        res.glob = res.glob.substr(1);
109798      }
109799    } else {
109800      res.glob = pattern;
109801    }
109802  
109803    if (!res.isGlob) {
109804      res.base = dirname(pattern);
109805      res.glob = res.base !== '.'
109806        ? pattern.substr(res.base.length)
109807        : pattern;
109808    }
109809  
109810    if (res.glob.substr(0, 2) === './') {
109811      res.glob = res.glob.substr(2);
109812    }
109813    if (res.glob.charAt(0) === '/') {
109814      res.glob = res.glob.substr(1);
109815    }
109816    return res;
109817  };
109818  
109819  function dirname(glob) {
109820    if (glob.slice(-1) === '/') return glob;
109821    return path.dirname(glob);
109822  }
109823  
109824  
109825  /***/ }),
109826  /* 621 */
109827  /***/ (function(module, exports, __webpack_require__) {
109828  
109829  "use strict";
109830  
109831  
109832  var path = __webpack_require__(0);
109833  var isglob = __webpack_require__(179);
109834  
109835  module.exports = function globParent(str) {
109836  	str += 'a'; // preserves full path in case of trailing path separator
109837  	do {str = path.dirname(str)} while (isglob(str));
109838  	return str;
109839  };
109840  
109841  
109842  /***/ }),
109843  /* 622 */
109844  /***/ (function(module, exports, __webpack_require__) {
109845  
109846  var Stream = __webpack_require__(23).Stream
109847  
109848  module.exports = legacy
109849  
109850  function legacy (fs) {
109851    return {
109852      ReadStream: ReadStream,
109853      WriteStream: WriteStream
109854    }
109855  
109856    function ReadStream (path, options) {
109857      if (!(this instanceof ReadStream)) return new ReadStream(path, options);
109858  
109859      Stream.call(this);
109860  
109861      var self = this;
109862  
109863      this.path = path;
109864      this.fd = null;
109865      this.readable = true;
109866      this.paused = false;
109867  
109868      this.flags = 'r';
109869      this.mode = 438; /*=0666*/
109870      this.bufferSize = 64 * 1024;
109871  
109872      options = options || {};
109873  
109874      // Mixin options into this
109875      var keys = Object.keys(options);
109876      for (var index = 0, length = keys.length; index < length; index++) {
109877        var key = keys[index];
109878        this[key] = options[key];
109879      }
109880  
109881      if (this.encoding) this.setEncoding(this.encoding);
109882  
109883      if (this.start !== undefined) {
109884        if ('number' !== typeof this.start) {
109885          throw TypeError('start must be a Number');
109886        }
109887        if (this.end === undefined) {
109888          this.end = Infinity;
109889        } else if ('number' !== typeof this.end) {
109890          throw TypeError('end must be a Number');
109891        }
109892  
109893        if (this.start > this.end) {
109894          throw new Error('start must be <= end');
109895        }
109896  
109897        this.pos = this.start;
109898      }
109899  
109900      if (this.fd !== null) {
109901        process.nextTick(function() {
109902          self._read();
109903        });
109904        return;
109905      }
109906  
109907      fs.open(this.path, this.flags, this.mode, function (err, fd) {
109908        if (err) {
109909          self.emit('error', err);
109910          self.readable = false;
109911          return;
109912        }
109913  
109914        self.fd = fd;
109915        self.emit('open', fd);
109916        self._read();
109917      })
109918    }
109919  
109920    function WriteStream (path, options) {
109921      if (!(this instanceof WriteStream)) return new WriteStream(path, options);
109922  
109923      Stream.call(this);
109924  
109925      this.path = path;
109926      this.fd = null;
109927      this.writable = true;
109928  
109929      this.flags = 'w';
109930      this.encoding = 'binary';
109931      this.mode = 438; /*=0666*/
109932      this.bytesWritten = 0;
109933  
109934      options = options || {};
109935  
109936      // Mixin options into this
109937      var keys = Object.keys(options);
109938      for (var index = 0, length = keys.length; index < length; index++) {
109939        var key = keys[index];
109940        this[key] = options[key];
109941      }
109942  
109943      if (this.start !== undefined) {
109944        if ('number' !== typeof this.start) {
109945          throw TypeError('start must be a Number');
109946        }
109947        if (this.start < 0) {
109948          throw new Error('start must be >= zero');
109949        }
109950  
109951        this.pos = this.start;
109952      }
109953  
109954      this.busy = false;
109955      this._queue = [];
109956  
109957      if (this.fd === null) {
109958        this._open = fs.open;
109959        this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);
109960        this.flush();
109961      }
109962    }
109963  }
109964  
109965  
109966  /***/ }),
109967  /* 623 */
109968  /***/ (function(module, exports, __webpack_require__) {
109969  
109970  var fs = __webpack_require__(384)
109971  var constants = __webpack_require__(466)
109972  
109973  var origCwd = process.cwd
109974  var cwd = null
109975  
109976  var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform
109977  
109978  process.cwd = function() {
109979    if (!cwd)
109980      cwd = origCwd.call(process)
109981    return cwd
109982  }
109983  try {
109984    process.cwd()
109985  } catch (er) {}
109986  
109987  var chdir = process.chdir
109988  process.chdir = function(d) {
109989    cwd = null
109990    chdir.call(process, d)
109991  }
109992  
109993  module.exports = patch
109994  
109995  function patch (fs) {
109996    // (re-)implement some things that are known busted or missing.
109997  
109998    // lchmod, broken prior to 0.6.2
109999    // back-port the fix here.
110000    if (constants.hasOwnProperty('O_SYMLINK') &&
110001        process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
110002      patchLchmod(fs)
110003    }
110004  
110005    // lutimes implementation, or no-op
110006    if (!fs.lutimes) {
110007      patchLutimes(fs)
110008    }
110009  
110010    // https://github.com/isaacs/node-graceful-fs/issues/4
110011    // Chown should not fail on einval or eperm if non-root.
110012    // It should not fail on enosys ever, as this just indicates
110013    // that a fs doesn't support the intended operation.
110014  
110015    fs.chown = chownFix(fs.chown)
110016    fs.fchown = chownFix(fs.fchown)
110017    fs.lchown = chownFix(fs.lchown)
110018  
110019    fs.chmod = chmodFix(fs.chmod)
110020    fs.fchmod = chmodFix(fs.fchmod)
110021    fs.lchmod = chmodFix(fs.lchmod)
110022  
110023    fs.chownSync = chownFixSync(fs.chownSync)
110024    fs.fchownSync = chownFixSync(fs.fchownSync)
110025    fs.lchownSync = chownFixSync(fs.lchownSync)
110026  
110027    fs.chmodSync = chmodFixSync(fs.chmodSync)
110028    fs.fchmodSync = chmodFixSync(fs.fchmodSync)
110029    fs.lchmodSync = chmodFixSync(fs.lchmodSync)
110030  
110031    fs.stat = statFix(fs.stat)
110032    fs.fstat = statFix(fs.fstat)
110033    fs.lstat = statFix(fs.lstat)
110034  
110035    fs.statSync = statFixSync(fs.statSync)
110036    fs.fstatSync = statFixSync(fs.fstatSync)
110037    fs.lstatSync = statFixSync(fs.lstatSync)
110038  
110039    // if lchmod/lchown do not exist, then make them no-ops
110040    if (!fs.lchmod) {
110041      fs.lchmod = function (path, mode, cb) {
110042        if (cb) process.nextTick(cb)
110043      }
110044      fs.lchmodSync = function () {}
110045    }
110046    if (!fs.lchown) {
110047      fs.lchown = function (path, uid, gid, cb) {
110048        if (cb) process.nextTick(cb)
110049      }
110050      fs.lchownSync = function () {}
110051    }
110052  
110053    // on Windows, A/V software can lock the directory, causing this
110054    // to fail with an EACCES or EPERM if the directory contains newly
110055    // created files.  Try again on failure, for up to 60 seconds.
110056  
110057    // Set the timeout this long because some Windows Anti-Virus, such as Parity
110058    // bit9, may lock files for up to a minute, causing npm package install
110059    // failures. Also, take care to yield the scheduler. Windows scheduling gives
110060    // CPU to a busy looping process, which can cause the program causing the lock
110061    // contention to be starved of CPU by node, so the contention doesn't resolve.
110062    if (platform === "win32") {
110063      fs.rename = (function (fs$rename) { return function (from, to, cb) {
110064        var start = Date.now()
110065        var backoff = 0;
110066        fs$rename(from, to, function CB (er) {
110067          if (er
110068              && (er.code === "EACCES" || er.code === "EPERM")
110069              && Date.now() - start < 60000) {
110070            setTimeout(function() {
110071              fs.stat(to, function (stater, st) {
110072                if (stater && stater.code === "ENOENT")
110073                  fs$rename(from, to, CB);
110074                else
110075                  cb(er)
110076              })
110077            }, backoff)
110078            if (backoff < 100)
110079              backoff += 10;
110080            return;
110081          }
110082          if (cb) cb(er)
110083        })
110084      }})(fs.rename)
110085    }
110086  
110087    // if read() returns EAGAIN, then just try it again.
110088    fs.read = (function (fs$read) { return function (fd, buffer, offset, length, position, callback_) {
110089      var callback
110090      if (callback_ && typeof callback_ === 'function') {
110091        var eagCounter = 0
110092        callback = function (er, _, __) {
110093          if (er && er.code === 'EAGAIN' && eagCounter < 10) {
110094            eagCounter ++
110095            return fs$read.call(fs, fd, buffer, offset, length, position, callback)
110096          }
110097          callback_.apply(this, arguments)
110098        }
110099      }
110100      return fs$read.call(fs, fd, buffer, offset, length, position, callback)
110101    }})(fs.read)
110102  
110103    fs.readSync = (function (fs$readSync) { return function (fd, buffer, offset, length, position) {
110104      var eagCounter = 0
110105      while (true) {
110106        try {
110107          return fs$readSync.call(fs, fd, buffer, offset, length, position)
110108        } catch (er) {
110109          if (er.code === 'EAGAIN' && eagCounter < 10) {
110110            eagCounter ++
110111            continue
110112          }
110113          throw er
110114        }
110115      }
110116    }})(fs.readSync)
110117  }
110118  
110119  function patchLchmod (fs) {
110120    fs.lchmod = function (path, mode, callback) {
110121      fs.open( path
110122             , constants.O_WRONLY | constants.O_SYMLINK
110123             , mode
110124             , function (err, fd) {
110125        if (err) {
110126          if (callback) callback(err)
110127          return
110128        }
110129        // prefer to return the chmod error, if one occurs,
110130        // but still try to close, and report closing errors if they occur.
110131        fs.fchmod(fd, mode, function (err) {
110132          fs.close(fd, function(err2) {
110133            if (callback) callback(err || err2)
110134          })
110135        })
110136      })
110137    }
110138  
110139    fs.lchmodSync = function (path, mode) {
110140      var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)
110141  
110142      // prefer to return the chmod error, if one occurs,
110143      // but still try to close, and report closing errors if they occur.
110144      var threw = true
110145      var ret
110146      try {
110147        ret = fs.fchmodSync(fd, mode)
110148        threw = false
110149      } finally {
110150        if (threw) {
110151          try {
110152            fs.closeSync(fd)
110153          } catch (er) {}
110154        } else {
110155          fs.closeSync(fd)
110156        }
110157      }
110158      return ret
110159    }
110160  }
110161  
110162  function patchLutimes (fs) {
110163    if (constants.hasOwnProperty("O_SYMLINK")) {
110164      fs.lutimes = function (path, at, mt, cb) {
110165        fs.open(path, constants.O_SYMLINK, function (er, fd) {
110166          if (er) {
110167            if (cb) cb(er)
110168            return
110169          }
110170          fs.futimes(fd, at, mt, function (er) {
110171            fs.close(fd, function (er2) {
110172              if (cb) cb(er || er2)
110173            })
110174          })
110175        })
110176      }
110177  
110178      fs.lutimesSync = function (path, at, mt) {
110179        var fd = fs.openSync(path, constants.O_SYMLINK)
110180        var ret
110181        var threw = true
110182        try {
110183          ret = fs.futimesSync(fd, at, mt)
110184          threw = false
110185        } finally {
110186          if (threw) {
110187            try {
110188              fs.closeSync(fd)
110189            } catch (er) {}
110190          } else {
110191            fs.closeSync(fd)
110192          }
110193        }
110194        return ret
110195      }
110196  
110197    } else {
110198      fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }
110199      fs.lutimesSync = function () {}
110200    }
110201  }
110202  
110203  function chmodFix (orig) {
110204    if (!orig) return orig
110205    return function (target, mode, cb) {
110206      return orig.call(fs, target, mode, function (er) {
110207        if (chownErOk(er)) er = null
110208        if (cb) cb.apply(this, arguments)
110209      })
110210    }
110211  }
110212  
110213  function chmodFixSync (orig) {
110214    if (!orig) return orig
110215    return function (target, mode) {
110216      try {
110217        return orig.call(fs, target, mode)
110218      } catch (er) {
110219        if (!chownErOk(er)) throw er
110220      }
110221    }
110222  }
110223  
110224  
110225  function chownFix (orig) {
110226    if (!orig) return orig
110227    return function (target, uid, gid, cb) {
110228      return orig.call(fs, target, uid, gid, function (er) {
110229        if (chownErOk(er)) er = null
110230        if (cb) cb.apply(this, arguments)
110231      })
110232    }
110233  }
110234  
110235  function chownFixSync (orig) {
110236    if (!orig) return orig
110237    return function (target, uid, gid) {
110238      try {
110239        return orig.call(fs, target, uid, gid)
110240      } catch (er) {
110241        if (!chownErOk(er)) throw er
110242      }
110243    }
110244  }
110245  
110246  
110247  function statFix (orig) {
110248    if (!orig) return orig
110249    // Older versions of Node erroneously returned signed integers for
110250    // uid + gid.
110251    return function (target, cb) {
110252      return orig.call(fs, target, function (er, stats) {
110253        if (!stats) return cb.apply(this, arguments)
110254        if (stats.uid < 0) stats.uid += 0x100000000
110255        if (stats.gid < 0) stats.gid += 0x100000000
110256        if (cb) cb.apply(this, arguments)
110257      })
110258    }
110259  }
110260  
110261  function statFixSync (orig) {
110262    if (!orig) return orig
110263    // Older versions of Node erroneously returned signed integers for
110264    // uid + gid.
110265    return function (target) {
110266      var stats = orig.call(fs, target)
110267      if (stats.uid < 0) stats.uid += 0x100000000
110268      if (stats.gid < 0) stats.gid += 0x100000000
110269      return stats;
110270    }
110271  }
110272  
110273  // ENOSYS means that the fs doesn't support the op. Just ignore
110274  // that, because it doesn't matter.
110275  //
110276  // if there's no getuid, or if getuid() is something other
110277  // than 0, and the error is EINVAL or EPERM, then just ignore
110278  // it.
110279  //
110280  // This specific case is a silent failure in cp, install, tar,
110281  // and most other unix tools that manage permissions.
110282  //
110283  // When running as root, or if other types of errors are
110284  // encountered, then it's strict.
110285  function chownErOk (er) {
110286    if (!er)
110287      return true
110288  
110289    if (er.code === "ENOSYS")
110290      return true
110291  
110292    var nonroot = !process.getuid || process.getuid() !== 0
110293    if (nonroot) {
110294      if (er.code === "EINVAL" || er.code === "EPERM")
110295        return true
110296    }
110297  
110298    return false
110299  }
110300  
110301  
110302  /***/ }),
110303  /* 624 */
110304  /***/ (function(module, exports, __webpack_require__) {
110305  
110306  var zlib = __webpack_require__(199)
110307  var peek = __webpack_require__(775)
110308  var through = __webpack_require__(461)
110309  var pumpify = __webpack_require__(782)
110310  var isGzip = __webpack_require__(737)
110311  var isDeflate = __webpack_require__(732)
110312  
110313  var isCompressed = function (data) {
110314    if (isGzip(data)) return 1
110315    if (isDeflate(data)) return 2
110316    return 0
110317  }
110318  
110319  var gunzip = function (maxRecursion) {
110320    if (!(maxRecursion >= 0)) maxRecursion = 3
110321  
110322    return peek({newline: false, maxBuffer: 10}, function (data, swap) {
110323      if (maxRecursion < 0) return swap(new Error('Maximum recursion reached'))
110324      switch (isCompressed(data)) {
110325        case 1:
110326          swap(null, pumpify(zlib.createGunzip(), gunzip(maxRecursion - 1)))
110327          break
110328        case 2:
110329          swap(null, pumpify(zlib.createInflate(), gunzip(maxRecursion - 1)))
110330          break
110331        default:
110332          swap(null, through())
110333      }
110334    })
110335  }
110336  
110337  module.exports = gunzip
110338  
110339  
110340  /***/ }),
110341  /* 625 */
110342  /***/ (function(module, exports) {
110343  
110344  module.exports = {"$id":"afterRequest.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["lastAccess","eTag","hitCount"],"properties":{"expires":{"type":"string","pattern":"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))?"},"lastAccess":{"type":"string","pattern":"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))?"},"eTag":{"type":"string"},"hitCount":{"type":"integer"},"comment":{"type":"string"}}}
110345  
110346  /***/ }),
110347  /* 626 */
110348  /***/ (function(module, exports) {
110349  
110350  module.exports = {"$id":"beforeRequest.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["lastAccess","eTag","hitCount"],"properties":{"expires":{"type":"string","pattern":"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))?"},"lastAccess":{"type":"string","pattern":"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))?"},"eTag":{"type":"string"},"hitCount":{"type":"integer"},"comment":{"type":"string"}}}
110351  
110352  /***/ }),
110353  /* 627 */
110354  /***/ (function(module, exports) {
110355  
110356  module.exports = {"$id":"browser.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","version"],"properties":{"name":{"type":"string"},"version":{"type":"string"},"comment":{"type":"string"}}}
110357  
110358  /***/ }),
110359  /* 628 */
110360  /***/ (function(module, exports) {
110361  
110362  module.exports = {"$id":"cache.json#","$schema":"http://json-schema.org/draft-06/schema#","properties":{"beforeRequest":{"oneOf":[{"type":"null"},{"$ref":"beforeRequest.json#"}]},"afterRequest":{"oneOf":[{"type":"null"},{"$ref":"afterRequest.json#"}]},"comment":{"type":"string"}}}
110363  
110364  /***/ }),
110365  /* 629 */
110366  /***/ (function(module, exports) {
110367  
110368  module.exports = {"$id":"content.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["size","mimeType"],"properties":{"size":{"type":"integer"},"compression":{"type":"integer"},"mimeType":{"type":"string"},"text":{"type":"string"},"encoding":{"type":"string"},"comment":{"type":"string"}}}
110369  
110370  /***/ }),
110371  /* 630 */
110372  /***/ (function(module, exports) {
110373  
110374  module.exports = {"$id":"cookie.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"path":{"type":"string"},"domain":{"type":"string"},"expires":{"type":["string","null"],"format":"date-time"},"httpOnly":{"type":"boolean"},"secure":{"type":"boolean"},"comment":{"type":"string"}}}
110375  
110376  /***/ }),
110377  /* 631 */
110378  /***/ (function(module, exports) {
110379  
110380  module.exports = {"$id":"creator.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","version"],"properties":{"name":{"type":"string"},"version":{"type":"string"},"comment":{"type":"string"}}}
110381  
110382  /***/ }),
110383  /* 632 */
110384  /***/ (function(module, exports) {
110385  
110386  module.exports = {"$id":"entry.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["startedDateTime","time","request","response","cache","timings"],"properties":{"pageref":{"type":"string"},"startedDateTime":{"type":"string","format":"date-time","pattern":"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))"},"time":{"type":"number","min":0},"request":{"$ref":"request.json#"},"response":{"$ref":"response.json#"},"cache":{"$ref":"cache.json#"},"timings":{"$ref":"timings.json#"},"serverIPAddress":{"type":"string","oneOf":[{"format":"ipv4"},{"format":"ipv6"}]},"connection":{"type":"string"},"comment":{"type":"string"}}}
110387  
110388  /***/ }),
110389  /* 633 */
110390  /***/ (function(module, exports) {
110391  
110392  module.exports = {"$id":"har.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["log"],"properties":{"log":{"$ref":"log.json#"}}}
110393  
110394  /***/ }),
110395  /* 634 */
110396  /***/ (function(module, exports) {
110397  
110398  module.exports = {"$id":"header.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"comment":{"type":"string"}}}
110399  
110400  /***/ }),
110401  /* 635 */
110402  /***/ (function(module, exports, __webpack_require__) {
110403  
110404  "use strict";
110405  
110406  
110407  module.exports = {
110408    afterRequest: __webpack_require__(625),
110409    beforeRequest: __webpack_require__(626),
110410    browser: __webpack_require__(627),
110411    cache: __webpack_require__(628),
110412    content: __webpack_require__(629),
110413    cookie: __webpack_require__(630),
110414    creator: __webpack_require__(631),
110415    entry: __webpack_require__(632),
110416    har: __webpack_require__(633),
110417    header: __webpack_require__(634),
110418    log: __webpack_require__(636),
110419    page: __webpack_require__(637),
110420    pageTimings: __webpack_require__(638),
110421    postData: __webpack_require__(639),
110422    query: __webpack_require__(640),
110423    request: __webpack_require__(641),
110424    response: __webpack_require__(642),
110425    timings: __webpack_require__(643)
110426  }
110427  
110428  
110429  /***/ }),
110430  /* 636 */
110431  /***/ (function(module, exports) {
110432  
110433  module.exports = {"$id":"log.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["version","creator","entries"],"properties":{"version":{"type":"string"},"creator":{"$ref":"creator.json#"},"browser":{"$ref":"browser.json#"},"pages":{"type":"array","items":{"$ref":"page.json#"}},"entries":{"type":"array","items":{"$ref":"entry.json#"}},"comment":{"type":"string"}}}
110434  
110435  /***/ }),
110436  /* 637 */
110437  /***/ (function(module, exports) {
110438  
110439  module.exports = {"$id":"page.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["startedDateTime","id","title","pageTimings"],"properties":{"startedDateTime":{"type":"string","format":"date-time","pattern":"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))"},"id":{"type":"string","unique":true},"title":{"type":"string"},"pageTimings":{"$ref":"pageTimings.json#"},"comment":{"type":"string"}}}
110440  
110441  /***/ }),
110442  /* 638 */
110443  /***/ (function(module, exports) {
110444  
110445  module.exports = {"$id":"pageTimings.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","properties":{"onContentLoad":{"type":"number","min":-1},"onLoad":{"type":"number","min":-1},"comment":{"type":"string"}}}
110446  
110447  /***/ }),
110448  /* 639 */
110449  /***/ (function(module, exports) {
110450  
110451  module.exports = {"$id":"postData.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["mimeType"],"properties":{"mimeType":{"type":"string"},"text":{"type":"string"},"params":{"type":"array","required":["name"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"fileName":{"type":"string"},"contentType":{"type":"string"},"comment":{"type":"string"}}},"comment":{"type":"string"}}}
110452  
110453  /***/ }),
110454  /* 640 */
110455  /***/ (function(module, exports) {
110456  
110457  module.exports = {"$id":"query.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"comment":{"type":"string"}}}
110458  
110459  /***/ }),
110460  /* 641 */
110461  /***/ (function(module, exports) {
110462  
110463  module.exports = {"$id":"request.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["method","url","httpVersion","cookies","headers","queryString","headersSize","bodySize"],"properties":{"method":{"type":"string"},"url":{"type":"string","format":"uri"},"httpVersion":{"type":"string"},"cookies":{"type":"array","items":{"$ref":"cookie.json#"}},"headers":{"type":"array","items":{"$ref":"header.json#"}},"queryString":{"type":"array","items":{"$ref":"query.json#"}},"postData":{"$ref":"postData.json#"},"headersSize":{"type":"integer"},"bodySize":{"type":"integer"},"comment":{"type":"string"}}}
110464  
110465  /***/ }),
110466  /* 642 */
110467  /***/ (function(module, exports) {
110468  
110469  module.exports = {"$id":"response.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["status","statusText","httpVersion","cookies","headers","content","redirectURL","headersSize","bodySize"],"properties":{"status":{"type":"integer"},"statusText":{"type":"string"},"httpVersion":{"type":"string"},"cookies":{"type":"array","items":{"$ref":"cookie.json#"}},"headers":{"type":"array","items":{"$ref":"header.json#"}},"content":{"$ref":"content.json#"},"redirectURL":{"type":"string"},"headersSize":{"type":"integer"},"bodySize":{"type":"integer"},"comment":{"type":"string"}}}
110470  
110471  /***/ }),
110472  /* 643 */
110473  /***/ (function(module, exports) {
110474  
110475  module.exports = {"$id":"timings.json#","$schema":"http://json-schema.org/draft-06/schema#","required":["send","wait","receive"],"properties":{"dns":{"type":"number","min":-1},"connect":{"type":"number","min":-1},"blocked":{"type":"number","min":-1},"send":{"type":"number","min":-1},"wait":{"type":"number","min":-1},"receive":{"type":"number","min":-1},"ssl":{"type":"number","min":-1},"comment":{"type":"string"}}}
110476  
110477  /***/ }),
110478  /* 644 */
110479  /***/ (function(module, exports) {
110480  
110481  function HARError (errors) {
110482    var message = 'validation failed'
110483  
110484    this.name = 'HARError'
110485    this.message = message
110486    this.errors = errors
110487  
110488    if (typeof Error.captureStackTrace === 'function') {
110489      Error.captureStackTrace(this, this.constructor)
110490    } else {
110491      this.stack = (new Error(message)).stack
110492    }
110493  }
110494  
110495  HARError.prototype = Error.prototype
110496  
110497  module.exports = HARError
110498  
110499  
110500  /***/ }),
110501  /* 645 */
110502  /***/ (function(module, exports, __webpack_require__) {
110503  
110504  var Ajv = __webpack_require__(647)
110505  var HARError = __webpack_require__(644)
110506  var schemas = __webpack_require__(635)
110507  
110508  var ajv
110509  
110510  function validate (name, data) {
110511    data = data || {}
110512  
110513    // validator config
110514    ajv = ajv || new Ajv({
110515      allErrors: true,
110516      schemas: schemas
110517    })
110518  
110519    var validate = ajv.getSchema(name + '.json')
110520  
110521    return new Promise(function (resolve, reject) {
110522      var valid = validate(data)
110523  
110524      !valid ? reject(new HARError(validate.errors)) : resolve(data)
110525    })
110526  }
110527  
110528  exports.afterRequest = function (data) {
110529    return validate('afterRequest', data)
110530  }
110531  
110532  exports.beforeRequest = function (data) {
110533    return validate('beforeRequest', data)
110534  }
110535  
110536  exports.browser = function (data) {
110537    return validate('browser', data)
110538  }
110539  
110540  exports.cache = function (data) {
110541    return validate('cache', data)
110542  }
110543  
110544  exports.content = function (data) {
110545    return validate('content', data)
110546  }
110547  
110548  exports.cookie = function (data) {
110549    return validate('cookie', data)
110550  }
110551  
110552  exports.creator = function (data) {
110553    return validate('creator', data)
110554  }
110555  
110556  exports.entry = function (data) {
110557    return validate('entry', data)
110558  }
110559  
110560  exports.har = function (data) {
110561    return validate('har', data)
110562  }
110563  
110564  exports.header = function (data) {
110565    return validate('header', data)
110566  }
110567  
110568  exports.log = function (data) {
110569    return validate('log', data)
110570  }
110571  
110572  exports.page = function (data) {
110573    return validate('page', data)
110574  }
110575  
110576  exports.pageTimings = function (data) {
110577    return validate('pageTimings', data)
110578  }
110579  
110580  exports.postData = function (data) {
110581    return validate('postData', data)
110582  }
110583  
110584  exports.query = function (data) {
110585    return validate('query', data)
110586  }
110587  
110588  exports.request = function (data) {
110589    return validate('request', data)
110590  }
110591  
110592  exports.response = function (data) {
110593    return validate('response', data)
110594  }
110595  
110596  exports.timings = function (data) {
110597    return validate('timings', data)
110598  }
110599  
110600  
110601  /***/ }),
110602  /* 646 */
110603  /***/ (function(module, exports, __webpack_require__) {
110604  
110605  "use strict";
110606  
110607  
110608  var KEYWORDS = [
110609    'multipleOf',
110610    'maximum',
110611    'exclusiveMaximum',
110612    'minimum',
110613    'exclusiveMinimum',
110614    'maxLength',
110615    'minLength',
110616    'pattern',
110617    'additionalItems',
110618    'maxItems',
110619    'minItems',
110620    'uniqueItems',
110621    'maxProperties',
110622    'minProperties',
110623    'required',
110624    'additionalProperties',
110625    'enum',
110626    'format',
110627    'const'
110628  ];
110629  
110630  module.exports = function (metaSchema, keywordsJsonPointers) {
110631    for (var i=0; i<keywordsJsonPointers.length; i++) {
110632      metaSchema = JSON.parse(JSON.stringify(metaSchema));
110633      var segments = keywordsJsonPointers[i].split('/');
110634      var keywords = metaSchema;
110635      var j;
110636      for (j=1; j<segments.length; j++)
110637        keywords = keywords[segments[j]];
110638  
110639      for (j=0; j<KEYWORDS.length; j++) {
110640        var key = KEYWORDS[j];
110641        var schema = keywords[key];
110642        if (schema) {
110643          keywords[key] = {
110644            anyOf: [
110645              schema,
110646              { $ref: 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/$data.json#' }
110647            ]
110648          };
110649        }
110650      }
110651    }
110652  
110653    return metaSchema;
110654  };
110655  
110656  
110657  /***/ }),
110658  /* 647 */
110659  /***/ (function(module, exports, __webpack_require__) {
110660  
110661  "use strict";
110662  
110663  
110664  var compileSchema = __webpack_require__(652)
110665    , resolve = __webpack_require__(271)
110666    , Cache = __webpack_require__(648)
110667    , SchemaObject = __webpack_require__(386)
110668    , stableStringify = __webpack_require__(383)
110669    , formats = __webpack_require__(651)
110670    , rules = __webpack_require__(653)
110671    , $dataMetaSchema = __webpack_require__(646)
110672    , patternGroups = __webpack_require__(674)
110673    , util = __webpack_require__(114)
110674    , co = __webpack_require__(377);
110675  
110676  module.exports = Ajv;
110677  
110678  Ajv.prototype.validate = validate;
110679  Ajv.prototype.compile = compile;
110680  Ajv.prototype.addSchema = addSchema;
110681  Ajv.prototype.addMetaSchema = addMetaSchema;
110682  Ajv.prototype.validateSchema = validateSchema;
110683  Ajv.prototype.getSchema = getSchema;
110684  Ajv.prototype.removeSchema = removeSchema;
110685  Ajv.prototype.addFormat = addFormat;
110686  Ajv.prototype.errorsText = errorsText;
110687  
110688  Ajv.prototype._addSchema = _addSchema;
110689  Ajv.prototype._compile = _compile;
110690  
110691  Ajv.prototype.compileAsync = __webpack_require__(650);
110692  var customKeyword = __webpack_require__(673);
110693  Ajv.prototype.addKeyword = customKeyword.add;
110694  Ajv.prototype.getKeyword = customKeyword.get;
110695  Ajv.prototype.removeKeyword = customKeyword.remove;
110696  
110697  var errorClasses = __webpack_require__(270);
110698  Ajv.ValidationError = errorClasses.Validation;
110699  Ajv.MissingRefError = errorClasses.MissingRef;
110700  Ajv.$dataMetaSchema = $dataMetaSchema;
110701  
110702  var META_SCHEMA_ID = 'http://json-schema.org/draft-06/schema';
110703  
110704  var META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes' ];
110705  var META_SUPPORT_DATA = ['/properties'];
110706  
110707  /**
110708   * Creates validator instance.
110709   * Usage: `Ajv(opts)`
110710   * @param {Object} opts optional options
110711   * @return {Object} ajv instance
110712   */
110713  function Ajv(opts) {
110714    if (!(this instanceof Ajv)) return new Ajv(opts);
110715    opts = this._opts = util.copy(opts) || {};
110716    setLogger(this);
110717    this._schemas = {};
110718    this._refs = {};
110719    this._fragments = {};
110720    this._formats = formats(opts.format);
110721    var schemaUriFormat = this._schemaUriFormat = this._formats['uri-reference'];
110722    this._schemaUriFormatFunc = function (str) { return schemaUriFormat.test(str); };
110723  
110724    this._cache = opts.cache || new Cache;
110725    this._loadingSchemas = {};
110726    this._compilations = [];
110727    this.RULES = rules();
110728    this._getId = chooseGetId(opts);
110729  
110730    opts.loopRequired = opts.loopRequired || Infinity;
110731    if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true;
110732    if (opts.serialize === undefined) opts.serialize = stableStringify;
110733    this._metaOpts = getMetaSchemaOptions(this);
110734  
110735    if (opts.formats) addInitialFormats(this);
110736    addDraft6MetaSchema(this);
110737    if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta);
110738    addInitialSchemas(this);
110739    if (opts.patternGroups) patternGroups(this);
110740  }
110741  
110742  
110743  
110744  /**
110745   * Validate data using schema
110746   * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize.
110747   * @this   Ajv
110748   * @param  {String|Object} schemaKeyRef key, ref or schema object
110749   * @param  {Any} data to be validated
110750   * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).
110751   */
110752  function validate(schemaKeyRef, data) {
110753    var v;
110754    if (typeof schemaKeyRef == 'string') {
110755      v = this.getSchema(schemaKeyRef);
110756      if (!v) throw new Error('no schema with key or ref "' + schemaKeyRef + '"');
110757    } else {
110758      var schemaObj = this._addSchema(schemaKeyRef);
110759      v = schemaObj.validate || this._compile(schemaObj);
110760    }
110761  
110762    var valid = v(data);
110763    if (v.$async === true)
110764      return this._opts.async == '*' ? co(valid) : valid;
110765    this.errors = v.errors;
110766    return valid;
110767  }
110768  
110769  
110770  /**
110771   * Create validating function for passed schema.
110772   * @this   Ajv
110773   * @param  {Object} schema schema object
110774   * @param  {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords.
110775   * @return {Function} validating function
110776   */
110777  function compile(schema, _meta) {
110778    var schemaObj = this._addSchema(schema, undefined, _meta);
110779    return schemaObj.validate || this._compile(schemaObj);
110780  }
110781  
110782  
110783  /**
110784   * Adds schema to the instance.
110785   * @this   Ajv
110786   * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.
110787   * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.
110788   * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead.
110789   * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.
110790   * @return {Ajv} this for method chaining
110791   */
110792  function addSchema(schema, key, _skipValidation, _meta) {
110793    if (Array.isArray(schema)){
110794      for (var i=0; i<schema.length; i++) this.addSchema(schema[i], undefined, _skipValidation, _meta);
110795      return this;
110796    }
110797    var id = this._getId(schema);
110798    if (id !== undefined && typeof id != 'string')
110799      throw new Error('schema id must be string');
110800    key = resolve.normalizeId(key || id);
110801    checkUnique(this, key);
110802    this._schemas[key] = this._addSchema(schema, _skipValidation, _meta, true);
110803    return this;
110804  }
110805  
110806  
110807  /**
110808   * Add schema that will be used to validate other schemas
110809   * options in META_IGNORE_OPTIONS are alway set to false
110810   * @this   Ajv
110811   * @param {Object} schema schema object
110812   * @param {String} key optional schema key
110813   * @param {Boolean} skipValidation true to skip schema validation, can be used to override validateSchema option for meta-schema
110814   * @return {Ajv} this for method chaining
110815   */
110816  function addMetaSchema(schema, key, skipValidation) {
110817    this.addSchema(schema, key, skipValidation, true);
110818    return this;
110819  }
110820  
110821  
110822  /**
110823   * Validate schema
110824   * @this   Ajv
110825   * @param {Object} schema schema to validate
110826   * @param {Boolean} throwOrLogError pass true to throw (or log) an error if invalid
110827   * @return {Boolean} true if schema is valid
110828   */
110829  function validateSchema(schema, throwOrLogError) {
110830    var $schema = schema.$schema;
110831    if ($schema !== undefined && typeof $schema != 'string')
110832      throw new Error('$schema must be a string');
110833    $schema = $schema || this._opts.defaultMeta || defaultMeta(this);
110834    if (!$schema) {
110835      this.logger.warn('meta-schema not available');
110836      this.errors = null;
110837      return true;
110838    }
110839    var currentUriFormat = this._formats.uri;
110840    this._formats.uri = typeof currentUriFormat == 'function'
110841                        ? this._schemaUriFormatFunc
110842                        : this._schemaUriFormat;
110843    var valid;
110844    try { valid = this.validate($schema, schema); }
110845    finally { this._formats.uri = currentUriFormat; }
110846    if (!valid && throwOrLogError) {
110847      var message = 'schema is invalid: ' + this.errorsText();
110848      if (this._opts.validateSchema == 'log') this.logger.error(message);
110849      else throw new Error(message);
110850    }
110851    return valid;
110852  }
110853  
110854  
110855  function defaultMeta(self) {
110856    var meta = self._opts.meta;
110857    self._opts.defaultMeta = typeof meta == 'object'
110858                              ? self._getId(meta) || meta
110859                              : self.getSchema(META_SCHEMA_ID)
110860                                ? META_SCHEMA_ID
110861                                : undefined;
110862    return self._opts.defaultMeta;
110863  }
110864  
110865  
110866  /**
110867   * Get compiled schema from the instance by `key` or `ref`.
110868   * @this   Ajv
110869   * @param  {String} keyRef `key` that was passed to `addSchema` or full schema reference (`schema.id` or resolved id).
110870   * @return {Function} schema validating function (with property `schema`).
110871   */
110872  function getSchema(keyRef) {
110873    var schemaObj = _getSchemaObj(this, keyRef);
110874    switch (typeof schemaObj) {
110875      case 'object': return schemaObj.validate || this._compile(schemaObj);
110876      case 'string': return this.getSchema(schemaObj);
110877      case 'undefined': return _getSchemaFragment(this, keyRef);
110878    }
110879  }
110880  
110881  
110882  function _getSchemaFragment(self, ref) {
110883    var res = resolve.schema.call(self, { schema: {} }, ref);
110884    if (res) {
110885      var schema = res.schema
110886        , root = res.root
110887        , baseId = res.baseId;
110888      var v = compileSchema.call(self, schema, root, undefined, baseId);
110889      self._fragments[ref] = new SchemaObject({
110890        ref: ref,
110891        fragment: true,
110892        schema: schema,
110893        root: root,
110894        baseId: baseId,
110895        validate: v
110896      });
110897      return v;
110898    }
110899  }
110900  
110901  
110902  function _getSchemaObj(self, keyRef) {
110903    keyRef = resolve.normalizeId(keyRef);
110904    return self._schemas[keyRef] || self._refs[keyRef] || self._fragments[keyRef];
110905  }
110906  
110907  
110908  /**
110909   * Remove cached schema(s).
110910   * If no parameter is passed all schemas but meta-schemas are removed.
110911   * If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.
110912   * Even if schema is referenced by other schemas it still can be removed as other schemas have local references.
110913   * @this   Ajv
110914   * @param  {String|Object|RegExp} schemaKeyRef key, ref, pattern to match key/ref or schema object
110915   * @return {Ajv} this for method chaining
110916   */
110917  function removeSchema(schemaKeyRef) {
110918    if (schemaKeyRef instanceof RegExp) {
110919      _removeAllSchemas(this, this._schemas, schemaKeyRef);
110920      _removeAllSchemas(this, this._refs, schemaKeyRef);
110921      return this;
110922    }
110923    switch (typeof schemaKeyRef) {
110924      case 'undefined':
110925        _removeAllSchemas(this, this._schemas);
110926        _removeAllSchemas(this, this._refs);
110927        this._cache.clear();
110928        return this;
110929      case 'string':
110930        var schemaObj = _getSchemaObj(this, schemaKeyRef);
110931        if (schemaObj) this._cache.del(schemaObj.cacheKey);
110932        delete this._schemas[schemaKeyRef];
110933        delete this._refs[schemaKeyRef];
110934        return this;
110935      case 'object':
110936        var serialize = this._opts.serialize;
110937        var cacheKey = serialize ? serialize(schemaKeyRef) : schemaKeyRef;
110938        this._cache.del(cacheKey);
110939        var id = this._getId(schemaKeyRef);
110940        if (id) {
110941          id = resolve.normalizeId(id);
110942          delete this._schemas[id];
110943          delete this._refs[id];
110944        }
110945    }
110946    return this;
110947  }
110948  
110949  
110950  function _removeAllSchemas(self, schemas, regex) {
110951    for (var keyRef in schemas) {
110952      var schemaObj = schemas[keyRef];
110953      if (!schemaObj.meta && (!regex || regex.test(keyRef))) {
110954        self._cache.del(schemaObj.cacheKey);
110955        delete schemas[keyRef];
110956      }
110957    }
110958  }
110959  
110960  
110961  /* @this   Ajv */
110962  function _addSchema(schema, skipValidation, meta, shouldAddSchema) {
110963    if (typeof schema != 'object' && typeof schema != 'boolean')
110964      throw new Error('schema should be object or boolean');
110965    var serialize = this._opts.serialize;
110966    var cacheKey = serialize ? serialize(schema) : schema;
110967    var cached = this._cache.get(cacheKey);
110968    if (cached) return cached;
110969  
110970    shouldAddSchema = shouldAddSchema || this._opts.addUsedSchema !== false;
110971  
110972    var id = resolve.normalizeId(this._getId(schema));
110973    if (id && shouldAddSchema) checkUnique(this, id);
110974  
110975    var willValidate = this._opts.validateSchema !== false && !skipValidation;
110976    var recursiveMeta;
110977    if (willValidate && !(recursiveMeta = id && id == resolve.normalizeId(schema.$schema)))
110978      this.validateSchema(schema, true);
110979  
110980    var localRefs = resolve.ids.call(this, schema);
110981  
110982    var schemaObj = new SchemaObject({
110983      id: id,
110984      schema: schema,
110985      localRefs: localRefs,
110986      cacheKey: cacheKey,
110987      meta: meta
110988    });
110989  
110990    if (id[0] != '#' && shouldAddSchema) this._refs[id] = schemaObj;
110991    this._cache.put(cacheKey, schemaObj);
110992  
110993    if (willValidate && recursiveMeta) this.validateSchema(schema, true);
110994  
110995    return schemaObj;
110996  }
110997  
110998  
110999  /* @this   Ajv */
111000  function _compile(schemaObj, root) {
111001    if (schemaObj.compiling) {
111002      schemaObj.validate = callValidate;
111003      callValidate.schema = schemaObj.schema;
111004      callValidate.errors = null;
111005      callValidate.root = root ? root : callValidate;
111006      if (schemaObj.schema.$async === true)
111007        callValidate.$async = true;
111008      return callValidate;
111009    }
111010    schemaObj.compiling = true;
111011  
111012    var currentOpts;
111013    if (schemaObj.meta) {
111014      currentOpts = this._opts;
111015      this._opts = this._metaOpts;
111016    }
111017  
111018    var v;
111019    try { v = compileSchema.call(this, schemaObj.schema, root, schemaObj.localRefs); }
111020    finally {
111021      schemaObj.compiling = false;
111022      if (schemaObj.meta) this._opts = currentOpts;
111023    }
111024  
111025    schemaObj.validate = v;
111026    schemaObj.refs = v.refs;
111027    schemaObj.refVal = v.refVal;
111028    schemaObj.root = v.root;
111029    return v;
111030  
111031  
111032    function callValidate() {
111033      var _validate = schemaObj.validate;
111034      var result = _validate.apply(null, arguments);
111035      callValidate.errors = _validate.errors;
111036      return result;
111037    }
111038  }
111039  
111040  
111041  function chooseGetId(opts) {
111042    switch (opts.schemaId) {
111043      case '$id': return _get$Id;
111044      case 'id': return _getId;
111045      default: return _get$IdOrId;
111046    }
111047  }
111048  
111049  /* @this   Ajv */
111050  function _getId(schema) {
111051    if (schema.$id) this.logger.warn('schema $id ignored', schema.$id);
111052    return schema.id;
111053  }
111054  
111055  /* @this   Ajv */
111056  function _get$Id(schema) {
111057    if (schema.id) this.logger.warn('schema id ignored', schema.id);
111058    return schema.$id;
111059  }
111060  
111061  
111062  function _get$IdOrId(schema) {
111063    if (schema.$id && schema.id && schema.$id != schema.id)
111064      throw new Error('schema $id is different from id');
111065    return schema.$id || schema.id;
111066  }
111067  
111068  
111069  /**
111070   * Convert array of error message objects to string
111071   * @this   Ajv
111072   * @param  {Array<Object>} errors optional array of validation errors, if not passed errors from the instance are used.
111073   * @param  {Object} options optional options with properties `separator` and `dataVar`.
111074   * @return {String} human readable string with all errors descriptions
111075   */
111076  function errorsText(errors, options) {
111077    errors = errors || this.errors;
111078    if (!errors) return 'No errors';
111079    options = options || {};
111080    var separator = options.separator === undefined ? ', ' : options.separator;
111081    var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;
111082  
111083    var text = '';
111084    for (var i=0; i<errors.length; i++) {
111085      var e = errors[i];
111086      if (e) text += dataVar + e.dataPath + ' ' + e.message + separator;
111087    }
111088    return text.slice(0, -separator.length);
111089  }
111090  
111091  
111092  /**
111093   * Add custom format
111094   * @this   Ajv
111095   * @param {String} name format name
111096   * @param {String|RegExp|Function} format string is converted to RegExp; function should return boolean (true when valid)
111097   * @return {Ajv} this for method chaining
111098   */
111099  function addFormat(name, format) {
111100    if (typeof format == 'string') format = new RegExp(format);
111101    this._formats[name] = format;
111102    return this;
111103  }
111104  
111105  
111106  function addDraft6MetaSchema(self) {
111107    var $dataSchema;
111108    if (self._opts.$data) {
111109      $dataSchema = __webpack_require__(675);
111110      self.addMetaSchema($dataSchema, $dataSchema.$id, true);
111111    }
111112    if (self._opts.meta === false) return;
111113    var metaSchema = __webpack_require__(676);
111114    if (self._opts.$data) metaSchema = $dataMetaSchema(metaSchema, META_SUPPORT_DATA);
111115    self.addMetaSchema(metaSchema, META_SCHEMA_ID, true);
111116    self._refs['http://json-schema.org/schema'] = META_SCHEMA_ID;
111117  }
111118  
111119  
111120  function addInitialSchemas(self) {
111121    var optsSchemas = self._opts.schemas;
111122    if (!optsSchemas) return;
111123    if (Array.isArray(optsSchemas)) self.addSchema(optsSchemas);
111124    else for (var key in optsSchemas) self.addSchema(optsSchemas[key], key);
111125  }
111126  
111127  
111128  function addInitialFormats(self) {
111129    for (var name in self._opts.formats) {
111130      var format = self._opts.formats[name];
111131      self.addFormat(name, format);
111132    }
111133  }
111134  
111135  
111136  function checkUnique(self, id) {
111137    if (self._schemas[id] || self._refs[id])
111138      throw new Error('schema with key or id "' + id + '" already exists');
111139  }
111140  
111141  
111142  function getMetaSchemaOptions(self) {
111143    var metaOpts = util.copy(self._opts);
111144    for (var i=0; i<META_IGNORE_OPTIONS.length; i++)
111145      delete metaOpts[META_IGNORE_OPTIONS[i]];
111146    return metaOpts;
111147  }
111148  
111149  
111150  function setLogger(self) {
111151    var logger = self._opts.logger;
111152    if (logger === false) {
111153      self.logger = {log: noop, warn: noop, error: noop};
111154    } else {
111155      if (logger === undefined) logger = console;
111156      if (!(typeof logger == 'object' && logger.log && logger.warn && logger.error))
111157        throw new Error('logger must implement log, warn and error methods');
111158      self.logger = logger;
111159    }
111160  }
111161  
111162  
111163  function noop() {}
111164  
111165  
111166  /***/ }),
111167  /* 648 */
111168  /***/ (function(module, exports, __webpack_require__) {
111169  
111170  "use strict";
111171  
111172  
111173  
111174  var Cache = module.exports = function Cache() {
111175    this._cache = {};
111176  };
111177  
111178  
111179  Cache.prototype.put = function Cache_put(key, value) {
111180    this._cache[key] = value;
111181  };
111182  
111183  
111184  Cache.prototype.get = function Cache_get(key) {
111185    return this._cache[key];
111186  };
111187  
111188  
111189  Cache.prototype.del = function Cache_del(key) {
111190    delete this._cache[key];
111191  };
111192  
111193  
111194  Cache.prototype.clear = function Cache_clear() {
111195    this._cache = {};
111196  };
111197  
111198  
111199  /***/ }),
111200  /* 649 */
111201  /***/ (function(module, exports, __webpack_require__) {
111202  
111203  "use strict";
111204  
111205  
111206  //all requires must be explicit because browserify won't work with dynamic requires
111207  module.exports = {
111208    '$ref': __webpack_require__(670),
111209    allOf: __webpack_require__(655),
111210    anyOf: __webpack_require__(656),
111211    const: __webpack_require__(657),
111212    contains: __webpack_require__(658),
111213    dependencies: __webpack_require__(660),
111214    'enum': __webpack_require__(661),
111215    format: __webpack_require__(662),
111216    items: __webpack_require__(663),
111217    maximum: __webpack_require__(387),
111218    minimum: __webpack_require__(387),
111219    maxItems: __webpack_require__(388),
111220    minItems: __webpack_require__(388),
111221    maxLength: __webpack_require__(389),
111222    minLength: __webpack_require__(389),
111223    maxProperties: __webpack_require__(390),
111224    minProperties: __webpack_require__(390),
111225    multipleOf: __webpack_require__(664),
111226    not: __webpack_require__(665),
111227    oneOf: __webpack_require__(666),
111228    pattern: __webpack_require__(667),
111229    properties: __webpack_require__(668),
111230    propertyNames: __webpack_require__(669),
111231    required: __webpack_require__(671),
111232    uniqueItems: __webpack_require__(672),
111233    validate: __webpack_require__(391)
111234  };
111235  
111236  
111237  /***/ }),
111238  /* 650 */
111239  /***/ (function(module, exports, __webpack_require__) {
111240  
111241  "use strict";
111242  
111243  
111244  var MissingRefError = __webpack_require__(270).MissingRef;
111245  
111246  module.exports = compileAsync;
111247  
111248  
111249  /**
111250   * Creates validating function for passed schema with asynchronous loading of missing schemas.
111251   * `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.
111252   * @this  Ajv
111253   * @param {Object}   schema schema object
111254   * @param {Boolean}  meta optional true to compile meta-schema; this parameter can be skipped
111255   * @param {Function} callback an optional node-style callback, it is called with 2 parameters: error (or null) and validating function.
111256   * @return {Promise} promise that resolves with a validating function.
111257   */
111258  function compileAsync(schema, meta, callback) {
111259    /* eslint no-shadow: 0 */
111260    /* global Promise */
111261    /* jshint validthis: true */
111262    var self = this;
111263    if (typeof this._opts.loadSchema != 'function')
111264      throw new Error('options.loadSchema should be a function');
111265  
111266    if (typeof meta == 'function') {
111267      callback = meta;
111268      meta = undefined;
111269    }
111270  
111271    var p = loadMetaSchemaOf(schema).then(function () {
111272      var schemaObj = self._addSchema(schema, undefined, meta);
111273      return schemaObj.validate || _compileAsync(schemaObj);
111274    });
111275  
111276    if (callback) {
111277      p.then(
111278        function(v) { callback(null, v); },
111279        callback
111280      );
111281    }
111282  
111283    return p;
111284  
111285  
111286    function loadMetaSchemaOf(sch) {
111287      var $schema = sch.$schema;
111288      return $schema && !self.getSchema($schema)
111289              ? compileAsync.call(self, { $ref: $schema }, true)
111290              : Promise.resolve();
111291    }
111292  
111293  
111294    function _compileAsync(schemaObj) {
111295      try { return self._compile(schemaObj); }
111296      catch(e) {
111297        if (e instanceof MissingRefError) return loadMissingSchema(e);
111298        throw e;
111299      }
111300  
111301  
111302      function loadMissingSchema(e) {
111303        var ref = e.missingSchema;
111304        if (added(ref)) throw new Error('Schema ' + ref + ' is loaded but ' + e.missingRef + ' cannot be resolved');
111305  
111306        var schemaPromise = self._loadingSchemas[ref];
111307        if (!schemaPromise) {
111308          schemaPromise = self._loadingSchemas[ref] = self._opts.loadSchema(ref);
111309          schemaPromise.then(removePromise, removePromise);
111310        }
111311  
111312        return schemaPromise.then(function (sch) {
111313          if (!added(ref)) {
111314            return loadMetaSchemaOf(sch).then(function () {
111315              if (!added(ref)) self.addSchema(sch, ref, undefined, meta);
111316            });
111317          }
111318        }).then(function() {
111319          return _compileAsync(schemaObj);
111320        });
111321  
111322        function removePromise() {
111323          delete self._loadingSchemas[ref];
111324        }
111325  
111326        function added(ref) {
111327          return self._refs[ref] || self._schemas[ref];
111328        }
111329      }
111330    }
111331  }
111332  
111333  
111334  /***/ }),
111335  /* 651 */
111336  /***/ (function(module, exports, __webpack_require__) {
111337  
111338  "use strict";
111339  
111340  
111341  var util = __webpack_require__(114);
111342  
111343  var DATE = /^\d\d\d\d-(\d\d)-(\d\d)$/;
111344  var DAYS = [0,31,29,31,30,31,30,31,31,30,31,30,31];
111345  var TIME = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i;
111346  var HOSTNAME = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*$/i;
111347  var URI = /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;
111348  var URIREF = /^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;
111349  // uri-template: https://tools.ietf.org/html/rfc6570
111350  var URITEMPLATE = /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i;
111351  // For the source: https://gist.github.com/dperini/729294
111352  // For test cases: https://mathiasbynens.be/demo/url-regex
111353  // @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983.
111354  // var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu;
111355  var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i;
111356  var UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;
111357  var JSON_POINTER = /^(?:\/(?:[^~/]|~0|~1)*)*$|^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;
111358  var RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;
111359  
111360  
111361  module.exports = formats;
111362  
111363  function formats(mode) {
111364    mode = mode == 'full' ? 'full' : 'fast';
111365    return util.copy(formats[mode]);
111366  }
111367  
111368  
111369  formats.fast = {
111370    // date: http://tools.ietf.org/html/rfc3339#section-5.6
111371    date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/,
111372    // date-time: http://tools.ietf.org/html/rfc3339#section-5.6
111373    time: /^[0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i,
111374    'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i,
111375    // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js
111376    uri: /^(?:[a-z][a-z0-9+-.]*)(?::|\/)\/?[^\s]*$/i,
111377    'uri-reference': /^(?:(?:[a-z][a-z0-9+-.]*:)?\/\/)?[^\s]*$/i,
111378    'uri-template': URITEMPLATE,
111379    url: URL,
111380    // email (sources from jsen validator):
111381    // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363
111382    // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')
111383    email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,
111384    hostname: HOSTNAME,
111385    // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html
111386    ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,
111387    // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses
111388    ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,
111389    regex: regex,
111390    // uuid: http://tools.ietf.org/html/rfc4122
111391    uuid: UUID,
111392    // JSON-pointer: https://tools.ietf.org/html/rfc6901
111393    // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A
111394    'json-pointer': JSON_POINTER,
111395    // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00
111396    'relative-json-pointer': RELATIVE_JSON_POINTER
111397  };
111398  
111399  
111400  formats.full = {
111401    date: date,
111402    time: time,
111403    'date-time': date_time,
111404    uri: uri,
111405    'uri-reference': URIREF,
111406    'uri-template': URITEMPLATE,
111407    url: URL,
111408    email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,
111409    hostname: hostname,
111410    ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,
111411    ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,
111412    regex: regex,
111413    uuid: UUID,
111414    'json-pointer': JSON_POINTER,
111415    'relative-json-pointer': RELATIVE_JSON_POINTER
111416  };
111417  
111418  
111419  function date(str) {
111420    // full-date from http://tools.ietf.org/html/rfc3339#section-5.6
111421    var matches = str.match(DATE);
111422    if (!matches) return false;
111423  
111424    var month = +matches[1];
111425    var day = +matches[2];
111426    return month >= 1 && month <= 12 && day >= 1 && day <= DAYS[month];
111427  }
111428  
111429  
111430  function time(str, full) {
111431    var matches = str.match(TIME);
111432    if (!matches) return false;
111433  
111434    var hour = matches[1];
111435    var minute = matches[2];
111436    var second = matches[3];
111437    var timeZone = matches[5];
111438    return hour <= 23 && minute <= 59 && second <= 59 && (!full || timeZone);
111439  }
111440  
111441  
111442  var DATE_TIME_SEPARATOR = /t|\s/i;
111443  function date_time(str) {
111444    // http://tools.ietf.org/html/rfc3339#section-5.6
111445    var dateTime = str.split(DATE_TIME_SEPARATOR);
111446    return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true);
111447  }
111448  
111449  
111450  function hostname(str) {
111451    // https://tools.ietf.org/html/rfc1034#section-3.5
111452    // https://tools.ietf.org/html/rfc1123#section-2
111453    return str.length <= 255 && HOSTNAME.test(str);
111454  }
111455  
111456  
111457  var NOT_URI_FRAGMENT = /\/|:/;
111458  function uri(str) {
111459    // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "."
111460    return NOT_URI_FRAGMENT.test(str) && URI.test(str);
111461  }
111462  
111463  
111464  var Z_ANCHOR = /[^\\]\\Z/;
111465  function regex(str) {
111466    if (Z_ANCHOR.test(str)) return false;
111467    try {
111468      new RegExp(str);
111469      return true;
111470    } catch(e) {
111471      return false;
111472    }
111473  }
111474  
111475  
111476  /***/ }),
111477  /* 652 */
111478  /***/ (function(module, exports, __webpack_require__) {
111479  
111480  "use strict";
111481  
111482  
111483  var resolve = __webpack_require__(271)
111484    , util = __webpack_require__(114)
111485    , errorClasses = __webpack_require__(270)
111486    , stableStringify = __webpack_require__(383);
111487  
111488  var validateGenerator = __webpack_require__(391);
111489  
111490  /**
111491   * Functions below are used inside compiled validations function
111492   */
111493  
111494  var co = __webpack_require__(377);
111495  var ucs2length = util.ucs2length;
111496  var equal = __webpack_require__(272);
111497  
111498  // this error is thrown by async schemas to return validation errors via exception
111499  var ValidationError = errorClasses.Validation;
111500  
111501  module.exports = compile;
111502  
111503  
111504  /**
111505   * Compiles schema to validation function
111506   * @this   Ajv
111507   * @param  {Object} schema schema object
111508   * @param  {Object} root object with information about the root schema for this schema
111509   * @param  {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution
111510   * @param  {String} baseId base ID for IDs in the schema
111511   * @return {Function} validation function
111512   */
111513  function compile(schema, root, localRefs, baseId) {
111514    /* jshint validthis: true, evil: true */
111515    /* eslint no-shadow: 0 */
111516    var self = this
111517      , opts = this._opts
111518      , refVal = [ undefined ]
111519      , refs = {}
111520      , patterns = []
111521      , patternsHash = {}
111522      , defaults = []
111523      , defaultsHash = {}
111524      , customRules = [];
111525  
111526    root = root || { schema: schema, refVal: refVal, refs: refs };
111527  
111528    var c = checkCompiling.call(this, schema, root, baseId);
111529    var compilation = this._compilations[c.index];
111530    if (c.compiling) return (compilation.callValidate = callValidate);
111531  
111532    var formats = this._formats;
111533    var RULES = this.RULES;
111534  
111535    try {
111536      var v = localCompile(schema, root, localRefs, baseId);
111537      compilation.validate = v;
111538      var cv = compilation.callValidate;
111539      if (cv) {
111540        cv.schema = v.schema;
111541        cv.errors = null;
111542        cv.refs = v.refs;
111543        cv.refVal = v.refVal;
111544        cv.root = v.root;
111545        cv.$async = v.$async;
111546        if (opts.sourceCode) cv.source = v.source;
111547      }
111548      return v;
111549    } finally {
111550      endCompiling.call(this, schema, root, baseId);
111551    }
111552  
111553    function callValidate() {
111554      var validate = compilation.validate;
111555      var result = validate.apply(null, arguments);
111556      callValidate.errors = validate.errors;
111557      return result;
111558    }
111559  
111560    function localCompile(_schema, _root, localRefs, baseId) {
111561      var isRoot = !_root || (_root && _root.schema == _schema);
111562      if (_root.schema != root.schema)
111563        return compile.call(self, _schema, _root, localRefs, baseId);
111564  
111565      var $async = _schema.$async === true;
111566  
111567      var sourceCode = validateGenerator({
111568        isTop: true,
111569        schema: _schema,
111570        isRoot: isRoot,
111571        baseId: baseId,
111572        root: _root,
111573        schemaPath: '',
111574        errSchemaPath: '#',
111575        errorPath: '""',
111576        MissingRefError: errorClasses.MissingRef,
111577        RULES: RULES,
111578        validate: validateGenerator,
111579        util: util,
111580        resolve: resolve,
111581        resolveRef: resolveRef,
111582        usePattern: usePattern,
111583        useDefault: useDefault,
111584        useCustomRule: useCustomRule,
111585        opts: opts,
111586        formats: formats,
111587        logger: self.logger,
111588        self: self
111589      });
111590  
111591      sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode)
111592                     + vars(defaults, defaultCode) + vars(customRules, customRuleCode)
111593                     + sourceCode;
111594  
111595      if (opts.processCode) sourceCode = opts.processCode(sourceCode);
111596      // console.log('\n\n\n *** \n', JSON.stringify(sourceCode));
111597      var validate;
111598      try {
111599        var makeValidate = new Function(
111600          'self',
111601          'RULES',
111602          'formats',
111603          'root',
111604          'refVal',
111605          'defaults',
111606          'customRules',
111607          'co',
111608          'equal',
111609          'ucs2length',
111610          'ValidationError',
111611          sourceCode
111612        );
111613  
111614        validate = makeValidate(
111615          self,
111616          RULES,
111617          formats,
111618          root,
111619          refVal,
111620          defaults,
111621          customRules,
111622          co,
111623          equal,
111624          ucs2length,
111625          ValidationError
111626        );
111627  
111628        refVal[0] = validate;
111629      } catch(e) {
111630        self.logger.error('Error compiling schema, function code:', sourceCode);
111631        throw e;
111632      }
111633  
111634      validate.schema = _schema;
111635      validate.errors = null;
111636      validate.refs = refs;
111637      validate.refVal = refVal;
111638      validate.root = isRoot ? validate : _root;
111639      if ($async) validate.$async = true;
111640      if (opts.sourceCode === true) {
111641        validate.source = {
111642          code: sourceCode,
111643          patterns: patterns,
111644          defaults: defaults
111645        };
111646      }
111647  
111648      return validate;
111649    }
111650  
111651    function resolveRef(baseId, ref, isRoot) {
111652      ref = resolve.url(baseId, ref);
111653      var refIndex = refs[ref];
111654      var _refVal, refCode;
111655      if (refIndex !== undefined) {
111656        _refVal = refVal[refIndex];
111657        refCode = 'refVal[' + refIndex + ']';
111658        return resolvedRef(_refVal, refCode);
111659      }
111660      if (!isRoot && root.refs) {
111661        var rootRefId = root.refs[ref];
111662        if (rootRefId !== undefined) {
111663          _refVal = root.refVal[rootRefId];
111664          refCode = addLocalRef(ref, _refVal);
111665          return resolvedRef(_refVal, refCode);
111666        }
111667      }
111668  
111669      refCode = addLocalRef(ref);
111670      var v = resolve.call(self, localCompile, root, ref);
111671      if (v === undefined) {
111672        var localSchema = localRefs && localRefs[ref];
111673        if (localSchema) {
111674          v = resolve.inlineRef(localSchema, opts.inlineRefs)
111675              ? localSchema
111676              : compile.call(self, localSchema, root, localRefs, baseId);
111677        }
111678      }
111679  
111680      if (v === undefined) {
111681        removeLocalRef(ref);
111682      } else {
111683        replaceLocalRef(ref, v);
111684        return resolvedRef(v, refCode);
111685      }
111686    }
111687  
111688    function addLocalRef(ref, v) {
111689      var refId = refVal.length;
111690      refVal[refId] = v;
111691      refs[ref] = refId;
111692      return 'refVal' + refId;
111693    }
111694  
111695    function removeLocalRef(ref) {
111696      delete refs[ref];
111697    }
111698  
111699    function replaceLocalRef(ref, v) {
111700      var refId = refs[ref];
111701      refVal[refId] = v;
111702    }
111703  
111704    function resolvedRef(refVal, code) {
111705      return typeof refVal == 'object' || typeof refVal == 'boolean'
111706              ? { code: code, schema: refVal, inline: true }
111707              : { code: code, $async: refVal && refVal.$async };
111708    }
111709  
111710    function usePattern(regexStr) {
111711      var index = patternsHash[regexStr];
111712      if (index === undefined) {
111713        index = patternsHash[regexStr] = patterns.length;
111714        patterns[index] = regexStr;
111715      }
111716      return 'pattern' + index;
111717    }
111718  
111719    function useDefault(value) {
111720      switch (typeof value) {
111721        case 'boolean':
111722        case 'number':
111723          return '' + value;
111724        case 'string':
111725          return util.toQuotedString(value);
111726        case 'object':
111727          if (value === null) return 'null';
111728          var valueStr = stableStringify(value);
111729          var index = defaultsHash[valueStr];
111730          if (index === undefined) {
111731            index = defaultsHash[valueStr] = defaults.length;
111732            defaults[index] = value;
111733          }
111734          return 'default' + index;
111735      }
111736    }
111737  
111738    function useCustomRule(rule, schema, parentSchema, it) {
111739      var validateSchema = rule.definition.validateSchema;
111740      if (validateSchema && self._opts.validateSchema !== false) {
111741        var valid = validateSchema(schema);
111742        if (!valid) {
111743          var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors);
111744          if (self._opts.validateSchema == 'log') self.logger.error(message);
111745          else throw new Error(message);
111746        }
111747      }
111748  
111749      var compile = rule.definition.compile
111750        , inline = rule.definition.inline
111751        , macro = rule.definition.macro;
111752  
111753      var validate;
111754      if (compile) {
111755        validate = compile.call(self, schema, parentSchema, it);
111756      } else if (macro) {
111757        validate = macro.call(self, schema, parentSchema, it);
111758        if (opts.validateSchema !== false) self.validateSchema(validate, true);
111759      } else if (inline) {
111760        validate = inline.call(self, it, rule.keyword, schema, parentSchema);
111761      } else {
111762        validate = rule.definition.validate;
111763        if (!validate) return;
111764      }
111765  
111766      if (validate === undefined)
111767        throw new Error('custom keyword "' + rule.keyword + '"failed to compile');
111768  
111769      var index = customRules.length;
111770      customRules[index] = validate;
111771  
111772      return {
111773        code: 'customRule' + index,
111774        validate: validate
111775      };
111776    }
111777  }
111778  
111779  
111780  /**
111781   * Checks if the schema is currently compiled
111782   * @this   Ajv
111783   * @param  {Object} schema schema to compile
111784   * @param  {Object} root root object
111785   * @param  {String} baseId base schema ID
111786   * @return {Object} object with properties "index" (compilation index) and "compiling" (boolean)
111787   */
111788  function checkCompiling(schema, root, baseId) {
111789    /* jshint validthis: true */
111790    var index = compIndex.call(this, schema, root, baseId);
111791    if (index >= 0) return { index: index, compiling: true };
111792    index = this._compilations.length;
111793    this._compilations[index] = {
111794      schema: schema,
111795      root: root,
111796      baseId: baseId
111797    };
111798    return { index: index, compiling: false };
111799  }
111800  
111801  
111802  /**
111803   * Removes the schema from the currently compiled list
111804   * @this   Ajv
111805   * @param  {Object} schema schema to compile
111806   * @param  {Object} root root object
111807   * @param  {String} baseId base schema ID
111808   */
111809  function endCompiling(schema, root, baseId) {
111810    /* jshint validthis: true */
111811    var i = compIndex.call(this, schema, root, baseId);
111812    if (i >= 0) this._compilations.splice(i, 1);
111813  }
111814  
111815  
111816  /**
111817   * Index of schema compilation in the currently compiled list
111818   * @this   Ajv
111819   * @param  {Object} schema schema to compile
111820   * @param  {Object} root root object
111821   * @param  {String} baseId base schema ID
111822   * @return {Integer} compilation index
111823   */
111824  function compIndex(schema, root, baseId) {
111825    /* jshint validthis: true */
111826    for (var i=0; i<this._compilations.length; i++) {
111827      var c = this._compilations[i];
111828      if (c.schema == schema && c.root == root && c.baseId == baseId) return i;
111829    }
111830    return -1;
111831  }
111832  
111833  
111834  function patternCode(i, patterns) {
111835    return 'var pattern' + i + ' = new RegExp(' + util.toQuotedString(patterns[i]) + ');';
111836  }
111837  
111838  
111839  function defaultCode(i) {
111840    return 'var default' + i + ' = defaults[' + i + '];';
111841  }
111842  
111843  
111844  function refValCode(i, refVal) {
111845    return refVal[i] === undefined ? '' : 'var refVal' + i + ' = refVal[' + i + '];';
111846  }
111847  
111848  
111849  function customRuleCode(i) {
111850    return 'var customRule' + i + ' = customRules[' + i + '];';
111851  }
111852  
111853  
111854  function vars(arr, statement) {
111855    if (!arr.length) return '';
111856    var code = '';
111857    for (var i=0; i<arr.length; i++)
111858      code += statement(i, arr);
111859    return code;
111860  }
111861  
111862  
111863  /***/ }),
111864  /* 653 */
111865  /***/ (function(module, exports, __webpack_require__) {
111866  
111867  "use strict";
111868  
111869  
111870  var ruleModules = __webpack_require__(649)
111871    , toHash = __webpack_require__(114).toHash;
111872  
111873  module.exports = function rules() {
111874    var RULES = [
111875      { type: 'number',
111876        rules: [ { 'maximum': ['exclusiveMaximum'] },
111877                 { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] },
111878      { type: 'string',
111879        rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] },
111880      { type: 'array',
111881        rules: [ 'maxItems', 'minItems', 'uniqueItems', 'contains', 'items' ] },
111882      { type: 'object',
111883        rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames',
111884                 { 'properties': ['additionalProperties', 'patternProperties'] } ] },
111885      { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf' ] }
111886    ];
111887  
111888    var ALL = [ 'type' ];
111889    var KEYWORDS = [
111890      'additionalItems', '$schema', '$id', 'id', 'title',
111891      'description', 'default', 'definitions'
111892    ];
111893    var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ];
111894    RULES.all = toHash(ALL);
111895    RULES.types = toHash(TYPES);
111896  
111897    RULES.forEach(function (group) {
111898      group.rules = group.rules.map(function (keyword) {
111899        var implKeywords;
111900        if (typeof keyword == 'object') {
111901          var key = Object.keys(keyword)[0];
111902          implKeywords = keyword[key];
111903          keyword = key;
111904          implKeywords.forEach(function (k) {
111905            ALL.push(k);
111906            RULES.all[k] = true;
111907          });
111908        }
111909        ALL.push(keyword);
111910        var rule = RULES.all[keyword] = {
111911          keyword: keyword,
111912          code: ruleModules[keyword],
111913          implements: implKeywords
111914        };
111915        return rule;
111916      });
111917  
111918      if (group.type) RULES.types[group.type] = group;
111919    });
111920  
111921    RULES.keywords = toHash(ALL.concat(KEYWORDS));
111922    RULES.custom = {};
111923  
111924    return RULES;
111925  };
111926  
111927  
111928  /***/ }),
111929  /* 654 */
111930  /***/ (function(module, exports, __webpack_require__) {
111931  
111932  "use strict";
111933  
111934  
111935  // https://mathiasbynens.be/notes/javascript-encoding
111936  // https://github.com/bestiejs/punycode.js - punycode.ucs2.decode
111937  module.exports = function ucs2length(str) {
111938    var length = 0
111939      , len = str.length
111940      , pos = 0
111941      , value;
111942    while (pos < len) {
111943      length++;
111944      value = str.charCodeAt(pos++);
111945      if (value >= 0xD800 && value <= 0xDBFF && pos < len) {
111946        // high surrogate, and there is a next character
111947        value = str.charCodeAt(pos);
111948        if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate
111949      }
111950    }
111951    return length;
111952  };
111953  
111954  
111955  /***/ }),
111956  /* 655 */
111957  /***/ (function(module, exports, __webpack_require__) {
111958  
111959  "use strict";
111960  
111961  module.exports = function generate_allOf(it, $keyword, $ruleType) {
111962    var out = ' ';
111963    var $schema = it.schema[$keyword];
111964    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
111965    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
111966    var $breakOnError = !it.opts.allErrors;
111967    var $it = it.util.copy(it);
111968    var $closingBraces = '';
111969    $it.level++;
111970    var $nextValid = 'valid' + $it.level;
111971    var $currentBaseId = $it.baseId,
111972      $allSchemasEmpty = true;
111973    var arr1 = $schema;
111974    if (arr1) {
111975      var $sch, $i = -1,
111976        l1 = arr1.length - 1;
111977      while ($i < l1) {
111978        $sch = arr1[$i += 1];
111979        if (it.util.schemaHasRules($sch, it.RULES.all)) {
111980          $allSchemasEmpty = false;
111981          $it.schema = $sch;
111982          $it.schemaPath = $schemaPath + '[' + $i + ']';
111983          $it.errSchemaPath = $errSchemaPath + '/' + $i;
111984          out += '  ' + (it.validate($it)) + ' ';
111985          $it.baseId = $currentBaseId;
111986          if ($breakOnError) {
111987            out += ' if (' + ($nextValid) + ') { ';
111988            $closingBraces += '}';
111989          }
111990        }
111991      }
111992    }
111993    if ($breakOnError) {
111994      if ($allSchemasEmpty) {
111995        out += ' if (true) { ';
111996      } else {
111997        out += ' ' + ($closingBraces.slice(0, -1)) + ' ';
111998      }
111999    }
112000    out = it.util.cleanUpCode(out);
112001    return out;
112002  }
112003  
112004  
112005  /***/ }),
112006  /* 656 */
112007  /***/ (function(module, exports, __webpack_require__) {
112008  
112009  "use strict";
112010  
112011  module.exports = function generate_anyOf(it, $keyword, $ruleType) {
112012    var out = ' ';
112013    var $lvl = it.level;
112014    var $dataLvl = it.dataLevel;
112015    var $schema = it.schema[$keyword];
112016    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
112017    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
112018    var $breakOnError = !it.opts.allErrors;
112019    var $data = 'data' + ($dataLvl || '');
112020    var $valid = 'valid' + $lvl;
112021    var $errs = 'errs__' + $lvl;
112022    var $it = it.util.copy(it);
112023    var $closingBraces = '';
112024    $it.level++;
112025    var $nextValid = 'valid' + $it.level;
112026    var $noEmptySchema = $schema.every(function($sch) {
112027      return it.util.schemaHasRules($sch, it.RULES.all);
112028    });
112029    if ($noEmptySchema) {
112030      var $currentBaseId = $it.baseId;
112031      out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false;  ';
112032      var $wasComposite = it.compositeRule;
112033      it.compositeRule = $it.compositeRule = true;
112034      var arr1 = $schema;
112035      if (arr1) {
112036        var $sch, $i = -1,
112037          l1 = arr1.length - 1;
112038        while ($i < l1) {
112039          $sch = arr1[$i += 1];
112040          $it.schema = $sch;
112041          $it.schemaPath = $schemaPath + '[' + $i + ']';
112042          $it.errSchemaPath = $errSchemaPath + '/' + $i;
112043          out += '  ' + (it.validate($it)) + ' ';
112044          $it.baseId = $currentBaseId;
112045          out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { ';
112046          $closingBraces += '}';
112047        }
112048      }
112049      it.compositeRule = $it.compositeRule = $wasComposite;
112050      out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') {   var err =   '; /* istanbul ignore else */
112051      if (it.createErrors !== false) {
112052        out += ' { keyword: \'' + ('anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
112053        if (it.opts.messages !== false) {
112054          out += ' , message: \'should match some schema in anyOf\' ';
112055        }
112056        if (it.opts.verbose) {
112057          out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
112058        }
112059        out += ' } ';
112060      } else {
112061        out += ' {} ';
112062      }
112063      out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
112064      if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
112065        if (it.async) {
112066          out += ' throw new ValidationError(vErrors); ';
112067        } else {
112068          out += ' validate.errors = vErrors; return false; ';
112069        }
112070      }
112071      out += ' } else {  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';
112072      if (it.opts.allErrors) {
112073        out += ' } ';
112074      }
112075      out = it.util.cleanUpCode(out);
112076    } else {
112077      if ($breakOnError) {
112078        out += ' if (true) { ';
112079      }
112080    }
112081    return out;
112082  }
112083  
112084  
112085  /***/ }),
112086  /* 657 */
112087  /***/ (function(module, exports, __webpack_require__) {
112088  
112089  "use strict";
112090  
112091  module.exports = function generate_const(it, $keyword, $ruleType) {
112092    var out = ' ';
112093    var $lvl = it.level;
112094    var $dataLvl = it.dataLevel;
112095    var $schema = it.schema[$keyword];
112096    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
112097    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
112098    var $breakOnError = !it.opts.allErrors;
112099    var $data = 'data' + ($dataLvl || '');
112100    var $valid = 'valid' + $lvl;
112101    var $isData = it.opts.$data && $schema && $schema.$data,
112102      $schemaValue;
112103    if ($isData) {
112104      out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
112105      $schemaValue = 'schema' + $lvl;
112106    } else {
112107      $schemaValue = $schema;
112108    }
112109    if (!$isData) {
112110      out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';
112111    }
112112    out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') {   ';
112113    var $$outStack = $$outStack || [];
112114    $$outStack.push(out);
112115    out = ''; /* istanbul ignore else */
112116    if (it.createErrors !== false) {
112117      out += ' { keyword: \'' + ('const') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
112118      if (it.opts.messages !== false) {
112119        out += ' , message: \'should be equal to constant\' ';
112120      }
112121      if (it.opts.verbose) {
112122        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
112123      }
112124      out += ' } ';
112125    } else {
112126      out += ' {} ';
112127    }
112128    var __err = out;
112129    out = $$outStack.pop();
112130    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
112131      if (it.async) {
112132        out += ' throw new ValidationError([' + (__err) + ']); ';
112133      } else {
112134        out += ' validate.errors = [' + (__err) + ']; return false; ';
112135      }
112136    } else {
112137      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
112138    }
112139    out += ' }';
112140    if ($breakOnError) {
112141      out += ' else { ';
112142    }
112143    return out;
112144  }
112145  
112146  
112147  /***/ }),
112148  /* 658 */
112149  /***/ (function(module, exports, __webpack_require__) {
112150  
112151  "use strict";
112152  
112153  module.exports = function generate_contains(it, $keyword, $ruleType) {
112154    var out = ' ';
112155    var $lvl = it.level;
112156    var $dataLvl = it.dataLevel;
112157    var $schema = it.schema[$keyword];
112158    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
112159    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
112160    var $breakOnError = !it.opts.allErrors;
112161    var $data = 'data' + ($dataLvl || '');
112162    var $valid = 'valid' + $lvl;
112163    var $errs = 'errs__' + $lvl;
112164    var $it = it.util.copy(it);
112165    var $closingBraces = '';
112166    $it.level++;
112167    var $nextValid = 'valid' + $it.level;
112168    var $idx = 'i' + $lvl,
112169      $dataNxt = $it.dataLevel = it.dataLevel + 1,
112170      $nextData = 'data' + $dataNxt,
112171      $currentBaseId = it.baseId,
112172      $nonEmptySchema = it.util.schemaHasRules($schema, it.RULES.all);
112173    out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';
112174    if ($nonEmptySchema) {
112175      var $wasComposite = it.compositeRule;
112176      it.compositeRule = $it.compositeRule = true;
112177      $it.schema = $schema;
112178      $it.schemaPath = $schemaPath;
112179      $it.errSchemaPath = $errSchemaPath;
112180      out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';
112181      $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);
112182      var $passData = $data + '[' + $idx + ']';
112183      $it.dataPathArr[$dataNxt] = $idx;
112184      var $code = it.validate($it);
112185      $it.baseId = $currentBaseId;
112186      if (it.util.varOccurences($code, $nextData) < 2) {
112187        out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
112188      } else {
112189        out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
112190      }
112191      out += ' if (' + ($nextValid) + ') break; }  ';
112192      it.compositeRule = $it.compositeRule = $wasComposite;
112193      out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {';
112194    } else {
112195      out += ' if (' + ($data) + '.length == 0) {';
112196    }
112197    var $$outStack = $$outStack || [];
112198    $$outStack.push(out);
112199    out = ''; /* istanbul ignore else */
112200    if (it.createErrors !== false) {
112201      out += ' { keyword: \'' + ('contains') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
112202      if (it.opts.messages !== false) {
112203        out += ' , message: \'should contain a valid item\' ';
112204      }
112205      if (it.opts.verbose) {
112206        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
112207      }
112208      out += ' } ';
112209    } else {
112210      out += ' {} ';
112211    }
112212    var __err = out;
112213    out = $$outStack.pop();
112214    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
112215      if (it.async) {
112216        out += ' throw new ValidationError([' + (__err) + ']); ';
112217      } else {
112218        out += ' validate.errors = [' + (__err) + ']; return false; ';
112219      }
112220    } else {
112221      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
112222    }
112223    out += ' } else { ';
112224    if ($nonEmptySchema) {
112225      out += '  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';
112226    }
112227    if (it.opts.allErrors) {
112228      out += ' } ';
112229    }
112230    out = it.util.cleanUpCode(out);
112231    return out;
112232  }
112233  
112234  
112235  /***/ }),
112236  /* 659 */
112237  /***/ (function(module, exports, __webpack_require__) {
112238  
112239  "use strict";
112240  
112241  module.exports = function generate_custom(it, $keyword, $ruleType) {
112242    var out = ' ';
112243    var $lvl = it.level;
112244    var $dataLvl = it.dataLevel;
112245    var $schema = it.schema[$keyword];
112246    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
112247    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
112248    var $breakOnError = !it.opts.allErrors;
112249    var $errorKeyword;
112250    var $data = 'data' + ($dataLvl || '');
112251    var $valid = 'valid' + $lvl;
112252    var $errs = 'errs__' + $lvl;
112253    var $isData = it.opts.$data && $schema && $schema.$data,
112254      $schemaValue;
112255    if ($isData) {
112256      out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
112257      $schemaValue = 'schema' + $lvl;
112258    } else {
112259      $schemaValue = $schema;
112260    }
112261    var $rule = this,
112262      $definition = 'definition' + $lvl,
112263      $rDef = $rule.definition,
112264      $closingBraces = '';
112265    var $compile, $inline, $macro, $ruleValidate, $validateCode;
112266    if ($isData && $rDef.$data) {
112267      $validateCode = 'keywordValidate' + $lvl;
112268      var $validateSchema = $rDef.validateSchema;
112269      out += ' var ' + ($definition) + ' = RULES.custom[\'' + ($keyword) + '\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;';
112270    } else {
112271      $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it);
112272      if (!$ruleValidate) return;
112273      $schemaValue = 'validate.schema' + $schemaPath;
112274      $validateCode = $ruleValidate.code;
112275      $compile = $rDef.compile;
112276      $inline = $rDef.inline;
112277      $macro = $rDef.macro;
112278    }
112279    var $ruleErrs = $validateCode + '.errors',
112280      $i = 'i' + $lvl,
112281      $ruleErr = 'ruleErr' + $lvl,
112282      $asyncKeyword = $rDef.async;
112283    if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema');
112284    if (!($inline || $macro)) {
112285      out += '' + ($ruleErrs) + ' = null;';
112286    }
112287    out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';
112288    if ($isData && $rDef.$data) {
112289      $closingBraces += '}';
112290      out += ' if (' + ($schemaValue) + ' === undefined) { ' + ($valid) + ' = true; } else { ';
112291      if ($validateSchema) {
112292        $closingBraces += '}';
112293        out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') { ';
112294      }
112295    }
112296    if ($inline) {
112297      if ($rDef.statements) {
112298        out += ' ' + ($ruleValidate.validate) + ' ';
112299      } else {
112300        out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; ';
112301      }
112302    } else if ($macro) {
112303      var $it = it.util.copy(it);
112304      var $closingBraces = '';
112305      $it.level++;
112306      var $nextValid = 'valid' + $it.level;
112307      $it.schema = $ruleValidate.validate;
112308      $it.schemaPath = '';
112309      var $wasComposite = it.compositeRule;
112310      it.compositeRule = $it.compositeRule = true;
112311      var $code = it.validate($it).replace(/validate\.schema/g, $validateCode);
112312      it.compositeRule = $it.compositeRule = $wasComposite;
112313      out += ' ' + ($code);
112314    } else {
112315      var $$outStack = $$outStack || [];
112316      $$outStack.push(out);
112317      out = '';
112318      out += '  ' + ($validateCode) + '.call( ';
112319      if (it.opts.passContext) {
112320        out += 'this';
112321      } else {
112322        out += 'self';
112323      }
112324      if ($compile || $rDef.schema === false) {
112325        out += ' , ' + ($data) + ' ';
112326      } else {
112327        out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' ';
112328      }
112329      out += ' , (dataPath || \'\')';
112330      if (it.errorPath != '""') {
112331        out += ' + ' + (it.errorPath);
112332      }
112333      var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',
112334        $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';
112335      out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData )  ';
112336      var def_callRuleValidate = out;
112337      out = $$outStack.pop();
112338      if ($rDef.errors === false) {
112339        out += ' ' + ($valid) + ' = ';
112340        if ($asyncKeyword) {
112341          out += '' + (it.yieldAwait);
112342        }
112343        out += '' + (def_callRuleValidate) + '; ';
112344      } else {
112345        if ($asyncKeyword) {
112346          $ruleErrs = 'customErrors' + $lvl;
112347          out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = ' + (it.yieldAwait) + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } ';
112348        } else {
112349          out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; ';
112350        }
112351      }
112352    }
112353    if ($rDef.modifying) {
112354      out += ' if (' + ($parentData) + ') ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];';
112355    }
112356    out += '' + ($closingBraces);
112357    if ($rDef.valid) {
112358      if ($breakOnError) {
112359        out += ' if (true) { ';
112360      }
112361    } else {
112362      out += ' if ( ';
112363      if ($rDef.valid === undefined) {
112364        out += ' !';
112365        if ($macro) {
112366          out += '' + ($nextValid);
112367        } else {
112368          out += '' + ($valid);
112369        }
112370      } else {
112371        out += ' ' + (!$rDef.valid) + ' ';
112372      }
112373      out += ') { ';
112374      $errorKeyword = $rule.keyword;
112375      var $$outStack = $$outStack || [];
112376      $$outStack.push(out);
112377      out = '';
112378      var $$outStack = $$outStack || [];
112379      $$outStack.push(out);
112380      out = ''; /* istanbul ignore else */
112381      if (it.createErrors !== false) {
112382        out += ' { keyword: \'' + ($errorKeyword || 'custom') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \'' + ($rule.keyword) + '\' } ';
112383        if (it.opts.messages !== false) {
112384          out += ' , message: \'should pass "' + ($rule.keyword) + '" keyword validation\' ';
112385        }
112386        if (it.opts.verbose) {
112387          out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
112388        }
112389        out += ' } ';
112390      } else {
112391        out += ' {} ';
112392      }
112393      var __err = out;
112394      out = $$outStack.pop();
112395      if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
112396        if (it.async) {
112397          out += ' throw new ValidationError([' + (__err) + ']); ';
112398        } else {
112399          out += ' validate.errors = [' + (__err) + ']; return false; ';
112400        }
112401      } else {
112402        out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
112403      }
112404      var def_customError = out;
112405      out = $$outStack.pop();
112406      if ($inline) {
112407        if ($rDef.errors) {
112408          if ($rDef.errors != 'full') {
112409            out += '  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \'\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = "' + ($errSchemaPath) + '"; } ';
112410            if (it.opts.verbose) {
112411              out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';
112412            }
112413            out += ' } ';
112414          }
112415        } else {
112416          if ($rDef.errors === false) {
112417            out += ' ' + (def_customError) + ' ';
112418          } else {
112419            out += ' if (' + ($errs) + ' == errors) { ' + (def_customError) + ' } else {  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \'\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = "' + ($errSchemaPath) + '"; } ';
112420            if (it.opts.verbose) {
112421              out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';
112422            }
112423            out += ' } } ';
112424          }
112425        }
112426      } else if ($macro) {
112427        out += '   var err =   '; /* istanbul ignore else */
112428        if (it.createErrors !== false) {
112429          out += ' { keyword: \'' + ($errorKeyword || 'custom') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \'' + ($rule.keyword) + '\' } ';
112430          if (it.opts.messages !== false) {
112431            out += ' , message: \'should pass "' + ($rule.keyword) + '" keyword validation\' ';
112432          }
112433          if (it.opts.verbose) {
112434            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
112435          }
112436          out += ' } ';
112437        } else {
112438          out += ' {} ';
112439        }
112440        out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
112441        if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
112442          if (it.async) {
112443            out += ' throw new ValidationError(vErrors); ';
112444          } else {
112445            out += ' validate.errors = vErrors; return false; ';
112446          }
112447        }
112448      } else {
112449        if ($rDef.errors === false) {
112450          out += ' ' + (def_customError) + ' ';
112451        } else {
112452          out += ' if (Array.isArray(' + ($ruleErrs) + ')) { if (vErrors === null) vErrors = ' + ($ruleErrs) + '; else vErrors = vErrors.concat(' + ($ruleErrs) + '); errors = vErrors.length;  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \'\') + ' + (it.errorPath) + ';  ' + ($ruleErr) + '.schemaPath = "' + ($errSchemaPath) + '";  ';
112453          if (it.opts.verbose) {
112454            out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';
112455          }
112456          out += ' } } else { ' + (def_customError) + ' } ';
112457        }
112458      }
112459      out += ' } ';
112460      if ($breakOnError) {
112461        out += ' else { ';
112462      }
112463    }
112464    return out;
112465  }
112466  
112467  
112468  /***/ }),
112469  /* 660 */
112470  /***/ (function(module, exports, __webpack_require__) {
112471  
112472  "use strict";
112473  
112474  module.exports = function generate_dependencies(it, $keyword, $ruleType) {
112475    var out = ' ';
112476    var $lvl = it.level;
112477    var $dataLvl = it.dataLevel;
112478    var $schema = it.schema[$keyword];
112479    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
112480    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
112481    var $breakOnError = !it.opts.allErrors;
112482    var $data = 'data' + ($dataLvl || '');
112483    var $errs = 'errs__' + $lvl;
112484    var $it = it.util.copy(it);
112485    var $closingBraces = '';
112486    $it.level++;
112487    var $nextValid = 'valid' + $it.level;
112488    var $schemaDeps = {},
112489      $propertyDeps = {},
112490      $ownProperties = it.opts.ownProperties;
112491    for ($property in $schema) {
112492      var $sch = $schema[$property];
112493      var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps;
112494      $deps[$property] = $sch;
112495    }
112496    out += 'var ' + ($errs) + ' = errors;';
112497    var $currentErrorPath = it.errorPath;
112498    out += 'var missing' + ($lvl) + ';';
112499    for (var $property in $propertyDeps) {
112500      $deps = $propertyDeps[$property];
112501      if ($deps.length) {
112502        out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';
112503        if ($ownProperties) {
112504          out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') ';
112505        }
112506        if ($breakOnError) {
112507          out += ' && ( ';
112508          var arr1 = $deps;
112509          if (arr1) {
112510            var $propertyKey, $i = -1,
112511              l1 = arr1.length - 1;
112512            while ($i < l1) {
112513              $propertyKey = arr1[$i += 1];
112514              if ($i) {
112515                out += ' || ';
112516              }
112517              var $prop = it.util.getProperty($propertyKey),
112518                $useData = $data + $prop;
112519              out += ' ( ( ' + ($useData) + ' === undefined ';
112520              if ($ownProperties) {
112521                out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
112522              }
112523              out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';
112524            }
112525          }
112526          out += ')) {  ';
112527          var $propertyPath = 'missing' + $lvl,
112528            $missingProperty = '\' + ' + $propertyPath + ' + \'';
112529          if (it.opts._errorDataPathProperty) {
112530            it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;
112531          }
112532          var $$outStack = $$outStack || [];
112533          $$outStack.push(out);
112534          out = ''; /* istanbul ignore else */
112535          if (it.createErrors !== false) {
112536            out += ' { keyword: \'' + ('dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } ';
112537            if (it.opts.messages !== false) {
112538              out += ' , message: \'should have ';
112539              if ($deps.length == 1) {
112540                out += 'property ' + (it.util.escapeQuotes($deps[0]));
112541              } else {
112542                out += 'properties ' + (it.util.escapeQuotes($deps.join(", ")));
112543              }
112544              out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' ';
112545            }
112546            if (it.opts.verbose) {
112547              out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
112548            }
112549            out += ' } ';
112550          } else {
112551            out += ' {} ';
112552          }
112553          var __err = out;
112554          out = $$outStack.pop();
112555          if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
112556            if (it.async) {
112557              out += ' throw new ValidationError([' + (__err) + ']); ';
112558            } else {
112559              out += ' validate.errors = [' + (__err) + ']; return false; ';
112560            }
112561          } else {
112562            out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
112563          }
112564        } else {
112565          out += ' ) { ';
112566          var arr2 = $deps;
112567          if (arr2) {
112568            var $propertyKey, i2 = -1,
112569              l2 = arr2.length - 1;
112570            while (i2 < l2) {
112571              $propertyKey = arr2[i2 += 1];
112572              var $prop = it.util.getProperty($propertyKey),
112573                $missingProperty = it.util.escapeQuotes($propertyKey),
112574                $useData = $data + $prop;
112575              if (it.opts._errorDataPathProperty) {
112576                it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);
112577              }
112578              out += ' if ( ' + ($useData) + ' === undefined ';
112579              if ($ownProperties) {
112580                out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
112581              }
112582              out += ') {  var err =   '; /* istanbul ignore else */
112583              if (it.createErrors !== false) {
112584                out += ' { keyword: \'' + ('dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } ';
112585                if (it.opts.messages !== false) {
112586                  out += ' , message: \'should have ';
112587                  if ($deps.length == 1) {
112588                    out += 'property ' + (it.util.escapeQuotes($deps[0]));
112589                  } else {
112590                    out += 'properties ' + (it.util.escapeQuotes($deps.join(", ")));
112591                  }
112592                  out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' ';
112593                }
112594                if (it.opts.verbose) {
112595                  out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
112596                }
112597                out += ' } ';
112598              } else {
112599                out += ' {} ';
112600              }
112601              out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';
112602            }
112603          }
112604        }
112605        out += ' }   ';
112606        if ($breakOnError) {
112607          $closingBraces += '}';
112608          out += ' else { ';
112609        }
112610      }
112611    }
112612    it.errorPath = $currentErrorPath;
112613    var $currentBaseId = $it.baseId;
112614    for (var $property in $schemaDeps) {
112615      var $sch = $schemaDeps[$property];
112616      if (it.util.schemaHasRules($sch, it.RULES.all)) {
112617        out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';
112618        if ($ownProperties) {
112619          out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') ';
112620        }
112621        out += ') { ';
112622        $it.schema = $sch;
112623        $it.schemaPath = $schemaPath + it.util.getProperty($property);
112624        $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);
112625        out += '  ' + (it.validate($it)) + ' ';
112626        $it.baseId = $currentBaseId;
112627        out += ' }  ';
112628        if ($breakOnError) {
112629          out += ' if (' + ($nextValid) + ') { ';
112630          $closingBraces += '}';
112631        }
112632      }
112633    }
112634    if ($breakOnError) {
112635      out += '   ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';
112636    }
112637    out = it.util.cleanUpCode(out);
112638    return out;
112639  }
112640  
112641  
112642  /***/ }),
112643  /* 661 */
112644  /***/ (function(module, exports, __webpack_require__) {
112645  
112646  "use strict";
112647  
112648  module.exports = function generate_enum(it, $keyword, $ruleType) {
112649    var out = ' ';
112650    var $lvl = it.level;
112651    var $dataLvl = it.dataLevel;
112652    var $schema = it.schema[$keyword];
112653    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
112654    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
112655    var $breakOnError = !it.opts.allErrors;
112656    var $data = 'data' + ($dataLvl || '');
112657    var $valid = 'valid' + $lvl;
112658    var $isData = it.opts.$data && $schema && $schema.$data,
112659      $schemaValue;
112660    if ($isData) {
112661      out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
112662      $schemaValue = 'schema' + $lvl;
112663    } else {
112664      $schemaValue = $schema;
112665    }
112666    var $i = 'i' + $lvl,
112667      $vSchema = 'schema' + $lvl;
112668    if (!$isData) {
112669      out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';';
112670    }
112671    out += 'var ' + ($valid) + ';';
112672    if ($isData) {
112673      out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';
112674    }
112675    out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }';
112676    if ($isData) {
112677      out += '  }  ';
112678    }
112679    out += ' if (!' + ($valid) + ') {   ';
112680    var $$outStack = $$outStack || [];
112681    $$outStack.push(out);
112682    out = ''; /* istanbul ignore else */
112683    if (it.createErrors !== false) {
112684      out += ' { keyword: \'' + ('enum') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } ';
112685      if (it.opts.messages !== false) {
112686        out += ' , message: \'should be equal to one of the allowed values\' ';
112687      }
112688      if (it.opts.verbose) {
112689        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
112690      }
112691      out += ' } ';
112692    } else {
112693      out += ' {} ';
112694    }
112695    var __err = out;
112696    out = $$outStack.pop();
112697    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
112698      if (it.async) {
112699        out += ' throw new ValidationError([' + (__err) + ']); ';
112700      } else {
112701        out += ' validate.errors = [' + (__err) + ']; return false; ';
112702      }
112703    } else {
112704      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
112705    }
112706    out += ' }';
112707    if ($breakOnError) {
112708      out += ' else { ';
112709    }
112710    return out;
112711  }
112712  
112713  
112714  /***/ }),
112715  /* 662 */
112716  /***/ (function(module, exports, __webpack_require__) {
112717  
112718  "use strict";
112719  
112720  module.exports = function generate_format(it, $keyword, $ruleType) {
112721    var out = ' ';
112722    var $lvl = it.level;
112723    var $dataLvl = it.dataLevel;
112724    var $schema = it.schema[$keyword];
112725    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
112726    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
112727    var $breakOnError = !it.opts.allErrors;
112728    var $data = 'data' + ($dataLvl || '');
112729    if (it.opts.format === false) {
112730      if ($breakOnError) {
112731        out += ' if (true) { ';
112732      }
112733      return out;
112734    }
112735    var $isData = it.opts.$data && $schema && $schema.$data,
112736      $schemaValue;
112737    if ($isData) {
112738      out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
112739      $schemaValue = 'schema' + $lvl;
112740    } else {
112741      $schemaValue = $schema;
112742    }
112743    var $unknownFormats = it.opts.unknownFormats,
112744      $allowUnknown = Array.isArray($unknownFormats);
112745    if ($isData) {
112746      var $format = 'format' + $lvl,
112747        $isObject = 'isObject' + $lvl,
112748        $formatType = 'formatType' + $lvl;
112749      out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \'object\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \'string\'; if (' + ($isObject) + ') { ';
112750      if (it.async) {
112751        out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; ';
112752      }
112753      out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if (  ';
112754      if ($isData) {
112755        out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || ';
112756      }
112757      out += ' (';
112758      if ($unknownFormats != 'ignore') {
112759        out += ' (' + ($schemaValue) + ' && !' + ($format) + ' ';
112760        if ($allowUnknown) {
112761          out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 ';
112762        }
112763        out += ') || ';
112764      }
112765      out += ' (' + ($format) + ' && ' + ($formatType) + ' == \'' + ($ruleType) + '\' && !(typeof ' + ($format) + ' == \'function\' ? ';
112766      if (it.async) {
112767        out += ' (async' + ($lvl) + ' ? ' + (it.yieldAwait) + ' ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) ';
112768      } else {
112769        out += ' ' + ($format) + '(' + ($data) + ') ';
112770      }
112771      out += ' : ' + ($format) + '.test(' + ($data) + '))))) {';
112772    } else {
112773      var $format = it.formats[$schema];
112774      if (!$format) {
112775        if ($unknownFormats == 'ignore') {
112776          it.logger.warn('unknown format "' + $schema + '" ignored in schema at path "' + it.errSchemaPath + '"');
112777          if ($breakOnError) {
112778            out += ' if (true) { ';
112779          }
112780          return out;
112781        } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) {
112782          if ($breakOnError) {
112783            out += ' if (true) { ';
112784          }
112785          return out;
112786        } else {
112787          throw new Error('unknown format "' + $schema + '" is used in schema at path "' + it.errSchemaPath + '"');
112788        }
112789      }
112790      var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate;
112791      var $formatType = $isObject && $format.type || 'string';
112792      if ($isObject) {
112793        var $async = $format.async === true;
112794        $format = $format.validate;
112795      }
112796      if ($formatType != $ruleType) {
112797        if ($breakOnError) {
112798          out += ' if (true) { ';
112799        }
112800        return out;
112801      }
112802      if ($async) {
112803        if (!it.async) throw new Error('async format in sync schema');
112804        var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate';
112805        out += ' if (!(' + (it.yieldAwait) + ' ' + ($formatRef) + '(' + ($data) + '))) { ';
112806      } else {
112807        out += ' if (! ';
112808        var $formatRef = 'formats' + it.util.getProperty($schema);
112809        if ($isObject) $formatRef += '.validate';
112810        if (typeof $format == 'function') {
112811          out += ' ' + ($formatRef) + '(' + ($data) + ') ';
112812        } else {
112813          out += ' ' + ($formatRef) + '.test(' + ($data) + ') ';
112814        }
112815        out += ') { ';
112816      }
112817    }
112818    var $$outStack = $$outStack || [];
112819    $$outStack.push(out);
112820    out = ''; /* istanbul ignore else */
112821    if (it.createErrors !== false) {
112822      out += ' { keyword: \'' + ('format') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format:  ';
112823      if ($isData) {
112824        out += '' + ($schemaValue);
112825      } else {
112826        out += '' + (it.util.toQuotedString($schema));
112827      }
112828      out += '  } ';
112829      if (it.opts.messages !== false) {
112830        out += ' , message: \'should match format "';
112831        if ($isData) {
112832          out += '\' + ' + ($schemaValue) + ' + \'';
112833        } else {
112834          out += '' + (it.util.escapeQuotes($schema));
112835        }
112836        out += '"\' ';
112837      }
112838      if (it.opts.verbose) {
112839        out += ' , schema:  ';
112840        if ($isData) {
112841          out += 'validate.schema' + ($schemaPath);
112842        } else {
112843          out += '' + (it.util.toQuotedString($schema));
112844        }
112845        out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
112846      }
112847      out += ' } ';
112848    } else {
112849      out += ' {} ';
112850    }
112851    var __err = out;
112852    out = $$outStack.pop();
112853    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
112854      if (it.async) {
112855        out += ' throw new ValidationError([' + (__err) + ']); ';
112856      } else {
112857        out += ' validate.errors = [' + (__err) + ']; return false; ';
112858      }
112859    } else {
112860      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
112861    }
112862    out += ' } ';
112863    if ($breakOnError) {
112864      out += ' else { ';
112865    }
112866    return out;
112867  }
112868  
112869  
112870  /***/ }),
112871  /* 663 */
112872  /***/ (function(module, exports, __webpack_require__) {
112873  
112874  "use strict";
112875  
112876  module.exports = function generate_items(it, $keyword, $ruleType) {
112877    var out = ' ';
112878    var $lvl = it.level;
112879    var $dataLvl = it.dataLevel;
112880    var $schema = it.schema[$keyword];
112881    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
112882    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
112883    var $breakOnError = !it.opts.allErrors;
112884    var $data = 'data' + ($dataLvl || '');
112885    var $valid = 'valid' + $lvl;
112886    var $errs = 'errs__' + $lvl;
112887    var $it = it.util.copy(it);
112888    var $closingBraces = '';
112889    $it.level++;
112890    var $nextValid = 'valid' + $it.level;
112891    var $idx = 'i' + $lvl,
112892      $dataNxt = $it.dataLevel = it.dataLevel + 1,
112893      $nextData = 'data' + $dataNxt,
112894      $currentBaseId = it.baseId;
112895    out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';
112896    if (Array.isArray($schema)) {
112897      var $additionalItems = it.schema.additionalItems;
112898      if ($additionalItems === false) {
112899        out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; ';
112900        var $currErrSchemaPath = $errSchemaPath;
112901        $errSchemaPath = it.errSchemaPath + '/additionalItems';
112902        out += '  if (!' + ($valid) + ') {   ';
112903        var $$outStack = $$outStack || [];
112904        $$outStack.push(out);
112905        out = ''; /* istanbul ignore else */
112906        if (it.createErrors !== false) {
112907          out += ' { keyword: \'' + ('additionalItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } ';
112908          if (it.opts.messages !== false) {
112909            out += ' , message: \'should NOT have more than ' + ($schema.length) + ' items\' ';
112910          }
112911          if (it.opts.verbose) {
112912            out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
112913          }
112914          out += ' } ';
112915        } else {
112916          out += ' {} ';
112917        }
112918        var __err = out;
112919        out = $$outStack.pop();
112920        if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
112921          if (it.async) {
112922            out += ' throw new ValidationError([' + (__err) + ']); ';
112923          } else {
112924            out += ' validate.errors = [' + (__err) + ']; return false; ';
112925          }
112926        } else {
112927          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
112928        }
112929        out += ' } ';
112930        $errSchemaPath = $currErrSchemaPath;
112931        if ($breakOnError) {
112932          $closingBraces += '}';
112933          out += ' else { ';
112934        }
112935      }
112936      var arr1 = $schema;
112937      if (arr1) {
112938        var $sch, $i = -1,
112939          l1 = arr1.length - 1;
112940        while ($i < l1) {
112941          $sch = arr1[$i += 1];
112942          if (it.util.schemaHasRules($sch, it.RULES.all)) {
112943            out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { ';
112944            var $passData = $data + '[' + $i + ']';
112945            $it.schema = $sch;
112946            $it.schemaPath = $schemaPath + '[' + $i + ']';
112947            $it.errSchemaPath = $errSchemaPath + '/' + $i;
112948            $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);
112949            $it.dataPathArr[$dataNxt] = $i;
112950            var $code = it.validate($it);
112951            $it.baseId = $currentBaseId;
112952            if (it.util.varOccurences($code, $nextData) < 2) {
112953              out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
112954            } else {
112955              out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
112956            }
112957            out += ' }  ';
112958            if ($breakOnError) {
112959              out += ' if (' + ($nextValid) + ') { ';
112960              $closingBraces += '}';
112961            }
112962          }
112963        }
112964      }
112965      if (typeof $additionalItems == 'object' && it.util.schemaHasRules($additionalItems, it.RULES.all)) {
112966        $it.schema = $additionalItems;
112967        $it.schemaPath = it.schemaPath + '.additionalItems';
112968        $it.errSchemaPath = it.errSchemaPath + '/additionalItems';
112969        out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') {  for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';
112970        $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);
112971        var $passData = $data + '[' + $idx + ']';
112972        $it.dataPathArr[$dataNxt] = $idx;
112973        var $code = it.validate($it);
112974        $it.baseId = $currentBaseId;
112975        if (it.util.varOccurences($code, $nextData) < 2) {
112976          out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
112977        } else {
112978          out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
112979        }
112980        if ($breakOnError) {
112981          out += ' if (!' + ($nextValid) + ') break; ';
112982        }
112983        out += ' } }  ';
112984        if ($breakOnError) {
112985          out += ' if (' + ($nextValid) + ') { ';
112986          $closingBraces += '}';
112987        }
112988      }
112989    } else if (it.util.schemaHasRules($schema, it.RULES.all)) {
112990      $it.schema = $schema;
112991      $it.schemaPath = $schemaPath;
112992      $it.errSchemaPath = $errSchemaPath;
112993      out += '  for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';
112994      $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);
112995      var $passData = $data + '[' + $idx + ']';
112996      $it.dataPathArr[$dataNxt] = $idx;
112997      var $code = it.validate($it);
112998      $it.baseId = $currentBaseId;
112999      if (it.util.varOccurences($code, $nextData) < 2) {
113000        out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
113001      } else {
113002        out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
113003      }
113004      if ($breakOnError) {
113005        out += ' if (!' + ($nextValid) + ') break; ';
113006      }
113007      out += ' }';
113008    }
113009    if ($breakOnError) {
113010      out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';
113011    }
113012    out = it.util.cleanUpCode(out);
113013    return out;
113014  }
113015  
113016  
113017  /***/ }),
113018  /* 664 */
113019  /***/ (function(module, exports, __webpack_require__) {
113020  
113021  "use strict";
113022  
113023  module.exports = function generate_multipleOf(it, $keyword, $ruleType) {
113024    var out = ' ';
113025    var $lvl = it.level;
113026    var $dataLvl = it.dataLevel;
113027    var $schema = it.schema[$keyword];
113028    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
113029    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
113030    var $breakOnError = !it.opts.allErrors;
113031    var $data = 'data' + ($dataLvl || '');
113032    var $isData = it.opts.$data && $schema && $schema.$data,
113033      $schemaValue;
113034    if ($isData) {
113035      out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
113036      $schemaValue = 'schema' + $lvl;
113037    } else {
113038      $schemaValue = $schema;
113039    }
113040    out += 'var division' + ($lvl) + ';if (';
113041    if ($isData) {
113042      out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || ';
113043    }
113044    out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', ';
113045    if (it.opts.multipleOfPrecision) {
113046      out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' ';
113047    } else {
113048      out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') ';
113049    }
113050    out += ' ) ';
113051    if ($isData) {
113052      out += '  )  ';
113053    }
113054    out += ' ) {   ';
113055    var $$outStack = $$outStack || [];
113056    $$outStack.push(out);
113057    out = ''; /* istanbul ignore else */
113058    if (it.createErrors !== false) {
113059      out += ' { keyword: \'' + ('multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } ';
113060      if (it.opts.messages !== false) {
113061        out += ' , message: \'should be multiple of ';
113062        if ($isData) {
113063          out += '\' + ' + ($schemaValue);
113064        } else {
113065          out += '' + ($schemaValue) + '\'';
113066        }
113067      }
113068      if (it.opts.verbose) {
113069        out += ' , schema:  ';
113070        if ($isData) {
113071          out += 'validate.schema' + ($schemaPath);
113072        } else {
113073          out += '' + ($schema);
113074        }
113075        out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
113076      }
113077      out += ' } ';
113078    } else {
113079      out += ' {} ';
113080    }
113081    var __err = out;
113082    out = $$outStack.pop();
113083    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
113084      if (it.async) {
113085        out += ' throw new ValidationError([' + (__err) + ']); ';
113086      } else {
113087        out += ' validate.errors = [' + (__err) + ']; return false; ';
113088      }
113089    } else {
113090      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
113091    }
113092    out += '} ';
113093    if ($breakOnError) {
113094      out += ' else { ';
113095    }
113096    return out;
113097  }
113098  
113099  
113100  /***/ }),
113101  /* 665 */
113102  /***/ (function(module, exports, __webpack_require__) {
113103  
113104  "use strict";
113105  
113106  module.exports = function generate_not(it, $keyword, $ruleType) {
113107    var out = ' ';
113108    var $lvl = it.level;
113109    var $dataLvl = it.dataLevel;
113110    var $schema = it.schema[$keyword];
113111    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
113112    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
113113    var $breakOnError = !it.opts.allErrors;
113114    var $data = 'data' + ($dataLvl || '');
113115    var $errs = 'errs__' + $lvl;
113116    var $it = it.util.copy(it);
113117    $it.level++;
113118    var $nextValid = 'valid' + $it.level;
113119    if (it.util.schemaHasRules($schema, it.RULES.all)) {
113120      $it.schema = $schema;
113121      $it.schemaPath = $schemaPath;
113122      $it.errSchemaPath = $errSchemaPath;
113123      out += ' var ' + ($errs) + ' = errors;  ';
113124      var $wasComposite = it.compositeRule;
113125      it.compositeRule = $it.compositeRule = true;
113126      $it.createErrors = false;
113127      var $allErrorsOption;
113128      if ($it.opts.allErrors) {
113129        $allErrorsOption = $it.opts.allErrors;
113130        $it.opts.allErrors = false;
113131      }
113132      out += ' ' + (it.validate($it)) + ' ';
113133      $it.createErrors = true;
113134      if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;
113135      it.compositeRule = $it.compositeRule = $wasComposite;
113136      out += ' if (' + ($nextValid) + ') {   ';
113137      var $$outStack = $$outStack || [];
113138      $$outStack.push(out);
113139      out = ''; /* istanbul ignore else */
113140      if (it.createErrors !== false) {
113141        out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
113142        if (it.opts.messages !== false) {
113143          out += ' , message: \'should NOT be valid\' ';
113144        }
113145        if (it.opts.verbose) {
113146          out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
113147        }
113148        out += ' } ';
113149      } else {
113150        out += ' {} ';
113151      }
113152      var __err = out;
113153      out = $$outStack.pop();
113154      if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
113155        if (it.async) {
113156          out += ' throw new ValidationError([' + (__err) + ']); ';
113157        } else {
113158          out += ' validate.errors = [' + (__err) + ']; return false; ';
113159        }
113160      } else {
113161        out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
113162      }
113163      out += ' } else {  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';
113164      if (it.opts.allErrors) {
113165        out += ' } ';
113166      }
113167    } else {
113168      out += '  var err =   '; /* istanbul ignore else */
113169      if (it.createErrors !== false) {
113170        out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
113171        if (it.opts.messages !== false) {
113172          out += ' , message: \'should NOT be valid\' ';
113173        }
113174        if (it.opts.verbose) {
113175          out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
113176        }
113177        out += ' } ';
113178      } else {
113179        out += ' {} ';
113180      }
113181      out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
113182      if ($breakOnError) {
113183        out += ' if (false) { ';
113184      }
113185    }
113186    return out;
113187  }
113188  
113189  
113190  /***/ }),
113191  /* 666 */
113192  /***/ (function(module, exports, __webpack_require__) {
113193  
113194  "use strict";
113195  
113196  module.exports = function generate_oneOf(it, $keyword, $ruleType) {
113197    var out = ' ';
113198    var $lvl = it.level;
113199    var $dataLvl = it.dataLevel;
113200    var $schema = it.schema[$keyword];
113201    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
113202    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
113203    var $breakOnError = !it.opts.allErrors;
113204    var $data = 'data' + ($dataLvl || '');
113205    var $valid = 'valid' + $lvl;
113206    var $errs = 'errs__' + $lvl;
113207    var $it = it.util.copy(it);
113208    var $closingBraces = '';
113209    $it.level++;
113210    var $nextValid = 'valid' + $it.level;
113211    out += 'var ' + ($errs) + ' = errors;var prevValid' + ($lvl) + ' = false;var ' + ($valid) + ' = false;';
113212    var $currentBaseId = $it.baseId;
113213    var $wasComposite = it.compositeRule;
113214    it.compositeRule = $it.compositeRule = true;
113215    var arr1 = $schema;
113216    if (arr1) {
113217      var $sch, $i = -1,
113218        l1 = arr1.length - 1;
113219      while ($i < l1) {
113220        $sch = arr1[$i += 1];
113221        if (it.util.schemaHasRules($sch, it.RULES.all)) {
113222          $it.schema = $sch;
113223          $it.schemaPath = $schemaPath + '[' + $i + ']';
113224          $it.errSchemaPath = $errSchemaPath + '/' + $i;
113225          out += '  ' + (it.validate($it)) + ' ';
113226          $it.baseId = $currentBaseId;
113227        } else {
113228          out += ' var ' + ($nextValid) + ' = true; ';
113229        }
113230        if ($i) {
113231          out += ' if (' + ($nextValid) + ' && prevValid' + ($lvl) + ') ' + ($valid) + ' = false; else { ';
113232          $closingBraces += '}';
113233        }
113234        out += ' if (' + ($nextValid) + ') ' + ($valid) + ' = prevValid' + ($lvl) + ' = true;';
113235      }
113236    }
113237    it.compositeRule = $it.compositeRule = $wasComposite;
113238    out += '' + ($closingBraces) + 'if (!' + ($valid) + ') {   var err =   '; /* istanbul ignore else */
113239    if (it.createErrors !== false) {
113240      out += ' { keyword: \'' + ('oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
113241      if (it.opts.messages !== false) {
113242        out += ' , message: \'should match exactly one schema in oneOf\' ';
113243      }
113244      if (it.opts.verbose) {
113245        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
113246      }
113247      out += ' } ';
113248    } else {
113249      out += ' {} ';
113250    }
113251    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
113252    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
113253      if (it.async) {
113254        out += ' throw new ValidationError(vErrors); ';
113255      } else {
113256        out += ' validate.errors = vErrors; return false; ';
113257      }
113258    }
113259    out += '} else {  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }';
113260    if (it.opts.allErrors) {
113261      out += ' } ';
113262    }
113263    return out;
113264  }
113265  
113266  
113267  /***/ }),
113268  /* 667 */
113269  /***/ (function(module, exports, __webpack_require__) {
113270  
113271  "use strict";
113272  
113273  module.exports = function generate_pattern(it, $keyword, $ruleType) {
113274    var out = ' ';
113275    var $lvl = it.level;
113276    var $dataLvl = it.dataLevel;
113277    var $schema = it.schema[$keyword];
113278    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
113279    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
113280    var $breakOnError = !it.opts.allErrors;
113281    var $data = 'data' + ($dataLvl || '');
113282    var $isData = it.opts.$data && $schema && $schema.$data,
113283      $schemaValue;
113284    if ($isData) {
113285      out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
113286      $schemaValue = 'schema' + $lvl;
113287    } else {
113288      $schemaValue = $schema;
113289    }
113290    var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema);
113291    out += 'if ( ';
113292    if ($isData) {
113293      out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || ';
113294    }
113295    out += ' !' + ($regexp) + '.test(' + ($data) + ') ) {   ';
113296    var $$outStack = $$outStack || [];
113297    $$outStack.push(out);
113298    out = ''; /* istanbul ignore else */
113299    if (it.createErrors !== false) {
113300      out += ' { keyword: \'' + ('pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern:  ';
113301      if ($isData) {
113302        out += '' + ($schemaValue);
113303      } else {
113304        out += '' + (it.util.toQuotedString($schema));
113305      }
113306      out += '  } ';
113307      if (it.opts.messages !== false) {
113308        out += ' , message: \'should match pattern "';
113309        if ($isData) {
113310          out += '\' + ' + ($schemaValue) + ' + \'';
113311        } else {
113312          out += '' + (it.util.escapeQuotes($schema));
113313        }
113314        out += '"\' ';
113315      }
113316      if (it.opts.verbose) {
113317        out += ' , schema:  ';
113318        if ($isData) {
113319          out += 'validate.schema' + ($schemaPath);
113320        } else {
113321          out += '' + (it.util.toQuotedString($schema));
113322        }
113323        out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
113324      }
113325      out += ' } ';
113326    } else {
113327      out += ' {} ';
113328    }
113329    var __err = out;
113330    out = $$outStack.pop();
113331    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
113332      if (it.async) {
113333        out += ' throw new ValidationError([' + (__err) + ']); ';
113334      } else {
113335        out += ' validate.errors = [' + (__err) + ']; return false; ';
113336      }
113337    } else {
113338      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
113339    }
113340    out += '} ';
113341    if ($breakOnError) {
113342      out += ' else { ';
113343    }
113344    return out;
113345  }
113346  
113347  
113348  /***/ }),
113349  /* 668 */
113350  /***/ (function(module, exports, __webpack_require__) {
113351  
113352  "use strict";
113353  
113354  module.exports = function generate_properties(it, $keyword, $ruleType) {
113355    var out = ' ';
113356    var $lvl = it.level;
113357    var $dataLvl = it.dataLevel;
113358    var $schema = it.schema[$keyword];
113359    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
113360    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
113361    var $breakOnError = !it.opts.allErrors;
113362    var $data = 'data' + ($dataLvl || '');
113363    var $valid = 'valid' + $lvl;
113364    var $errs = 'errs__' + $lvl;
113365    var $it = it.util.copy(it);
113366    var $closingBraces = '';
113367    $it.level++;
113368    var $nextValid = 'valid' + $it.level;
113369    var $key = 'key' + $lvl,
113370      $idx = 'idx' + $lvl,
113371      $dataNxt = $it.dataLevel = it.dataLevel + 1,
113372      $nextData = 'data' + $dataNxt,
113373      $dataProperties = 'dataProperties' + $lvl;
113374    var $schemaKeys = Object.keys($schema || {}),
113375      $pProperties = it.schema.patternProperties || {},
113376      $pPropertyKeys = Object.keys($pProperties),
113377      $aProperties = it.schema.additionalProperties,
113378      $someProperties = $schemaKeys.length || $pPropertyKeys.length,
113379      $noAdditional = $aProperties === false,
113380      $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length,
113381      $removeAdditional = it.opts.removeAdditional,
113382      $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional,
113383      $ownProperties = it.opts.ownProperties,
113384      $currentBaseId = it.baseId;
113385    var $required = it.schema.required;
113386    if ($required && !(it.opts.v5 && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required);
113387    if (it.opts.patternGroups) {
113388      var $pgProperties = it.schema.patternGroups || {},
113389        $pgPropertyKeys = Object.keys($pgProperties);
113390    }
113391    out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;';
113392    if ($ownProperties) {
113393      out += ' var ' + ($dataProperties) + ' = undefined;';
113394    }
113395    if ($checkAdditional) {
113396      if ($ownProperties) {
113397        out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';
113398      } else {
113399        out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';
113400      }
113401      if ($someProperties) {
113402        out += ' var isAdditional' + ($lvl) + ' = !(false ';
113403        if ($schemaKeys.length) {
113404          if ($schemaKeys.length > 5) {
113405            out += ' || validate.schema' + ($schemaPath) + '[' + ($key) + '] ';
113406          } else {
113407            var arr1 = $schemaKeys;
113408            if (arr1) {
113409              var $propertyKey, i1 = -1,
113410                l1 = arr1.length - 1;
113411              while (i1 < l1) {
113412                $propertyKey = arr1[i1 += 1];
113413                out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' ';
113414              }
113415            }
113416          }
113417        }
113418        if ($pPropertyKeys.length) {
113419          var arr2 = $pPropertyKeys;
113420          if (arr2) {
113421            var $pProperty, $i = -1,
113422              l2 = arr2.length - 1;
113423            while ($i < l2) {
113424              $pProperty = arr2[$i += 1];
113425              out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') ';
113426            }
113427          }
113428        }
113429        if (it.opts.patternGroups && $pgPropertyKeys.length) {
113430          var arr3 = $pgPropertyKeys;
113431          if (arr3) {
113432            var $pgProperty, $i = -1,
113433              l3 = arr3.length - 1;
113434            while ($i < l3) {
113435              $pgProperty = arr3[$i += 1];
113436              out += ' || ' + (it.usePattern($pgProperty)) + '.test(' + ($key) + ') ';
113437            }
113438          }
113439        }
113440        out += ' ); if (isAdditional' + ($lvl) + ') { ';
113441      }
113442      if ($removeAdditional == 'all') {
113443        out += ' delete ' + ($data) + '[' + ($key) + ']; ';
113444      } else {
113445        var $currentErrorPath = it.errorPath;
113446        var $additionalProperty = '\' + ' + $key + ' + \'';
113447        if (it.opts._errorDataPathProperty) {
113448          it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
113449        }
113450        if ($noAdditional) {
113451          if ($removeAdditional) {
113452            out += ' delete ' + ($data) + '[' + ($key) + ']; ';
113453          } else {
113454            out += ' ' + ($nextValid) + ' = false; ';
113455            var $currErrSchemaPath = $errSchemaPath;
113456            $errSchemaPath = it.errSchemaPath + '/additionalProperties';
113457            var $$outStack = $$outStack || [];
113458            $$outStack.push(out);
113459            out = ''; /* istanbul ignore else */
113460            if (it.createErrors !== false) {
113461              out += ' { keyword: \'' + ('additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \'' + ($additionalProperty) + '\' } ';
113462              if (it.opts.messages !== false) {
113463                out += ' , message: \'should NOT have additional properties\' ';
113464              }
113465              if (it.opts.verbose) {
113466                out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
113467              }
113468              out += ' } ';
113469            } else {
113470              out += ' {} ';
113471            }
113472            var __err = out;
113473            out = $$outStack.pop();
113474            if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
113475              if (it.async) {
113476                out += ' throw new ValidationError([' + (__err) + ']); ';
113477              } else {
113478                out += ' validate.errors = [' + (__err) + ']; return false; ';
113479              }
113480            } else {
113481              out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
113482            }
113483            $errSchemaPath = $currErrSchemaPath;
113484            if ($breakOnError) {
113485              out += ' break; ';
113486            }
113487          }
113488        } else if ($additionalIsSchema) {
113489          if ($removeAdditional == 'failing') {
113490            out += ' var ' + ($errs) + ' = errors;  ';
113491            var $wasComposite = it.compositeRule;
113492            it.compositeRule = $it.compositeRule = true;
113493            $it.schema = $aProperties;
113494            $it.schemaPath = it.schemaPath + '.additionalProperties';
113495            $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';
113496            $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
113497            var $passData = $data + '[' + $key + ']';
113498            $it.dataPathArr[$dataNxt] = $key;
113499            var $code = it.validate($it);
113500            $it.baseId = $currentBaseId;
113501            if (it.util.varOccurences($code, $nextData) < 2) {
113502              out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
113503            } else {
113504              out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
113505            }
113506            out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; }  ';
113507            it.compositeRule = $it.compositeRule = $wasComposite;
113508          } else {
113509            $it.schema = $aProperties;
113510            $it.schemaPath = it.schemaPath + '.additionalProperties';
113511            $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';
113512            $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
113513            var $passData = $data + '[' + $key + ']';
113514            $it.dataPathArr[$dataNxt] = $key;
113515            var $code = it.validate($it);
113516            $it.baseId = $currentBaseId;
113517            if (it.util.varOccurences($code, $nextData) < 2) {
113518              out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
113519            } else {
113520              out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
113521            }
113522            if ($breakOnError) {
113523              out += ' if (!' + ($nextValid) + ') break; ';
113524            }
113525          }
113526        }
113527        it.errorPath = $currentErrorPath;
113528      }
113529      if ($someProperties) {
113530        out += ' } ';
113531      }
113532      out += ' }  ';
113533      if ($breakOnError) {
113534        out += ' if (' + ($nextValid) + ') { ';
113535        $closingBraces += '}';
113536      }
113537    }
113538    var $useDefaults = it.opts.useDefaults && !it.compositeRule;
113539    if ($schemaKeys.length) {
113540      var arr4 = $schemaKeys;
113541      if (arr4) {
113542        var $propertyKey, i4 = -1,
113543          l4 = arr4.length - 1;
113544        while (i4 < l4) {
113545          $propertyKey = arr4[i4 += 1];
113546          var $sch = $schema[$propertyKey];
113547          if (it.util.schemaHasRules($sch, it.RULES.all)) {
113548            var $prop = it.util.getProperty($propertyKey),
113549              $passData = $data + $prop,
113550              $hasDefault = $useDefaults && $sch.default !== undefined;
113551            $it.schema = $sch;
113552            $it.schemaPath = $schemaPath + $prop;
113553            $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);
113554            $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);
113555            $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);
113556            var $code = it.validate($it);
113557            $it.baseId = $currentBaseId;
113558            if (it.util.varOccurences($code, $nextData) < 2) {
113559              $code = it.util.varReplace($code, $nextData, $passData);
113560              var $useData = $passData;
113561            } else {
113562              var $useData = $nextData;
113563              out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ';
113564            }
113565            if ($hasDefault) {
113566              out += ' ' + ($code) + ' ';
113567            } else {
113568              if ($requiredHash && $requiredHash[$propertyKey]) {
113569                out += ' if ( ' + ($useData) + ' === undefined ';
113570                if ($ownProperties) {
113571                  out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
113572                }
113573                out += ') { ' + ($nextValid) + ' = false; ';
113574                var $currentErrorPath = it.errorPath,
113575                  $currErrSchemaPath = $errSchemaPath,
113576                  $missingProperty = it.util.escapeQuotes($propertyKey);
113577                if (it.opts._errorDataPathProperty) {
113578                  it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);
113579                }
113580                $errSchemaPath = it.errSchemaPath + '/required';
113581                var $$outStack = $$outStack || [];
113582                $$outStack.push(out);
113583                out = ''; /* istanbul ignore else */
113584                if (it.createErrors !== false) {
113585                  out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
113586                  if (it.opts.messages !== false) {
113587                    out += ' , message: \'';
113588                    if (it.opts._errorDataPathProperty) {
113589                      out += 'is a required property';
113590                    } else {
113591                      out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
113592                    }
113593                    out += '\' ';
113594                  }
113595                  if (it.opts.verbose) {
113596                    out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
113597                  }
113598                  out += ' } ';
113599                } else {
113600                  out += ' {} ';
113601                }
113602                var __err = out;
113603                out = $$outStack.pop();
113604                if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
113605                  if (it.async) {
113606                    out += ' throw new ValidationError([' + (__err) + ']); ';
113607                  } else {
113608                    out += ' validate.errors = [' + (__err) + ']; return false; ';
113609                  }
113610                } else {
113611                  out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
113612                }
113613                $errSchemaPath = $currErrSchemaPath;
113614                it.errorPath = $currentErrorPath;
113615                out += ' } else { ';
113616              } else {
113617                if ($breakOnError) {
113618                  out += ' if ( ' + ($useData) + ' === undefined ';
113619                  if ($ownProperties) {
113620                    out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
113621                  }
113622                  out += ') { ' + ($nextValid) + ' = true; } else { ';
113623                } else {
113624                  out += ' if (' + ($useData) + ' !== undefined ';
113625                  if ($ownProperties) {
113626                    out += ' &&   Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
113627                  }
113628                  out += ' ) { ';
113629                }
113630              }
113631              out += ' ' + ($code) + ' } ';
113632            }
113633          }
113634          if ($breakOnError) {
113635            out += ' if (' + ($nextValid) + ') { ';
113636            $closingBraces += '}';
113637          }
113638        }
113639      }
113640    }
113641    if ($pPropertyKeys.length) {
113642      var arr5 = $pPropertyKeys;
113643      if (arr5) {
113644        var $pProperty, i5 = -1,
113645          l5 = arr5.length - 1;
113646        while (i5 < l5) {
113647          $pProperty = arr5[i5 += 1];
113648          var $sch = $pProperties[$pProperty];
113649          if (it.util.schemaHasRules($sch, it.RULES.all)) {
113650            $it.schema = $sch;
113651            $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);
113652            $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);
113653            if ($ownProperties) {
113654              out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';
113655            } else {
113656              out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';
113657            }
113658            out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { ';
113659            $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
113660            var $passData = $data + '[' + $key + ']';
113661            $it.dataPathArr[$dataNxt] = $key;
113662            var $code = it.validate($it);
113663            $it.baseId = $currentBaseId;
113664            if (it.util.varOccurences($code, $nextData) < 2) {
113665              out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
113666            } else {
113667              out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
113668            }
113669            if ($breakOnError) {
113670              out += ' if (!' + ($nextValid) + ') break; ';
113671            }
113672            out += ' } ';
113673            if ($breakOnError) {
113674              out += ' else ' + ($nextValid) + ' = true; ';
113675            }
113676            out += ' }  ';
113677            if ($breakOnError) {
113678              out += ' if (' + ($nextValid) + ') { ';
113679              $closingBraces += '}';
113680            }
113681          }
113682        }
113683      }
113684    }
113685    if (it.opts.patternGroups && $pgPropertyKeys.length) {
113686      var arr6 = $pgPropertyKeys;
113687      if (arr6) {
113688        var $pgProperty, i6 = -1,
113689          l6 = arr6.length - 1;
113690        while (i6 < l6) {
113691          $pgProperty = arr6[i6 += 1];
113692          var $pgSchema = $pgProperties[$pgProperty],
113693            $sch = $pgSchema.schema;
113694          if (it.util.schemaHasRules($sch, it.RULES.all)) {
113695            $it.schema = $sch;
113696            $it.schemaPath = it.schemaPath + '.patternGroups' + it.util.getProperty($pgProperty) + '.schema';
113697            $it.errSchemaPath = it.errSchemaPath + '/patternGroups/' + it.util.escapeFragment($pgProperty) + '/schema';
113698            out += ' var pgPropCount' + ($lvl) + ' = 0;  ';
113699            if ($ownProperties) {
113700              out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';
113701            } else {
113702              out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';
113703            }
113704            out += ' if (' + (it.usePattern($pgProperty)) + '.test(' + ($key) + ')) { pgPropCount' + ($lvl) + '++; ';
113705            $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
113706            var $passData = $data + '[' + $key + ']';
113707            $it.dataPathArr[$dataNxt] = $key;
113708            var $code = it.validate($it);
113709            $it.baseId = $currentBaseId;
113710            if (it.util.varOccurences($code, $nextData) < 2) {
113711              out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
113712            } else {
113713              out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
113714            }
113715            if ($breakOnError) {
113716              out += ' if (!' + ($nextValid) + ') break; ';
113717            }
113718            out += ' } ';
113719            if ($breakOnError) {
113720              out += ' else ' + ($nextValid) + ' = true; ';
113721            }
113722            out += ' }  ';
113723            if ($breakOnError) {
113724              out += ' if (' + ($nextValid) + ') { ';
113725              $closingBraces += '}';
113726            }
113727            var $pgMin = $pgSchema.minimum,
113728              $pgMax = $pgSchema.maximum;
113729            if ($pgMin !== undefined || $pgMax !== undefined) {
113730              out += ' var ' + ($valid) + ' = true; ';
113731              var $currErrSchemaPath = $errSchemaPath;
113732              if ($pgMin !== undefined) {
113733                var $limit = $pgMin,
113734                  $reason = 'minimum',
113735                  $moreOrLess = 'less';
113736                out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' >= ' + ($pgMin) + '; ';
113737                $errSchemaPath = it.errSchemaPath + '/patternGroups/minimum';
113738                out += '  if (!' + ($valid) + ') {   ';
113739                var $$outStack = $$outStack || [];
113740                $$outStack.push(out);
113741                out = ''; /* istanbul ignore else */
113742                if (it.createErrors !== false) {
113743                  out += ' { keyword: \'' + ('patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } ';
113744                  if (it.opts.messages !== false) {
113745                    out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' ';
113746                  }
113747                  if (it.opts.verbose) {
113748                    out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
113749                  }
113750                  out += ' } ';
113751                } else {
113752                  out += ' {} ';
113753                }
113754                var __err = out;
113755                out = $$outStack.pop();
113756                if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
113757                  if (it.async) {
113758                    out += ' throw new ValidationError([' + (__err) + ']); ';
113759                  } else {
113760                    out += ' validate.errors = [' + (__err) + ']; return false; ';
113761                  }
113762                } else {
113763                  out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
113764                }
113765                out += ' } ';
113766                if ($pgMax !== undefined) {
113767                  out += ' else ';
113768                }
113769              }
113770              if ($pgMax !== undefined) {
113771                var $limit = $pgMax,
113772                  $reason = 'maximum',
113773                  $moreOrLess = 'more';
113774                out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' <= ' + ($pgMax) + '; ';
113775                $errSchemaPath = it.errSchemaPath + '/patternGroups/maximum';
113776                out += '  if (!' + ($valid) + ') {   ';
113777                var $$outStack = $$outStack || [];
113778                $$outStack.push(out);
113779                out = ''; /* istanbul ignore else */
113780                if (it.createErrors !== false) {
113781                  out += ' { keyword: \'' + ('patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } ';
113782                  if (it.opts.messages !== false) {
113783                    out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' ';
113784                  }
113785                  if (it.opts.verbose) {
113786                    out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
113787                  }
113788                  out += ' } ';
113789                } else {
113790                  out += ' {} ';
113791                }
113792                var __err = out;
113793                out = $$outStack.pop();
113794                if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
113795                  if (it.async) {
113796                    out += ' throw new ValidationError([' + (__err) + ']); ';
113797                  } else {
113798                    out += ' validate.errors = [' + (__err) + ']; return false; ';
113799                  }
113800                } else {
113801                  out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
113802                }
113803                out += ' } ';
113804              }
113805              $errSchemaPath = $currErrSchemaPath;
113806              if ($breakOnError) {
113807                out += ' if (' + ($valid) + ') { ';
113808                $closingBraces += '}';
113809              }
113810            }
113811          }
113812        }
113813      }
113814    }
113815    if ($breakOnError) {
113816      out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';
113817    }
113818    out = it.util.cleanUpCode(out);
113819    return out;
113820  }
113821  
113822  
113823  /***/ }),
113824  /* 669 */
113825  /***/ (function(module, exports, __webpack_require__) {
113826  
113827  "use strict";
113828  
113829  module.exports = function generate_propertyNames(it, $keyword, $ruleType) {
113830    var out = ' ';
113831    var $lvl = it.level;
113832    var $dataLvl = it.dataLevel;
113833    var $schema = it.schema[$keyword];
113834    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
113835    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
113836    var $breakOnError = !it.opts.allErrors;
113837    var $data = 'data' + ($dataLvl || '');
113838    var $errs = 'errs__' + $lvl;
113839    var $it = it.util.copy(it);
113840    var $closingBraces = '';
113841    $it.level++;
113842    var $nextValid = 'valid' + $it.level;
113843    if (it.util.schemaHasRules($schema, it.RULES.all)) {
113844      $it.schema = $schema;
113845      $it.schemaPath = $schemaPath;
113846      $it.errSchemaPath = $errSchemaPath;
113847      var $key = 'key' + $lvl,
113848        $idx = 'idx' + $lvl,
113849        $i = 'i' + $lvl,
113850        $invalidName = '\' + ' + $key + ' + \'',
113851        $dataNxt = $it.dataLevel = it.dataLevel + 1,
113852        $nextData = 'data' + $dataNxt,
113853        $dataProperties = 'dataProperties' + $lvl,
113854        $ownProperties = it.opts.ownProperties,
113855        $currentBaseId = it.baseId;
113856      out += ' var ' + ($errs) + ' = errors; ';
113857      if ($ownProperties) {
113858        out += ' var ' + ($dataProperties) + ' = undefined; ';
113859      }
113860      if ($ownProperties) {
113861        out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';
113862      } else {
113863        out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';
113864      }
113865      out += ' var startErrs' + ($lvl) + ' = errors; ';
113866      var $passData = $key;
113867      var $wasComposite = it.compositeRule;
113868      it.compositeRule = $it.compositeRule = true;
113869      var $code = it.validate($it);
113870      $it.baseId = $currentBaseId;
113871      if (it.util.varOccurences($code, $nextData) < 2) {
113872        out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
113873      } else {
113874        out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
113875      }
113876      it.compositeRule = $it.compositeRule = $wasComposite;
113877      out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + '<errors; ' + ($i) + '++) { vErrors[' + ($i) + '].propertyName = ' + ($key) + '; }   var err =   '; /* istanbul ignore else */
113878      if (it.createErrors !== false) {
113879        out += ' { keyword: \'' + ('propertyNames') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { propertyName: \'' + ($invalidName) + '\' } ';
113880        if (it.opts.messages !== false) {
113881          out += ' , message: \'property name \\\'' + ($invalidName) + '\\\' is invalid\' ';
113882        }
113883        if (it.opts.verbose) {
113884          out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
113885        }
113886        out += ' } ';
113887      } else {
113888        out += ' {} ';
113889      }
113890      out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
113891      if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
113892        if (it.async) {
113893          out += ' throw new ValidationError(vErrors); ';
113894        } else {
113895          out += ' validate.errors = vErrors; return false; ';
113896        }
113897      }
113898      if ($breakOnError) {
113899        out += ' break; ';
113900      }
113901      out += ' } }';
113902    }
113903    if ($breakOnError) {
113904      out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';
113905    }
113906    out = it.util.cleanUpCode(out);
113907    return out;
113908  }
113909  
113910  
113911  /***/ }),
113912  /* 670 */
113913  /***/ (function(module, exports, __webpack_require__) {
113914  
113915  "use strict";
113916  
113917  module.exports = function generate_ref(it, $keyword, $ruleType) {
113918    var out = ' ';
113919    var $lvl = it.level;
113920    var $dataLvl = it.dataLevel;
113921    var $schema = it.schema[$keyword];
113922    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
113923    var $breakOnError = !it.opts.allErrors;
113924    var $data = 'data' + ($dataLvl || '');
113925    var $valid = 'valid' + $lvl;
113926    var $async, $refCode;
113927    if ($schema == '#' || $schema == '#/') {
113928      if (it.isRoot) {
113929        $async = it.async;
113930        $refCode = 'validate';
113931      } else {
113932        $async = it.root.schema.$async === true;
113933        $refCode = 'root.refVal[0]';
113934      }
113935    } else {
113936      var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot);
113937      if ($refVal === undefined) {
113938        var $message = it.MissingRefError.message(it.baseId, $schema);
113939        if (it.opts.missingRefs == 'fail') {
113940          it.logger.error($message);
113941          var $$outStack = $$outStack || [];
113942          $$outStack.push(out);
113943          out = ''; /* istanbul ignore else */
113944          if (it.createErrors !== false) {
113945            out += ' { keyword: \'' + ('$ref') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \'' + (it.util.escapeQuotes($schema)) + '\' } ';
113946            if (it.opts.messages !== false) {
113947              out += ' , message: \'can\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\' ';
113948            }
113949            if (it.opts.verbose) {
113950              out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
113951            }
113952            out += ' } ';
113953          } else {
113954            out += ' {} ';
113955          }
113956          var __err = out;
113957          out = $$outStack.pop();
113958          if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
113959            if (it.async) {
113960              out += ' throw new ValidationError([' + (__err) + ']); ';
113961            } else {
113962              out += ' validate.errors = [' + (__err) + ']; return false; ';
113963            }
113964          } else {
113965            out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
113966          }
113967          if ($breakOnError) {
113968            out += ' if (false) { ';
113969          }
113970        } else if (it.opts.missingRefs == 'ignore') {
113971          it.logger.warn($message);
113972          if ($breakOnError) {
113973            out += ' if (true) { ';
113974          }
113975        } else {
113976          throw new it.MissingRefError(it.baseId, $schema, $message);
113977        }
113978      } else if ($refVal.inline) {
113979        var $it = it.util.copy(it);
113980        $it.level++;
113981        var $nextValid = 'valid' + $it.level;
113982        $it.schema = $refVal.schema;
113983        $it.schemaPath = '';
113984        $it.errSchemaPath = $schema;
113985        var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code);
113986        out += ' ' + ($code) + ' ';
113987        if ($breakOnError) {
113988          out += ' if (' + ($nextValid) + ') { ';
113989        }
113990      } else {
113991        $async = $refVal.$async === true;
113992        $refCode = $refVal.code;
113993      }
113994    }
113995    if ($refCode) {
113996      var $$outStack = $$outStack || [];
113997      $$outStack.push(out);
113998      out = '';
113999      if (it.opts.passContext) {
114000        out += ' ' + ($refCode) + '.call(this, ';
114001      } else {
114002        out += ' ' + ($refCode) + '( ';
114003      }
114004      out += ' ' + ($data) + ', (dataPath || \'\')';
114005      if (it.errorPath != '""') {
114006        out += ' + ' + (it.errorPath);
114007      }
114008      var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',
114009        $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';
114010      out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData)  ';
114011      var __callValidate = out;
114012      out = $$outStack.pop();
114013      if ($async) {
114014        if (!it.async) throw new Error('async schema referenced by sync schema');
114015        if ($breakOnError) {
114016          out += ' var ' + ($valid) + '; ';
114017        }
114018        out += ' try { ' + (it.yieldAwait) + ' ' + (__callValidate) + '; ';
114019        if ($breakOnError) {
114020          out += ' ' + ($valid) + ' = true; ';
114021        }
114022        out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ';
114023        if ($breakOnError) {
114024          out += ' ' + ($valid) + ' = false; ';
114025        }
114026        out += ' } ';
114027        if ($breakOnError) {
114028          out += ' if (' + ($valid) + ') { ';
114029        }
114030      } else {
114031        out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } ';
114032        if ($breakOnError) {
114033          out += ' else { ';
114034        }
114035      }
114036    }
114037    return out;
114038  }
114039  
114040  
114041  /***/ }),
114042  /* 671 */
114043  /***/ (function(module, exports, __webpack_require__) {
114044  
114045  "use strict";
114046  
114047  module.exports = function generate_required(it, $keyword, $ruleType) {
114048    var out = ' ';
114049    var $lvl = it.level;
114050    var $dataLvl = it.dataLevel;
114051    var $schema = it.schema[$keyword];
114052    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
114053    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
114054    var $breakOnError = !it.opts.allErrors;
114055    var $data = 'data' + ($dataLvl || '');
114056    var $valid = 'valid' + $lvl;
114057    var $isData = it.opts.$data && $schema && $schema.$data,
114058      $schemaValue;
114059    if ($isData) {
114060      out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
114061      $schemaValue = 'schema' + $lvl;
114062    } else {
114063      $schemaValue = $schema;
114064    }
114065    var $vSchema = 'schema' + $lvl;
114066    if (!$isData) {
114067      if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) {
114068        var $required = [];
114069        var arr1 = $schema;
114070        if (arr1) {
114071          var $property, i1 = -1,
114072            l1 = arr1.length - 1;
114073          while (i1 < l1) {
114074            $property = arr1[i1 += 1];
114075            var $propertySch = it.schema.properties[$property];
114076            if (!($propertySch && it.util.schemaHasRules($propertySch, it.RULES.all))) {
114077              $required[$required.length] = $property;
114078            }
114079          }
114080        }
114081      } else {
114082        var $required = $schema;
114083      }
114084    }
114085    if ($isData || $required.length) {
114086      var $currentErrorPath = it.errorPath,
114087        $loopRequired = $isData || $required.length >= it.opts.loopRequired,
114088        $ownProperties = it.opts.ownProperties;
114089      if ($breakOnError) {
114090        out += ' var missing' + ($lvl) + '; ';
114091        if ($loopRequired) {
114092          if (!$isData) {
114093            out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';
114094          }
114095          var $i = 'i' + $lvl,
114096            $propertyPath = 'schema' + $lvl + '[' + $i + ']',
114097            $missingProperty = '\' + ' + $propertyPath + ' + \'';
114098          if (it.opts._errorDataPathProperty) {
114099            it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);
114100          }
114101          out += ' var ' + ($valid) + ' = true; ';
114102          if ($isData) {
114103            out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';
114104          }
114105          out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined ';
114106          if ($ownProperties) {
114107            out += ' &&   Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';
114108          }
114109          out += '; if (!' + ($valid) + ') break; } ';
114110          if ($isData) {
114111            out += '  }  ';
114112          }
114113          out += '  if (!' + ($valid) + ') {   ';
114114          var $$outStack = $$outStack || [];
114115          $$outStack.push(out);
114116          out = ''; /* istanbul ignore else */
114117          if (it.createErrors !== false) {
114118            out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
114119            if (it.opts.messages !== false) {
114120              out += ' , message: \'';
114121              if (it.opts._errorDataPathProperty) {
114122                out += 'is a required property';
114123              } else {
114124                out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
114125              }
114126              out += '\' ';
114127            }
114128            if (it.opts.verbose) {
114129              out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
114130            }
114131            out += ' } ';
114132          } else {
114133            out += ' {} ';
114134          }
114135          var __err = out;
114136          out = $$outStack.pop();
114137          if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
114138            if (it.async) {
114139              out += ' throw new ValidationError([' + (__err) + ']); ';
114140            } else {
114141              out += ' validate.errors = [' + (__err) + ']; return false; ';
114142            }
114143          } else {
114144            out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
114145          }
114146          out += ' } else { ';
114147        } else {
114148          out += ' if ( ';
114149          var arr2 = $required;
114150          if (arr2) {
114151            var $propertyKey, $i = -1,
114152              l2 = arr2.length - 1;
114153            while ($i < l2) {
114154              $propertyKey = arr2[$i += 1];
114155              if ($i) {
114156                out += ' || ';
114157              }
114158              var $prop = it.util.getProperty($propertyKey),
114159                $useData = $data + $prop;
114160              out += ' ( ( ' + ($useData) + ' === undefined ';
114161              if ($ownProperties) {
114162                out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
114163              }
114164              out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';
114165            }
114166          }
114167          out += ') {  ';
114168          var $propertyPath = 'missing' + $lvl,
114169            $missingProperty = '\' + ' + $propertyPath + ' + \'';
114170          if (it.opts._errorDataPathProperty) {
114171            it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;
114172          }
114173          var $$outStack = $$outStack || [];
114174          $$outStack.push(out);
114175          out = ''; /* istanbul ignore else */
114176          if (it.createErrors !== false) {
114177            out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
114178            if (it.opts.messages !== false) {
114179              out += ' , message: \'';
114180              if (it.opts._errorDataPathProperty) {
114181                out += 'is a required property';
114182              } else {
114183                out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
114184              }
114185              out += '\' ';
114186            }
114187            if (it.opts.verbose) {
114188              out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
114189            }
114190            out += ' } ';
114191          } else {
114192            out += ' {} ';
114193          }
114194          var __err = out;
114195          out = $$outStack.pop();
114196          if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
114197            if (it.async) {
114198              out += ' throw new ValidationError([' + (__err) + ']); ';
114199            } else {
114200              out += ' validate.errors = [' + (__err) + ']; return false; ';
114201            }
114202          } else {
114203            out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
114204          }
114205          out += ' } else { ';
114206        }
114207      } else {
114208        if ($loopRequired) {
114209          if (!$isData) {
114210            out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';
114211          }
114212          var $i = 'i' + $lvl,
114213            $propertyPath = 'schema' + $lvl + '[' + $i + ']',
114214            $missingProperty = '\' + ' + $propertyPath + ' + \'';
114215          if (it.opts._errorDataPathProperty) {
114216            it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);
114217          }
114218          if ($isData) {
114219            out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) {  var err =   '; /* istanbul ignore else */
114220            if (it.createErrors !== false) {
114221              out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
114222              if (it.opts.messages !== false) {
114223                out += ' , message: \'';
114224                if (it.opts._errorDataPathProperty) {
114225                  out += 'is a required property';
114226                } else {
114227                  out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
114228                }
114229                out += '\' ';
114230              }
114231              if (it.opts.verbose) {
114232                out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
114233              }
114234              out += ' } ';
114235            } else {
114236              out += ' {} ';
114237            }
114238            out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { ';
114239          }
114240          out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined ';
114241          if ($ownProperties) {
114242            out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';
114243          }
114244          out += ') {  var err =   '; /* istanbul ignore else */
114245          if (it.createErrors !== false) {
114246            out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
114247            if (it.opts.messages !== false) {
114248              out += ' , message: \'';
114249              if (it.opts._errorDataPathProperty) {
114250                out += 'is a required property';
114251              } else {
114252                out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
114253              }
114254              out += '\' ';
114255            }
114256            if (it.opts.verbose) {
114257              out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
114258            }
114259            out += ' } ';
114260          } else {
114261            out += ' {} ';
114262          }
114263          out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ';
114264          if ($isData) {
114265            out += '  }  ';
114266          }
114267        } else {
114268          var arr3 = $required;
114269          if (arr3) {
114270            var $propertyKey, i3 = -1,
114271              l3 = arr3.length - 1;
114272            while (i3 < l3) {
114273              $propertyKey = arr3[i3 += 1];
114274              var $prop = it.util.getProperty($propertyKey),
114275                $missingProperty = it.util.escapeQuotes($propertyKey),
114276                $useData = $data + $prop;
114277              if (it.opts._errorDataPathProperty) {
114278                it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);
114279              }
114280              out += ' if ( ' + ($useData) + ' === undefined ';
114281              if ($ownProperties) {
114282                out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
114283              }
114284              out += ') {  var err =   '; /* istanbul ignore else */
114285              if (it.createErrors !== false) {
114286                out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
114287                if (it.opts.messages !== false) {
114288                  out += ' , message: \'';
114289                  if (it.opts._errorDataPathProperty) {
114290                    out += 'is a required property';
114291                  } else {
114292                    out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
114293                  }
114294                  out += '\' ';
114295                }
114296                if (it.opts.verbose) {
114297                  out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
114298                }
114299                out += ' } ';
114300              } else {
114301                out += ' {} ';
114302              }
114303              out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';
114304            }
114305          }
114306        }
114307      }
114308      it.errorPath = $currentErrorPath;
114309    } else if ($breakOnError) {
114310      out += ' if (true) {';
114311    }
114312    return out;
114313  }
114314  
114315  
114316  /***/ }),
114317  /* 672 */
114318  /***/ (function(module, exports, __webpack_require__) {
114319  
114320  "use strict";
114321  
114322  module.exports = function generate_uniqueItems(it, $keyword, $ruleType) {
114323    var out = ' ';
114324    var $lvl = it.level;
114325    var $dataLvl = it.dataLevel;
114326    var $schema = it.schema[$keyword];
114327    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
114328    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
114329    var $breakOnError = !it.opts.allErrors;
114330    var $data = 'data' + ($dataLvl || '');
114331    var $valid = 'valid' + $lvl;
114332    var $isData = it.opts.$data && $schema && $schema.$data,
114333      $schemaValue;
114334    if ($isData) {
114335      out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
114336      $schemaValue = 'schema' + $lvl;
114337    } else {
114338      $schemaValue = $schema;
114339    }
114340    if (($schema || $isData) && it.opts.uniqueItems !== false) {
114341      if ($isData) {
114342        out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { ';
114343      }
114344      out += ' var ' + ($valid) + ' = true; if (' + ($data) + '.length > 1) { var i = ' + ($data) + '.length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } } ';
114345      if ($isData) {
114346        out += '  }  ';
114347      }
114348      out += ' if (!' + ($valid) + ') {   ';
114349      var $$outStack = $$outStack || [];
114350      $$outStack.push(out);
114351      out = ''; /* istanbul ignore else */
114352      if (it.createErrors !== false) {
114353        out += ' { keyword: \'' + ('uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } ';
114354        if (it.opts.messages !== false) {
114355          out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' ';
114356        }
114357        if (it.opts.verbose) {
114358          out += ' , schema:  ';
114359          if ($isData) {
114360            out += 'validate.schema' + ($schemaPath);
114361          } else {
114362            out += '' + ($schema);
114363          }
114364          out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
114365        }
114366        out += ' } ';
114367      } else {
114368        out += ' {} ';
114369      }
114370      var __err = out;
114371      out = $$outStack.pop();
114372      if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
114373        if (it.async) {
114374          out += ' throw new ValidationError([' + (__err) + ']); ';
114375        } else {
114376          out += ' validate.errors = [' + (__err) + ']; return false; ';
114377        }
114378      } else {
114379        out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
114380      }
114381      out += ' } ';
114382      if ($breakOnError) {
114383        out += ' else { ';
114384      }
114385    } else {
114386      if ($breakOnError) {
114387        out += ' if (true) { ';
114388      }
114389    }
114390    return out;
114391  }
114392  
114393  
114394  /***/ }),
114395  /* 673 */
114396  /***/ (function(module, exports, __webpack_require__) {
114397  
114398  "use strict";
114399  
114400  
114401  var IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i;
114402  var customRuleCode = __webpack_require__(659);
114403  
114404  module.exports = {
114405    add: addKeyword,
114406    get: getKeyword,
114407    remove: removeKeyword
114408  };
114409  
114410  /**
114411   * Define custom keyword
114412   * @this  Ajv
114413   * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords).
114414   * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`.
114415   * @return {Ajv} this for method chaining
114416   */
114417  function addKeyword(keyword, definition) {
114418    /* jshint validthis: true */
114419    /* eslint no-shadow: 0 */
114420    var RULES = this.RULES;
114421  
114422    if (RULES.keywords[keyword])
114423      throw new Error('Keyword ' + keyword + ' is already defined');
114424  
114425    if (!IDENTIFIER.test(keyword))
114426      throw new Error('Keyword ' + keyword + ' is not a valid identifier');
114427  
114428    if (definition) {
114429      if (definition.macro && definition.valid !== undefined)
114430        throw new Error('"valid" option cannot be used with macro keywords');
114431  
114432      var dataType = definition.type;
114433      if (Array.isArray(dataType)) {
114434        var i, len = dataType.length;
114435        for (i=0; i<len; i++) checkDataType(dataType[i]);
114436        for (i=0; i<len; i++) _addRule(keyword, dataType[i], definition);
114437      } else {
114438        if (dataType) checkDataType(dataType);
114439        _addRule(keyword, dataType, definition);
114440      }
114441  
114442      var $data = definition.$data === true && this._opts.$data;
114443      if ($data && !definition.validate)
114444        throw new Error('$data support: "validate" function is not defined');
114445  
114446      var metaSchema = definition.metaSchema;
114447      if (metaSchema) {
114448        if ($data) {
114449          metaSchema = {
114450            anyOf: [
114451              metaSchema,
114452              { '$ref': 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/$data.json#' }
114453            ]
114454          };
114455        }
114456        definition.validateSchema = this.compile(metaSchema, true);
114457      }
114458    }
114459  
114460    RULES.keywords[keyword] = RULES.all[keyword] = true;
114461  
114462  
114463    function _addRule(keyword, dataType, definition) {
114464      var ruleGroup;
114465      for (var i=0; i<RULES.length; i++) {
114466        var rg = RULES[i];
114467        if (rg.type == dataType) {
114468          ruleGroup = rg;
114469          break;
114470        }
114471      }
114472  
114473      if (!ruleGroup) {
114474        ruleGroup = { type: dataType, rules: [] };
114475        RULES.push(ruleGroup);
114476      }
114477  
114478      var rule = {
114479        keyword: keyword,
114480        definition: definition,
114481        custom: true,
114482        code: customRuleCode,
114483        implements: definition.implements
114484      };
114485      ruleGroup.rules.push(rule);
114486      RULES.custom[keyword] = rule;
114487    }
114488  
114489  
114490    function checkDataType(dataType) {
114491      if (!RULES.types[dataType]) throw new Error('Unknown type ' + dataType);
114492    }
114493  
114494    return this;
114495  }
114496  
114497  
114498  /**
114499   * Get keyword
114500   * @this  Ajv
114501   * @param {String} keyword pre-defined or custom keyword.
114502   * @return {Object|Boolean} custom keyword definition, `true` if it is a predefined keyword, `false` otherwise.
114503   */
114504  function getKeyword(keyword) {
114505    /* jshint validthis: true */
114506    var rule = this.RULES.custom[keyword];
114507    return rule ? rule.definition : this.RULES.keywords[keyword] || false;
114508  }
114509  
114510  
114511  /**
114512   * Remove keyword
114513   * @this  Ajv
114514   * @param {String} keyword pre-defined or custom keyword.
114515   * @return {Ajv} this for method chaining
114516   */
114517  function removeKeyword(keyword) {
114518    /* jshint validthis: true */
114519    var RULES = this.RULES;
114520    delete RULES.keywords[keyword];
114521    delete RULES.all[keyword];
114522    delete RULES.custom[keyword];
114523    for (var i=0; i<RULES.length; i++) {
114524      var rules = RULES[i].rules;
114525      for (var j=0; j<rules.length; j++) {
114526        if (rules[j].keyword == keyword) {
114527          rules.splice(j, 1);
114528          break;
114529        }
114530      }
114531    }
114532    return this;
114533  }
114534  
114535  
114536  /***/ }),
114537  /* 674 */
114538  /***/ (function(module, exports, __webpack_require__) {
114539  
114540  "use strict";
114541  
114542  
114543  var META_SCHEMA_ID = 'http://json-schema.org/draft-06/schema';
114544  
114545  module.exports = function (ajv) {
114546    var defaultMeta = ajv._opts.defaultMeta;
114547    var metaSchemaRef = typeof defaultMeta == 'string'
114548                        ? { $ref: defaultMeta }
114549                        : ajv.getSchema(META_SCHEMA_ID)
114550                          ? { $ref: META_SCHEMA_ID }
114551                          : {};
114552  
114553    ajv.addKeyword('patternGroups', {
114554      // implemented in properties.jst
114555      metaSchema: {
114556        type: 'object',
114557        additionalProperties: {
114558          type: 'object',
114559          required: [ 'schema' ],
114560          properties: {
114561            maximum: {
114562              type: 'integer',
114563              minimum: 0
114564            },
114565            minimum: {
114566              type: 'integer',
114567              minimum: 0
114568            },
114569            schema: metaSchemaRef
114570          },
114571          additionalProperties: false
114572        }
114573      }
114574    });
114575    ajv.RULES.all.properties.implements.push('patternGroups');
114576  };
114577  
114578  
114579  /***/ }),
114580  /* 675 */
114581  /***/ (function(module, exports) {
114582  
114583  module.exports = {"$schema":"http://json-schema.org/draft-06/schema#","$id":"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/$data.json#","description":"Meta-schema for $data reference (JSON-schema extension proposal)","type":"object","required":["$data"],"properties":{"$data":{"type":"string","anyOf":[{"format":"relative-json-pointer"},{"format":"json-pointer"}]}},"additionalProperties":false}
114584  
114585  /***/ }),
114586  /* 676 */
114587  /***/ (function(module, exports) {
114588  
114589  module.exports = {"$schema":"http://json-schema.org/draft-06/schema#","$id":"http://json-schema.org/draft-06/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"title":{"type":"string"},"description":{"type":"string"},"default":{},"examples":{"type":"array","items":{}},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":{}},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":{},"enum":{"type":"array","minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":{}}
114590  
114591  /***/ }),
114592  /* 677 */
114593  /***/ (function(module, exports, __webpack_require__) {
114594  
114595  "use strict";
114596  
114597  
114598  var traverse = module.exports = function (schema, opts, cb) {
114599    if (typeof opts == 'function') {
114600      cb = opts;
114601      opts = {};
114602    }
114603    _traverse(opts, cb, schema, '', schema);
114604  };
114605  
114606  
114607  traverse.keywords = {
114608    additionalItems: true,
114609    items: true,
114610    contains: true,
114611    additionalProperties: true,
114612    propertyNames: true,
114613    not: true
114614  };
114615  
114616  traverse.arrayKeywords = {
114617    items: true,
114618    allOf: true,
114619    anyOf: true,
114620    oneOf: true
114621  };
114622  
114623  traverse.propsKeywords = {
114624    definitions: true,
114625    properties: true,
114626    patternProperties: true,
114627    dependencies: true
114628  };
114629  
114630  traverse.skipKeywords = {
114631    enum: true,
114632    const: true,
114633    required: true,
114634    maximum: true,
114635    minimum: true,
114636    exclusiveMaximum: true,
114637    exclusiveMinimum: true,
114638    multipleOf: true,
114639    maxLength: true,
114640    minLength: true,
114641    pattern: true,
114642    format: true,
114643    maxItems: true,
114644    minItems: true,
114645    uniqueItems: true,
114646    maxProperties: true,
114647    minProperties: true
114648  };
114649  
114650  
114651  function _traverse(opts, cb, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {
114652    if (schema && typeof schema == 'object' && !Array.isArray(schema)) {
114653      cb(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);
114654      for (var key in schema) {
114655        var sch = schema[key];
114656        if (Array.isArray(sch)) {
114657          if (key in traverse.arrayKeywords) {
114658            for (var i=0; i<sch.length; i++)
114659              _traverse(opts, cb, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);
114660          }
114661        } else if (key in traverse.propsKeywords) {
114662          if (sch && typeof sch == 'object') {
114663            for (var prop in sch)
114664              _traverse(opts, cb, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);
114665          }
114666        } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {
114667          _traverse(opts, cb, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);
114668        }
114669      }
114670    }
114671  }
114672  
114673  
114674  function escapeJsonPtr(str) {
114675    return str.replace(/~/g, '~0').replace(/\//g, '~1');
114676  }
114677  
114678  
114679  /***/ }),
114680  /* 678 */
114681  /***/ (function(module, exports, __webpack_require__) {
114682  
114683  "use strict";
114684  
114685  var pkg = __webpack_require__(944);
114686  
114687  /* @private
114688   *
114689   * constructs a set of all dependencies recursively
114690   *
114691   * @method depsFor
114692   * @param {String} name of package to assemble unique deps for
114693   * @param {String} dir (optional) path to begin resolving from
114694   * @return {Array} a unique set of all deps
114695   */
114696  module.exports = function depsFor(name, dir) {
114697    var dependencies = [];
114698    var visited = Object.create(null);
114699  
114700    (function again(name, dir) {
114701      var thePackage = pkg(name, dir);
114702  
114703      if (thePackage === null) { return; }
114704  
114705      var key = thePackage.name + thePackage.version + thePackage.baseDir;
114706  
114707      if (visited[key]) { return; }
114708      visited[key] = true;
114709  
114710      dependencies.push(thePackage);
114711  
114712      return Object.keys(thePackage.dependencies || {}).forEach(function(dep) {
114713        again(dep, thePackage.baseDir);
114714      });
114715    }(name, dir));
114716  
114717    return dependencies;
114718  };
114719  
114720  
114721  
114722  /***/ }),
114723  /* 679 */
114724  /***/ (function(module, exports, __webpack_require__) {
114725  
114726  "use strict";
114727  
114728  var resolve = __webpack_require__(814);
114729  var path = __webpack_require__(0);
114730  
114731  /* @private
114732   *
114733   * @method resolvePkg
114734   * @param {String} name
114735   * @param {String} dir
114736   * @return {String}
114737   */
114738  module.exports = function resolvePkg(name, dir) {
114739    if (name === './') {
114740      return path.resolve(name, 'package.json');
114741    }
114742  
114743    if (name[name.length - 1] !== '/') {
114744      name += '/';
114745    }
114746  
114747    if (name.charAt(0) === '/') {
114748      return name + 'package.json';
114749    }
114750  
114751    try {
114752      return resolve.sync(name + 'package.json', {
114753        basedir: dir || __dirname,
114754        preserveSymlinks: false
114755      });
114756    } catch(err) {
114757      if (err.code === 'MODULE_NOT_FOUND') {
114758        return null;
114759      }
114760  
114761      throw err;
114762    }
114763  };
114764  
114765  
114766  /***/ }),
114767  /* 680 */
114768  /***/ (function(module, exports, __webpack_require__) {
114769  
114770  // Copyright 2015 Joyent, Inc.
114771  
114772  var parser = __webpack_require__(681);
114773  var signer = __webpack_require__(682);
114774  var verify = __webpack_require__(683);
114775  var utils = __webpack_require__(175);
114776  
114777  
114778  
114779  ///--- API
114780  
114781  module.exports = {
114782  
114783    parse: parser.parseRequest,
114784    parseRequest: parser.parseRequest,
114785  
114786    sign: signer.signRequest,
114787    signRequest: signer.signRequest,
114788    createSigner: signer.createSigner,
114789    isSigner: signer.isSigner,
114790  
114791    sshKeyToPEM: utils.sshKeyToPEM,
114792    sshKeyFingerprint: utils.fingerprint,
114793    pemToRsaSSHKey: utils.pemToRsaSSHKey,
114794  
114795    verify: verify.verifySignature,
114796    verifySignature: verify.verifySignature,
114797    verifyHMAC: verify.verifyHMAC
114798  };
114799  
114800  
114801  /***/ }),
114802  /* 681 */
114803  /***/ (function(module, exports, __webpack_require__) {
114804  
114805  // Copyright 2012 Joyent, Inc.  All rights reserved.
114806  
114807  var assert = __webpack_require__(16);
114808  var util = __webpack_require__(3);
114809  var utils = __webpack_require__(175);
114810  
114811  
114812  
114813  ///--- Globals
114814  
114815  var HASH_ALGOS = utils.HASH_ALGOS;
114816  var PK_ALGOS = utils.PK_ALGOS;
114817  var HttpSignatureError = utils.HttpSignatureError;
114818  var InvalidAlgorithmError = utils.InvalidAlgorithmError;
114819  var validateAlgorithm = utils.validateAlgorithm;
114820  
114821  var State = {
114822    New: 0,
114823    Params: 1
114824  };
114825  
114826  var ParamsState = {
114827    Name: 0,
114828    Quote: 1,
114829    Value: 2,
114830    Comma: 3
114831  };
114832  
114833  
114834  ///--- Specific Errors
114835  
114836  
114837  function ExpiredRequestError(message) {
114838    HttpSignatureError.call(this, message, ExpiredRequestError);
114839  }
114840  util.inherits(ExpiredRequestError, HttpSignatureError);
114841  
114842  
114843  function InvalidHeaderError(message) {
114844    HttpSignatureError.call(this, message, InvalidHeaderError);
114845  }
114846  util.inherits(InvalidHeaderError, HttpSignatureError);
114847  
114848  
114849  function InvalidParamsError(message) {
114850    HttpSignatureError.call(this, message, InvalidParamsError);
114851  }
114852  util.inherits(InvalidParamsError, HttpSignatureError);
114853  
114854  
114855  function MissingHeaderError(message) {
114856    HttpSignatureError.call(this, message, MissingHeaderError);
114857  }
114858  util.inherits(MissingHeaderError, HttpSignatureError);
114859  
114860  function StrictParsingError(message) {
114861    HttpSignatureError.call(this, message, StrictParsingError);
114862  }
114863  util.inherits(StrictParsingError, HttpSignatureError);
114864  
114865  ///--- Exported API
114866  
114867  module.exports = {
114868  
114869    /**
114870     * Parses the 'Authorization' header out of an http.ServerRequest object.
114871     *
114872     * Note that this API will fully validate the Authorization header, and throw
114873     * on any error.  It will not however check the signature, or the keyId format
114874     * as those are specific to your environment.  You can use the options object
114875     * to pass in extra constraints.
114876     *
114877     * As a response object you can expect this:
114878     *
114879     *     {
114880     *       "scheme": "Signature",
114881     *       "params": {
114882     *         "keyId": "foo",
114883     *         "algorithm": "rsa-sha256",
114884     *         "headers": [
114885     *           "date" or "x-date",
114886     *           "digest"
114887     *         ],
114888     *         "signature": "base64"
114889     *       },
114890     *       "signingString": "ready to be passed to crypto.verify()"
114891     *     }
114892     *
114893     * @param {Object} request an http.ServerRequest.
114894     * @param {Object} options an optional options object with:
114895     *                   - clockSkew: allowed clock skew in seconds (default 300).
114896     *                   - headers: required header names (def: date or x-date)
114897     *                   - algorithms: algorithms to support (default: all).
114898     *                   - strict: should enforce latest spec parsing
114899     *                             (default: false).
114900     * @return {Object} parsed out object (see above).
114901     * @throws {TypeError} on invalid input.
114902     * @throws {InvalidHeaderError} on an invalid Authorization header error.
114903     * @throws {InvalidParamsError} if the params in the scheme are invalid.
114904     * @throws {MissingHeaderError} if the params indicate a header not present,
114905     *                              either in the request headers from the params,
114906     *                              or not in the params from a required header
114907     *                              in options.
114908     * @throws {StrictParsingError} if old attributes are used in strict parsing
114909     *                              mode.
114910     * @throws {ExpiredRequestError} if the value of date or x-date exceeds skew.
114911     */
114912    parseRequest: function parseRequest(request, options) {
114913      assert.object(request, 'request');
114914      assert.object(request.headers, 'request.headers');
114915      if (options === undefined) {
114916        options = {};
114917      }
114918      if (options.headers === undefined) {
114919        options.headers = [request.headers['x-date'] ? 'x-date' : 'date'];
114920      }
114921      assert.object(options, 'options');
114922      assert.arrayOfString(options.headers, 'options.headers');
114923      assert.optionalFinite(options.clockSkew, 'options.clockSkew');
114924  
114925      var authzHeaderName = options.authorizationHeaderName || 'authorization';
114926  
114927      if (!request.headers[authzHeaderName]) {
114928        throw new MissingHeaderError('no ' + authzHeaderName + ' header ' +
114929                                     'present in the request');
114930      }
114931  
114932      options.clockSkew = options.clockSkew || 300;
114933  
114934  
114935      var i = 0;
114936      var state = State.New;
114937      var substate = ParamsState.Name;
114938      var tmpName = '';
114939      var tmpValue = '';
114940  
114941      var parsed = {
114942        scheme: '',
114943        params: {},
114944        signingString: ''
114945      };
114946  
114947      var authz = request.headers[authzHeaderName];
114948      for (i = 0; i < authz.length; i++) {
114949        var c = authz.charAt(i);
114950  
114951        switch (Number(state)) {
114952  
114953        case State.New:
114954          if (c !== ' ') parsed.scheme += c;
114955          else state = State.Params;
114956          break;
114957  
114958        case State.Params:
114959          switch (Number(substate)) {
114960  
114961          case ParamsState.Name:
114962            var code = c.charCodeAt(0);
114963            // restricted name of A-Z / a-z
114964            if ((code >= 0x41 && code <= 0x5a) || // A-Z
114965                (code >= 0x61 && code <= 0x7a)) { // a-z
114966              tmpName += c;
114967            } else if (c === '=') {
114968              if (tmpName.length === 0)
114969                throw new InvalidHeaderError('bad param format');
114970              substate = ParamsState.Quote;
114971            } else {
114972              throw new InvalidHeaderError('bad param format');
114973            }
114974            break;
114975  
114976          case ParamsState.Quote:
114977            if (c === '"') {
114978              tmpValue = '';
114979              substate = ParamsState.Value;
114980            } else {
114981              throw new InvalidHeaderError('bad param format');
114982            }
114983            break;
114984  
114985          case ParamsState.Value:
114986            if (c === '"') {
114987              parsed.params[tmpName] = tmpValue;
114988              substate = ParamsState.Comma;
114989            } else {
114990              tmpValue += c;
114991            }
114992            break;
114993  
114994          case ParamsState.Comma:
114995            if (c === ',') {
114996              tmpName = '';
114997              substate = ParamsState.Name;
114998            } else {
114999              throw new InvalidHeaderError('bad param format');
115000            }
115001            break;
115002  
115003          default:
115004            throw new Error('Invalid substate');
115005          }
115006          break;
115007  
115008        default:
115009          throw new Error('Invalid substate');
115010        }
115011  
115012      }
115013  
115014      if (!parsed.params.headers || parsed.params.headers === '') {
115015        if (request.headers['x-date']) {
115016          parsed.params.headers = ['x-date'];
115017        } else {
115018          parsed.params.headers = ['date'];
115019        }
115020      } else {
115021        parsed.params.headers = parsed.params.headers.split(' ');
115022      }
115023  
115024      // Minimally validate the parsed object
115025      if (!parsed.scheme || parsed.scheme !== 'Signature')
115026        throw new InvalidHeaderError('scheme was not "Signature"');
115027  
115028      if (!parsed.params.keyId)
115029        throw new InvalidHeaderError('keyId was not specified');
115030  
115031      if (!parsed.params.algorithm)
115032        throw new InvalidHeaderError('algorithm was not specified');
115033  
115034      if (!parsed.params.signature)
115035        throw new InvalidHeaderError('signature was not specified');
115036  
115037      // Check the algorithm against the official list
115038      parsed.params.algorithm = parsed.params.algorithm.toLowerCase();
115039      try {
115040        validateAlgorithm(parsed.params.algorithm);
115041      } catch (e) {
115042        if (e instanceof InvalidAlgorithmError)
115043          throw (new InvalidParamsError(parsed.params.algorithm + ' is not ' +
115044            'supported'));
115045        else
115046          throw (e);
115047      }
115048  
115049      // Build the signingString
115050      for (i = 0; i < parsed.params.headers.length; i++) {
115051        var h = parsed.params.headers[i].toLowerCase();
115052        parsed.params.headers[i] = h;
115053  
115054        if (h === 'request-line') {
115055          if (!options.strict) {
115056            /*
115057             * We allow headers from the older spec drafts if strict parsing isn't
115058             * specified in options.
115059             */
115060            parsed.signingString +=
115061              request.method + ' ' + request.url + ' HTTP/' + request.httpVersion;
115062          } else {
115063            /* Strict parsing doesn't allow older draft headers. */
115064            throw (new StrictParsingError('request-line is not a valid header ' +
115065              'with strict parsing enabled.'));
115066          }
115067        } else if (h === '(request-target)') {
115068          parsed.signingString +=
115069            '(request-target): ' + request.method.toLowerCase() + ' ' +
115070            request.url;
115071        } else {
115072          var value = request.headers[h];
115073          if (value === undefined)
115074            throw new MissingHeaderError(h + ' was not in the request');
115075          parsed.signingString += h + ': ' + value;
115076        }
115077  
115078        if ((i + 1) < parsed.params.headers.length)
115079          parsed.signingString += '\n';
115080      }
115081  
115082      // Check against the constraints
115083      var date;
115084      if (request.headers.date || request.headers['x-date']) {
115085          if (request.headers['x-date']) {
115086            date = new Date(request.headers['x-date']);
115087          } else {
115088            date = new Date(request.headers.date);
115089          }
115090        var now = new Date();
115091        var skew = Math.abs(now.getTime() - date.getTime());
115092  
115093        if (skew > options.clockSkew * 1000) {
115094          throw new ExpiredRequestError('clock skew of ' +
115095                                        (skew / 1000) +
115096                                        's was greater than ' +
115097                                        options.clockSkew + 's');
115098        }
115099      }
115100  
115101      options.headers.forEach(function (hdr) {
115102        // Remember that we already checked any headers in the params
115103        // were in the request, so if this passes we're good.
115104        if (parsed.params.headers.indexOf(hdr.toLowerCase()) < 0)
115105          throw new MissingHeaderError(hdr + ' was not a signed header');
115106      });
115107  
115108      if (options.algorithms) {
115109        if (options.algorithms.indexOf(parsed.params.algorithm) === -1)
115110          throw new InvalidParamsError(parsed.params.algorithm +
115111                                       ' is not a supported algorithm');
115112      }
115113  
115114      parsed.algorithm = parsed.params.algorithm.toUpperCase();
115115      parsed.keyId = parsed.params.keyId;
115116      return parsed;
115117    }
115118  
115119  };
115120  
115121  
115122  /***/ }),
115123  /* 682 */
115124  /***/ (function(module, exports, __webpack_require__) {
115125  
115126  // Copyright 2012 Joyent, Inc.  All rights reserved.
115127  
115128  var assert = __webpack_require__(16);
115129  var crypto = __webpack_require__(11);
115130  var http = __webpack_require__(87);
115131  var util = __webpack_require__(3);
115132  var sshpk = __webpack_require__(328);
115133  var jsprim = __webpack_require__(746);
115134  var utils = __webpack_require__(175);
115135  
115136  var sprintf = __webpack_require__(3).format;
115137  
115138  var HASH_ALGOS = utils.HASH_ALGOS;
115139  var PK_ALGOS = utils.PK_ALGOS;
115140  var InvalidAlgorithmError = utils.InvalidAlgorithmError;
115141  var HttpSignatureError = utils.HttpSignatureError;
115142  var validateAlgorithm = utils.validateAlgorithm;
115143  
115144  ///--- Globals
115145  
115146  var AUTHZ_FMT =
115147    'Signature keyId="%s",algorithm="%s",headers="%s",signature="%s"';
115148  
115149  ///--- Specific Errors
115150  
115151  function MissingHeaderError(message) {
115152    HttpSignatureError.call(this, message, MissingHeaderError);
115153  }
115154  util.inherits(MissingHeaderError, HttpSignatureError);
115155  
115156  function StrictParsingError(message) {
115157    HttpSignatureError.call(this, message, StrictParsingError);
115158  }
115159  util.inherits(StrictParsingError, HttpSignatureError);
115160  
115161  /* See createSigner() */
115162  function RequestSigner(options) {
115163    assert.object(options, 'options');
115164  
115165    var alg = [];
115166    if (options.algorithm !== undefined) {
115167      assert.string(options.algorithm, 'options.algorithm');
115168      alg = validateAlgorithm(options.algorithm);
115169    }
115170    this.rs_alg = alg;
115171  
115172    /*
115173     * RequestSigners come in two varieties: ones with an rs_signFunc, and ones
115174     * with an rs_signer.
115175     *
115176     * rs_signFunc-based RequestSigners have to build up their entire signing
115177     * string within the rs_lines array and give it to rs_signFunc as a single
115178     * concat'd blob. rs_signer-based RequestSigners can add a line at a time to
115179     * their signing state by using rs_signer.update(), thus only needing to
115180     * buffer the hash function state and one line at a time.
115181     */
115182    if (options.sign !== undefined) {
115183      assert.func(options.sign, 'options.sign');
115184      this.rs_signFunc = options.sign;
115185  
115186    } else if (alg[0] === 'hmac' && options.key !== undefined) {
115187      assert.string(options.keyId, 'options.keyId');
115188      this.rs_keyId = options.keyId;
115189  
115190      if (typeof (options.key) !== 'string' && !Buffer.isBuffer(options.key))
115191        throw (new TypeError('options.key for HMAC must be a string or Buffer'));
115192  
115193      /*
115194       * Make an rs_signer for HMACs, not a rs_signFunc -- HMACs digest their
115195       * data in chunks rather than requiring it all to be given in one go
115196       * at the end, so they are more similar to signers than signFuncs.
115197       */
115198      this.rs_signer = crypto.createHmac(alg[1].toUpperCase(), options.key);
115199      this.rs_signer.sign = function () {
115200        var digest = this.digest('base64');
115201        return ({
115202          hashAlgorithm: alg[1],
115203          toString: function () { return (digest); }
115204        });
115205      };
115206  
115207    } else if (options.key !== undefined) {
115208      var key = options.key;
115209      if (typeof (key) === 'string' || Buffer.isBuffer(key))
115210        key = sshpk.parsePrivateKey(key);
115211  
115212      assert.ok(sshpk.PrivateKey.isPrivateKey(key, [1, 2]),
115213        'options.key must be a sshpk.PrivateKey');
115214      this.rs_key = key;
115215  
115216      assert.string(options.keyId, 'options.keyId');
115217      this.rs_keyId = options.keyId;
115218  
115219      if (!PK_ALGOS[key.type]) {
115220        throw (new InvalidAlgorithmError(key.type.toUpperCase() + ' type ' +
115221          'keys are not supported'));
115222      }
115223  
115224      if (alg[0] !== undefined && key.type !== alg[0]) {
115225        throw (new InvalidAlgorithmError('options.key must be a ' +
115226          alg[0].toUpperCase() + ' key, was given a ' +
115227          key.type.toUpperCase() + ' key instead'));
115228      }
115229  
115230      this.rs_signer = key.createSign(alg[1]);
115231  
115232    } else {
115233      throw (new TypeError('options.sign (func) or options.key is required'));
115234    }
115235  
115236    this.rs_headers = [];
115237    this.rs_lines = [];
115238  }
115239  
115240  /**
115241   * Adds a header to be signed, with its value, into this signer.
115242   *
115243   * @param {String} header
115244   * @param {String} value
115245   * @return {String} value written
115246   */
115247  RequestSigner.prototype.writeHeader = function (header, value) {
115248    assert.string(header, 'header');
115249    header = header.toLowerCase();
115250    assert.string(value, 'value');
115251  
115252    this.rs_headers.push(header);
115253  
115254    if (this.rs_signFunc) {
115255      this.rs_lines.push(header + ': ' + value);
115256  
115257    } else {
115258      var line = header + ': ' + value;
115259      if (this.rs_headers.length > 0)
115260        line = '\n' + line;
115261      this.rs_signer.update(line);
115262    }
115263  
115264    return (value);
115265  };
115266  
115267  /**
115268   * Adds a default Date header, returning its value.
115269   *
115270   * @return {String}
115271   */
115272  RequestSigner.prototype.writeDateHeader = function () {
115273    return (this.writeHeader('date', jsprim.rfc1123(new Date())));
115274  };
115275  
115276  /**
115277   * Adds the request target line to be signed.
115278   *
115279   * @param {String} method, HTTP method (e.g. 'get', 'post', 'put')
115280   * @param {String} path
115281   */
115282  RequestSigner.prototype.writeTarget = function (method, path) {
115283    assert.string(method, 'method');
115284    assert.string(path, 'path');
115285    method = method.toLowerCase();
115286    this.writeHeader('(request-target)', method + ' ' + path);
115287  };
115288  
115289  /**
115290   * Calculate the value for the Authorization header on this request
115291   * asynchronously.
115292   *
115293   * @param {Func} callback (err, authz)
115294   */
115295  RequestSigner.prototype.sign = function (cb) {
115296    assert.func(cb, 'callback');
115297  
115298    if (this.rs_headers.length < 1)
115299      throw (new Error('At least one header must be signed'));
115300  
115301    var alg, authz;
115302    if (this.rs_signFunc) {
115303      var data = this.rs_lines.join('\n');
115304      var self = this;
115305      this.rs_signFunc(data, function (err, sig) {
115306        if (err) {
115307          cb(err);
115308          return;
115309        }
115310        try {
115311          assert.object(sig, 'signature');
115312          assert.string(sig.keyId, 'signature.keyId');
115313          assert.string(sig.algorithm, 'signature.algorithm');
115314          assert.string(sig.signature, 'signature.signature');
115315          alg = validateAlgorithm(sig.algorithm);
115316  
115317          authz = sprintf(AUTHZ_FMT,
115318            sig.keyId,
115319            sig.algorithm,
115320            self.rs_headers.join(' '),
115321            sig.signature);
115322        } catch (e) {
115323          cb(e);
115324          return;
115325        }
115326        cb(null, authz);
115327      });
115328  
115329    } else {
115330      try {
115331        var sigObj = this.rs_signer.sign();
115332      } catch (e) {
115333        cb(e);
115334        return;
115335      }
115336      alg = (this.rs_alg[0] || this.rs_key.type) + '-' + sigObj.hashAlgorithm;
115337      var signature = sigObj.toString();
115338      authz = sprintf(AUTHZ_FMT,
115339        this.rs_keyId,
115340        alg,
115341        this.rs_headers.join(' '),
115342        signature);
115343      cb(null, authz);
115344    }
115345  };
115346  
115347  ///--- Exported API
115348  
115349  module.exports = {
115350    /**
115351     * Identifies whether a given object is a request signer or not.
115352     *
115353     * @param {Object} object, the object to identify
115354     * @returns {Boolean}
115355     */
115356    isSigner: function (obj) {
115357      if (typeof (obj) === 'object' && obj instanceof RequestSigner)
115358        return (true);
115359      return (false);
115360    },
115361  
115362    /**
115363     * Creates a request signer, used to asynchronously build a signature
115364     * for a request (does not have to be an http.ClientRequest).
115365     *
115366     * @param {Object} options, either:
115367     *                   - {String} keyId
115368     *                   - {String|Buffer} key
115369     *                   - {String} algorithm (optional, required for HMAC)
115370     *                 or:
115371     *                   - {Func} sign (data, cb)
115372     * @return {RequestSigner}
115373     */
115374    createSigner: function createSigner(options) {
115375      return (new RequestSigner(options));
115376    },
115377  
115378    /**
115379     * Adds an 'Authorization' header to an http.ClientRequest object.
115380     *
115381     * Note that this API will add a Date header if it's not already set. Any
115382     * other headers in the options.headers array MUST be present, or this
115383     * will throw.
115384     *
115385     * You shouldn't need to check the return type; it's just there if you want
115386     * to be pedantic.
115387     *
115388     * The optional flag indicates whether parsing should use strict enforcement
115389     * of the version draft-cavage-http-signatures-04 of the spec or beyond.
115390     * The default is to be loose and support
115391     * older versions for compatibility.
115392     *
115393     * @param {Object} request an instance of http.ClientRequest.
115394     * @param {Object} options signing parameters object:
115395     *                   - {String} keyId required.
115396     *                   - {String} key required (either a PEM or HMAC key).
115397     *                   - {Array} headers optional; defaults to ['date'].
115398     *                   - {String} algorithm optional (unless key is HMAC);
115399     *                              default is the same as the sshpk default
115400     *                              signing algorithm for the type of key given
115401     *                   - {String} httpVersion optional; defaults to '1.1'.
115402     *                   - {Boolean} strict optional; defaults to 'false'.
115403     * @return {Boolean} true if Authorization (and optionally Date) were added.
115404     * @throws {TypeError} on bad parameter types (input).
115405     * @throws {InvalidAlgorithmError} if algorithm was bad or incompatible with
115406     *                                 the given key.
115407     * @throws {sshpk.KeyParseError} if key was bad.
115408     * @throws {MissingHeaderError} if a header to be signed was specified but
115409     *                              was not present.
115410     */
115411    signRequest: function signRequest(request, options) {
115412      assert.object(request, 'request');
115413      assert.object(options, 'options');
115414      assert.optionalString(options.algorithm, 'options.algorithm');
115415      assert.string(options.keyId, 'options.keyId');
115416      assert.optionalArrayOfString(options.headers, 'options.headers');
115417      assert.optionalString(options.httpVersion, 'options.httpVersion');
115418  
115419      if (!request.getHeader('Date'))
115420        request.setHeader('Date', jsprim.rfc1123(new Date()));
115421      if (!options.headers)
115422        options.headers = ['date'];
115423      if (!options.httpVersion)
115424        options.httpVersion = '1.1';
115425  
115426      var alg = [];
115427      if (options.algorithm) {
115428        options.algorithm = options.algorithm.toLowerCase();
115429        alg = validateAlgorithm(options.algorithm);
115430      }
115431  
115432      var i;
115433      var stringToSign = '';
115434      for (i = 0; i < options.headers.length; i++) {
115435        if (typeof (options.headers[i]) !== 'string')
115436          throw new TypeError('options.headers must be an array of Strings');
115437  
115438        var h = options.headers[i].toLowerCase();
115439  
115440        if (h === 'request-line') {
115441          if (!options.strict) {
115442            /**
115443             * We allow headers from the older spec drafts if strict parsing isn't
115444             * specified in options.
115445             */
115446            stringToSign +=
115447              request.method + ' ' + request.path + ' HTTP/' +
115448              options.httpVersion;
115449          } else {
115450            /* Strict parsing doesn't allow older draft headers. */
115451            throw (new StrictParsingError('request-line is not a valid header ' +
115452              'with strict parsing enabled.'));
115453          }
115454        } else if (h === '(request-target)') {
115455          stringToSign +=
115456            '(request-target): ' + request.method.toLowerCase() + ' ' +
115457            request.path;
115458        } else {
115459          var value = request.getHeader(h);
115460          if (value === undefined || value === '') {
115461            throw new MissingHeaderError(h + ' was not in the request');
115462          }
115463          stringToSign += h + ': ' + value;
115464        }
115465  
115466        if ((i + 1) < options.headers.length)
115467          stringToSign += '\n';
115468      }
115469  
115470      /* This is just for unit tests. */
115471      if (request.hasOwnProperty('_stringToSign')) {
115472        request._stringToSign = stringToSign;
115473      }
115474  
115475      var signature;
115476      if (alg[0] === 'hmac') {
115477        if (typeof (options.key) !== 'string' && !Buffer.isBuffer(options.key))
115478          throw (new TypeError('options.key must be a string or Buffer'));
115479  
115480        var hmac = crypto.createHmac(alg[1].toUpperCase(), options.key);
115481        hmac.update(stringToSign);
115482        signature = hmac.digest('base64');
115483  
115484      } else {
115485        var key = options.key;
115486        if (typeof (key) === 'string' || Buffer.isBuffer(key))
115487          key = sshpk.parsePrivateKey(options.key);
115488  
115489        assert.ok(sshpk.PrivateKey.isPrivateKey(key, [1, 2]),
115490          'options.key must be a sshpk.PrivateKey');
115491  
115492        if (!PK_ALGOS[key.type]) {
115493          throw (new InvalidAlgorithmError(key.type.toUpperCase() + ' type ' +
115494            'keys are not supported'));
115495        }
115496  
115497        if (alg[0] !== undefined && key.type !== alg[0]) {
115498          throw (new InvalidAlgorithmError('options.key must be a ' +
115499            alg[0].toUpperCase() + ' key, was given a ' +
115500            key.type.toUpperCase() + ' key instead'));
115501        }
115502  
115503        var signer = key.createSign(alg[1]);
115504        signer.update(stringToSign);
115505        var sigObj = signer.sign();
115506        if (!HASH_ALGOS[sigObj.hashAlgorithm]) {
115507          throw (new InvalidAlgorithmError(sigObj.hashAlgorithm.toUpperCase() +
115508            ' is not a supported hash algorithm'));
115509        }
115510        options.algorithm = key.type + '-' + sigObj.hashAlgorithm;
115511        signature = sigObj.toString();
115512        assert.notStrictEqual(signature, '', 'empty signature produced');
115513      }
115514  
115515      var authzHeaderName = options.authorizationHeaderName || 'Authorization';
115516  
115517      request.setHeader(authzHeaderName, sprintf(AUTHZ_FMT,
115518                                                 options.keyId,
115519                                                 options.algorithm,
115520                                                 options.headers.join(' '),
115521                                                 signature));
115522  
115523      return true;
115524    }
115525  
115526  };
115527  
115528  
115529  /***/ }),
115530  /* 683 */
115531  /***/ (function(module, exports, __webpack_require__) {
115532  
115533  // Copyright 2015 Joyent, Inc.
115534  
115535  var assert = __webpack_require__(16);
115536  var crypto = __webpack_require__(11);
115537  var sshpk = __webpack_require__(328);
115538  var utils = __webpack_require__(175);
115539  
115540  var HASH_ALGOS = utils.HASH_ALGOS;
115541  var PK_ALGOS = utils.PK_ALGOS;
115542  var InvalidAlgorithmError = utils.InvalidAlgorithmError;
115543  var HttpSignatureError = utils.HttpSignatureError;
115544  var validateAlgorithm = utils.validateAlgorithm;
115545  
115546  ///--- Exported API
115547  
115548  module.exports = {
115549    /**
115550     * Verify RSA/DSA signature against public key.  You are expected to pass in
115551     * an object that was returned from `parse()`.
115552     *
115553     * @param {Object} parsedSignature the object you got from `parse`.
115554     * @param {String} pubkey RSA/DSA private key PEM.
115555     * @return {Boolean} true if valid, false otherwise.
115556     * @throws {TypeError} if you pass in bad arguments.
115557     * @throws {InvalidAlgorithmError}
115558     */
115559    verifySignature: function verifySignature(parsedSignature, pubkey) {
115560      assert.object(parsedSignature, 'parsedSignature');
115561      if (typeof (pubkey) === 'string' || Buffer.isBuffer(pubkey))
115562        pubkey = sshpk.parseKey(pubkey);
115563      assert.ok(sshpk.Key.isKey(pubkey, [1, 1]), 'pubkey must be a sshpk.Key');
115564  
115565      var alg = validateAlgorithm(parsedSignature.algorithm);
115566      if (alg[0] === 'hmac' || alg[0] !== pubkey.type)
115567        return (false);
115568  
115569      var v = pubkey.createVerify(alg[1]);
115570      v.update(parsedSignature.signingString);
115571      return (v.verify(parsedSignature.params.signature, 'base64'));
115572    },
115573  
115574    /**
115575     * Verify HMAC against shared secret.  You are expected to pass in an object
115576     * that was returned from `parse()`.
115577     *
115578     * @param {Object} parsedSignature the object you got from `parse`.
115579     * @param {String} secret HMAC shared secret.
115580     * @return {Boolean} true if valid, false otherwise.
115581     * @throws {TypeError} if you pass in bad arguments.
115582     * @throws {InvalidAlgorithmError}
115583     */
115584    verifyHMAC: function verifyHMAC(parsedSignature, secret) {
115585      assert.object(parsedSignature, 'parsedHMAC');
115586      assert.string(secret, 'secret');
115587  
115588      var alg = validateAlgorithm(parsedSignature.algorithm);
115589      if (alg[0] !== 'hmac')
115590        return (false);
115591  
115592      var hashAlg = alg[1].toUpperCase();
115593  
115594      var hmac = crypto.createHmac(hashAlg, secret);
115595      hmac.update(parsedSignature.signingString);
115596  
115597      /*
115598       * Now double-hash to avoid leaking timing information - there's
115599       * no easy constant-time compare in JS, so we use this approach
115600       * instead. See for more info:
115601       * https://www.isecpartners.com/blog/2011/february/double-hmac-
115602       * verification.aspx
115603       */
115604      var h1 = crypto.createHmac(hashAlg, secret);
115605      h1.update(hmac.digest());
115606      h1 = h1.digest();
115607      var h2 = crypto.createHmac(hashAlg, secret);
115608      h2.update(new Buffer(parsedSignature.params.signature, 'base64'));
115609      h2 = h2.digest();
115610  
115611      /* Node 0.8 returns strings from .digest(). */
115612      if (typeof (h1) === 'string')
115613        return (h1 === h2);
115614      /* And node 0.10 lacks the .equals() method on Buffers. */
115615      if (Buffer.isBuffer(h1) && !h1.equals)
115616        return (h1.toString('binary') === h2.toString('binary'));
115617  
115618      return (h1.equals(h2));
115619    }
115620  };
115621  
115622  
115623  /***/ }),
115624  /* 684 */
115625  /***/ (function(module, exports) {
115626  
115627  exports.parse = exports.decode = decode
115628  
115629  exports.stringify = exports.encode = encode
115630  
115631  exports.safe = safe
115632  exports.unsafe = unsafe
115633  
115634  var eol = typeof process !== 'undefined' &&
115635    process.platform === 'win32' ? '\r\n' : '\n'
115636  
115637  function encode (obj, opt) {
115638    var children = []
115639    var out = ''
115640  
115641    if (typeof opt === 'string') {
115642      opt = {
115643        section: opt,
115644        whitespace: false
115645      }
115646    } else {
115647      opt = opt || {}
115648      opt.whitespace = opt.whitespace === true
115649    }
115650  
115651    var separator = opt.whitespace ? ' = ' : '='
115652  
115653    Object.keys(obj).forEach(function (k, _, __) {
115654      var val = obj[k]
115655      if (val && Array.isArray(val)) {
115656        val.forEach(function (item) {
115657          out += safe(k + '[]') + separator + safe(item) + '\n'
115658        })
115659      } else if (val && typeof val === 'object') {
115660        children.push(k)
115661      } else {
115662        out += safe(k) + separator + safe(val) + eol
115663      }
115664    })
115665  
115666    if (opt.section && out.length) {
115667      out = '[' + safe(opt.section) + ']' + eol + out
115668    }
115669  
115670    children.forEach(function (k, _, __) {
115671      var nk = dotSplit(k).join('\\.')
115672      var section = (opt.section ? opt.section + '.' : '') + nk
115673      var child = encode(obj[k], {
115674        section: section,
115675        whitespace: opt.whitespace
115676      })
115677      if (out.length && child.length) {
115678        out += eol
115679      }
115680      out += child
115681    })
115682  
115683    return out
115684  }
115685  
115686  function dotSplit (str) {
115687    return str.replace(/\1/g, '\u0002LITERAL\\1LITERAL\u0002')
115688      .replace(/\\\./g, '\u0001')
115689      .split(/\./).map(function (part) {
115690        return part.replace(/\1/g, '\\.')
115691        .replace(/\2LITERAL\\1LITERAL\2/g, '\u0001')
115692      })
115693  }
115694  
115695  function decode (str) {
115696    var out = {}
115697    var p = out
115698    var section = null
115699    //          section     |key      = value
115700    var re = /^\[([^\]]*)\]$|^([^=]+)(=(.*))?$/i
115701    var lines = str.split(/[\r\n]+/g)
115702  
115703    lines.forEach(function (line, _, __) {
115704      if (!line || line.match(/^\s*[;#]/)) return
115705      var match = line.match(re)
115706      if (!match) return
115707      if (match[1] !== undefined) {
115708        section = unsafe(match[1])
115709        p = out[section] = out[section] || {}
115710        return
115711      }
115712      var key = unsafe(match[2])
115713      var value = match[3] ? unsafe(match[4]) : true
115714      switch (value) {
115715        case 'true':
115716        case 'false':
115717        case 'null': value = JSON.parse(value)
115718      }
115719  
115720      // Convert keys with '[]' suffix to an array
115721      if (key.length > 2 && key.slice(-2) === '[]') {
115722        key = key.substring(0, key.length - 2)
115723        if (!p[key]) {
115724          p[key] = []
115725        } else if (!Array.isArray(p[key])) {
115726          p[key] = [p[key]]
115727        }
115728      }
115729  
115730      // safeguard against resetting a previously defined
115731      // array by accidentally forgetting the brackets
115732      if (Array.isArray(p[key])) {
115733        p[key].push(value)
115734      } else {
115735        p[key] = value
115736      }
115737    })
115738  
115739    // {a:{y:1},"a.b":{x:2}} --> {a:{y:1,b:{x:2}}}
115740    // use a filter to return the keys that have to be deleted.
115741    Object.keys(out).filter(function (k, _, __) {
115742      if (!out[k] ||
115743        typeof out[k] !== 'object' ||
115744        Array.isArray(out[k])) {
115745        return false
115746      }
115747      // see if the parent section is also an object.
115748      // if so, add it to that, and mark this one for deletion
115749      var parts = dotSplit(k)
115750      var p = out
115751      var l = parts.pop()
115752      var nl = l.replace(/\\\./g, '.')
115753      parts.forEach(function (part, _, __) {
115754        if (!p[part] || typeof p[part] !== 'object') p[part] = {}
115755        p = p[part]
115756      })
115757      if (p === out && nl === l) {
115758        return false
115759      }
115760      p[nl] = out[k]
115761      return true
115762    }).forEach(function (del, _, __) {
115763      delete out[del]
115764    })
115765  
115766    return out
115767  }
115768  
115769  function isQuoted (val) {
115770    return (val.charAt(0) === '"' && val.slice(-1) === '"') ||
115771      (val.charAt(0) === "'" && val.slice(-1) === "'")
115772  }
115773  
115774  function safe (val) {
115775    return (typeof val !== 'string' ||
115776      val.match(/[=\r\n]/) ||
115777      val.match(/^\[/) ||
115778      (val.length > 1 &&
115779       isQuoted(val)) ||
115780      val !== val.trim())
115781        ? JSON.stringify(val)
115782        : val.replace(/;/g, '\\;').replace(/#/g, '\\#')
115783  }
115784  
115785  function unsafe (val, doUnesc) {
115786    val = (val || '').trim()
115787    if (isQuoted(val)) {
115788      // remove the single quotes before calling JSON.parse
115789      if (val.charAt(0) === "'") {
115790        val = val.substr(1, val.length - 2)
115791      }
115792      try { val = JSON.parse(val) } catch (_) {}
115793    } else {
115794      // walk the val to find the first not-escaped ; character
115795      var esc = false
115796      var unesc = ''
115797      for (var i = 0, l = val.length; i < l; i++) {
115798        var c = val.charAt(i)
115799        if (esc) {
115800          if ('\\;#'.indexOf(c) !== -1) {
115801            unesc += c
115802          } else {
115803            unesc += '\\' + c
115804          }
115805          esc = false
115806        } else if (';#'.indexOf(c) !== -1) {
115807          break
115808        } else if (c === '\\') {
115809          esc = true
115810        } else {
115811          unesc += c
115812        }
115813      }
115814      if (esc) {
115815        unesc += '\\'
115816      }
115817      return unesc.trim()
115818    }
115819    return val
115820  }
115821  
115822  
115823  /***/ }),
115824  /* 685 */
115825  /***/ (function(module, exports, __webpack_require__) {
115826  
115827  "use strict";
115828  
115829  var _ = __webpack_require__(38);
115830  
115831  /**
115832   * Choice object
115833   * Normalize input as choice object
115834   * @constructor
115835   * @param {String|Object} val  Choice value. If an object is passed, it should contains
115836   *                             at least one of `value` or `name` property
115837   */
115838  
115839  module.exports = class Choice {
115840    constructor(val, answers) {
115841      // Don't process Choice and Separator object
115842      if (val instanceof Choice || val.type === 'separator') {
115843        return val;
115844      }
115845  
115846      if (_.isString(val)) {
115847        this.name = val;
115848        this.value = val;
115849        this.short = val;
115850      } else {
115851        _.extend(this, val, {
115852          name: val.name || val.value,
115853          value: 'value' in val ? val.value : val.name,
115854          short: val.short || val.name || val.value
115855        });
115856      }
115857  
115858      if (_.isFunction(val.disabled)) {
115859        this.disabled = val.disabled(answers);
115860      } else {
115861        this.disabled = val.disabled;
115862      }
115863    }
115864  };
115865  
115866  
115867  /***/ }),
115868  /* 686 */
115869  /***/ (function(module, exports, __webpack_require__) {
115870  
115871  "use strict";
115872  
115873  var assert = __webpack_require__(28);
115874  var _ = __webpack_require__(38);
115875  var Separator = __webpack_require__(176);
115876  var Choice = __webpack_require__(685);
115877  
115878  /**
115879   * Choices collection
115880   * Collection of multiple `choice` object
115881   * @constructor
115882   * @param {Array} choices  All `choice` to keep in the collection
115883   */
115884  
115885  module.exports = class Choices {
115886    constructor(choices, answers) {
115887      this.choices = choices.map(val => {
115888        if (val.type === 'separator') {
115889          if (!(val instanceof Separator)) {
115890            val = new Separator(val.line);
115891          }
115892          return val;
115893        }
115894        return new Choice(val, answers);
115895      });
115896  
115897      this.realChoices = this.choices
115898        .filter(Separator.exclude)
115899        .filter(item => !item.disabled);
115900  
115901      Object.defineProperty(this, 'length', {
115902        get() {
115903          return this.choices.length;
115904        },
115905        set(val) {
115906          this.choices.length = val;
115907        }
115908      });
115909  
115910      Object.defineProperty(this, 'realLength', {
115911        get() {
115912          return this.realChoices.length;
115913        },
115914        set() {
115915          throw new Error('Cannot set `realLength` of a Choices collection');
115916        }
115917      });
115918    }
115919  
115920    /**
115921     * Get a valid choice from the collection
115922     * @param  {Number} selector  The selected choice index
115923     * @return {Choice|Undefined} Return the matched choice or undefined
115924     */
115925  
115926    getChoice(selector) {
115927      assert(_.isNumber(selector));
115928      return this.realChoices[selector];
115929    }
115930  
115931    /**
115932     * Get a raw element from the collection
115933     * @param  {Number} selector  The selected index value
115934     * @return {Choice|Undefined} Return the matched choice or undefined
115935     */
115936  
115937    get(selector) {
115938      assert(_.isNumber(selector));
115939      return this.choices[selector];
115940    }
115941  
115942    /**
115943     * Match the valid choices against a where clause
115944     * @param  {Object} whereClause Lodash `where` clause
115945     * @return {Array}              Matching choices or empty array
115946     */
115947  
115948    where(whereClause) {
115949      return _.filter(this.realChoices, whereClause);
115950    }
115951  
115952    /**
115953     * Pluck a particular key from the choices
115954     * @param  {String} propertyName Property name to select
115955     * @return {Array}               Selected properties
115956     */
115957  
115958    pluck(propertyName) {
115959      return _.map(this.realChoices, propertyName);
115960    }
115961  
115962    // Expose usual Array methods
115963    indexOf() {
115964      return this.choices.indexOf.apply(this.choices, arguments);
115965    }
115966  
115967    forEach() {
115968      return this.choices.forEach.apply(this.choices, arguments);
115969    }
115970  
115971    filter() {
115972      return this.choices.filter.apply(this.choices, arguments);
115973    }
115974  
115975    find(func) {
115976      return _.find(this.choices, func);
115977    }
115978  
115979    push() {
115980      var objs = _.map(arguments, val => new Choice(val));
115981      this.choices.push.apply(this.choices, objs);
115982      this.realChoices = this.choices.filter(Separator.exclude);
115983      return this.choices;
115984    }
115985  };
115986  
115987  
115988  /***/ }),
115989  /* 687 */
115990  /***/ (function(module, exports, __webpack_require__) {
115991  
115992  "use strict";
115993  
115994  /**
115995   * `list` type prompt
115996   */
115997  
115998  var _ = __webpack_require__(38);
115999  var chalk = __webpack_require__(30);
116000  var cliCursor = __webpack_require__(375);
116001  var figures = __webpack_require__(267);
116002  var { map, takeUntil } = __webpack_require__(63);
116003  var Base = __webpack_require__(79);
116004  var observe = __webpack_require__(80);
116005  var Paginator = __webpack_require__(177);
116006  
116007  class CheckboxPrompt extends Base {
116008    constructor(questions, rl, answers) {
116009      super(questions, rl, answers);
116010  
116011      if (!this.opt.choices) {
116012        this.throwParamError('choices');
116013      }
116014  
116015      if (_.isArray(this.opt.default)) {
116016        this.opt.choices.forEach(function(choice) {
116017          if (this.opt.default.indexOf(choice.value) >= 0) {
116018            choice.checked = true;
116019          }
116020        }, this);
116021      }
116022  
116023      this.pointer = 0;
116024      this.firstRender = true;
116025  
116026      // Make sure no default is set (so it won't be printed)
116027      this.opt.default = null;
116028  
116029      this.paginator = new Paginator(this.screen);
116030    }
116031  
116032    /**
116033     * Start the Inquiry session
116034     * @param  {Function} cb      Callback when prompt is done
116035     * @return {this}
116036     */
116037  
116038    _run(cb) {
116039      this.done = cb;
116040  
116041      var events = observe(this.rl);
116042  
116043      var validation = this.handleSubmitEvents(
116044        events.line.pipe(map(this.getCurrentValue.bind(this)))
116045      );
116046      validation.success.forEach(this.onEnd.bind(this));
116047      validation.error.forEach(this.onError.bind(this));
116048  
116049      events.normalizedUpKey
116050        .pipe(takeUntil(validation.success))
116051        .forEach(this.onUpKey.bind(this));
116052      events.normalizedDownKey
116053        .pipe(takeUntil(validation.success))
116054        .forEach(this.onDownKey.bind(this));
116055      events.numberKey
116056        .pipe(takeUntil(validation.success))
116057        .forEach(this.onNumberKey.bind(this));
116058      events.spaceKey
116059        .pipe(takeUntil(validation.success))
116060        .forEach(this.onSpaceKey.bind(this));
116061      events.aKey.pipe(takeUntil(validation.success)).forEach(this.onAllKey.bind(this));
116062      events.iKey.pipe(takeUntil(validation.success)).forEach(this.onInverseKey.bind(this));
116063  
116064      // Init the prompt
116065      cliCursor.hide();
116066      this.render();
116067      this.firstRender = false;
116068  
116069      return this;
116070    }
116071  
116072    /**
116073     * Render the prompt to screen
116074     * @return {CheckboxPrompt} self
116075     */
116076  
116077    render(error) {
116078      // Render question
116079      var message = this.getQuestion();
116080      var bottomContent = '';
116081  
116082      if (this.firstRender) {
116083        message +=
116084          '(Press ' +
116085          chalk.cyan.bold('<space>') +
116086          ' to select, ' +
116087          chalk.cyan.bold('<a>') +
116088          ' to toggle all, ' +
116089          chalk.cyan.bold('<i>') +
116090          ' to invert selection)';
116091      }
116092  
116093      // Render choices or answer depending on the state
116094      if (this.status === 'answered') {
116095        message += chalk.cyan(this.selection.join(', '));
116096      } else {
116097        var choicesStr = renderChoices(this.opt.choices, this.pointer);
116098        var indexPosition = this.opt.choices.indexOf(
116099          this.opt.choices.getChoice(this.pointer)
116100        );
116101        message +=
116102          '\n' + this.paginator.paginate(choicesStr, indexPosition, this.opt.pageSize);
116103      }
116104  
116105      if (error) {
116106        bottomContent = chalk.red('>> ') + error;
116107      }
116108  
116109      this.screen.render(message, bottomContent);
116110    }
116111  
116112    /**
116113     * When user press `enter` key
116114     */
116115  
116116    onEnd(state) {
116117      this.status = 'answered';
116118  
116119      // Rerender prompt (and clean subline error)
116120      this.render();
116121  
116122      this.screen.done();
116123      cliCursor.show();
116124      this.done(state.value);
116125    }
116126  
116127    onError(state) {
116128      this.render(state.isValid);
116129    }
116130  
116131    getCurrentValue() {
116132      var choices = this.opt.choices.filter(function(choice) {
116133        return Boolean(choice.checked) && !choice.disabled;
116134      });
116135  
116136      this.selection = _.map(choices, 'short');
116137      return _.map(choices, 'value');
116138    }
116139  
116140    onUpKey() {
116141      var len = this.opt.choices.realLength;
116142      this.pointer = this.pointer > 0 ? this.pointer - 1 : len - 1;
116143      this.render();
116144    }
116145  
116146    onDownKey() {
116147      var len = this.opt.choices.realLength;
116148      this.pointer = this.pointer < len - 1 ? this.pointer + 1 : 0;
116149      this.render();
116150    }
116151  
116152    onNumberKey(input) {
116153      if (input <= this.opt.choices.realLength) {
116154        this.pointer = input - 1;
116155        this.toggleChoice(this.pointer);
116156      }
116157      this.render();
116158    }
116159  
116160    onSpaceKey() {
116161      this.toggleChoice(this.pointer);
116162      this.render();
116163    }
116164  
116165    onAllKey() {
116166      var shouldBeChecked = Boolean(
116167        this.opt.choices.find(function(choice) {
116168          return choice.type !== 'separator' && !choice.checked;
116169        })
116170      );
116171  
116172      this.opt.choices.forEach(function(choice) {
116173        if (choice.type !== 'separator') {
116174          choice.checked = shouldBeChecked;
116175        }
116176      });
116177  
116178      this.render();
116179    }
116180  
116181    onInverseKey() {
116182      this.opt.choices.forEach(function(choice) {
116183        if (choice.type !== 'separator') {
116184          choice.checked = !choice.checked;
116185        }
116186      });
116187  
116188      this.render();
116189    }
116190  
116191    toggleChoice(index) {
116192      var item = this.opt.choices.getChoice(index);
116193      if (item !== undefined) {
116194        this.opt.choices.getChoice(index).checked = !item.checked;
116195      }
116196    }
116197  }
116198  
116199  /**
116200   * Function for rendering checkbox choices
116201   * @param  {Number} pointer Position of the pointer
116202   * @return {String}         Rendered content
116203   */
116204  
116205  function renderChoices(choices, pointer) {
116206    var output = '';
116207    var separatorOffset = 0;
116208  
116209    choices.forEach(function(choice, i) {
116210      if (choice.type === 'separator') {
116211        separatorOffset++;
116212        output += ' ' + choice + '\n';
116213        return;
116214      }
116215  
116216      if (choice.disabled) {
116217        separatorOffset++;
116218        output += ' - ' + choice.name;
116219        output += ' (' + (_.isString(choice.disabled) ? choice.disabled : 'Disabled') + ')';
116220      } else {
116221        var line = getCheckbox(choice.checked) + ' ' + choice.name;
116222        if (i - separatorOffset === pointer) {
116223          output += chalk.cyan(figures.pointer + line);
116224        } else {
116225          output += ' ' + line;
116226        }
116227      }
116228  
116229      output += '\n';
116230    });
116231  
116232    return output.replace(/\n$/, '');
116233  }
116234  
116235  /**
116236   * Get the checkbox
116237   * @param  {Boolean} checked - add a X or not to the checkbox
116238   * @return {String} Composited checkbox string
116239   */
116240  
116241  function getCheckbox(checked) {
116242    return checked ? chalk.green(figures.radioOn) : figures.radioOff;
116243  }
116244  
116245  module.exports = CheckboxPrompt;
116246  
116247  
116248  /***/ }),
116249  /* 688 */
116250  /***/ (function(module, exports, __webpack_require__) {
116251  
116252  "use strict";
116253  
116254  /**
116255   * `confirm` type prompt
116256   */
116257  
116258  var _ = __webpack_require__(38);
116259  var chalk = __webpack_require__(30);
116260  var { take, takeUntil } = __webpack_require__(63);
116261  var Base = __webpack_require__(79);
116262  var observe = __webpack_require__(80);
116263  
116264  class ConfirmPrompt extends Base {
116265    constructor(questions, rl, answers) {
116266      super(questions, rl, answers);
116267  
116268      var rawDefault = true;
116269  
116270      _.extend(this.opt, {
116271        filter: function(input) {
116272          var value = rawDefault;
116273          if (input != null && input !== '') {
116274            value = /^y(es)?/i.test(input);
116275          }
116276          return value;
116277        }
116278      });
116279  
116280      if (_.isBoolean(this.opt.default)) {
116281        rawDefault = this.opt.default;
116282      }
116283  
116284      this.opt.default = rawDefault ? 'Y/n' : 'y/N';
116285  
116286      return this;
116287    }
116288  
116289    /**
116290     * Start the Inquiry session
116291     * @param  {Function} cb   Callback when prompt is done
116292     * @return {this}
116293     */
116294  
116295    _run(cb) {
116296      this.done = cb;
116297  
116298      // Once user confirm (enter key)
116299      var events = observe(this.rl);
116300      events.keypress.pipe(takeUntil(events.line)).forEach(this.onKeypress.bind(this));
116301  
116302      events.line.pipe(take(1)).forEach(this.onEnd.bind(this));
116303  
116304      // Init
116305      this.render();
116306  
116307      return this;
116308    }
116309  
116310    /**
116311     * Render the prompt to screen
116312     * @return {ConfirmPrompt} self
116313     */
116314  
116315    render(answer) {
116316      var message = this.getQuestion();
116317  
116318      if (typeof answer === 'boolean') {
116319        message += chalk.cyan(answer ? 'Yes' : 'No');
116320      } else {
116321        message += this.rl.line;
116322      }
116323  
116324      this.screen.render(message);
116325  
116326      return this;
116327    }
116328  
116329    /**
116330     * When user press `enter` key
116331     */
116332  
116333    onEnd(input) {
116334      this.status = 'answered';
116335  
116336      var output = this.opt.filter(input);
116337      this.render(output);
116338  
116339      this.screen.done();
116340      this.done(output);
116341    }
116342  
116343    /**
116344     * When user press a key
116345     */
116346  
116347    onKeypress() {
116348      this.render();
116349    }
116350  }
116351  
116352  module.exports = ConfirmPrompt;
116353  
116354  
116355  /***/ }),
116356  /* 689 */
116357  /***/ (function(module, exports, __webpack_require__) {
116358  
116359  "use strict";
116360  
116361  /**
116362   * `editor` type prompt
116363   */
116364  
116365  var chalk = __webpack_require__(30);
116366  var editAsync = __webpack_require__(709).editAsync;
116367  var Base = __webpack_require__(79);
116368  var observe = __webpack_require__(80);
116369  var { Subject } = __webpack_require__(183);
116370  
116371  class EditorPrompt extends Base {
116372    /**
116373     * Start the Inquiry session
116374     * @param  {Function} cb      Callback when prompt is done
116375     * @return {this}
116376     */
116377  
116378    _run(cb) {
116379      this.done = cb;
116380  
116381      this.editorResult = new Subject();
116382  
116383      // Open Editor on "line" (Enter Key)
116384      var events = observe(this.rl);
116385      this.lineSubscription = events.line.subscribe(this.startExternalEditor.bind(this));
116386  
116387      // Trigger Validation when editor closes
116388      var validation = this.handleSubmitEvents(this.editorResult);
116389      validation.success.forEach(this.onEnd.bind(this));
116390      validation.error.forEach(this.onError.bind(this));
116391  
116392      // Prevents default from being printed on screen (can look weird with multiple lines)
116393      this.currentText = this.opt.default;
116394      this.opt.default = null;
116395  
116396      // Init
116397      this.render();
116398  
116399      return this;
116400    }
116401  
116402    /**
116403     * Render the prompt to screen
116404     * @return {EditorPrompt} self
116405     */
116406  
116407    render(error) {
116408      var bottomContent = '';
116409      var message = this.getQuestion();
116410  
116411      if (this.status === 'answered') {
116412        message += chalk.dim('Received');
116413      } else {
116414        message += chalk.dim('Press <enter> to launch your preferred editor.');
116415      }
116416  
116417      if (error) {
116418        bottomContent = chalk.red('>> ') + error;
116419      }
116420  
116421      this.screen.render(message, bottomContent);
116422    }
116423  
116424    /**
116425     * Launch $EDITOR on user press enter
116426     */
116427  
116428    startExternalEditor() {
116429      // Pause Readline to prevent stdin and stdout from being modified while the editor is showing
116430      this.rl.pause();
116431      editAsync(this.currentText, this.endExternalEditor.bind(this));
116432    }
116433  
116434    endExternalEditor(error, result) {
116435      this.rl.resume();
116436      if (error) {
116437        this.editorResult.error(error);
116438      } else {
116439        this.editorResult.next(result);
116440      }
116441    }
116442  
116443    onEnd(state) {
116444      this.editorResult.unsubscribe();
116445      this.lineSubscription.unsubscribe();
116446      this.answer = state.value;
116447      this.status = 'answered';
116448      // Re-render prompt
116449      this.render();
116450      this.screen.done();
116451      this.done(this.answer);
116452    }
116453  
116454    onError(state) {
116455      this.render(state.isValid);
116456    }
116457  }
116458  
116459  module.exports = EditorPrompt;
116460  
116461  
116462  /***/ }),
116463  /* 690 */
116464  /***/ (function(module, exports, __webpack_require__) {
116465  
116466  "use strict";
116467  
116468  /**
116469   * `rawlist` type prompt
116470   */
116471  
116472  var _ = __webpack_require__(38);
116473  var chalk = __webpack_require__(30);
116474  var { map, takeUntil } = __webpack_require__(63);
116475  var Base = __webpack_require__(79);
116476  var Separator = __webpack_require__(176);
116477  var observe = __webpack_require__(80);
116478  var Paginator = __webpack_require__(177);
116479  
116480  class ExpandPrompt extends Base {
116481    constructor(questions, rl, answers) {
116482      super(questions, rl, answers);
116483  
116484      if (!this.opt.choices) {
116485        this.throwParamError('choices');
116486      }
116487  
116488      this.validateChoices(this.opt.choices);
116489  
116490      // Add the default `help` (/expand) option
116491      this.opt.choices.push({
116492        key: 'h',
116493        name: 'Help, list all options',
116494        value: 'help'
116495      });
116496  
116497      this.opt.validate = choice => {
116498        if (choice == null) {
116499          return 'Please enter a valid command';
116500        }
116501  
116502        return choice !== 'help';
116503      };
116504  
116505      // Setup the default string (capitalize the default key)
116506      this.opt.default = this.generateChoicesString(this.opt.choices, this.opt.default);
116507  
116508      this.paginator = new Paginator(this.screen);
116509    }
116510  
116511    /**
116512     * Start the Inquiry session
116513     * @param  {Function} cb      Callback when prompt is done
116514     * @return {this}
116515     */
116516  
116517    _run(cb) {
116518      this.done = cb;
116519  
116520      // Save user answer and update prompt to show selected option.
116521      var events = observe(this.rl);
116522      var validation = this.handleSubmitEvents(
116523        events.line.pipe(map(this.getCurrentValue.bind(this)))
116524      );
116525      validation.success.forEach(this.onSubmit.bind(this));
116526      validation.error.forEach(this.onError.bind(this));
116527      this.keypressObs = events.keypress
116528        .pipe(takeUntil(validation.success))
116529        .forEach(this.onKeypress.bind(this));
116530  
116531      // Init the prompt
116532      this.render();
116533  
116534      return this;
116535    }
116536  
116537    /**
116538     * Render the prompt to screen
116539     * @return {ExpandPrompt} self
116540     */
116541  
116542    render(error, hint) {
116543      var message = this.getQuestion();
116544      var bottomContent = '';
116545  
116546      if (this.status === 'answered') {
116547        message += chalk.cyan(this.answer);
116548      } else if (this.status === 'expanded') {
116549        var choicesStr = renderChoices(this.opt.choices, this.selectedKey);
116550        message += this.paginator.paginate(choicesStr, this.selectedKey, this.opt.pageSize);
116551        message += '\n  Answer: ';
116552      }
116553  
116554      message += this.rl.line;
116555  
116556      if (error) {
116557        bottomContent = chalk.red('>> ') + error;
116558      }
116559  
116560      if (hint) {
116561        bottomContent = chalk.cyan('>> ') + hint;
116562      }
116563  
116564      this.screen.render(message, bottomContent);
116565    }
116566  
116567    getCurrentValue(input) {
116568      if (!input) {
116569        input = this.rawDefault;
116570      }
116571      var selected = this.opt.choices.where({ key: input.toLowerCase().trim() })[0];
116572      if (!selected) {
116573        return null;
116574      }
116575  
116576      return selected.value;
116577    }
116578  
116579    /**
116580     * Generate the prompt choices string
116581     * @return {String}  Choices string
116582     */
116583  
116584    getChoices() {
116585      var output = '';
116586  
116587      this.opt.choices.forEach(choice => {
116588        output += '\n  ';
116589  
116590        if (choice.type === 'separator') {
116591          output += ' ' + choice;
116592          return;
116593        }
116594  
116595        var choiceStr = choice.key + ') ' + choice.name;
116596        if (this.selectedKey === choice.key) {
116597          choiceStr = chalk.cyan(choiceStr);
116598        }
116599        output += choiceStr;
116600      });
116601  
116602      return output;
116603    }
116604  
116605    onError(state) {
116606      if (state.value === 'help') {
116607        this.selectedKey = '';
116608        this.status = 'expanded';
116609        this.render();
116610        return;
116611      }
116612      this.render(state.isValid);
116613    }
116614  
116615    /**
116616     * When user press `enter` key
116617     */
116618  
116619    onSubmit(state) {
116620      this.status = 'answered';
116621      var choice = this.opt.choices.where({ value: state.value })[0];
116622      this.answer = choice.short || choice.name;
116623  
116624      // Re-render prompt
116625      this.render();
116626      this.screen.done();
116627      this.done(state.value);
116628    }
116629  
116630    /**
116631     * When user press a key
116632     */
116633  
116634    onKeypress() {
116635      this.selectedKey = this.rl.line.toLowerCase();
116636      var selected = this.opt.choices.where({ key: this.selectedKey })[0];
116637      if (this.status === 'expanded') {
116638        this.render();
116639      } else {
116640        this.render(null, selected ? selected.name : null);
116641      }
116642    }
116643  
116644    /**
116645     * Validate the choices
116646     * @param {Array} choices
116647     */
116648  
116649    validateChoices(choices) {
116650      var formatError;
116651      var errors = [];
116652      var keymap = {};
116653      choices.filter(Separator.exclude).forEach(choice => {
116654        if (!choice.key || choice.key.length !== 1) {
116655          formatError = true;
116656        }
116657        if (keymap[choice.key]) {
116658          errors.push(choice.key);
116659        }
116660        keymap[choice.key] = true;
116661        choice.key = String(choice.key).toLowerCase();
116662      });
116663  
116664      if (formatError) {
116665        throw new Error(
116666          'Format error: `key` param must be a single letter and is required.'
116667        );
116668      }
116669      if (keymap.h) {
116670        throw new Error(
116671          'Reserved key error: `key` param cannot be `h` - this value is reserved.'
116672        );
116673      }
116674      if (errors.length) {
116675        throw new Error(
116676          'Duplicate key error: `key` param must be unique. Duplicates: ' +
116677            _.uniq(errors).join(', ')
116678        );
116679      }
116680    }
116681  
116682    /**
116683     * Generate a string out of the choices keys
116684     * @param  {Array}  choices
116685     * @param  {Number|String} default - the choice index or name to capitalize
116686     * @return {String} The rendered choices key string
116687     */
116688    generateChoicesString(choices, defaultChoice) {
116689      var defIndex = choices.realLength - 1;
116690      if (_.isNumber(defaultChoice) && this.opt.choices.getChoice(defaultChoice)) {
116691        defIndex = defaultChoice;
116692      } else if (_.isString(defaultChoice)) {
116693        let index = _.findIndex(
116694          choices.realChoices,
116695          ({ value }) => value === defaultChoice
116696        );
116697        defIndex = index === -1 ? defIndex : index;
116698      }
116699      var defStr = this.opt.choices.pluck('key');
116700      this.rawDefault = defStr[defIndex];
116701      defStr[defIndex] = String(defStr[defIndex]).toUpperCase();
116702      return defStr.join('');
116703    }
116704  }
116705  
116706  /**
116707   * Function for rendering checkbox choices
116708   * @param  {String} pointer Selected key
116709   * @return {String}         Rendered content
116710   */
116711  
116712  function renderChoices(choices, pointer) {
116713    var output = '';
116714  
116715    choices.forEach(choice => {
116716      output += '\n  ';
116717  
116718      if (choice.type === 'separator') {
116719        output += ' ' + choice;
116720        return;
116721      }
116722  
116723      var choiceStr = choice.key + ') ' + choice.name;
116724      if (pointer === choice.key) {
116725        choiceStr = chalk.cyan(choiceStr);
116726      }
116727      output += choiceStr;
116728    });
116729  
116730    return output;
116731  }
116732  
116733  module.exports = ExpandPrompt;
116734  
116735  
116736  /***/ }),
116737  /* 691 */
116738  /***/ (function(module, exports, __webpack_require__) {
116739  
116740  "use strict";
116741  
116742  /**
116743   * `list` type prompt
116744   */
116745  
116746  var _ = __webpack_require__(38);
116747  var chalk = __webpack_require__(30);
116748  var figures = __webpack_require__(267);
116749  var cliCursor = __webpack_require__(375);
116750  var runAsync = __webpack_require__(182);
116751  var { flatMap, map, take, takeUntil } = __webpack_require__(63);
116752  var Base = __webpack_require__(79);
116753  var observe = __webpack_require__(80);
116754  var Paginator = __webpack_require__(177);
116755  
116756  class ListPrompt extends Base {
116757    constructor(questions, rl, answers) {
116758      super(questions, rl, answers);
116759  
116760      if (!this.opt.choices) {
116761        this.throwParamError('choices');
116762      }
116763  
116764      this.firstRender = true;
116765      this.selected = 0;
116766  
116767      var def = this.opt.default;
116768  
116769      // If def is a Number, then use as index. Otherwise, check for value.
116770      if (_.isNumber(def) && def >= 0 && def < this.opt.choices.realLength) {
116771        this.selected = def;
116772      } else if (!_.isNumber(def) && def != null) {
116773        let index = _.findIndex(this.opt.choices.realChoices, ({ value }) => value === def);
116774        this.selected = Math.max(index, 0);
116775      }
116776  
116777      // Make sure no default is set (so it won't be printed)
116778      this.opt.default = null;
116779  
116780      this.paginator = new Paginator(this.screen);
116781    }
116782  
116783    /**
116784     * Start the Inquiry session
116785     * @param  {Function} cb      Callback when prompt is done
116786     * @return {this}
116787     */
116788  
116789    _run(cb) {
116790      this.done = cb;
116791  
116792      var self = this;
116793  
116794      var events = observe(this.rl);
116795      events.normalizedUpKey.pipe(takeUntil(events.line)).forEach(this.onUpKey.bind(this));
116796      events.normalizedDownKey
116797        .pipe(takeUntil(events.line))
116798        .forEach(this.onDownKey.bind(this));
116799      events.numberKey.pipe(takeUntil(events.line)).forEach(this.onNumberKey.bind(this));
116800      events.line
116801        .pipe(
116802          take(1),
116803          map(this.getCurrentValue.bind(this)),
116804          flatMap(value => runAsync(self.opt.filter)(value).catch(err => err))
116805        )
116806        .forEach(this.onSubmit.bind(this));
116807  
116808      // Init the prompt
116809      cliCursor.hide();
116810      this.render();
116811  
116812      return this;
116813    }
116814  
116815    /**
116816     * Render the prompt to screen
116817     * @return {ListPrompt} self
116818     */
116819  
116820    render() {
116821      // Render question
116822      var message = this.getQuestion();
116823  
116824      if (this.firstRender) {
116825        message += chalk.dim('(Use arrow keys)');
116826      }
116827  
116828      // Render choices or answer depending on the state
116829      if (this.status === 'answered') {
116830        message += chalk.cyan(this.opt.choices.getChoice(this.selected).short);
116831      } else {
116832        var choicesStr = listRender(this.opt.choices, this.selected);
116833        var indexPosition = this.opt.choices.indexOf(
116834          this.opt.choices.getChoice(this.selected)
116835        );
116836        message +=
116837          '\n' + this.paginator.paginate(choicesStr, indexPosition, this.opt.pageSize);
116838      }
116839  
116840      this.firstRender = false;
116841  
116842      this.screen.render(message);
116843    }
116844  
116845    /**
116846     * When user press `enter` key
116847     */
116848  
116849    onSubmit(value) {
116850      this.status = 'answered';
116851  
116852      // Rerender prompt
116853      this.render();
116854  
116855      this.screen.done();
116856      cliCursor.show();
116857      this.done(value);
116858    }
116859  
116860    getCurrentValue() {
116861      return this.opt.choices.getChoice(this.selected).value;
116862    }
116863  
116864    /**
116865     * When user press a key
116866     */
116867    onUpKey() {
116868      var len = this.opt.choices.realLength;
116869      this.selected = this.selected > 0 ? this.selected - 1 : len - 1;
116870      this.render();
116871    }
116872  
116873    onDownKey() {
116874      var len = this.opt.choices.realLength;
116875      this.selected = this.selected < len - 1 ? this.selected + 1 : 0;
116876      this.render();
116877    }
116878  
116879    onNumberKey(input) {
116880      if (input <= this.opt.choices.realLength) {
116881        this.selected = input - 1;
116882      }
116883      this.render();
116884    }
116885  }
116886  
116887  /**
116888   * Function for rendering list choices
116889   * @param  {Number} pointer Position of the pointer
116890   * @return {String}         Rendered content
116891   */
116892  function listRender(choices, pointer) {
116893    var output = '';
116894    var separatorOffset = 0;
116895  
116896    choices.forEach((choice, i) => {
116897      if (choice.type === 'separator') {
116898        separatorOffset++;
116899        output += '  ' + choice + '\n';
116900        return;
116901      }
116902  
116903      if (choice.disabled) {
116904        separatorOffset++;
116905        output += '  - ' + choice.name;
116906        output += ' (' + (_.isString(choice.disabled) ? choice.disabled : 'Disabled') + ')';
116907        output += '\n';
116908        return;
116909      }
116910  
116911      var isSelected = i - separatorOffset === pointer;
116912      var line = (isSelected ? figures.pointer + ' ' : '  ') + choice.name;
116913      if (isSelected) {
116914        line = chalk.cyan(line);
116915      }
116916      output += line + ' \n';
116917    });
116918  
116919    return output.replace(/\n$/, '');
116920  }
116921  
116922  module.exports = ListPrompt;
116923  
116924  
116925  /***/ }),
116926  /* 692 */
116927  /***/ (function(module, exports, __webpack_require__) {
116928  
116929  "use strict";
116930  
116931  /**
116932   * `input` type prompt
116933   */
116934  
116935  var Input = __webpack_require__(392);
116936  
116937  /**
116938   * Extention of the Input prompt specifically for use with number inputs.
116939   */
116940  
116941  class NumberPrompt extends Input {
116942    filterInput(input) {
116943      if (input && typeof input === 'string') {
116944        input = input.trim();
116945        // Match a number in the input
116946        let numberMatch = input.match(/(^-?\d+|^\d+\.\d*|^\d*\.\d+)(e\d+)?$/);
116947        // If a number is found, return that input.
116948        if (numberMatch) {
116949          return Number(numberMatch[0]);
116950        }
116951      }
116952      // If the input was invalid return the default value.
116953      return this.opt.default == null ? NaN : this.opt.default;
116954    }
116955  }
116956  
116957  module.exports = NumberPrompt;
116958  
116959  
116960  /***/ }),
116961  /* 693 */
116962  /***/ (function(module, exports, __webpack_require__) {
116963  
116964  "use strict";
116965  
116966  /**
116967   * `password` type prompt
116968   */
116969  
116970  var chalk = __webpack_require__(30);
116971  var { map, takeUntil } = __webpack_require__(63);
116972  var Base = __webpack_require__(79);
116973  var observe = __webpack_require__(80);
116974  
116975  function mask(input, maskChar) {
116976    input = String(input);
116977    maskChar = typeof maskChar === 'string' ? maskChar : '*';
116978    if (input.length === 0) {
116979      return '';
116980    }
116981  
116982    return new Array(input.length + 1).join(maskChar);
116983  }
116984  
116985  class PasswordPrompt extends Base {
116986    /**
116987     * Start the Inquiry session
116988     * @param  {Function} cb      Callback when prompt is done
116989     * @return {this}
116990     */
116991  
116992    _run(cb) {
116993      this.done = cb;
116994  
116995      var events = observe(this.rl);
116996  
116997      // Once user confirm (enter key)
116998      var submit = events.line.pipe(map(this.filterInput.bind(this)));
116999  
117000      var validation = this.handleSubmitEvents(submit);
117001      validation.success.forEach(this.onEnd.bind(this));
117002      validation.error.forEach(this.onError.bind(this));
117003  
117004      if (this.opt.mask) {
117005        events.keypress
117006          .pipe(takeUntil(validation.success))
117007          .forEach(this.onKeypress.bind(this));
117008      }
117009  
117010      // Init
117011      this.render();
117012  
117013      return this;
117014    }
117015  
117016    /**
117017     * Render the prompt to screen
117018     * @return {PasswordPrompt} self
117019     */
117020  
117021    render(error) {
117022      var message = this.getQuestion();
117023      var bottomContent = '';
117024  
117025      if (this.status === 'answered') {
117026        message += this.opt.mask
117027          ? chalk.cyan(mask(this.answer, this.opt.mask))
117028          : chalk.italic.dim('[hidden]');
117029      } else if (this.opt.mask) {
117030        message += mask(this.rl.line || '', this.opt.mask);
117031      } else {
117032        message += chalk.italic.dim('[input is hidden] ');
117033      }
117034  
117035      if (error) {
117036        bottomContent = '\n' + chalk.red('>> ') + error;
117037      }
117038  
117039      this.screen.render(message, bottomContent);
117040    }
117041  
117042    /**
117043     * When user press `enter` key
117044     */
117045  
117046    filterInput(input) {
117047      if (!input) {
117048        return this.opt.default == null ? '' : this.opt.default;
117049      }
117050      return input;
117051    }
117052  
117053    onEnd(state) {
117054      this.status = 'answered';
117055      this.answer = state.value;
117056  
117057      // Re-render prompt
117058      this.render();
117059  
117060      this.screen.done();
117061      this.done(state.value);
117062    }
117063  
117064    onError(state) {
117065      this.render(state.isValid);
117066    }
117067  
117068    onKeypress() {
117069      this.render();
117070    }
117071  }
117072  
117073  module.exports = PasswordPrompt;
117074  
117075  
117076  /***/ }),
117077  /* 694 */
117078  /***/ (function(module, exports, __webpack_require__) {
117079  
117080  "use strict";
117081  
117082  /**
117083   * `rawlist` type prompt
117084   */
117085  
117086  var _ = __webpack_require__(38);
117087  var chalk = __webpack_require__(30);
117088  var { map, takeUntil } = __webpack_require__(63);
117089  var Base = __webpack_require__(79);
117090  var Separator = __webpack_require__(176);
117091  var observe = __webpack_require__(80);
117092  var Paginator = __webpack_require__(177);
117093  
117094  class RawListPrompt extends Base {
117095    constructor(questions, rl, answers) {
117096      super(questions, rl, answers);
117097  
117098      if (!this.opt.choices) {
117099        this.throwParamError('choices');
117100      }
117101  
117102      this.opt.validChoices = this.opt.choices.filter(Separator.exclude);
117103  
117104      this.selected = 0;
117105      this.rawDefault = 0;
117106  
117107      _.extend(this.opt, {
117108        validate: function(val) {
117109          return val != null;
117110        }
117111      });
117112  
117113      var def = this.opt.default;
117114      if (_.isNumber(def) && def >= 0 && def < this.opt.choices.realLength) {
117115        this.selected = def;
117116        this.rawDefault = def;
117117      } else if (!_.isNumber(def) && def != null) {
117118        let index = _.findIndex(this.opt.choices.realChoices, ({ value }) => value === def);
117119        let safeIndex = Math.max(index, 0);
117120        this.selected = safeIndex;
117121        this.rawDefault = safeIndex;
117122      }
117123  
117124      // Make sure no default is set (so it won't be printed)
117125      this.opt.default = null;
117126  
117127      this.paginator = new Paginator();
117128    }
117129  
117130    /**
117131     * Start the Inquiry session
117132     * @param  {Function} cb      Callback when prompt is done
117133     * @return {this}
117134     */
117135  
117136    _run(cb) {
117137      this.done = cb;
117138  
117139      // Once user confirm (enter key)
117140      var events = observe(this.rl);
117141      var submit = events.line.pipe(map(this.getCurrentValue.bind(this)));
117142  
117143      var validation = this.handleSubmitEvents(submit);
117144      validation.success.forEach(this.onEnd.bind(this));
117145      validation.error.forEach(this.onError.bind(this));
117146  
117147      events.keypress
117148        .pipe(takeUntil(validation.success))
117149        .forEach(this.onKeypress.bind(this));
117150  
117151      // Init the prompt
117152      this.render();
117153  
117154      return this;
117155    }
117156  
117157    /**
117158     * Render the prompt to screen
117159     * @return {RawListPrompt} self
117160     */
117161  
117162    render(error) {
117163      // Render question
117164      var message = this.getQuestion();
117165      var bottomContent = '';
117166  
117167      if (this.status === 'answered') {
117168        message += chalk.cyan(this.answer);
117169      } else {
117170        var choicesStr = renderChoices(this.opt.choices, this.selected);
117171        message += this.paginator.paginate(choicesStr, this.selected, this.opt.pageSize);
117172        message += '\n  Answer: ';
117173      }
117174  
117175      message += this.rl.line;
117176  
117177      if (error) {
117178        bottomContent = '\n' + chalk.red('>> ') + error;
117179      }
117180  
117181      this.screen.render(message, bottomContent);
117182    }
117183  
117184    /**
117185     * When user press `enter` key
117186     */
117187  
117188    getCurrentValue(index) {
117189      if (index == null || index === '') {
117190        index = this.rawDefault;
117191      } else {
117192        index -= 1;
117193      }
117194  
117195      var choice = this.opt.choices.getChoice(index);
117196      return choice ? choice.value : null;
117197    }
117198  
117199    onEnd(state) {
117200      this.status = 'answered';
117201      this.answer = state.value;
117202  
117203      // Re-render prompt
117204      this.render();
117205  
117206      this.screen.done();
117207      this.done(state.value);
117208    }
117209  
117210    onError() {
117211      this.render('Please enter a valid index');
117212    }
117213  
117214    /**
117215     * When user press a key
117216     */
117217  
117218    onKeypress() {
117219      var index = this.rl.line.length ? Number(this.rl.line) - 1 : 0;
117220  
117221      if (this.opt.choices.getChoice(index)) {
117222        this.selected = index;
117223      } else {
117224        this.selected = undefined;
117225      }
117226  
117227      this.render();
117228    }
117229  }
117230  
117231  /**
117232   * Function for rendering list choices
117233   * @param  {Number} pointer Position of the pointer
117234   * @return {String}         Rendered content
117235   */
117236  
117237  function renderChoices(choices, pointer) {
117238    var output = '';
117239    var separatorOffset = 0;
117240  
117241    choices.forEach(function(choice, i) {
117242      output += '\n  ';
117243  
117244      if (choice.type === 'separator') {
117245        separatorOffset++;
117246        output += ' ' + choice;
117247        return;
117248      }
117249  
117250      var index = i - separatorOffset;
117251      var display = index + 1 + ') ' + choice.name;
117252      if (index === pointer) {
117253        display = chalk.cyan(display);
117254      }
117255      output += display;
117256    });
117257  
117258    return output;
117259  }
117260  
117261  module.exports = RawListPrompt;
117262  
117263  
117264  /***/ }),
117265  /* 695 */
117266  /***/ (function(module, exports, __webpack_require__) {
117267  
117268  "use strict";
117269  
117270  /**
117271   * Sticky bottom bar user interface
117272   */
117273  
117274  var through = __webpack_require__(953);
117275  var Base = __webpack_require__(393);
117276  var rlUtils = __webpack_require__(394);
117277  var _ = __webpack_require__(38);
117278  
117279  class BottomBar extends Base {
117280    constructor(opt) {
117281      opt = opt || {};
117282  
117283      super(opt);
117284  
117285      this.log = through(this.writeLog.bind(this));
117286      this.bottomBar = opt.bottomBar || '';
117287      this.render();
117288    }
117289  
117290    /**
117291     * Render the prompt to screen
117292     * @return {BottomBar} self
117293     */
117294  
117295    render() {
117296      this.write(this.bottomBar);
117297      return this;
117298    }
117299  
117300    clean() {
117301      rlUtils.clearLine(this.rl, this.bottomBar.split('\n').length);
117302      return this;
117303    }
117304  
117305    /**
117306     * Update the bottom bar content and rerender
117307     * @param  {String} bottomBar Bottom bar content
117308     * @return {BottomBar}           self
117309     */
117310  
117311    updateBottomBar(bottomBar) {
117312      rlUtils.clearLine(this.rl, 1);
117313      this.rl.output.unmute();
117314      this.clean();
117315      this.bottomBar = bottomBar;
117316      this.render();
117317      this.rl.output.mute();
117318      return this;
117319    }
117320  
117321    /**
117322     * Write out log data
117323     * @param {String} data - The log data to be output
117324     * @return {BottomBar} self
117325     */
117326  
117327    writeLog(data) {
117328      this.rl.output.unmute();
117329      this.clean();
117330      this.rl.output.write(this.enforceLF(data.toString()));
117331      this.render();
117332      this.rl.output.mute();
117333      return this;
117334    }
117335  
117336    /**
117337     * Make sure line end on a line feed
117338     * @param  {String} str Input string
117339     * @return {String}     The input string with a final line feed
117340     */
117341  
117342    enforceLF(str) {
117343      return str.match(/[\r\n]$/) ? str : str + '\n';
117344    }
117345  
117346    /**
117347     * Helper for writing message in Prompt
117348     * @param {BottomBar} prompt  - The Prompt object that extends tty
117349     * @param {String} message - The message to be output
117350     */
117351    write(message) {
117352      var msgLines = message.split(/\n/);
117353      this.height = msgLines.length;
117354  
117355      // Write message to screen and setPrompt to control backspace
117356      this.rl.setPrompt(_.last(msgLines));
117357  
117358      if (this.rl.output.rows === 0 && this.rl.output.columns === 0) {
117359        /* When it's a tty through serial port there's no terminal info and the render will malfunction,
117360           so we need enforce the cursor to locate to the leftmost position for rendering. */
117361        rlUtils.left(this.rl, message.length + this.rl.line.length);
117362      }
117363      this.rl.output.write(message);
117364    }
117365  }
117366  
117367  module.exports = BottomBar;
117368  
117369  
117370  /***/ }),
117371  /* 696 */
117372  /***/ (function(module, exports, __webpack_require__) {
117373  
117374  "use strict";
117375  
117376  var _ = __webpack_require__(38);
117377  var { defer, empty, from, of } = __webpack_require__(183);
117378  var { concatMap, filter, publish, reduce } = __webpack_require__(63);
117379  var runAsync = __webpack_require__(182);
117380  var utils = __webpack_require__(698);
117381  var Base = __webpack_require__(393);
117382  
117383  /**
117384   * Base interface class other can inherits from
117385   */
117386  
117387  class PromptUI extends Base {
117388    constructor(prompts, opt) {
117389      super(opt);
117390      this.prompts = prompts;
117391    }
117392  
117393    run(questions) {
117394      // Keep global reference to the answers
117395      this.answers = {};
117396  
117397      // Make sure questions is an array.
117398      if (_.isPlainObject(questions)) {
117399        questions = [questions];
117400      }
117401  
117402      // Create an observable, unless we received one as parameter.
117403      // Note: As this is a public interface, we cannot do an instanceof check as we won't
117404      // be using the exact same object in memory.
117405      var obs = _.isArray(questions) ? from(questions) : questions;
117406  
117407      this.process = obs.pipe(
117408        concatMap(this.processQuestion.bind(this)),
117409        publish() // Creates a hot Observable. It prevents duplicating prompts.
117410      );
117411  
117412      this.process.connect();
117413  
117414      return this.process
117415        .pipe(
117416          reduce((answers, answer) => {
117417            _.set(this.answers, answer.name, answer.answer);
117418            return this.answers;
117419          }, {})
117420        )
117421        .toPromise(Promise)
117422        .then(this.onCompletion.bind(this));
117423    }
117424  
117425    /**
117426     * Once all prompt are over
117427     */
117428  
117429    onCompletion() {
117430      this.close();
117431  
117432      return this.answers;
117433    }
117434  
117435    processQuestion(question) {
117436      question = _.clone(question);
117437      return defer(() => {
117438        var obs = of(question);
117439  
117440        return obs.pipe(
117441          concatMap(this.setDefaultType.bind(this)),
117442          concatMap(this.filterIfRunnable.bind(this)),
117443          concatMap(() =>
117444            utils.fetchAsyncQuestionProperty(question, 'message', this.answers)
117445          ),
117446          concatMap(() =>
117447            utils.fetchAsyncQuestionProperty(question, 'default', this.answers)
117448          ),
117449          concatMap(() =>
117450            utils.fetchAsyncQuestionProperty(question, 'choices', this.answers)
117451          ),
117452          concatMap(this.fetchAnswer.bind(this))
117453        );
117454      });
117455    }
117456  
117457    fetchAnswer(question) {
117458      var Prompt = this.prompts[question.type];
117459      this.activePrompt = new Prompt(question, this.rl, this.answers);
117460      return defer(() =>
117461        from(
117462          this.activePrompt.run().then(answer => ({ name: question.name, answer: answer }))
117463        )
117464      );
117465    }
117466  
117467    setDefaultType(question) {
117468      // Default type to input
117469      if (!this.prompts[question.type]) {
117470        question.type = 'input';
117471      }
117472      return defer(() => of(question));
117473    }
117474  
117475    filterIfRunnable(question) {
117476      if (question.when === false) {
117477        return empty();
117478      }
117479  
117480      if (!_.isFunction(question.when)) {
117481        return of(question);
117482      }
117483  
117484      var answers = this.answers;
117485      return defer(() =>
117486        from(
117487          runAsync(question.when)(answers).then(shouldRun => {
117488            if (shouldRun) {
117489              return question;
117490            }
117491          })
117492        ).pipe(filter(val => val != null))
117493      );
117494    }
117495  }
117496  
117497  module.exports = PromptUI;
117498  
117499  
117500  /***/ }),
117501  /* 697 */
117502  /***/ (function(module, exports, __webpack_require__) {
117503  
117504  "use strict";
117505  
117506  var _ = __webpack_require__(38);
117507  var util = __webpack_require__(394);
117508  var cliWidth = __webpack_require__(574);
117509  var stripAnsi = __webpack_require__(329);
117510  var stringWidth = __webpack_require__(728);
117511  
117512  function height(content) {
117513    return content.split('\n').length;
117514  }
117515  
117516  function lastLine(content) {
117517    return _.last(content.split('\n'));
117518  }
117519  
117520  class ScreenManager {
117521    constructor(rl) {
117522      // These variables are keeping information to allow correct prompt re-rendering
117523      this.height = 0;
117524      this.extraLinesUnderPrompt = 0;
117525  
117526      this.rl = rl;
117527    }
117528  
117529    render(content, bottomContent) {
117530      this.rl.output.unmute();
117531      this.clean(this.extraLinesUnderPrompt);
117532  
117533      /**
117534       * Write message to screen and setPrompt to control backspace
117535       */
117536  
117537      var promptLine = lastLine(content);
117538      var rawPromptLine = stripAnsi(promptLine);
117539  
117540      // Remove the rl.line from our prompt. We can't rely on the content of
117541      // rl.line (mainly because of the password prompt), so just rely on it's
117542      // length.
117543      var prompt = rawPromptLine;
117544      if (this.rl.line.length) {
117545        prompt = prompt.slice(0, -this.rl.line.length);
117546      }
117547      this.rl.setPrompt(prompt);
117548  
117549      // SetPrompt will change cursor position, now we can get correct value
117550      var cursorPos = this.rl._getCursorPos();
117551      var width = this.normalizedCliWidth();
117552  
117553      content = this.forceLineReturn(content, width);
117554      if (bottomContent) {
117555        bottomContent = this.forceLineReturn(bottomContent, width);
117556      }
117557      // Manually insert an extra line if we're at the end of the line.
117558      // This prevent the cursor from appearing at the beginning of the
117559      // current line.
117560      if (rawPromptLine.length % width === 0) {
117561        content += '\n';
117562      }
117563      var fullContent = content + (bottomContent ? '\n' + bottomContent : '');
117564      this.rl.output.write(fullContent);
117565  
117566      /**
117567       * Re-adjust the cursor at the correct position.
117568       */
117569  
117570      // We need to consider parts of the prompt under the cursor as part of the bottom
117571      // content in order to correctly cleanup and re-render.
117572      var promptLineUpDiff = Math.floor(rawPromptLine.length / width) - cursorPos.rows;
117573      var bottomContentHeight =
117574        promptLineUpDiff + (bottomContent ? height(bottomContent) : 0);
117575      if (bottomContentHeight > 0) {
117576        util.up(this.rl, bottomContentHeight);
117577      }
117578  
117579      // Reset cursor at the beginning of the line
117580      util.left(this.rl, stringWidth(lastLine(fullContent)));
117581  
117582      // Adjust cursor on the right
117583      if (cursorPos.cols > 0) {
117584        util.right(this.rl, cursorPos.cols);
117585      }
117586  
117587      /**
117588       * Set up state for next re-rendering
117589       */
117590      this.extraLinesUnderPrompt = bottomContentHeight;
117591      this.height = height(fullContent);
117592  
117593      this.rl.output.mute();
117594    }
117595  
117596    clean(extraLines) {
117597      if (extraLines > 0) {
117598        util.down(this.rl, extraLines);
117599      }
117600      util.clearLine(this.rl, this.height);
117601    }
117602  
117603    done() {
117604      this.rl.setPrompt('');
117605      this.rl.output.unmute();
117606      this.rl.output.write('\n');
117607    }
117608  
117609    releaseCursor() {
117610      if (this.extraLinesUnderPrompt > 0) {
117611        util.down(this.rl, this.extraLinesUnderPrompt);
117612      }
117613    }
117614  
117615    normalizedCliWidth() {
117616      var width = cliWidth({
117617        defaultWidth: 80,
117618        output: this.rl.output
117619      });
117620      return width;
117621    }
117622  
117623    breakLines(lines, width) {
117624      // Break lines who're longer than the cli width so we can normalize the natural line
117625      // returns behavior across terminals.
117626      width = width || this.normalizedCliWidth();
117627      var regex = new RegExp('(?:(?:\\033[[0-9;]*m)*.?){1,' + width + '}', 'g');
117628      return lines.map(line => {
117629        var chunk = line.match(regex);
117630        // Last match is always empty
117631        chunk.pop();
117632        return chunk || '';
117633      });
117634    }
117635  
117636    forceLineReturn(content, width) {
117637      width = width || this.normalizedCliWidth();
117638      return _.flatten(this.breakLines(content.split('\n'), width)).join('\n');
117639    }
117640  }
117641  
117642  module.exports = ScreenManager;
117643  
117644  
117645  /***/ }),
117646  /* 698 */
117647  /***/ (function(module, exports, __webpack_require__) {
117648  
117649  "use strict";
117650  
117651  var _ = __webpack_require__(38);
117652  var { from, of } = __webpack_require__(183);
117653  var runAsync = __webpack_require__(182);
117654  
117655  /**
117656   * Resolve a question property value if it is passed as a function.
117657   * This method will overwrite the property on the question object with the received value.
117658   * @param  {Object} question - Question object
117659   * @param  {String} prop     - Property to fetch name
117660   * @param  {Object} answers  - Answers object
117661   * @return {Rx.Observable}   - Observable emitting once value is known
117662   */
117663  
117664  exports.fetchAsyncQuestionProperty = function(question, prop, answers) {
117665    if (!_.isFunction(question[prop])) {
117666      return of(question);
117667    }
117668  
117669    return from(
117670      runAsync(question[prop])(answers).then(value => {
117671        question[prop] = value;
117672        return question;
117673      })
117674    );
117675  };
117676  
117677  
117678  /***/ }),
117679  /* 699 */
117680  /***/ (function(module, exports, __webpack_require__) {
117681  
117682  var util = __webpack_require__(3),
117683    Match = __webpack_require__ (142);
117684  
117685  
117686  /**
117687   * This is a superclass for the individual detectors for
117688   * each of the detectable members of the ISO 2022 family
117689   * of encodings.
117690   */
117691  
117692  function ISO_2022() {}
117693  
117694  ISO_2022.prototype.match = function(det) {
117695  
117696    /**
117697     * Matching function shared among the 2022 detectors JP, CN and KR
117698     * Counts up the number of legal an unrecognized escape sequences in
117699     * the sample of text, and computes a score based on the total number &
117700     * the proportion that fit the encoding.
117701     *
117702     *
117703     * @param text the byte buffer containing text to analyse
117704     * @param textLen  the size of the text in the byte.
117705     * @param escapeSequences the byte escape sequences to test for.
117706     * @return match quality, in the range of 0-100.
117707     */
117708  
117709    var i, j;
117710    var escN;
117711    var hits   = 0;
117712    var misses = 0;
117713    var shifts = 0;
117714    var quality;
117715  
117716    // TODO: refactor me
117717    var text = det.fInputBytes;
117718    var textLen = det.fInputLen;
117719  
117720    scanInput:
117721      for (i = 0; i < textLen; i++) {
117722        if (text[i] == 0x1b) {
117723          checkEscapes:
117724            for (escN = 0; escN < this.escapeSequences.length; escN++) {
117725              var seq = this.escapeSequences[escN];
117726  
117727              if ((textLen - i) < seq.length)
117728                continue checkEscapes;
117729  
117730              for (j = 1; j < seq.length; j++)
117731                if (seq[j] != text[i + j])
117732                  continue checkEscapes;
117733  
117734  
117735              hits++;
117736              i += seq.length - 1;
117737              continue scanInput;
117738            }
117739  
117740            misses++;
117741        }
117742  
117743        // Shift in/out
117744        if (text[i] == 0x0e || text[i] == 0x0f)
117745          shifts++;
117746  
117747      }
117748  
117749    if (hits == 0)
117750      return null;
117751  
117752    //
117753    // Initial quality is based on relative proportion of recongized vs.
117754    //   unrecognized escape sequences.
117755    //   All good:  quality = 100;
117756    //   half or less good: quality = 0;
117757    //   linear inbetween.
117758    quality = (100 * hits - 100 * misses) / (hits + misses);
117759  
117760    // Back off quality if there were too few escape sequences seen.
117761    //   Include shifts in this computation, so that KR does not get penalized
117762    //   for having only a single Escape sequence, but many shifts.
117763    if (hits + shifts < 5)
117764      quality -= (5 - (hits + shifts)) * 10;
117765  
117766    return quality <= 0 ? null : new Match(det, this, quality);
117767  };
117768  
117769  module.exports.ISO_2022_JP = function() {
117770    this.name = function() {
117771      return 'ISO-2022-JP';
117772    };
117773    this.escapeSequences = [
117774      [ 0x1b, 0x24, 0x28, 0x43 ],   // KS X 1001:1992
117775      [ 0x1b, 0x24, 0x28, 0x44 ],   // JIS X 212-1990
117776      [ 0x1b, 0x24, 0x40 ],         // JIS C 6226-1978
117777      [ 0x1b, 0x24, 0x41 ],         // GB 2312-80
117778      [ 0x1b, 0x24, 0x42 ],         // JIS X 208-1983
117779      [ 0x1b, 0x26, 0x40 ],         // JIS X 208 1990, 1997
117780      [ 0x1b, 0x28, 0x42 ],         // ASCII
117781      [ 0x1b, 0x28, 0x48 ],         // JIS-Roman
117782      [ 0x1b, 0x28, 0x49 ],         // Half-width katakana
117783      [ 0x1b, 0x28, 0x4a ],         // JIS-Roman
117784      [ 0x1b, 0x2e, 0x41 ],         // ISO 8859-1
117785      [ 0x1b, 0x2e, 0x46 ]          // ISO 8859-7
117786    ];
117787  };
117788  util.inherits(module.exports.ISO_2022_JP, ISO_2022);
117789  
117790  
117791  
117792  module.exports.ISO_2022_KR = function() {
117793    this.name = function() {
117794      return 'ISO-2022-KR';
117795    };
117796    this.escapeSequences = [
117797      [ 0x1b, 0x24, 0x29, 0x43 ]
117798    ];
117799  };
117800  util.inherits(module.exports.ISO_2022_KR, ISO_2022);
117801  
117802  
117803  
117804  module.exports.ISO_2022_CN = function() {
117805    this.name = function() {
117806      return 'ISO-2022-CN';
117807    };
117808    this.escapeSequences = [
117809      [ 0x1b, 0x24, 0x29, 0x41 ],   // GB 2312-80
117810      [ 0x1b, 0x24, 0x29, 0x47 ],   // CNS 11643-1992 Plane 1
117811      [ 0x1b, 0x24, 0x2A, 0x48 ],   // CNS 11643-1992 Plane 2
117812      [ 0x1b, 0x24, 0x29, 0x45 ],   // ISO-IR-165
117813      [ 0x1b, 0x24, 0x2B, 0x49 ],   // CNS 11643-1992 Plane 3
117814      [ 0x1b, 0x24, 0x2B, 0x4A ],   // CNS 11643-1992 Plane 4
117815      [ 0x1b, 0x24, 0x2B, 0x4B ],   // CNS 11643-1992 Plane 5
117816      [ 0x1b, 0x24, 0x2B, 0x4C ],   // CNS 11643-1992 Plane 6
117817      [ 0x1b, 0x24, 0x2B, 0x4D ],   // CNS 11643-1992 Plane 7
117818      [ 0x1b, 0x4e ],               // SS2
117819      [ 0x1b, 0x4f ]                // SS3
117820    ];
117821  };
117822  util.inherits(module.exports.ISO_2022_CN, ISO_2022);
117823  
117824  
117825  /***/ }),
117826  /* 700 */
117827  /***/ (function(module, exports, __webpack_require__) {
117828  
117829  var util = __webpack_require__(3),
117830    Match = __webpack_require__ (142);
117831  
117832  /**
117833   * Binary search implementation (recursive)
117834   */
117835  function binarySearch(arr, searchValue) {
117836    function find(arr, searchValue, left, right) {
117837      if (right < left)
117838        return -1;
117839  
117840      /*
117841      int mid = mid = (left + right) / 2;
117842      There is a bug in the above line;
117843      Joshua Bloch suggests the following replacement:
117844      */
117845      var mid = Math.floor((left + right) >>> 1);
117846      if (searchValue > arr[mid])
117847        return find(arr, searchValue, mid + 1, right);
117848  
117849      if (searchValue < arr[mid])
117850        return find(arr, searchValue, left, mid - 1);
117851  
117852      return mid;
117853    };
117854  
117855    return find(arr, searchValue, 0, arr.length - 1);
117856  };
117857  
117858  // 'Character'  iterated character class.
117859  //    Recognizers for specific mbcs encodings make their 'characters' available
117860  //    by providing a nextChar() function that fills in an instance of iteratedChar
117861  //    with the next char from the input.
117862  //    The returned characters are not converted to Unicode, but remain as the raw
117863  //    bytes (concatenated into an int) from the codepage data.
117864  //
117865  //  For Asian charsets, use the raw input rather than the input that has been
117866  //   stripped of markup.  Detection only considers multi-byte chars, effectively
117867  //   stripping markup anyway, and double byte chars do occur in markup too.
117868  //
117869  function IteratedChar() {
117870  
117871    this.charValue = 0; // 1-4 bytes from the raw input data
117872    this.index     = 0;
117873    this.nextIndex = 0;
117874    this.error     = false;
117875    this.done      = false;
117876  
117877    this.reset = function() {
117878      this.charValue = 0;
117879      this.index     = -1;
117880      this.nextIndex = 0;
117881      this.error     = false;
117882      this.done      = false;
117883    };
117884  
117885    this.nextByte = function(det) {
117886      if (this.nextIndex >= det.fRawLength) {
117887        this.done = true;
117888        return -1;
117889      }
117890      var byteValue = det.fRawInput[this.nextIndex++] & 0x00ff;
117891      return byteValue;
117892    };
117893  };
117894  
117895  
117896  
117897  /**
117898   * Asian double or multi-byte - charsets.
117899   * Match is determined mostly by the input data adhering to the
117900   * encoding scheme for the charset, and, optionally,
117901   * frequency-of-occurence of characters.
117902   */
117903  
117904  function mbcs() {};
117905  
117906  /**
117907   * Test the match of this charset with the input text data
117908   *      which is obtained via the CharsetDetector object.
117909   *
117910   * @param det  The CharsetDetector, which contains the input text
117911   *             to be checked for being in this charset.
117912   * @return     Two values packed into one int  (Damn java, anyhow)
117913   *             bits 0-7:  the match confidence, ranging from 0-100
117914   *             bits 8-15: The match reason, an enum-like value.
117915   */
117916  mbcs.prototype.match = function(det) {
117917  
117918    var singleByteCharCount = 0,  //TODO Do we really need this?
117919      doubleByteCharCount = 0,
117920      commonCharCount     = 0,
117921      badCharCount        = 0,
117922      totalCharCount      = 0,
117923      confidence          = 0;
117924  
117925    var iter = new IteratedChar();
117926  
117927    detectBlock: {
117928      for (iter.reset(); this.nextChar(iter, det);) {
117929        totalCharCount++;
117930        if (iter.error) {
117931          badCharCount++;
117932        } else {
117933          var cv = iter.charValue & 0xFFFFFFFF;
117934  
117935          if (cv <= 0xff) {
117936            singleByteCharCount++;
117937          } else {
117938            doubleByteCharCount++;
117939            if (this.commonChars != null) {
117940              // NOTE: This assumes that there are no 4-byte common chars.
117941              if (binarySearch(this.commonChars, cv) >= 0) {
117942                commonCharCount++;
117943              }
117944            }
117945          }
117946        }
117947        if (badCharCount >= 2 && badCharCount * 5 >= doubleByteCharCount) {
117948          // console.log('its here!')
117949          // Bail out early if the byte data is not matching the encoding scheme.
117950          break detectBlock;
117951        }
117952      }
117953  
117954      if (doubleByteCharCount <= 10 && badCharCount== 0) {
117955        // Not many multi-byte chars.
117956        if (doubleByteCharCount == 0 && totalCharCount < 10) {
117957          // There weren't any multibyte sequences, and there was a low density of non-ASCII single bytes.
117958          // We don't have enough data to have any confidence.
117959          // Statistical analysis of single byte non-ASCII charcters would probably help here.
117960          confidence = 0;
117961        }
117962        else {
117963          //   ASCII or ISO file?  It's probably not our encoding,
117964          //   but is not incompatible with our encoding, so don't give it a zero.
117965          confidence = 10;
117966        }
117967        break detectBlock;
117968      }
117969  
117970      //
117971      //  No match if there are too many characters that don't fit the encoding scheme.
117972      //    (should we have zero tolerance for these?)
117973      //
117974      if (doubleByteCharCount < 20 * badCharCount) {
117975        confidence = 0;
117976        break detectBlock;
117977      }
117978  
117979      if (this.commonChars == null) {
117980        // We have no statistics on frequently occuring characters.
117981        //  Assess confidence purely on having a reasonable number of
117982        //  multi-byte characters (the more the better
117983        confidence = 30 + doubleByteCharCount - 20 * badCharCount;
117984        if (confidence > 100) {
117985          confidence = 100;
117986        }
117987      } else {
117988        //
117989        // Frequency of occurence statistics exist.
117990        //
117991        var maxVal = Math.log(parseFloat(doubleByteCharCount) / 4);
117992        var scaleFactor = 90.0 / maxVal;
117993        confidence = Math.floor(Math.log(commonCharCount + 1) * scaleFactor + 10);
117994        confidence = Math.min(confidence, 100);
117995      }
117996    }   // end of detectBlock:
117997  
117998    return confidence == 0 ? null : new Match(det, this, confidence);
117999  };
118000  
118001  /**
118002   * Get the next character (however many bytes it is) from the input data
118003   *    Subclasses for specific charset encodings must implement this function
118004   *    to get characters according to the rules of their encoding scheme.
118005   *
118006   *  This function is not a method of class iteratedChar only because
118007   *   that would require a lot of extra derived classes, which is awkward.
118008   * @param it  The iteratedChar 'struct' into which the returned char is placed.
118009   * @param det The charset detector, which is needed to get at the input byte data
118010   *            being iterated over.
118011   * @return    True if a character was returned, false at end of input.
118012   */
118013  
118014  mbcs.prototype.nextChar = function(iter, det) {};
118015  
118016  
118017  
118018  /**
118019   * Shift-JIS charset recognizer.
118020   */
118021  module.exports.sjis = function() {
118022    this.name = function() {
118023      return 'Shift-JIS';
118024    };
118025    this.language = function() {
118026      return 'ja';
118027    };
118028  
118029    // TODO:  This set of data comes from the character frequency-
118030    //        of-occurence analysis tool.  The data needs to be moved
118031    //        into a resource and loaded from there.
118032    this.commonChars = [
118033      0x8140, 0x8141, 0x8142, 0x8145, 0x815b, 0x8169, 0x816a, 0x8175, 0x8176, 0x82a0,
118034      0x82a2, 0x82a4, 0x82a9, 0x82aa, 0x82ab, 0x82ad, 0x82af, 0x82b1, 0x82b3, 0x82b5,
118035      0x82b7, 0x82bd, 0x82be, 0x82c1, 0x82c4, 0x82c5, 0x82c6, 0x82c8, 0x82c9, 0x82cc,
118036      0x82cd, 0x82dc, 0x82e0, 0x82e7, 0x82e8, 0x82e9, 0x82ea, 0x82f0, 0x82f1, 0x8341,
118037      0x8343, 0x834e, 0x834f, 0x8358, 0x835e, 0x8362, 0x8367, 0x8375, 0x8376, 0x8389,
118038      0x838a, 0x838b, 0x838d, 0x8393, 0x8e96, 0x93fa, 0x95aa
118039    ];
118040  
118041    this.nextChar = function(iter, det) {
118042      iter.index = iter.nextIndex;
118043      iter.error = false;
118044  
118045      var firstByte;
118046      firstByte = iter.charValue = iter.nextByte(det);
118047      if (firstByte < 0)
118048        return false;
118049  
118050      if (firstByte <= 0x7f || (firstByte > 0xa0 && firstByte <= 0xdf))
118051        return true;
118052  
118053      var secondByte = iter.nextByte(det);
118054      if (secondByte < 0)
118055        return false;
118056  
118057      iter.charValue = (firstByte << 8) | secondByte;
118058      if (! ((secondByte >= 0x40 && secondByte <= 0x7f) || (secondByte >= 0x80 && secondByte <= 0xff))) {
118059        // Illegal second byte value.
118060        iter.error = true;
118061      }
118062      return true;
118063    };
118064  };
118065  util.inherits(module.exports.sjis, mbcs);
118066  
118067  
118068  
118069  /**
118070   *   Big5 charset recognizer.
118071   */
118072  module.exports.big5 = function() {
118073    this.name = function() {
118074      return 'Big5';
118075    };
118076    this.language = function() {
118077      return 'zh';
118078    };
118079    // TODO:  This set of data comes from the character frequency-
118080    //        of-occurence analysis tool.  The data needs to be moved
118081    //        into a resource and loaded from there.
118082    this.commonChars = [
118083      0xa140, 0xa141, 0xa142, 0xa143, 0xa147, 0xa149, 0xa175, 0xa176, 0xa440, 0xa446,
118084      0xa447, 0xa448, 0xa451, 0xa454, 0xa457, 0xa464, 0xa46a, 0xa46c, 0xa477, 0xa4a3,
118085      0xa4a4, 0xa4a7, 0xa4c1, 0xa4ce, 0xa4d1, 0xa4df, 0xa4e8, 0xa4fd, 0xa540, 0xa548,
118086      0xa558, 0xa569, 0xa5cd, 0xa5e7, 0xa657, 0xa661, 0xa662, 0xa668, 0xa670, 0xa6a8,
118087      0xa6b3, 0xa6b9, 0xa6d3, 0xa6db, 0xa6e6, 0xa6f2, 0xa740, 0xa751, 0xa759, 0xa7da,
118088      0xa8a3, 0xa8a5, 0xa8ad, 0xa8d1, 0xa8d3, 0xa8e4, 0xa8fc, 0xa9c0, 0xa9d2, 0xa9f3,
118089      0xaa6b, 0xaaba, 0xaabe, 0xaacc, 0xaafc, 0xac47, 0xac4f, 0xacb0, 0xacd2, 0xad59,
118090      0xaec9, 0xafe0, 0xb0ea, 0xb16f, 0xb2b3, 0xb2c4, 0xb36f, 0xb44c, 0xb44e, 0xb54c,
118091      0xb5a5, 0xb5bd, 0xb5d0, 0xb5d8, 0xb671, 0xb7ed, 0xb867, 0xb944, 0xbad8, 0xbb44,
118092      0xbba1, 0xbdd1, 0xc2c4, 0xc3b9, 0xc440, 0xc45f
118093    ];
118094    this.nextChar = function(iter, det) {
118095      iter.index = iter.nextIndex;
118096      iter.error = false;
118097  
118098      var firstByte = iter.charValue = iter.nextByte(det);
118099  
118100      if (firstByte < 0)
118101        return false;
118102  
118103      // single byte character.
118104      if (firstByte <= 0x7f || firstByte == 0xff)
118105        return true;
118106  
118107      var secondByte = iter.nextByte(det);
118108  
118109      if (secondByte < 0)
118110        return false;
118111  
118112      iter.charValue = (iter.charValue << 8) | secondByte;
118113  
118114      if (secondByte < 0x40 || secondByte == 0x7f || secondByte == 0xff)
118115        iter.error = true;
118116  
118117      return true;
118118    };
118119  };
118120  util.inherits(module.exports.big5, mbcs);
118121  
118122  
118123  
118124  /**
118125   *  EUC charset recognizers.  One abstract class that provides the common function
118126   *  for getting the next character according to the EUC encoding scheme,
118127   *  and nested derived classes for EUC_KR, EUC_JP, EUC_CN.
118128   *
118129   *  Get the next character value for EUC based encodings.
118130   *  Character 'value' is simply the raw bytes that make up the character
118131   *     packed into an int.
118132   */
118133  function eucNextChar(iter, det) {
118134    iter.index = iter.nextIndex;
118135    iter.error = false;
118136    var firstByte  = 0;
118137    var secondByte = 0;
118138    var thirdByte  = 0;
118139    //int fourthByte = 0;
118140    buildChar: {
118141      firstByte = iter.charValue = iter.nextByte(det);
118142      if (firstByte < 0) {
118143        // Ran off the end of the input data
118144        iter.done = true;
118145        break buildChar;
118146      }
118147      if (firstByte <= 0x8d) {
118148        // single byte char
118149        break buildChar;
118150      }
118151      secondByte = iter.nextByte(det);
118152      iter.charValue = (iter.charValue << 8) | secondByte;
118153      if (firstByte >= 0xA1 && firstByte <= 0xfe) {
118154        // Two byte Char
118155        if (secondByte < 0xa1) {
118156          iter.error = true;
118157        }
118158        break buildChar;
118159      }
118160      if (firstByte == 0x8e) {
118161        // Code Set 2.
118162        //   In EUC-JP, total char size is 2 bytes, only one byte of actual char value.
118163        //   In EUC-TW, total char size is 4 bytes, three bytes contribute to char value.
118164        // We don't know which we've got.
118165        // Treat it like EUC-JP.  If the data really was EUC-TW, the following two
118166        //   bytes will look like a well formed 2 byte char.
118167        if (secondByte < 0xa1) {
118168          iter.error = true;
118169        }
118170        break buildChar;
118171      }
118172      if (firstByte == 0x8f) {
118173        // Code set 3.
118174        // Three byte total char size, two bytes of actual char value.
118175        thirdByte = iter.nextByte(det);
118176        iter.charValue = (iter.charValue << 8) | thirdByte;
118177        if (thirdByte < 0xa1) {
118178          iter.error = true;
118179        }
118180      }
118181    }
118182    return iter.done == false;
118183  };
118184  
118185  
118186  
118187  /**
118188   * The charset recognize for EUC-JP.  A singleton instance of this class
118189   *    is created and kept by the public CharsetDetector class
118190   */
118191  module.exports.euc_jp = function() {
118192    this.name = function() {
118193      return 'EUC-JP';
118194    };
118195    this.language = function() {
118196      return 'ja';
118197    };
118198  
118199    // TODO:  This set of data comes from the character frequency-
118200    //        of-occurence analysis tool.  The data needs to be moved
118201    //        into a resource and loaded from there.
118202    this.commonChars = [
118203      0xa1a1, 0xa1a2, 0xa1a3, 0xa1a6, 0xa1bc, 0xa1ca, 0xa1cb, 0xa1d6, 0xa1d7, 0xa4a2,
118204      0xa4a4, 0xa4a6, 0xa4a8, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4af, 0xa4b1, 0xa4b3,
118205      0xa4b5, 0xa4b7, 0xa4b9, 0xa4bb, 0xa4bd, 0xa4bf, 0xa4c0, 0xa4c1, 0xa4c3, 0xa4c4,
118206      0xa4c6, 0xa4c7, 0xa4c8, 0xa4c9, 0xa4ca, 0xa4cb, 0xa4ce, 0xa4cf, 0xa4d0, 0xa4de,
118207      0xa4df, 0xa4e1, 0xa4e2, 0xa4e4, 0xa4e8, 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec, 0xa4ef,
118208      0xa4f2, 0xa4f3, 0xa5a2, 0xa5a3, 0xa5a4, 0xa5a6, 0xa5a7, 0xa5aa, 0xa5ad, 0xa5af,
118209      0xa5b0, 0xa5b3, 0xa5b5, 0xa5b7, 0xa5b8, 0xa5b9, 0xa5bf, 0xa5c3, 0xa5c6, 0xa5c7,
118210      0xa5c8, 0xa5c9, 0xa5cb, 0xa5d0, 0xa5d5, 0xa5d6, 0xa5d7, 0xa5de, 0xa5e0, 0xa5e1,
118211      0xa5e5, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5f3, 0xb8a9, 0xb9d4, 0xbaee,
118212      0xbbc8, 0xbef0, 0xbfb7, 0xc4ea, 0xc6fc, 0xc7bd, 0xcab8, 0xcaf3, 0xcbdc, 0xcdd1
118213    ];
118214  
118215    this.nextChar = eucNextChar;
118216  };
118217  util.inherits(module.exports.euc_jp, mbcs);
118218  
118219  
118220  
118221  /**
118222   * The charset recognize for EUC-KR.  A singleton instance of this class
118223   *    is created and kept by the public CharsetDetector class
118224   */
118225  module.exports.euc_kr = function() {
118226    this.name = function() {
118227      return 'EUC-KR';
118228    };
118229    this.language = function() {
118230      return 'ko';
118231    };
118232  
118233    // TODO:  This set of data comes from the character frequency-
118234    //        of-occurence analysis tool.  The data needs to be moved
118235    //        into a resource and loaded from there.
118236    this.commonChars = [
118237      0xb0a1, 0xb0b3, 0xb0c5, 0xb0cd, 0xb0d4, 0xb0e6, 0xb0ed, 0xb0f8, 0xb0fa, 0xb0fc,
118238      0xb1b8, 0xb1b9, 0xb1c7, 0xb1d7, 0xb1e2, 0xb3aa, 0xb3bb, 0xb4c2, 0xb4cf, 0xb4d9,
118239      0xb4eb, 0xb5a5, 0xb5b5, 0xb5bf, 0xb5c7, 0xb5e9, 0xb6f3, 0xb7af, 0xb7c2, 0xb7ce,
118240      0xb8a6, 0xb8ae, 0xb8b6, 0xb8b8, 0xb8bb, 0xb8e9, 0xb9ab, 0xb9ae, 0xb9cc, 0xb9ce,
118241      0xb9fd, 0xbab8, 0xbace, 0xbad0, 0xbaf1, 0xbbe7, 0xbbf3, 0xbbfd, 0xbcad, 0xbcba,
118242      0xbcd2, 0xbcf6, 0xbdba, 0xbdc0, 0xbdc3, 0xbdc5, 0xbec6, 0xbec8, 0xbedf, 0xbeee,
118243      0xbef8, 0xbefa, 0xbfa1, 0xbfa9, 0xbfc0, 0xbfe4, 0xbfeb, 0xbfec, 0xbff8, 0xc0a7,
118244      0xc0af, 0xc0b8, 0xc0ba, 0xc0bb, 0xc0bd, 0xc0c7, 0xc0cc, 0xc0ce, 0xc0cf, 0xc0d6,
118245      0xc0da, 0xc0e5, 0xc0fb, 0xc0fc, 0xc1a4, 0xc1a6, 0xc1b6, 0xc1d6, 0xc1df, 0xc1f6,
118246      0xc1f8, 0xc4a1, 0xc5cd, 0xc6ae, 0xc7cf, 0xc7d1, 0xc7d2, 0xc7d8, 0xc7e5, 0xc8ad
118247    ];
118248  
118249    this.nextChar = eucNextChar;
118250  };
118251  util.inherits(module.exports.euc_kr, mbcs);
118252  
118253  
118254  
118255  /**
118256   *   GB-18030 recognizer. Uses simplified Chinese statistics.
118257   */
118258  module.exports.gb_18030 = function() {
118259    this.name = function() {
118260      return 'GB18030';
118261    };
118262    this.language = function() {
118263      return 'zh';
118264    };
118265  
118266    /*
118267     *  Get the next character value for EUC based encodings.
118268     *  Character 'value' is simply the raw bytes that make up the character
118269     *     packed into an int.
118270     */
118271    this.nextChar = function(iter, det) {
118272      iter.index = iter.nextIndex;
118273      iter.error = false;
118274      var firstByte  = 0;
118275      var secondByte = 0;
118276      var thirdByte  = 0;
118277      var fourthByte = 0;
118278      buildChar: {
118279        firstByte = iter.charValue = iter.nextByte(det);
118280        if (firstByte < 0) {
118281          // Ran off the end of the input data
118282          iter.done = true;
118283          break buildChar;
118284        }
118285        if (firstByte <= 0x80) {
118286          // single byte char
118287          break buildChar;
118288        }
118289        secondByte = iter.nextByte(det);
118290        iter.charValue = (iter.charValue << 8) | secondByte;
118291        if (firstByte >= 0x81 && firstByte <= 0xFE) {
118292          // Two byte Char
118293          if ((secondByte >= 0x40 && secondByte <= 0x7E) || (secondByte >=80 && secondByte <= 0xFE)) {
118294            break buildChar;
118295          }
118296          // Four byte char
118297          if (secondByte >= 0x30 && secondByte <= 0x39) {
118298            thirdByte = iter.nextByte(det);
118299            if (thirdByte >= 0x81 && thirdByte <= 0xFE) {
118300              fourthByte = iter.nextByte(det);
118301              if (fourthByte >= 0x30 && fourthByte <= 0x39) {
118302                iter.charValue = (iter.charValue << 16) | (thirdByte << 8) | fourthByte;
118303                break buildChar;
118304              }
118305            }
118306          }
118307          iter.error = true;
118308          break buildChar;
118309        }
118310      }
118311      return iter.done == false;
118312    };
118313  
118314    // TODO:  This set of data comes from the character frequency-
118315    //        of-occurence analysis tool.  The data needs to be moved
118316    //        into a resource and loaded from there.
118317    this.commonChars = [
118318      0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1b0, 0xa1b1, 0xa1f1, 0xa1f3, 0xa3a1, 0xa3ac,
118319      0xa3ba, 0xb1a8, 0xb1b8, 0xb1be, 0xb2bb, 0xb3c9, 0xb3f6, 0xb4f3, 0xb5bd, 0xb5c4,
118320      0xb5e3, 0xb6af, 0xb6d4, 0xb6e0, 0xb7a2, 0xb7a8, 0xb7bd, 0xb7d6, 0xb7dd, 0xb8b4,
118321      0xb8df, 0xb8f6, 0xb9ab, 0xb9c9, 0xb9d8, 0xb9fa, 0xb9fd, 0xbacd, 0xbba7, 0xbbd6,
118322      0xbbe1, 0xbbfa, 0xbcbc, 0xbcdb, 0xbcfe, 0xbdcc, 0xbecd, 0xbedd, 0xbfb4, 0xbfc6,
118323      0xbfc9, 0xc0b4, 0xc0ed, 0xc1cb, 0xc2db, 0xc3c7, 0xc4dc, 0xc4ea, 0xc5cc, 0xc6f7,
118324      0xc7f8, 0xc8ab, 0xc8cb, 0xc8d5, 0xc8e7, 0xc9cf, 0xc9fa, 0xcab1, 0xcab5, 0xcac7,
118325      0xcad0, 0xcad6, 0xcaf5, 0xcafd, 0xccec, 0xcdf8, 0xceaa, 0xcec4, 0xced2, 0xcee5,
118326      0xcfb5, 0xcfc2, 0xcfd6, 0xd0c2, 0xd0c5, 0xd0d0, 0xd0d4, 0xd1a7, 0xd2aa, 0xd2b2,
118327      0xd2b5, 0xd2bb, 0xd2d4, 0xd3c3, 0xd3d0, 0xd3fd, 0xd4c2, 0xd4da, 0xd5e2, 0xd6d0
118328    ];
118329  };
118330  util.inherits(module.exports.gb_18030, mbcs);
118331  
118332  
118333  /***/ }),
118334  /* 701 */
118335  /***/ (function(module, exports, __webpack_require__) {
118336  
118337  var util = __webpack_require__(3),
118338    Match = __webpack_require__ (142);
118339  
118340  /**
118341   * This class recognizes single-byte encodings. Because the encoding scheme is so
118342   * simple, language statistics are used to do the matching.
118343   */
118344  
118345  function NGramParser(theNgramList, theByteMap) {
118346    var N_GRAM_MASK = 0xFFFFFF;
118347  
118348    this.byteIndex = 0;
118349    this.ngram = 0;
118350  
118351    this.ngramList = theNgramList;
118352    this.byteMap = theByteMap;
118353  
118354    this.ngramCount = 0;
118355    this.hitCount = 0;
118356  
118357    this.spaceChar;
118358  
118359    /*
118360     * Binary search for value in table, which must have exactly 64 entries.
118361     */
118362    this.search = function(table, value) {
118363      var index = 0;
118364  
118365      if (table[index + 32] <= value) index += 32;
118366      if (table[index + 16] <= value) index += 16;
118367      if (table[index + 8]  <= value) index += 8;
118368      if (table[index + 4]  <= value) index += 4;
118369      if (table[index + 2]  <= value) index += 2;
118370      if (table[index + 1]  <= value) index += 1;
118371      if (table[index]      > value)  index -= 1;
118372  
118373      if (index < 0 || table[index] != value)
118374        return -1;
118375  
118376      return index;
118377    };
118378  
118379    this.lookup = function(thisNgram) {
118380      this.ngramCount += 1;
118381      if (this.search(this.ngramList, thisNgram) >= 0) {
118382        this.hitCount += 1;
118383      }
118384    };
118385  
118386    this.addByte = function(b) {
118387      this.ngram = ((this.ngram << 8) + (b & 0xFF)) & N_GRAM_MASK;
118388      this.lookup(this.ngram);
118389    }
118390  
118391    this.nextByte = function(det) {
118392      if (this.byteIndex >= det.fInputLen)
118393        return -1;
118394  
118395      return det.fInputBytes[this.byteIndex++] & 0xFF;
118396    }
118397  
118398    this.parse = function(det, spaceCh) {
118399      var b, ignoreSpace = false;
118400      this.spaceChar = spaceCh;
118401  
118402      while ((b = this.nextByte(det)) >= 0) {
118403        var mb = this.byteMap[b];
118404  
118405        // TODO: 0x20 might not be a space in all character sets...
118406        if (mb != 0) {
118407          if (!(mb == this.spaceChar && ignoreSpace)) {
118408            this.addByte(mb);
118409          }
118410  
118411          ignoreSpace = (mb == this.spaceChar);
118412        }
118413      }
118414  
118415      // TODO: Is this OK? The buffer could have ended in the middle of a word...
118416      this.addByte(this.spaceChar);
118417  
118418      var rawPercent = this.hitCount / this.ngramCount;
118419  
118420      // TODO - This is a bit of a hack to take care of a case
118421      // were we were getting a confidence of 135...
118422      if (rawPercent > 0.33)
118423        return 98;
118424  
118425      return Math.floor(rawPercent * 300.0);
118426    };
118427  };
118428  
118429  function NGramsPlusLang(la, ng) {
118430    this.fLang = la;
118431    this.fNGrams = ng;
118432  };
118433  
118434  function sbcs() {};
118435  sbcs.prototype.spaceChar = 0x20;
118436  sbcs.prototype.ngrams = function() {};
118437  sbcs.prototype.byteMap = function() {};
118438  sbcs.prototype.match = function(det) {
118439  
118440    var ngrams = this.ngrams();
118441    var multiple = (Array.isArray(ngrams) && ngrams[0] instanceof NGramsPlusLang);
118442  
118443    if (!multiple) {
118444      var parser = new NGramParser(ngrams, this.byteMap());
118445      var confidence = parser.parse(det, this.spaceChar);
118446      return confidence <= 0 ? null : new Match(det, this, confidence);
118447    }
118448  
118449    var bestConfidenceSoFar = -1;
118450    var lang = null;
118451  
118452    for (var i = ngrams.length - 1; i >= 0; i--) {
118453      var ngl = ngrams[i];
118454  
118455      var parser = new NGramParser(ngl.fNGrams, this.byteMap());
118456      var confidence = parser.parse(det, this.spaceChar);
118457      if (confidence > bestConfidenceSoFar) {
118458        bestConfidenceSoFar = confidence;
118459        lang = ngl.fLang;
118460      }
118461    }
118462  
118463    var name = this.name(det);
118464    return bestConfidenceSoFar <= 0 ? null : new Match(det, this, bestConfidenceSoFar, name, lang);
118465  };
118466  
118467  
118468  module.exports.ISO_8859_1 = function() {
118469    this.byteMap = function() {
118470      return [
118471        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118472        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118473        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118474        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118475        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,
118476        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118477        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118478        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118479        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
118480        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
118481        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
118482        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
118483        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
118484        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
118485        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
118486        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
118487        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118488        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118489        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118490        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118491        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118492        0x20, 0x20, 0xAA, 0x20, 0x20, 0x20, 0x20, 0x20,
118493        0x20, 0x20, 0x20, 0x20, 0x20, 0xB5, 0x20, 0x20,
118494        0x20, 0x20, 0xBA, 0x20, 0x20, 0x20, 0x20, 0x20,
118495        0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
118496        0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
118497        0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x20,
118498        0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xDF,
118499        0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
118500        0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
118501        0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x20,
118502        0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
118503      ];
118504    };
118505  
118506    this.ngrams = function() {
118507      return [
118508        new NGramsPlusLang('da', [
118509          0x206166, 0x206174, 0x206465, 0x20656E, 0x206572, 0x20666F, 0x206861, 0x206920,
118510          0x206D65, 0x206F67, 0x2070E5, 0x207369, 0x207374, 0x207469, 0x207669, 0x616620,
118511          0x616E20, 0x616E64, 0x617220, 0x617420, 0x646520, 0x64656E, 0x646572, 0x646574,
118512          0x652073, 0x656420, 0x656465, 0x656E20, 0x656E64, 0x657220, 0x657265, 0x657320,
118513          0x657420, 0x666F72, 0x676520, 0x67656E, 0x676572, 0x696765, 0x696C20, 0x696E67,
118514          0x6B6520, 0x6B6B65, 0x6C6572, 0x6C6967, 0x6C6C65, 0x6D6564, 0x6E6465, 0x6E6520,
118515          0x6E6720, 0x6E6765, 0x6F6720, 0x6F6D20, 0x6F7220, 0x70E520, 0x722064, 0x722065,
118516          0x722073, 0x726520, 0x737465, 0x742073, 0x746520, 0x746572, 0x74696C, 0x766572
118517        ]),
118518        new NGramsPlusLang('de', [
118519          0x20616E, 0x206175, 0x206265, 0x206461, 0x206465, 0x206469, 0x206569, 0x206765,
118520          0x206861, 0x20696E, 0x206D69, 0x207363, 0x207365, 0x20756E, 0x207665, 0x20766F,
118521          0x207765, 0x207A75, 0x626572, 0x636820, 0x636865, 0x636874, 0x646173, 0x64656E,
118522          0x646572, 0x646965, 0x652064, 0x652073, 0x65696E, 0x656974, 0x656E20, 0x657220,
118523          0x657320, 0x67656E, 0x68656E, 0x687420, 0x696368, 0x696520, 0x696E20, 0x696E65,
118524          0x697420, 0x6C6963, 0x6C6C65, 0x6E2061, 0x6E2064, 0x6E2073, 0x6E6420, 0x6E6465,
118525          0x6E6520, 0x6E6720, 0x6E6765, 0x6E7465, 0x722064, 0x726465, 0x726569, 0x736368,
118526          0x737465, 0x742064, 0x746520, 0x74656E, 0x746572, 0x756E64, 0x756E67, 0x766572
118527        ]),
118528        new NGramsPlusLang('en', [
118529          0x206120, 0x20616E, 0x206265, 0x20636F, 0x20666F, 0x206861, 0x206865, 0x20696E,
118530          0x206D61, 0x206F66, 0x207072, 0x207265, 0x207361, 0x207374, 0x207468, 0x20746F,
118531          0x207768, 0x616964, 0x616C20, 0x616E20, 0x616E64, 0x617320, 0x617420, 0x617465,
118532          0x617469, 0x642061, 0x642074, 0x652061, 0x652073, 0x652074, 0x656420, 0x656E74,
118533          0x657220, 0x657320, 0x666F72, 0x686174, 0x686520, 0x686572, 0x696420, 0x696E20,
118534          0x696E67, 0x696F6E, 0x697320, 0x6E2061, 0x6E2074, 0x6E6420, 0x6E6720, 0x6E7420,
118535          0x6F6620, 0x6F6E20, 0x6F7220, 0x726520, 0x727320, 0x732061, 0x732074, 0x736169,
118536          0x737420, 0x742074, 0x746572, 0x746861, 0x746865, 0x74696F, 0x746F20, 0x747320
118537        ]),
118538        new NGramsPlusLang('es', [
118539          0x206120, 0x206361, 0x20636F, 0x206465, 0x20656C, 0x20656E, 0x206573, 0x20696E,
118540          0x206C61, 0x206C6F, 0x207061, 0x20706F, 0x207072, 0x207175, 0x207265, 0x207365,
118541          0x20756E, 0x207920, 0x612063, 0x612064, 0x612065, 0x61206C, 0x612070, 0x616369,
118542          0x61646F, 0x616C20, 0x617220, 0x617320, 0x6369F3, 0x636F6E, 0x646520, 0x64656C,
118543          0x646F20, 0x652064, 0x652065, 0x65206C, 0x656C20, 0x656E20, 0x656E74, 0x657320,
118544          0x657374, 0x69656E, 0x69F36E, 0x6C6120, 0x6C6F73, 0x6E2065, 0x6E7465, 0x6F2064,
118545          0x6F2065, 0x6F6E20, 0x6F7220, 0x6F7320, 0x706172, 0x717565, 0x726120, 0x726573,
118546          0x732064, 0x732065, 0x732070, 0x736520, 0x746520, 0x746F20, 0x756520, 0xF36E20
118547        ]),
118548        new NGramsPlusLang('fr', [
118549          0x206175, 0x20636F, 0x206461, 0x206465, 0x206475, 0x20656E, 0x206574, 0x206C61,
118550          0x206C65, 0x207061, 0x20706F, 0x207072, 0x207175, 0x207365, 0x20736F, 0x20756E,
118551          0x20E020, 0x616E74, 0x617469, 0x636520, 0x636F6E, 0x646520, 0x646573, 0x647520,
118552          0x652061, 0x652063, 0x652064, 0x652065, 0x65206C, 0x652070, 0x652073, 0x656E20,
118553          0x656E74, 0x657220, 0x657320, 0x657420, 0x657572, 0x696F6E, 0x697320, 0x697420,
118554          0x6C6120, 0x6C6520, 0x6C6573, 0x6D656E, 0x6E2064, 0x6E6520, 0x6E7320, 0x6E7420,
118555          0x6F6E20, 0x6F6E74, 0x6F7572, 0x717565, 0x72206C, 0x726520, 0x732061, 0x732064,
118556          0x732065, 0x73206C, 0x732070, 0x742064, 0x746520, 0x74696F, 0x756520, 0x757220
118557        ]),
118558        new NGramsPlusLang('it', [
118559          0x20616C, 0x206368, 0x20636F, 0x206465, 0x206469, 0x206520, 0x20696C, 0x20696E,
118560          0x206C61, 0x207065, 0x207072, 0x20756E, 0x612063, 0x612064, 0x612070, 0x612073,
118561          0x61746F, 0x636865, 0x636F6E, 0x64656C, 0x646920, 0x652061, 0x652063, 0x652064,
118562          0x652069, 0x65206C, 0x652070, 0x652073, 0x656C20, 0x656C6C, 0x656E74, 0x657220,
118563          0x686520, 0x692061, 0x692063, 0x692064, 0x692073, 0x696120, 0x696C20, 0x696E20,
118564          0x696F6E, 0x6C6120, 0x6C6520, 0x6C6920, 0x6C6C61, 0x6E6520, 0x6E6920, 0x6E6F20,
118565          0x6E7465, 0x6F2061, 0x6F2064, 0x6F2069, 0x6F2073, 0x6F6E20, 0x6F6E65, 0x706572,
118566          0x726120, 0x726520, 0x736920, 0x746120, 0x746520, 0x746920, 0x746F20, 0x7A696F
118567        ]),
118568        new NGramsPlusLang('nl', [
118569          0x20616C, 0x206265, 0x206461, 0x206465, 0x206469, 0x206565, 0x20656E, 0x206765,
118570          0x206865, 0x20696E, 0x206D61, 0x206D65, 0x206F70, 0x207465, 0x207661, 0x207665,
118571          0x20766F, 0x207765, 0x207A69, 0x61616E, 0x616172, 0x616E20, 0x616E64, 0x617220,
118572          0x617420, 0x636874, 0x646520, 0x64656E, 0x646572, 0x652062, 0x652076, 0x65656E,
118573          0x656572, 0x656E20, 0x657220, 0x657273, 0x657420, 0x67656E, 0x686574, 0x696520,
118574          0x696E20, 0x696E67, 0x697320, 0x6E2062, 0x6E2064, 0x6E2065, 0x6E2068, 0x6E206F,
118575          0x6E2076, 0x6E6465, 0x6E6720, 0x6F6E64, 0x6F6F72, 0x6F7020, 0x6F7220, 0x736368,
118576          0x737465, 0x742064, 0x746520, 0x74656E, 0x746572, 0x76616E, 0x766572, 0x766F6F
118577        ]),
118578        new NGramsPlusLang('no', [
118579          0x206174, 0x206176, 0x206465, 0x20656E, 0x206572, 0x20666F, 0x206861, 0x206920,
118580          0x206D65, 0x206F67, 0x2070E5, 0x207365, 0x20736B, 0x20736F, 0x207374, 0x207469,
118581          0x207669, 0x20E520, 0x616E64, 0x617220, 0x617420, 0x646520, 0x64656E, 0x646574,
118582          0x652073, 0x656420, 0x656E20, 0x656E65, 0x657220, 0x657265, 0x657420, 0x657474,
118583          0x666F72, 0x67656E, 0x696B6B, 0x696C20, 0x696E67, 0x6B6520, 0x6B6B65, 0x6C6520,
118584          0x6C6C65, 0x6D6564, 0x6D656E, 0x6E2073, 0x6E6520, 0x6E6720, 0x6E6765, 0x6E6E65,
118585          0x6F6720, 0x6F6D20, 0x6F7220, 0x70E520, 0x722073, 0x726520, 0x736F6D, 0x737465,
118586          0x742073, 0x746520, 0x74656E, 0x746572, 0x74696C, 0x747420, 0x747465, 0x766572
118587        ]),
118588        new NGramsPlusLang('pt', [
118589          0x206120, 0x20636F, 0x206461, 0x206465, 0x20646F, 0x206520, 0x206573, 0x206D61,
118590          0x206E6F, 0x206F20, 0x207061, 0x20706F, 0x207072, 0x207175, 0x207265, 0x207365,
118591          0x20756D, 0x612061, 0x612063, 0x612064, 0x612070, 0x616465, 0x61646F, 0x616C20,
118592          0x617220, 0x617261, 0x617320, 0x636F6D, 0x636F6E, 0x646120, 0x646520, 0x646F20,
118593          0x646F73, 0x652061, 0x652064, 0x656D20, 0x656E74, 0x657320, 0x657374, 0x696120,
118594          0x696361, 0x6D656E, 0x6E7465, 0x6E746F, 0x6F2061, 0x6F2063, 0x6F2064, 0x6F2065,
118595          0x6F2070, 0x6F7320, 0x706172, 0x717565, 0x726120, 0x726573, 0x732061, 0x732064,
118596          0x732065, 0x732070, 0x737461, 0x746520, 0x746F20, 0x756520, 0xE36F20, 0xE7E36F
118597        ]),
118598        new NGramsPlusLang('sv', [
118599          0x206174, 0x206176, 0x206465, 0x20656E, 0x2066F6, 0x206861, 0x206920, 0x20696E,
118600          0x206B6F, 0x206D65, 0x206F63, 0x2070E5, 0x20736B, 0x20736F, 0x207374, 0x207469,
118601          0x207661, 0x207669, 0x20E472, 0x616465, 0x616E20, 0x616E64, 0x617220, 0x617474,
118602          0x636820, 0x646520, 0x64656E, 0x646572, 0x646574, 0x656420, 0x656E20, 0x657220,
118603          0x657420, 0x66F672, 0x67656E, 0x696C6C, 0x696E67, 0x6B6120, 0x6C6C20, 0x6D6564,
118604          0x6E2073, 0x6E6120, 0x6E6465, 0x6E6720, 0x6E6765, 0x6E696E, 0x6F6368, 0x6F6D20,
118605          0x6F6E20, 0x70E520, 0x722061, 0x722073, 0x726120, 0x736B61, 0x736F6D, 0x742073,
118606          0x746120, 0x746520, 0x746572, 0x74696C, 0x747420, 0x766172, 0xE47220, 0xF67220,
118607        ])
118608      ];
118609    };
118610  
118611    this.name = function(det) {
118612      return (det && det.fC1Bytes) ? 'windows-1252' : 'ISO-8859-1';
118613    };
118614  };
118615  util.inherits(module.exports.ISO_8859_1, sbcs);
118616  
118617  
118618  module.exports.ISO_8859_2 = function() {
118619    this.byteMap = function() {
118620      return [
118621        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118622        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118623        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118624        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118625        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,
118626        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118627        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118628        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118629        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
118630        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
118631        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
118632        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
118633        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
118634        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
118635        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
118636        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
118637        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118638        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118639        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118640        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118641        0x20, 0xB1, 0x20, 0xB3, 0x20, 0xB5, 0xB6, 0x20,
118642        0x20, 0xB9, 0xBA, 0xBB, 0xBC, 0x20, 0xBE, 0xBF,
118643        0x20, 0xB1, 0x20, 0xB3, 0x20, 0xB5, 0xB6, 0xB7,
118644        0x20, 0xB9, 0xBA, 0xBB, 0xBC, 0x20, 0xBE, 0xBF,
118645        0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
118646        0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
118647        0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x20,
118648        0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xDF,
118649        0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
118650        0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
118651        0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x20,
118652        0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0x20
118653      ];
118654    }
118655  
118656    this.ngrams = function() {
118657      return [
118658        new NGramsPlusLang('cs', [
118659          0x206120, 0x206279, 0x20646F, 0x206A65, 0x206E61, 0x206E65, 0x206F20, 0x206F64,
118660          0x20706F, 0x207072, 0x2070F8, 0x20726F, 0x207365, 0x20736F, 0x207374, 0x20746F,
118661          0x207620, 0x207679, 0x207A61, 0x612070, 0x636520, 0x636820, 0x652070, 0x652073,
118662          0x652076, 0x656D20, 0x656EED, 0x686F20, 0x686F64, 0x697374, 0x6A6520, 0x6B7465,
118663          0x6C6520, 0x6C6920, 0x6E6120, 0x6EE920, 0x6EEC20, 0x6EED20, 0x6F2070, 0x6F646E,
118664          0x6F6A69, 0x6F7374, 0x6F7520, 0x6F7661, 0x706F64, 0x706F6A, 0x70726F, 0x70F865,
118665          0x736520, 0x736F75, 0x737461, 0x737469, 0x73746E, 0x746572, 0x746EED, 0x746F20,
118666          0x752070, 0xBE6520, 0xE16EED, 0xE9686F, 0xED2070, 0xED2073, 0xED6D20, 0xF86564,
118667        ]),
118668        new NGramsPlusLang('hu', [
118669          0x206120, 0x20617A, 0x206265, 0x206567, 0x20656C, 0x206665, 0x206861, 0x20686F,
118670          0x206973, 0x206B65, 0x206B69, 0x206BF6, 0x206C65, 0x206D61, 0x206D65, 0x206D69,
118671          0x206E65, 0x20737A, 0x207465, 0x20E973, 0x612061, 0x61206B, 0x61206D, 0x612073,
118672          0x616B20, 0x616E20, 0x617A20, 0x62616E, 0x62656E, 0x656779, 0x656B20, 0x656C20,
118673          0x656C65, 0x656D20, 0x656E20, 0x657265, 0x657420, 0x657465, 0x657474, 0x677920,
118674          0x686F67, 0x696E74, 0x697320, 0x6B2061, 0x6BF67A, 0x6D6567, 0x6D696E, 0x6E2061,
118675          0x6E616B, 0x6E656B, 0x6E656D, 0x6E7420, 0x6F6779, 0x732061, 0x737A65, 0x737A74,
118676          0x737AE1, 0x73E967, 0x742061, 0x747420, 0x74E173, 0x7A6572, 0xE16E20, 0xE97320,
118677        ]),
118678        new NGramsPlusLang('pl', [
118679          0x20637A, 0x20646F, 0x206920, 0x206A65, 0x206B6F, 0x206D61, 0x206D69, 0x206E61,
118680          0x206E69, 0x206F64, 0x20706F, 0x207072, 0x207369, 0x207720, 0x207769, 0x207779,
118681          0x207A20, 0x207A61, 0x612070, 0x612077, 0x616E69, 0x636820, 0x637A65, 0x637A79,
118682          0x646F20, 0x647A69, 0x652070, 0x652073, 0x652077, 0x65207A, 0x65676F, 0x656A20,
118683          0x656D20, 0x656E69, 0x676F20, 0x696120, 0x696520, 0x69656A, 0x6B6120, 0x6B6920,
118684          0x6B6965, 0x6D6965, 0x6E6120, 0x6E6961, 0x6E6965, 0x6F2070, 0x6F7761, 0x6F7769,
118685          0x706F6C, 0x707261, 0x70726F, 0x70727A, 0x727A65, 0x727A79, 0x7369EA, 0x736B69,
118686          0x737461, 0x776965, 0x796368, 0x796D20, 0x7A6520, 0x7A6965, 0x7A7920, 0xF37720,
118687        ]),
118688        new NGramsPlusLang('ro', [
118689          0x206120, 0x206163, 0x206361, 0x206365, 0x20636F, 0x206375, 0x206465, 0x206469,
118690          0x206C61, 0x206D61, 0x207065, 0x207072, 0x207365, 0x2073E3, 0x20756E, 0x20BA69,
118691          0x20EE6E, 0x612063, 0x612064, 0x617265, 0x617420, 0x617465, 0x617520, 0x636172,
118692          0x636F6E, 0x637520, 0x63E320, 0x646520, 0x652061, 0x652063, 0x652064, 0x652070,
118693          0x652073, 0x656120, 0x656920, 0x656C65, 0x656E74, 0x657374, 0x692061, 0x692063,
118694          0x692064, 0x692070, 0x696520, 0x696920, 0x696E20, 0x6C6120, 0x6C6520, 0x6C6F72,
118695          0x6C7569, 0x6E6520, 0x6E7472, 0x6F7220, 0x70656E, 0x726520, 0x726561, 0x727520,
118696          0x73E320, 0x746520, 0x747275, 0x74E320, 0x756920, 0x756C20, 0xBA6920, 0xEE6E20,
118697        ])
118698      ];
118699    };
118700  
118701    this.name = function(det) {
118702      return (det && det.fC1Bytes) ? 'windows-1250' : 'ISO-8859-2';
118703    };
118704  };
118705  util.inherits(module.exports.ISO_8859_2, sbcs);
118706  
118707  
118708  module.exports.ISO_8859_5 = function() {
118709    this.byteMap = function() {
118710      return [
118711        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118712        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118713        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118714        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118715        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,
118716        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118717        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118718        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118719        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
118720        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
118721        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
118722        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
118723        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
118724        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
118725        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
118726        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
118727        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118728        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118729        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118730        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118731        0x20, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
118732        0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0x20, 0xFE, 0xFF,
118733        0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,
118734        0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
118735        0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
118736        0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
118737        0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,
118738        0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
118739        0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
118740        0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
118741        0x20, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
118742        0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0x20, 0xFE, 0xFF
118743      ];
118744    };
118745  
118746    this.ngrams = function() {
118747      return [
118748        0x20D220, 0x20D2DE, 0x20D4DE, 0x20D7D0, 0x20D820, 0x20DAD0, 0x20DADE, 0x20DDD0,
118749        0x20DDD5, 0x20DED1, 0x20DFDE, 0x20DFE0, 0x20E0D0, 0x20E1DE, 0x20E1E2, 0x20E2DE,
118750        0x20E7E2, 0x20EDE2, 0xD0DDD8, 0xD0E2EC, 0xD3DE20, 0xD5DBEC, 0xD5DDD8, 0xD5E1E2,
118751        0xD5E220, 0xD820DF, 0xD8D520, 0xD8D820, 0xD8EF20, 0xDBD5DD, 0xDBD820, 0xDBECDD,
118752        0xDDD020, 0xDDD520, 0xDDD8D5, 0xDDD8EF, 0xDDDE20, 0xDDDED2, 0xDE20D2, 0xDE20DF,
118753        0xDE20E1, 0xDED220, 0xDED2D0, 0xDED3DE, 0xDED920, 0xDEDBEC, 0xDEDC20, 0xDEE1E2,
118754        0xDFDEDB, 0xDFE0D5, 0xDFE0D8, 0xDFE0DE, 0xE0D0D2, 0xE0D5D4, 0xE1E2D0, 0xE1E2D2,
118755        0xE1E2D8, 0xE1EF20, 0xE2D5DB, 0xE2DE20, 0xE2DEE0, 0xE2EC20, 0xE7E2DE, 0xEBE520
118756      ];
118757    };
118758  
118759    this.name = function(det) {
118760      return 'ISO-8859-5';
118761    };
118762  
118763    this.language = function() {
118764      return 'ru';
118765    };
118766  };
118767  util.inherits(module.exports.ISO_8859_5, sbcs);
118768  
118769  
118770  module.exports.ISO_8859_6 = function() {
118771    this.byteMap = function() {
118772      return [
118773        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118774        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118775        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118776        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118777        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,
118778        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118779        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118780        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118781        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
118782        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
118783        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
118784        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
118785        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
118786        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
118787        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
118788        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
118789        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118790        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118791        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118792        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118793        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118794        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118795        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118796        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118797        0x20, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
118798        0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
118799        0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,
118800        0xD8, 0xD9, 0xDA, 0x20, 0x20, 0x20, 0x20, 0x20,
118801        0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
118802        0xE8, 0xE9, 0xEA, 0x20, 0x20, 0x20, 0x20, 0x20,
118803        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118804        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20
118805      ];
118806    };
118807  
118808    this.ngrams = function() {
118809      return [
118810        0x20C7E4, 0x20C7E6, 0x20C8C7, 0x20D9E4, 0x20E1EA, 0x20E4E4, 0x20E5E6, 0x20E8C7,
118811        0xC720C7, 0xC7C120, 0xC7CA20, 0xC7D120, 0xC7E420, 0xC7E4C3, 0xC7E4C7, 0xC7E4C8,
118812        0xC7E4CA, 0xC7E4CC, 0xC7E4CD, 0xC7E4CF, 0xC7E4D3, 0xC7E4D9, 0xC7E4E2, 0xC7E4E5,
118813        0xC7E4E8, 0xC7E4EA, 0xC7E520, 0xC7E620, 0xC7E6CA, 0xC820C7, 0xC920C7, 0xC920E1,
118814        0xC920E4, 0xC920E5, 0xC920E8, 0xCA20C7, 0xCF20C7, 0xCFC920, 0xD120C7, 0xD1C920,
118815        0xD320C7, 0xD920C7, 0xD9E4E9, 0xE1EA20, 0xE420C7, 0xE4C920, 0xE4E920, 0xE4EA20,
118816        0xE520C7, 0xE5C720, 0xE5C920, 0xE5E620, 0xE620C7, 0xE720C7, 0xE7C720, 0xE8C7E4,
118817        0xE8E620, 0xE920C7, 0xEA20C7, 0xEA20E5, 0xEA20E8, 0xEAC920, 0xEAD120, 0xEAE620
118818      ];
118819    };
118820  
118821    this.name = function(det) {
118822      return 'ISO-8859-6';
118823    };
118824  
118825    this.language = function() {
118826      return 'ar';
118827    };
118828  };
118829  util.inherits(module.exports.ISO_8859_6, sbcs);
118830  
118831  
118832  module.exports.ISO_8859_7 = function() {
118833    this.byteMap = function() {
118834      return [
118835        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118836        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118837        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118838        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118839        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,
118840        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118841        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118842        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118843        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
118844        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
118845        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
118846        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
118847        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
118848        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
118849        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
118850        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
118851        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118852        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118853        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118854        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118855        0x20, 0xA1, 0xA2, 0x20, 0x20, 0x20, 0x20, 0x20,
118856        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118857        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xDC, 0x20,
118858        0xDD, 0xDE, 0xDF, 0x20, 0xFC, 0x20, 0xFD, 0xFE,
118859        0xC0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
118860        0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
118861        0xF0, 0xF1, 0x20, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
118862        0xF8, 0xF9, 0xFA, 0xFB, 0xDC, 0xDD, 0xDE, 0xDF,
118863        0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
118864        0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
118865        0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
118866        0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0x20
118867      ];
118868    };
118869  
118870    this.ngrams = function() {
118871      return [
118872        0x20E1ED, 0x20E1F0, 0x20E3E9, 0x20E4E9, 0x20E5F0, 0x20E720, 0x20EAE1, 0x20ECE5,
118873        0x20EDE1, 0x20EF20, 0x20F0E1, 0x20F0EF, 0x20F0F1, 0x20F3F4, 0x20F3F5, 0x20F4E7,
118874        0x20F4EF, 0xDFE120, 0xE120E1, 0xE120F4, 0xE1E920, 0xE1ED20, 0xE1F0FC, 0xE1F220,
118875        0xE3E9E1, 0xE5E920, 0xE5F220, 0xE720F4, 0xE7ED20, 0xE7F220, 0xE920F4, 0xE9E120,
118876        0xE9EADE, 0xE9F220, 0xEAE1E9, 0xEAE1F4, 0xECE520, 0xED20E1, 0xED20E5, 0xED20F0,
118877        0xEDE120, 0xEFF220, 0xEFF520, 0xF0EFF5, 0xF0F1EF, 0xF0FC20, 0xF220E1, 0xF220E5,
118878        0xF220EA, 0xF220F0, 0xF220F4, 0xF3E520, 0xF3E720, 0xF3F4EF, 0xF4E120, 0xF4E1E9,
118879        0xF4E7ED, 0xF4E7F2, 0xF4E9EA, 0xF4EF20, 0xF4EFF5, 0xF4F9ED, 0xF9ED20, 0xFEED20
118880      ];
118881    };
118882  
118883    this.name = function(det) {
118884      return (det && det.fC1Bytes) ? 'windows-1253' : 'ISO-8859-7';
118885    };
118886  
118887    this.language = function() {
118888      return 'el';
118889    };
118890  };
118891  util.inherits(module.exports.ISO_8859_7, sbcs);
118892  
118893  module.exports.ISO_8859_8 = function() {
118894  
118895    this.byteMap = function() {
118896      return [
118897        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118898        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118899        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118900        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118901        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,
118902        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118903        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118904        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118905        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
118906        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
118907        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
118908        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
118909        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
118910        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
118911        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
118912        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
118913        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118914        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118915        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118916        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118917        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118918        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118919        0x20, 0x20, 0x20, 0x20, 0x20, 0xB5, 0x20, 0x20,
118920        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118921        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118922        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118923        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118924        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118925        0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
118926        0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
118927        0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
118928        0xF8, 0xF9, 0xFA, 0x20, 0x20, 0x20, 0x20, 0x20
118929      ];
118930    };
118931  
118932    this.ngrams = function() {
118933      return [
118934        new NGramsPlusLang('he', [
118935          0x20E0E5, 0x20E0E7, 0x20E0E9, 0x20E0FA, 0x20E1E9, 0x20E1EE, 0x20E4E0, 0x20E4E5,
118936          0x20E4E9, 0x20E4EE, 0x20E4F2, 0x20E4F9, 0x20E4FA, 0x20ECE0, 0x20ECE4, 0x20EEE0,
118937          0x20F2EC, 0x20F9EC, 0xE0FA20, 0xE420E0, 0xE420E1, 0xE420E4, 0xE420EC, 0xE420EE,
118938          0xE420F9, 0xE4E5E0, 0xE5E020, 0xE5ED20, 0xE5EF20, 0xE5F820, 0xE5FA20, 0xE920E4,
118939          0xE9E420, 0xE9E5FA, 0xE9E9ED, 0xE9ED20, 0xE9EF20, 0xE9F820, 0xE9FA20, 0xEC20E0,
118940          0xEC20E4, 0xECE020, 0xECE420, 0xED20E0, 0xED20E1, 0xED20E4, 0xED20EC, 0xED20EE,
118941          0xED20F9, 0xEEE420, 0xEF20E4, 0xF0E420, 0xF0E920, 0xF0E9ED, 0xF2EC20, 0xF820E4,
118942          0xF8E9ED, 0xF9EC20, 0xFA20E0, 0xFA20E1, 0xFA20E4, 0xFA20EC, 0xFA20EE, 0xFA20F9,
118943        ]),
118944        new NGramsPlusLang('he', [
118945          0x20E0E5, 0x20E0EC, 0x20E4E9, 0x20E4EC, 0x20E4EE, 0x20E4F0, 0x20E9F0, 0x20ECF2,
118946          0x20ECF9, 0x20EDE5, 0x20EDE9, 0x20EFE5, 0x20EFE9, 0x20F8E5, 0x20F8E9, 0x20FAE0,
118947          0x20FAE5, 0x20FAE9, 0xE020E4, 0xE020EC, 0xE020ED, 0xE020FA, 0xE0E420, 0xE0E5E4,
118948          0xE0EC20, 0xE0EE20, 0xE120E4, 0xE120ED, 0xE120FA, 0xE420E4, 0xE420E9, 0xE420EC,
118949          0xE420ED, 0xE420EF, 0xE420F8, 0xE420FA, 0xE4EC20, 0xE5E020, 0xE5E420, 0xE7E020,
118950          0xE9E020, 0xE9E120, 0xE9E420, 0xEC20E4, 0xEC20ED, 0xEC20FA, 0xECF220, 0xECF920,
118951          0xEDE9E9, 0xEDE9F0, 0xEDE9F8, 0xEE20E4, 0xEE20ED, 0xEE20FA, 0xEEE120, 0xEEE420,
118952          0xF2E420, 0xF920E4, 0xF920ED, 0xF920FA, 0xF9E420, 0xFAE020, 0xFAE420, 0xFAE5E9,
118953        ])
118954      ];
118955    };
118956  
118957    this.name = function(det) {
118958      return (det && det.fC1Bytes) ? 'windows-1255' : 'ISO-8859-8';
118959    };
118960  
118961    this.language = function() {
118962      return 'he';
118963    };
118964  
118965  };
118966  util.inherits(module.exports.ISO_8859_8, sbcs);
118967  
118968  
118969  module.exports.ISO_8859_9 = function() {
118970    this.byteMap = function() {
118971      return [
118972        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118973        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118974        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118975        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118976        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,
118977        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118978        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118979        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118980        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
118981        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
118982        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
118983        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
118984        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
118985        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
118986        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
118987        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
118988        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118989        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118990        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118991        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118992        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
118993        0x20, 0x20, 0xAA, 0x20, 0x20, 0x20, 0x20, 0x20,
118994        0x20, 0x20, 0x20, 0x20, 0x20, 0xB5, 0x20, 0x20,
118995        0x20, 0x20, 0xBA, 0x20, 0x20, 0x20, 0x20, 0x20,
118996        0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
118997        0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
118998        0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x20,
118999        0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0x69, 0xFE, 0xDF,
119000        0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
119001        0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
119002        0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x20,
119003        0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
119004      ];
119005    };
119006  
119007    this.ngrams = function() {
119008      return [
119009        0x206261, 0x206269, 0x206275, 0x206461, 0x206465, 0x206765, 0x206861, 0x20696C,
119010        0x206B61, 0x206B6F, 0x206D61, 0x206F6C, 0x207361, 0x207461, 0x207665, 0x207961,
119011        0x612062, 0x616B20, 0x616C61, 0x616D61, 0x616E20, 0x616EFD, 0x617220, 0x617261,
119012        0x6172FD, 0x6173FD, 0x617961, 0x626972, 0x646120, 0x646520, 0x646920, 0x652062,
119013        0x65206B, 0x656469, 0x656E20, 0x657220, 0x657269, 0x657369, 0x696C65, 0x696E20,
119014        0x696E69, 0x697220, 0x6C616E, 0x6C6172, 0x6C6520, 0x6C6572, 0x6E2061, 0x6E2062,
119015        0x6E206B, 0x6E6461, 0x6E6465, 0x6E6520, 0x6E6920, 0x6E696E, 0x6EFD20, 0x72696E,
119016        0x72FD6E, 0x766520, 0x796120, 0x796F72, 0xFD6E20, 0xFD6E64, 0xFD6EFD, 0xFDF0FD
119017      ];
119018    };
119019  
119020    this.name = function(det) {
119021      return (det && det.fC1Bytes) ? 'windows-1254' : 'ISO-8859-9';
119022    };
119023  
119024    this.language = function() {
119025      return 'tr';
119026    };
119027  };
119028  util.inherits(module.exports.ISO_8859_9, sbcs);
119029  
119030  
119031  module.exports.windows_1251 = function() {
119032    this.byteMap = function() {
119033      return [
119034        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119035        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119036        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119037        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119038        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,
119039        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119040        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119041        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119042        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
119043        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
119044        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
119045        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
119046        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
119047        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
119048        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
119049        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
119050        0x90, 0x83, 0x20, 0x83, 0x20, 0x20, 0x20, 0x20,
119051        0x20, 0x20, 0x9A, 0x20, 0x9C, 0x9D, 0x9E, 0x9F,
119052        0x90, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119053        0x20, 0x20, 0x9A, 0x20, 0x9C, 0x9D, 0x9E, 0x9F,
119054        0x20, 0xA2, 0xA2, 0xBC, 0x20, 0xB4, 0x20, 0x20,
119055        0xB8, 0x20, 0xBA, 0x20, 0x20, 0x20, 0x20, 0xBF,
119056        0x20, 0x20, 0xB3, 0xB3, 0xB4, 0xB5, 0x20, 0x20,
119057        0xB8, 0x20, 0xBA, 0x20, 0xBC, 0xBE, 0xBE, 0xBF,
119058        0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
119059        0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
119060        0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
119061        0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF,
119062        0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
119063        0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
119064        0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
119065        0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
119066      ];
119067    };
119068  
119069    this.ngrams = function() {
119070      return [
119071        0x20E220, 0x20E2EE, 0x20E4EE, 0x20E7E0, 0x20E820, 0x20EAE0, 0x20EAEE, 0x20EDE0,
119072        0x20EDE5, 0x20EEE1, 0x20EFEE, 0x20EFF0, 0x20F0E0, 0x20F1EE, 0x20F1F2, 0x20F2EE,
119073        0x20F7F2, 0x20FDF2, 0xE0EDE8, 0xE0F2FC, 0xE3EE20, 0xE5EBFC, 0xE5EDE8, 0xE5F1F2,
119074        0xE5F220, 0xE820EF, 0xE8E520, 0xE8E820, 0xE8FF20, 0xEBE5ED, 0xEBE820, 0xEBFCED,
119075        0xEDE020, 0xEDE520, 0xEDE8E5, 0xEDE8FF, 0xEDEE20, 0xEDEEE2, 0xEE20E2, 0xEE20EF,
119076        0xEE20F1, 0xEEE220, 0xEEE2E0, 0xEEE3EE, 0xEEE920, 0xEEEBFC, 0xEEEC20, 0xEEF1F2,
119077        0xEFEEEB, 0xEFF0E5, 0xEFF0E8, 0xEFF0EE, 0xF0E0E2, 0xF0E5E4, 0xF1F2E0, 0xF1F2E2,
119078        0xF1F2E8, 0xF1FF20, 0xF2E5EB, 0xF2EE20, 0xF2EEF0, 0xF2FC20, 0xF7F2EE, 0xFBF520
119079      ];
119080    };
119081  
119082    this.name = function(det) {
119083      return 'windows-1251';
119084    };
119085  
119086    this.language = function() {
119087      return 'ru';
119088    };
119089  };
119090  util.inherits(module.exports.windows_1251, sbcs);
119091  
119092  
119093  module.exports.windows_1256 = function() {
119094    this.byteMap = function() {
119095      return [
119096        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119097        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119098        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119099        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119100        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,
119101        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119102        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119103        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119104        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
119105        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
119106        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
119107        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
119108        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
119109        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
119110        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
119111        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
119112        0x20, 0x81, 0x20, 0x83, 0x20, 0x20, 0x20, 0x20,
119113        0x88, 0x20, 0x8A, 0x20, 0x9C, 0x8D, 0x8E, 0x8F,
119114        0x90, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119115        0x98, 0x20, 0x9A, 0x20, 0x9C, 0x20, 0x20, 0x9F,
119116        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119117        0x20, 0x20, 0xAA, 0x20, 0x20, 0x20, 0x20, 0x20,
119118        0x20, 0x20, 0x20, 0x20, 0x20, 0xB5, 0x20, 0x20,
119119        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119120        0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
119121        0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
119122        0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0x20,
119123        0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
119124        0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
119125        0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
119126        0x20, 0x20, 0x20, 0x20, 0xF4, 0x20, 0x20, 0x20,
119127        0x20, 0xF9, 0x20, 0xFB, 0xFC, 0x20, 0x20, 0xFF
119128      ];
119129    };
119130  
119131    this.ngrams = function() {
119132      return [
119133        0x20C7E1, 0x20C7E4, 0x20C8C7, 0x20DAE1, 0x20DDED, 0x20E1E1, 0x20E3E4, 0x20E6C7,
119134        0xC720C7, 0xC7C120, 0xC7CA20, 0xC7D120, 0xC7E120, 0xC7E1C3, 0xC7E1C7, 0xC7E1C8,
119135        0xC7E1CA, 0xC7E1CC, 0xC7E1CD, 0xC7E1CF, 0xC7E1D3, 0xC7E1DA, 0xC7E1DE, 0xC7E1E3,
119136        0xC7E1E6, 0xC7E1ED, 0xC7E320, 0xC7E420, 0xC7E4CA, 0xC820C7, 0xC920C7, 0xC920DD,
119137        0xC920E1, 0xC920E3, 0xC920E6, 0xCA20C7, 0xCF20C7, 0xCFC920, 0xD120C7, 0xD1C920,
119138        0xD320C7, 0xDA20C7, 0xDAE1EC, 0xDDED20, 0xE120C7, 0xE1C920, 0xE1EC20, 0xE1ED20,
119139        0xE320C7, 0xE3C720, 0xE3C920, 0xE3E420, 0xE420C7, 0xE520C7, 0xE5C720, 0xE6C7E1,
119140        0xE6E420, 0xEC20C7, 0xED20C7, 0xED20E3, 0xED20E6, 0xEDC920, 0xEDD120, 0xEDE420
119141      ];
119142    };
119143  
119144    this.name = function(det) {
119145      return 'windows-1256';
119146    };
119147  
119148    this.language = function() {
119149      return 'ar';
119150    };
119151  };
119152  util.inherits(module.exports.windows_1256, sbcs);
119153  
119154  
119155  module.exports.KOI8_R = function() {
119156    this.byteMap = function() {
119157      return [
119158        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119159        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119160        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119161        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119162        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,
119163        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119164        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119165        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119166        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
119167        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
119168        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
119169        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
119170        0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
119171        0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
119172        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
119173        0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,
119174        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119175        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119176        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119177        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119178        0x20, 0x20, 0x20, 0xA3, 0x20, 0x20, 0x20, 0x20,
119179        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119180        0x20, 0x20, 0x20, 0xA3, 0x20, 0x20, 0x20, 0x20,
119181        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119182        0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
119183        0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
119184        0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,
119185        0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
119186        0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
119187        0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
119188        0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,
119189        0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF
119190      ];
119191    };
119192  
119193    this.ngrams = function() {
119194      return [
119195        0x20C4CF, 0x20C920, 0x20CBC1, 0x20CBCF, 0x20CEC1, 0x20CEC5, 0x20CFC2, 0x20D0CF,
119196        0x20D0D2, 0x20D2C1, 0x20D3CF, 0x20D3D4, 0x20D4CF, 0x20D720, 0x20D7CF, 0x20DAC1,
119197        0x20DCD4, 0x20DED4, 0xC1CEC9, 0xC1D4D8, 0xC5CCD8, 0xC5CEC9, 0xC5D3D4, 0xC5D420,
119198        0xC7CF20, 0xC920D0, 0xC9C520, 0xC9C920, 0xC9D120, 0xCCC5CE, 0xCCC920, 0xCCD8CE,
119199        0xCEC120, 0xCEC520, 0xCEC9C5, 0xCEC9D1, 0xCECF20, 0xCECFD7, 0xCF20D0, 0xCF20D3,
119200        0xCF20D7, 0xCFC7CF, 0xCFCA20, 0xCFCCD8, 0xCFCD20, 0xCFD3D4, 0xCFD720, 0xCFD7C1,
119201        0xD0CFCC, 0xD0D2C5, 0xD0D2C9, 0xD0D2CF, 0xD2C1D7, 0xD2C5C4, 0xD3D120, 0xD3D4C1,
119202        0xD3D4C9, 0xD3D4D7, 0xD4C5CC, 0xD4CF20, 0xD4CFD2, 0xD4D820, 0xD9C820, 0xDED4CF
119203      ];
119204    };
119205  
119206    this.name = function(det) {
119207      return 'KOI8-R';
119208    };
119209  
119210    this.language = function() {
119211      return 'ru';
119212    };
119213  };
119214  util.inherits(module.exports.KOI8_R, sbcs);
119215  
119216  
119217  /*
119218  module.exports.ISO_8859_7 = function() {
119219    this.byteMap = function() {
119220      return [
119221  
119222      ];
119223    };
119224  
119225    this.ngrams = function() {
119226      return [
119227  
119228      ];
119229    };
119230  
119231    this.name = function(det) {
119232      if (typeof det == 'undefined')
119233        return 'ISO-8859-7';
119234      return det.fC1Bytes ? 'windows-1253' : 'ISO-8859-7';
119235    };
119236  
119237    this.language = function() {
119238      return 'el';
119239    };
119240  };
119241  util.inherits(module.exports.ISO_8859_7, sbcs);
119242  */
119243  
119244  
119245  
119246  /***/ }),
119247  /* 702 */
119248  /***/ (function(module, exports, __webpack_require__) {
119249  
119250  "use strict";
119251  
119252  var util = __webpack_require__(3),
119253    Match = __webpack_require__ (142);
119254  
119255  /**
119256   * This class matches UTF-16 and UTF-32, both big- and little-endian. The
119257   * BOM will be used if it is present.
119258   */
119259  module.exports.UTF_16BE = function() {
119260    this.name = function() {
119261      return 'UTF-16BE';
119262    };
119263    this.match = function(det) {
119264      var input = det.fRawInput;
119265  
119266      if (input.length >= 2 && ((input[0] & 0xff) == 0xfe && (input[1] & 0xff) == 0xff)) {
119267        return new Match(det, this, 100); // confidence = 100
119268      }
119269  
119270      // TODO: Do some statistics to check for unsigned UTF-16BE
119271      return null;
119272    };
119273  };
119274  
119275  module.exports.UTF_16LE = function() {
119276    this.name = function() {
119277      return 'UTF-16LE';
119278    };
119279    this.match = function(det) {
119280      var input = det.fRawInput;
119281  
119282      if (input.length >= 2 && ((input[0] & 0xff) == 0xff && (input[1] & 0xff) == 0xfe)) {
119283        // LE BOM is present.
119284        if (input.length >= 4 && input[2] == 0x00 && input[3] == 0x00) {
119285          // It is probably UTF-32 LE, not UTF-16
119286          return null;
119287        }
119288        return new Match(det, this, 100); // confidence = 100
119289      }
119290  
119291      // TODO: Do some statistics to check for unsigned UTF-16LE
119292      return null;
119293    }
119294  };
119295  
119296  function UTF_32() {};
119297  UTF_32.prototype.match = function(det) {
119298    var input      = det.fRawInput,
119299      limit      = (det.fRawLength / 4) * 4,
119300      numValid   = 0,
119301      numInvalid = 0,
119302      hasBOM     = false,
119303      confidence = 0;
119304  
119305    if (limit == 0) {
119306      return null;
119307    }
119308  
119309    if (this.getChar(input, 0) == 0x0000FEFF) {
119310      hasBOM = true;
119311    }
119312  
119313    for (var i = 0; i < limit; i += 4) {
119314      var ch = this.getChar(input, i);
119315  
119316      if (ch < 0 || ch >= 0x10FFFF || (ch >= 0xD800 && ch <= 0xDFFF)) {
119317        numInvalid += 1;
119318      } else {
119319        numValid += 1;
119320      }
119321    }
119322  
119323    // Cook up some sort of confidence score, based on presence of a BOM
119324    //    and the existence of valid and/or invalid multi-byte sequences.
119325    if (hasBOM && numInvalid == 0) {
119326      confidence = 100;
119327    } else if (hasBOM && numValid > numInvalid * 10) {
119328      confidence = 80;
119329    } else if (numValid > 3 && numInvalid == 0) {
119330      confidence = 100;
119331    } else if (numValid > 0 && numInvalid == 0) {
119332      confidence = 80;
119333    } else if (numValid > numInvalid * 10) {
119334      // Probably corrupt UTF-32BE data.  Valid sequences aren't likely by chance.
119335      confidence = 25;
119336    }
119337  
119338    // return confidence == 0 ? null : new CharsetMatch(det, this, confidence);
119339    return confidence == 0 ? null : new Match(det, this, confidence);
119340  };
119341  
119342  module.exports.UTF_32BE = function() {
119343    this.name = function() {
119344      return 'UTF-32BE';
119345    };
119346    this.getChar = function(input, index) {
119347      return (input[index + 0] & 0xff) << 24 | (input[index + 1] & 0xff) << 16 |
119348           (input[index + 2] & 0xff) <<  8 | (input[index + 3] & 0xff);
119349    };
119350  };
119351  util.inherits(module.exports.UTF_32BE, UTF_32);
119352  
119353  module.exports.UTF_32LE = function() {
119354    this.name = function() {
119355      return 'UTF-32LE';
119356    };
119357    this.getChar = function(input, index) {
119358      return (input[index + 3] & 0xff) << 24 | (input[index + 2] & 0xff) << 16 |
119359           (input[index + 1] & 0xff) <<  8 | (input[index + 0] & 0xff);
119360    };
119361  };
119362  util.inherits(module.exports.UTF_32LE, UTF_32);
119363  
119364  
119365  /***/ }),
119366  /* 703 */
119367  /***/ (function(module, exports, __webpack_require__) {
119368  
119369  
119370  var Match = __webpack_require__ (142);
119371  
119372  /**
119373   * Charset recognizer for UTF-8
119374   */
119375  module.exports = function() {
119376    this.name = function() {
119377      return 'UTF-8';
119378    };
119379    this.match = function(det) {
119380  
119381      var hasBOM = false,
119382        numValid = 0,
119383        numInvalid = 0,
119384        input = det.fRawInput,
119385        trailBytes = 0,
119386        confidence;
119387  
119388      if (det.fRawLength >= 3 &&
119389        (input[0] & 0xff) == 0xef && (input[1] & 0xff) == 0xbb && (input[2] & 0xff) == 0xbf) {
119390        hasBOM = true;
119391      }
119392  
119393      // Scan for multi-byte sequences
119394      for (var i = 0; i < det.fRawLength; i++) {
119395        var b = input[i];
119396        if ((b & 0x80) == 0)
119397          continue; // ASCII
119398  
119399        // Hi bit on char found.  Figure out how long the sequence should be
119400        if ((b & 0x0e0) == 0x0c0) {
119401          trailBytes = 1;
119402        } else if ((b & 0x0f0) == 0x0e0) {
119403          trailBytes = 2;
119404        } else if ((b & 0x0f8) == 0xf0) {
119405          trailBytes = 3;
119406        } else {
119407          numInvalid++;
119408          if (numInvalid > 5)
119409            break;
119410          trailBytes = 0;
119411        }
119412  
119413        // Verify that we've got the right number of trail bytes in the sequence
119414        for (;;) {
119415          i++;
119416          if (i >= det.fRawLength)
119417            break;
119418  
119419          if ((input[i] & 0xc0) != 0x080) {
119420            numInvalid++;
119421            break;
119422          }
119423          if (--trailBytes == 0) {
119424            numValid++;
119425            break;
119426          }
119427        }
119428      }
119429  
119430      // Cook up some sort of confidence score, based on presense of a BOM
119431      //    and the existence of valid and/or invalid multi-byte sequences.
119432      confidence = 0;
119433      if (hasBOM && numInvalid == 0)
119434        confidence = 100;
119435      else if (hasBOM && numValid > numInvalid * 10)
119436        confidence = 80;
119437      else if (numValid > 3 && numInvalid == 0)
119438        confidence = 100;
119439      else if (numValid > 0 && numInvalid == 0)
119440        confidence = 80;
119441      else if (numValid == 0 && numInvalid == 0)
119442        // Plain ASCII.
119443        confidence = 10;
119444      else if (numValid > numInvalid * 10)
119445        // Probably corruput utf-8 data.  Valid sequences aren't likely by chance.
119446        confidence = 25;
119447      else
119448        return null
119449  
119450      return new Match(det, this, confidence);
119451    };
119452  };
119453  
119454  
119455  /***/ }),
119456  /* 704 */
119457  /***/ (function(module, exports, __webpack_require__) {
119458  
119459  
119460  var fs = __webpack_require__(4);
119461  
119462  var utf8  = __webpack_require__(703),
119463    unicode = __webpack_require__(702),
119464    mbcs    = __webpack_require__(700),
119465    sbcs    = __webpack_require__(701),
119466    iso2022 = __webpack_require__(699);
119467  
119468  var self = this;
119469  
119470  var recognisers = [
119471    new utf8,
119472    new unicode.UTF_16BE,
119473    new unicode.UTF_16LE,
119474    new unicode.UTF_32BE,
119475    new unicode.UTF_32LE,
119476    new mbcs.sjis,
119477    new mbcs.big5,
119478    new mbcs.euc_jp,
119479    new mbcs.euc_kr,
119480    new mbcs.gb_18030,
119481    new iso2022.ISO_2022_JP,
119482    new iso2022.ISO_2022_KR,
119483    new iso2022.ISO_2022_CN,
119484    new sbcs.ISO_8859_1,
119485    new sbcs.ISO_8859_2,
119486    new sbcs.ISO_8859_5,
119487    new sbcs.ISO_8859_6,
119488    new sbcs.ISO_8859_7,
119489    new sbcs.ISO_8859_8,
119490    new sbcs.ISO_8859_9,
119491    new sbcs.windows_1251,
119492    new sbcs.windows_1256,
119493    new sbcs.KOI8_R
119494  ];
119495  
119496  module.exports.detect = function(buffer, opts) {
119497  
119498    // Tally up the byte occurence statistics.
119499    var fByteStats = [];
119500    for (var i = 0; i < 256; i++)
119501      fByteStats[i] = 0;
119502  
119503    for (var i = buffer.length - 1; i >= 0; i--)
119504      fByteStats[buffer[i] & 0x00ff]++;
119505  
119506    var fC1Bytes = false;
119507    for (var i = 0x80; i <= 0x9F; i += 1) {
119508      if (fByteStats[i] != 0) {
119509        fC1Bytes = true;
119510        break;
119511      }
119512    }
119513  
119514    var context = {
119515      fByteStats:  fByteStats,
119516      fC1Bytes:    fC1Bytes,
119517      fRawInput:   buffer,
119518      fRawLength:  buffer.length,
119519      fInputBytes: buffer,
119520      fInputLen:   buffer.length
119521    };
119522  
119523    var matches = recognisers.map(function(rec) {
119524      return rec.match(context);
119525    }).filter(function(match) {
119526      return !!match;
119527    }).sort(function(a, b) {
119528      return b.confidence - a.confidence;
119529    });
119530  
119531    if (opts && opts.returnAllMatches === true) {
119532      return matches;
119533    }
119534    else {
119535      return matches.length > 0 ? matches[0].name : null;
119536    }
119537  };
119538  
119539  module.exports.detectFile = function(filepath, opts, cb) {
119540    if (typeof opts === 'function') {
119541      cb = opts;
119542      opts = undefined;
119543    }
119544  
119545    var fd;
119546  
119547    var handler = function(err, buffer) {
119548      if (fd) {
119549        fs.closeSync(fd);
119550      }
119551  
119552      if (err) return cb(err, null);
119553      cb(null, self.detect(buffer, opts));
119554    };
119555  
119556    if (opts && opts.sampleSize) {
119557      fd = fs.openSync(filepath, 'r'),
119558        sample = Buffer.allocUnsafe(opts.sampleSize);
119559  
119560      fs.read(fd, sample, 0, opts.sampleSize, null, function(err) {
119561        handler(err, sample);
119562      });
119563      return;
119564    }
119565  
119566    fs.readFile(filepath, handler);
119567  };
119568  
119569  module.exports.detectFileSync = function(filepath, opts) {
119570    if (opts && opts.sampleSize) {
119571      var fd = fs.openSync(filepath, 'r'),
119572        sample = Buffer.allocUnsafe(opts.sampleSize);
119573  
119574      fs.readSync(fd, sample, 0, opts.sampleSize);
119575      fs.closeSync(fd);
119576      return self.detect(sample, opts);
119577    }
119578  
119579    return self.detect(fs.readFileSync(filepath), opts);
119580  };
119581  
119582  // Wrappers for the previous functions to return all encodings
119583  module.exports.detectAll = function(buffer, opts) {
119584    if (typeof opts !== 'object') {
119585      opts = {};
119586    }
119587    opts.returnAllMatches = true;
119588    return self.detect(buffer, opts);
119589  }
119590  
119591  module.exports.detectFileAll = function(filepath, opts, cb) {
119592    if (typeof opts === 'function') {
119593      cb = opts;
119594      opts = undefined;
119595    }
119596    if (typeof opts !== 'object') {
119597      opts = {};
119598    }
119599    opts.returnAllMatches = true;
119600    self.detectFile(filepath, opts, cb);
119601  }
119602  
119603  module.exports.detectFileAllSync = function(filepath, opts) {
119604    if (typeof opts !== 'object') {
119605      opts = {};
119606    }
119607    opts.returnAllMatches = true;
119608    return self.detectFileSync(filepath, opts);
119609  }
119610  
119611  
119612  /***/ }),
119613  /* 705 */
119614  /***/ (function(module, exports, __webpack_require__) {
119615  
119616  "use strict";
119617  
119618  /***
119619   * Node External Editor
119620   *
119621   * Kevin Gravier <kevin@mrkmg.com>
119622   * MIT 2018
119623   */
119624  var __extends = (this && this.__extends) || (function () {
119625      var extendStatics = function (d, b) {
119626          extendStatics = Object.setPrototypeOf ||
119627              ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
119628              function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
119629          return extendStatics(d, b);
119630      }
119631      return function (d, b) {
119632          extendStatics(d, b);
119633          function __() { this.constructor = d; }
119634          d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
119635      };
119636  })();
119637  Object.defineProperty(exports, "__esModule", { value: true });
119638  var CreateFileError = /** @class */ (function (_super) {
119639      __extends(CreateFileError, _super);
119640      function CreateFileError(originalError) {
119641          var _newTarget = this.constructor;
119642          var _this = _super.call(this, "Failed to create temporary file for editor") || this;
119643          _this.originalError = originalError;
119644          var proto = _newTarget.prototype;
119645          if (Object.setPrototypeOf) {
119646              Object.setPrototypeOf(_this, proto);
119647          }
119648          else {
119649              _this.__proto__ = _newTarget.prototype;
119650          }
119651          return _this;
119652      }
119653      return CreateFileError;
119654  }(Error));
119655  exports.CreateFileError = CreateFileError;
119656  
119657  
119658  /***/ }),
119659  /* 706 */
119660  /***/ (function(module, exports, __webpack_require__) {
119661  
119662  "use strict";
119663  
119664  /***
119665   * Node External Editor
119666   *
119667   * Kevin Gravier <kevin@mrkmg.com>
119668   * MIT 2018
119669   */
119670  var __extends = (this && this.__extends) || (function () {
119671      var extendStatics = function (d, b) {
119672          extendStatics = Object.setPrototypeOf ||
119673              ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
119674              function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
119675          return extendStatics(d, b);
119676      }
119677      return function (d, b) {
119678          extendStatics(d, b);
119679          function __() { this.constructor = d; }
119680          d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
119681      };
119682  })();
119683  Object.defineProperty(exports, "__esModule", { value: true });
119684  var LaunchEditorError = /** @class */ (function (_super) {
119685      __extends(LaunchEditorError, _super);
119686      function LaunchEditorError(originalError) {
119687          var _newTarget = this.constructor;
119688          var _this = _super.call(this, "Failed launch editor") || this;
119689          _this.originalError = originalError;
119690          var proto = _newTarget.prototype;
119691          if (Object.setPrototypeOf) {
119692              Object.setPrototypeOf(_this, proto);
119693          }
119694          else {
119695              _this.__proto__ = _newTarget.prototype;
119696          }
119697          return _this;
119698      }
119699      return LaunchEditorError;
119700  }(Error));
119701  exports.LaunchEditorError = LaunchEditorError;
119702  
119703  
119704  /***/ }),
119705  /* 707 */
119706  /***/ (function(module, exports, __webpack_require__) {
119707  
119708  "use strict";
119709  
119710  /***
119711   * Node External Editor
119712   *
119713   * Kevin Gravier <kevin@mrkmg.com>
119714   * MIT 2018
119715   */
119716  var __extends = (this && this.__extends) || (function () {
119717      var extendStatics = function (d, b) {
119718          extendStatics = Object.setPrototypeOf ||
119719              ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
119720              function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
119721          return extendStatics(d, b);
119722      }
119723      return function (d, b) {
119724          extendStatics(d, b);
119725          function __() { this.constructor = d; }
119726          d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
119727      };
119728  })();
119729  Object.defineProperty(exports, "__esModule", { value: true });
119730  var ReadFileError = /** @class */ (function (_super) {
119731      __extends(ReadFileError, _super);
119732      function ReadFileError(originalError) {
119733          var _newTarget = this.constructor;
119734          var _this = _super.call(this, "Failed to read temporary file") || this;
119735          _this.originalError = originalError;
119736          var proto = _newTarget.prototype;
119737          if (Object.setPrototypeOf) {
119738              Object.setPrototypeOf(_this, proto);
119739          }
119740          else {
119741              _this.__proto__ = _newTarget.prototype;
119742          }
119743          return _this;
119744      }
119745      return ReadFileError;
119746  }(Error));
119747  exports.ReadFileError = ReadFileError;
119748  
119749  
119750  /***/ }),
119751  /* 708 */
119752  /***/ (function(module, exports, __webpack_require__) {
119753  
119754  "use strict";
119755  
119756  /***
119757   * Node External Editor
119758   *
119759   * Kevin Gravier <kevin@mrkmg.com>
119760   * MIT 2018
119761   */
119762  var __extends = (this && this.__extends) || (function () {
119763      var extendStatics = function (d, b) {
119764          extendStatics = Object.setPrototypeOf ||
119765              ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
119766              function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
119767          return extendStatics(d, b);
119768      }
119769      return function (d, b) {
119770          extendStatics(d, b);
119771          function __() { this.constructor = d; }
119772          d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
119773      };
119774  })();
119775  Object.defineProperty(exports, "__esModule", { value: true });
119776  var RemoveFileError = /** @class */ (function (_super) {
119777      __extends(RemoveFileError, _super);
119778      function RemoveFileError(originalError) {
119779          var _newTarget = this.constructor;
119780          var _this = _super.call(this, "Failed to cleanup temporary file") || this;
119781          _this.originalError = originalError;
119782          var proto = _newTarget.prototype;
119783          if (Object.setPrototypeOf) {
119784              Object.setPrototypeOf(_this, proto);
119785          }
119786          else {
119787              _this.__proto__ = _newTarget.prototype;
119788          }
119789          return _this;
119790      }
119791      return RemoveFileError;
119792  }(Error));
119793  exports.RemoveFileError = RemoveFileError;
119794  
119795  
119796  /***/ }),
119797  /* 709 */
119798  /***/ (function(module, exports, __webpack_require__) {
119799  
119800  "use strict";
119801  
119802  /***
119803   * Node External Editor
119804   *
119805   * Kevin Gravier <kevin@mrkmg.com>
119806   * MIT 2018
119807   */
119808  Object.defineProperty(exports, "__esModule", { value: true });
119809  var chardet_1 = __webpack_require__(704);
119810  var child_process_1 = __webpack_require__(331);
119811  var fs_1 = __webpack_require__(4);
119812  var iconv_lite_1 = __webpack_require__(726);
119813  var tmp_1 = __webpack_require__(954);
119814  var CreateFileError_1 = __webpack_require__(705);
119815  exports.CreateFileError = CreateFileError_1.CreateFileError;
119816  var LaunchEditorError_1 = __webpack_require__(706);
119817  exports.LaunchEditorError = LaunchEditorError_1.LaunchEditorError;
119818  var ReadFileError_1 = __webpack_require__(707);
119819  exports.ReadFileError = ReadFileError_1.ReadFileError;
119820  var RemoveFileError_1 = __webpack_require__(708);
119821  exports.RemoveFileError = RemoveFileError_1.RemoveFileError;
119822  function edit(text) {
119823      if (text === void 0) { text = ""; }
119824      var editor = new ExternalEditor(text);
119825      editor.run();
119826      editor.cleanup();
119827      return editor.text;
119828  }
119829  exports.edit = edit;
119830  function editAsync(text, callback) {
119831      if (text === void 0) { text = ""; }
119832      var editor = new ExternalEditor(text);
119833      editor.runAsync(function (err, result) {
119834          if (err) {
119835              setImmediate(callback, err, null);
119836          }
119837          else {
119838              try {
119839                  editor.cleanup();
119840                  setImmediate(callback, null, result);
119841              }
119842              catch (cleanupError) {
119843                  setImmediate(callback, cleanupError, null);
119844              }
119845          }
119846      });
119847  }
119848  exports.editAsync = editAsync;
119849  var ExternalEditor = /** @class */ (function () {
119850      function ExternalEditor(text) {
119851          if (text === void 0) { text = ""; }
119852          this.text = "";
119853          this.text = text;
119854          this.determineEditor();
119855          this.createTemporaryFile();
119856      }
119857      ExternalEditor.splitStringBySpace = function (str) {
119858          var pieces = [];
119859          var currentString = "";
119860          for (var strIndex = 0; strIndex < str.length; strIndex++) {
119861              var currentLetter = str[strIndex];
119862              if (strIndex > 0 && currentLetter === " " && str[strIndex - 1] !== "\\" && currentString.length > 0) {
119863                  pieces.push(currentString);
119864                  currentString = "";
119865              }
119866              else {
119867                  currentString += currentLetter;
119868              }
119869          }
119870          if (currentString.length > 0) {
119871              pieces.push(currentString);
119872          }
119873          return pieces;
119874      };
119875      Object.defineProperty(ExternalEditor.prototype, "temp_file", {
119876          get: function () {
119877              console.log("DEPRECATED: temp_file. Use tempFile moving forward.");
119878              return this.tempFile;
119879          },
119880          enumerable: true,
119881          configurable: true
119882      });
119883      Object.defineProperty(ExternalEditor.prototype, "last_exit_status", {
119884          get: function () {
119885              console.log("DEPRECATED: last_exit_status. Use lastExitStatus moving forward.");
119886              return this.lastExitStatus;
119887          },
119888          enumerable: true,
119889          configurable: true
119890      });
119891      ExternalEditor.prototype.run = function () {
119892          this.launchEditor();
119893          this.readTemporaryFile();
119894          return this.text;
119895      };
119896      ExternalEditor.prototype.runAsync = function (callback) {
119897          var _this = this;
119898          try {
119899              this.launchEditorAsync(function () {
119900                  try {
119901                      _this.readTemporaryFile();
119902                      setImmediate(callback, null, _this.text);
119903                  }
119904                  catch (readError) {
119905                      setImmediate(callback, readError, null);
119906                  }
119907              });
119908          }
119909          catch (launchError) {
119910              setImmediate(callback, launchError, null);
119911          }
119912      };
119913      ExternalEditor.prototype.cleanup = function () {
119914          this.removeTemporaryFile();
119915      };
119916      ExternalEditor.prototype.determineEditor = function () {
119917          var editor = process.env.VISUAL ? process.env.VISUAL :
119918              process.env.EDITOR ? process.env.EDITOR :
119919                  /^win/.test(process.platform) ? "notepad" :
119920                      "vim";
119921          var editorOpts = ExternalEditor.splitStringBySpace(editor).map(function (piece) { return piece.replace("\\ ", " "); });
119922          var bin = editorOpts.shift();
119923          this.editor = { args: editorOpts, bin: bin };
119924      };
119925      ExternalEditor.prototype.createTemporaryFile = function () {
119926          try {
119927              this.tempFile = tmp_1.tmpNameSync({});
119928              fs_1.writeFileSync(this.tempFile, this.text, { encoding: "utf8" });
119929          }
119930          catch (createFileError) {
119931              throw new CreateFileError_1.CreateFileError(createFileError);
119932          }
119933      };
119934      ExternalEditor.prototype.readTemporaryFile = function () {
119935          try {
119936              var tempFileBuffer = fs_1.readFileSync(this.tempFile);
119937              if (tempFileBuffer.length === 0) {
119938                  this.text = "";
119939              }
119940              else {
119941                  var encoding = chardet_1.detect(tempFileBuffer).toString();
119942                  if (!iconv_lite_1.encodingExists(encoding)) {
119943                      // Probably a bad idea, but will at least prevent crashing
119944                      encoding = "utf8";
119945                  }
119946                  this.text = iconv_lite_1.decode(tempFileBuffer, encoding);
119947              }
119948          }
119949          catch (readFileError) {
119950              throw new ReadFileError_1.ReadFileError(readFileError);
119951          }
119952      };
119953      ExternalEditor.prototype.removeTemporaryFile = function () {
119954          try {
119955              fs_1.unlinkSync(this.tempFile);
119956          }
119957          catch (removeFileError) {
119958              throw new RemoveFileError_1.RemoveFileError(removeFileError);
119959          }
119960      };
119961      ExternalEditor.prototype.launchEditor = function () {
119962          try {
119963              var editorProcess = child_process_1.spawnSync(this.editor.bin, this.editor.args.concat([this.tempFile]), { stdio: "inherit" });
119964              this.lastExitStatus = editorProcess.status;
119965          }
119966          catch (launchError) {
119967              throw new LaunchEditorError_1.LaunchEditorError(launchError);
119968          }
119969      };
119970      ExternalEditor.prototype.launchEditorAsync = function (callback) {
119971          var _this = this;
119972          try {
119973              var editorProcess = child_process_1.spawn(this.editor.bin, this.editor.args.concat([this.tempFile]), { stdio: "inherit" });
119974              editorProcess.on("exit", function (code) {
119975                  _this.lastExitStatus = code;
119976                  setImmediate(callback);
119977              });
119978          }
119979          catch (launchError) {
119980              throw new LaunchEditorError_1.LaunchEditorError(launchError);
119981          }
119982      };
119983      return ExternalEditor;
119984  }());
119985  exports.ExternalEditor = ExternalEditor;
119986  
119987  
119988  /***/ }),
119989  /* 710 */
119990  /***/ (function(module, exports, __webpack_require__) {
119991  
119992  "use strict";
119993  
119994  var Buffer = __webpack_require__(15).Buffer;
119995  
119996  // Multibyte codec. In this scheme, a character is represented by 1 or more bytes.
119997  // Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.
119998  // To save memory and loading time, we read table files only when requested.
119999  
120000  exports._dbcs = DBCSCodec;
120001  
120002  var UNASSIGNED = -1,
120003      GB18030_CODE = -2,
120004      SEQ_START  = -10,
120005      NODE_START = -1000,
120006      UNASSIGNED_NODE = new Array(0x100),
120007      DEF_CHAR = -1;
120008  
120009  for (var i = 0; i < 0x100; i++)
120010      UNASSIGNED_NODE[i] = UNASSIGNED;
120011  
120012  
120013  // Class DBCSCodec reads and initializes mapping tables.
120014  function DBCSCodec(codecOptions, iconv) {
120015      this.encodingName = codecOptions.encodingName;
120016      if (!codecOptions)
120017          throw new Error("DBCS codec is called without the data.")
120018      if (!codecOptions.table)
120019          throw new Error("Encoding '" + this.encodingName + "' has no data.");
120020  
120021      // Load tables.
120022      var mappingTable = codecOptions.table();
120023  
120024  
120025      // Decode tables: MBCS -> Unicode.
120026  
120027      // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.
120028      // Trie root is decodeTables[0].
120029      // Values: >=  0 -> unicode character code. can be > 0xFFFF
120030      //         == UNASSIGNED -> unknown/unassigned sequence.
120031      //         == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.
120032      //         <= NODE_START -> index of the next node in our trie to process next byte.
120033      //         <= SEQ_START  -> index of the start of a character code sequence, in decodeTableSeq.
120034      this.decodeTables = [];
120035      this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.
120036  
120037      // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. 
120038      this.decodeTableSeq = [];
120039  
120040      // Actual mapping tables consist of chunks. Use them to fill up decode tables.
120041      for (var i = 0; i < mappingTable.length; i++)
120042          this._addDecodeChunk(mappingTable[i]);
120043  
120044      this.defaultCharUnicode = iconv.defaultCharUnicode;
120045  
120046      
120047      // Encode tables: Unicode -> DBCS.
120048  
120049      // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.
120050      // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.
120051      // Values: >=  0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).
120052      //         == UNASSIGNED -> no conversion found. Output a default char.
120053      //         <= SEQ_START  -> it's an index in encodeTableSeq, see below. The character starts a sequence.
120054      this.encodeTable = [];
120055      
120056      // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of
120057      // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key
120058      // means end of sequence (needed when one sequence is a strict subsequence of another).
120059      // Objects are kept separately from encodeTable to increase performance.
120060      this.encodeTableSeq = [];
120061  
120062      // Some chars can be decoded, but need not be encoded.
120063      var skipEncodeChars = {};
120064      if (codecOptions.encodeSkipVals)
120065          for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {
120066              var val = codecOptions.encodeSkipVals[i];
120067              if (typeof val === 'number')
120068                  skipEncodeChars[val] = true;
120069              else
120070                  for (var j = val.from; j <= val.to; j++)
120071                      skipEncodeChars[j] = true;
120072          }
120073          
120074      // Use decode trie to recursively fill out encode tables.
120075      this._fillEncodeTable(0, 0, skipEncodeChars);
120076  
120077      // Add more encoding pairs when needed.
120078      if (codecOptions.encodeAdd) {
120079          for (var uChar in codecOptions.encodeAdd)
120080              if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))
120081                  this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);
120082      }
120083  
120084      this.defCharSB  = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];
120085      if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];
120086      if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0);
120087  
120088  
120089      // Load & create GB18030 tables when needed.
120090      if (typeof codecOptions.gb18030 === 'function') {
120091          this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.
120092  
120093          // Add GB18030 decode tables.
120094          var thirdByteNodeIdx = this.decodeTables.length;
120095          var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0);
120096  
120097          var fourthByteNodeIdx = this.decodeTables.length;
120098          var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0);
120099  
120100          for (var i = 0x81; i <= 0xFE; i++) {
120101              var secondByteNodeIdx = NODE_START - this.decodeTables[0][i];
120102              var secondByteNode = this.decodeTables[secondByteNodeIdx];
120103              for (var j = 0x30; j <= 0x39; j++)
120104                  secondByteNode[j] = NODE_START - thirdByteNodeIdx;
120105          }
120106          for (var i = 0x81; i <= 0xFE; i++)
120107              thirdByteNode[i] = NODE_START - fourthByteNodeIdx;
120108          for (var i = 0x30; i <= 0x39; i++)
120109              fourthByteNode[i] = GB18030_CODE
120110      }        
120111  }
120112  
120113  DBCSCodec.prototype.encoder = DBCSEncoder;
120114  DBCSCodec.prototype.decoder = DBCSDecoder;
120115  
120116  // Decoder helpers
120117  DBCSCodec.prototype._getDecodeTrieNode = function(addr) {
120118      var bytes = [];
120119      for (; addr > 0; addr >>= 8)
120120          bytes.push(addr & 0xFF);
120121      if (bytes.length == 0)
120122          bytes.push(0);
120123  
120124      var node = this.decodeTables[0];
120125      for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.
120126          var val = node[bytes[i]];
120127  
120128          if (val == UNASSIGNED) { // Create new node.
120129              node[bytes[i]] = NODE_START - this.decodeTables.length;
120130              this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));
120131          }
120132          else if (val <= NODE_START) { // Existing node.
120133              node = this.decodeTables[NODE_START - val];
120134          }
120135          else
120136              throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16));
120137      }
120138      return node;
120139  }
120140  
120141  
120142  DBCSCodec.prototype._addDecodeChunk = function(chunk) {
120143      // First element of chunk is the hex mbcs code where we start.
120144      var curAddr = parseInt(chunk[0], 16);
120145  
120146      // Choose the decoding node where we'll write our chars.
120147      var writeTable = this._getDecodeTrieNode(curAddr);
120148      curAddr = curAddr & 0xFF;
120149  
120150      // Write all other elements of the chunk to the table.
120151      for (var k = 1; k < chunk.length; k++) {
120152          var part = chunk[k];
120153          if (typeof part === "string") { // String, write as-is.
120154              for (var l = 0; l < part.length;) {
120155                  var code = part.charCodeAt(l++);
120156                  if (0xD800 <= code && code < 0xDC00) { // Decode surrogate
120157                      var codeTrail = part.charCodeAt(l++);
120158                      if (0xDC00 <= codeTrail && codeTrail < 0xE000)
120159                          writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);
120160                      else
120161                          throw new Error("Incorrect surrogate pair in "  + this.encodingName + " at chunk " + chunk[0]);
120162                  }
120163                  else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)
120164                      var len = 0xFFF - code + 2;
120165                      var seq = [];
120166                      for (var m = 0; m < len; m++)
120167                          seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.
120168  
120169                      writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;
120170                      this.decodeTableSeq.push(seq);
120171                  }
120172                  else
120173                      writeTable[curAddr++] = code; // Basic char
120174              }
120175          } 
120176          else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character.
120177              var charCode = writeTable[curAddr - 1] + 1;
120178              for (var l = 0; l < part; l++)
120179                  writeTable[curAddr++] = charCode++;
120180          }
120181          else
120182              throw new Error("Incorrect type '" + typeof part + "' given in "  + this.encodingName + " at chunk " + chunk[0]);
120183      }
120184      if (curAddr > 0xFF)
120185          throw new Error("Incorrect chunk in "  + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr);
120186  }
120187  
120188  // Encoder helpers
120189  DBCSCodec.prototype._getEncodeBucket = function(uCode) {
120190      var high = uCode >> 8; // This could be > 0xFF because of astral characters.
120191      if (this.encodeTable[high] === undefined)
120192          this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.
120193      return this.encodeTable[high];
120194  }
120195  
120196  DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {
120197      var bucket = this._getEncodeBucket(uCode);
120198      var low = uCode & 0xFF;
120199      if (bucket[low] <= SEQ_START)
120200          this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.
120201      else if (bucket[low] == UNASSIGNED)
120202          bucket[low] = dbcsCode;
120203  }
120204  
120205  DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {
120206      
120207      // Get the root of character tree according to first character of the sequence.
120208      var uCode = seq[0];
120209      var bucket = this._getEncodeBucket(uCode);
120210      var low = uCode & 0xFF;
120211  
120212      var node;
120213      if (bucket[low] <= SEQ_START) {
120214          // There's already a sequence with  - use it.
120215          node = this.encodeTableSeq[SEQ_START-bucket[low]];
120216      }
120217      else {
120218          // There was no sequence object - allocate a new one.
120219          node = {};
120220          if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.
120221          bucket[low] = SEQ_START - this.encodeTableSeq.length;
120222          this.encodeTableSeq.push(node);
120223      }
120224  
120225      // Traverse the character tree, allocating new nodes as needed.
120226      for (var j = 1; j < seq.length-1; j++) {
120227          var oldVal = node[uCode];
120228          if (typeof oldVal === 'object')
120229              node = oldVal;
120230          else {
120231              node = node[uCode] = {}
120232              if (oldVal !== undefined)
120233                  node[DEF_CHAR] = oldVal
120234          }
120235      }
120236  
120237      // Set the leaf to given dbcsCode.
120238      uCode = seq[seq.length-1];
120239      node[uCode] = dbcsCode;
120240  }
120241  
120242  DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {
120243      var node = this.decodeTables[nodeIdx];
120244      for (var i = 0; i < 0x100; i++) {
120245          var uCode = node[i];
120246          var mbCode = prefix + i;
120247          if (skipEncodeChars[mbCode])
120248              continue;
120249  
120250          if (uCode >= 0)
120251              this._setEncodeChar(uCode, mbCode);
120252          else if (uCode <= NODE_START)
120253              this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars);
120254          else if (uCode <= SEQ_START)
120255              this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);
120256      }
120257  }
120258  
120259  
120260  
120261  // == Encoder ==================================================================
120262  
120263  function DBCSEncoder(options, codec) {
120264      // Encoder state
120265      this.leadSurrogate = -1;
120266      this.seqObj = undefined;
120267      
120268      // Static data
120269      this.encodeTable = codec.encodeTable;
120270      this.encodeTableSeq = codec.encodeTableSeq;
120271      this.defaultCharSingleByte = codec.defCharSB;
120272      this.gb18030 = codec.gb18030;
120273  }
120274  
120275  DBCSEncoder.prototype.write = function(str) {
120276      var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),
120277          leadSurrogate = this.leadSurrogate,
120278          seqObj = this.seqObj, nextChar = -1,
120279          i = 0, j = 0;
120280  
120281      while (true) {
120282          // 0. Get next character.
120283          if (nextChar === -1) {
120284              if (i == str.length) break;
120285              var uCode = str.charCodeAt(i++);
120286          }
120287          else {
120288              var uCode = nextChar;
120289              nextChar = -1;    
120290          }
120291  
120292          // 1. Handle surrogates.
120293          if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.
120294              if (uCode < 0xDC00) { // We've got lead surrogate.
120295                  if (leadSurrogate === -1) {
120296                      leadSurrogate = uCode;
120297                      continue;
120298                  } else {
120299                      leadSurrogate = uCode;
120300                      // Double lead surrogate found.
120301                      uCode = UNASSIGNED;
120302                  }
120303              } else { // We've got trail surrogate.
120304                  if (leadSurrogate !== -1) {
120305                      uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);
120306                      leadSurrogate = -1;
120307                  } else {
120308                      // Incomplete surrogate pair - only trail surrogate found.
120309                      uCode = UNASSIGNED;
120310                  }
120311                  
120312              }
120313          }
120314          else if (leadSurrogate !== -1) {
120315              // Incomplete surrogate pair - only lead surrogate found.
120316              nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.
120317              leadSurrogate = -1;
120318          }
120319  
120320          // 2. Convert uCode character.
120321          var dbcsCode = UNASSIGNED;
120322          if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence
120323              var resCode = seqObj[uCode];
120324              if (typeof resCode === 'object') { // Sequence continues.
120325                  seqObj = resCode;
120326                  continue;
120327  
120328              } else if (typeof resCode == 'number') { // Sequence finished. Write it.
120329                  dbcsCode = resCode;
120330  
120331              } else if (resCode == undefined) { // Current character is not part of the sequence.
120332  
120333                  // Try default character for this sequence
120334                  resCode = seqObj[DEF_CHAR];
120335                  if (resCode !== undefined) {
120336                      dbcsCode = resCode; // Found. Write it.
120337                      nextChar = uCode; // Current character will be written too in the next iteration.
120338  
120339                  } else {
120340                      // TODO: What if we have no default? (resCode == undefined)
120341                      // Then, we should write first char of the sequence as-is and try the rest recursively.
120342                      // Didn't do it for now because no encoding has this situation yet.
120343                      // Currently, just skip the sequence and write current char.
120344                  }
120345              }
120346              seqObj = undefined;
120347          }
120348          else if (uCode >= 0) {  // Regular character
120349              var subtable = this.encodeTable[uCode >> 8];
120350              if (subtable !== undefined)
120351                  dbcsCode = subtable[uCode & 0xFF];
120352              
120353              if (dbcsCode <= SEQ_START) { // Sequence start
120354                  seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];
120355                  continue;
120356              }
120357  
120358              if (dbcsCode == UNASSIGNED && this.gb18030) {
120359                  // Use GB18030 algorithm to find character(s) to write.
120360                  var idx = findIdx(this.gb18030.uChars, uCode);
120361                  if (idx != -1) {
120362                      var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);
120363                      newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;
120364                      newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;
120365                      newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;
120366                      newBuf[j++] = 0x30 + dbcsCode;
120367                      continue;
120368                  }
120369              }
120370          }
120371  
120372          // 3. Write dbcsCode character.
120373          if (dbcsCode === UNASSIGNED)
120374              dbcsCode = this.defaultCharSingleByte;
120375          
120376          if (dbcsCode < 0x100) {
120377              newBuf[j++] = dbcsCode;
120378          }
120379          else if (dbcsCode < 0x10000) {
120380              newBuf[j++] = dbcsCode >> 8;   // high byte
120381              newBuf[j++] = dbcsCode & 0xFF; // low byte
120382          }
120383          else {
120384              newBuf[j++] = dbcsCode >> 16;
120385              newBuf[j++] = (dbcsCode >> 8) & 0xFF;
120386              newBuf[j++] = dbcsCode & 0xFF;
120387          }
120388      }
120389  
120390      this.seqObj = seqObj;
120391      this.leadSurrogate = leadSurrogate;
120392      return newBuf.slice(0, j);
120393  }
120394  
120395  DBCSEncoder.prototype.end = function() {
120396      if (this.leadSurrogate === -1 && this.seqObj === undefined)
120397          return; // All clean. Most often case.
120398  
120399      var newBuf = Buffer.alloc(10), j = 0;
120400  
120401      if (this.seqObj) { // We're in the sequence.
120402          var dbcsCode = this.seqObj[DEF_CHAR];
120403          if (dbcsCode !== undefined) { // Write beginning of the sequence.
120404              if (dbcsCode < 0x100) {
120405                  newBuf[j++] = dbcsCode;
120406              }
120407              else {
120408                  newBuf[j++] = dbcsCode >> 8;   // high byte
120409                  newBuf[j++] = dbcsCode & 0xFF; // low byte
120410              }
120411          } else {
120412              // See todo above.
120413          }
120414          this.seqObj = undefined;
120415      }
120416  
120417      if (this.leadSurrogate !== -1) {
120418          // Incomplete surrogate pair - only lead surrogate found.
120419          newBuf[j++] = this.defaultCharSingleByte;
120420          this.leadSurrogate = -1;
120421      }
120422      
120423      return newBuf.slice(0, j);
120424  }
120425  
120426  // Export for testing
120427  DBCSEncoder.prototype.findIdx = findIdx;
120428  
120429  
120430  // == Decoder ==================================================================
120431  
120432  function DBCSDecoder(options, codec) {
120433      // Decoder state
120434      this.nodeIdx = 0;
120435      this.prevBuf = Buffer.alloc(0);
120436  
120437      // Static data
120438      this.decodeTables = codec.decodeTables;
120439      this.decodeTableSeq = codec.decodeTableSeq;
120440      this.defaultCharUnicode = codec.defaultCharUnicode;
120441      this.gb18030 = codec.gb18030;
120442  }
120443  
120444  DBCSDecoder.prototype.write = function(buf) {
120445      var newBuf = Buffer.alloc(buf.length*2),
120446          nodeIdx = this.nodeIdx, 
120447          prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length,
120448          seqStart = -this.prevBuf.length, // idx of the start of current parsed sequence.
120449          uCode;
120450  
120451      if (prevBufOffset > 0) // Make prev buf overlap a little to make it easier to slice later.
120452          prevBuf = Buffer.concat([prevBuf, buf.slice(0, 10)]);
120453      
120454      for (var i = 0, j = 0; i < buf.length; i++) {
120455          var curByte = (i >= 0) ? buf[i] : prevBuf[i + prevBufOffset];
120456  
120457          // Lookup in current trie node.
120458          var uCode = this.decodeTables[nodeIdx][curByte];
120459  
120460          if (uCode >= 0) { 
120461              // Normal character, just use it.
120462          }
120463          else if (uCode === UNASSIGNED) { // Unknown char.
120464              // TODO: Callback with seq.
120465              //var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);
120466              i = seqStart; // Try to parse again, after skipping first byte of the sequence ('i' will be incremented by 'for' cycle).
120467              uCode = this.defaultCharUnicode.charCodeAt(0);
120468          }
120469          else if (uCode === GB18030_CODE) {
120470              var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);
120471              var ptr = (curSeq[0]-0x81)*12600 + (curSeq[1]-0x30)*1260 + (curSeq[2]-0x81)*10 + (curSeq[3]-0x30);
120472              var idx = findIdx(this.gb18030.gbChars, ptr);
120473              uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];
120474          }
120475          else if (uCode <= NODE_START) { // Go to next trie node.
120476              nodeIdx = NODE_START - uCode;
120477              continue;
120478          }
120479          else if (uCode <= SEQ_START) { // Output a sequence of chars.
120480              var seq = this.decodeTableSeq[SEQ_START - uCode];
120481              for (var k = 0; k < seq.length - 1; k++) {
120482                  uCode = seq[k];
120483                  newBuf[j++] = uCode & 0xFF;
120484                  newBuf[j++] = uCode >> 8;
120485              }
120486              uCode = seq[seq.length-1];
120487          }
120488          else
120489              throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte);
120490  
120491          // Write the character to buffer, handling higher planes using surrogate pair.
120492          if (uCode > 0xFFFF) { 
120493              uCode -= 0x10000;
120494              var uCodeLead = 0xD800 + Math.floor(uCode / 0x400);
120495              newBuf[j++] = uCodeLead & 0xFF;
120496              newBuf[j++] = uCodeLead >> 8;
120497  
120498              uCode = 0xDC00 + uCode % 0x400;
120499          }
120500          newBuf[j++] = uCode & 0xFF;
120501          newBuf[j++] = uCode >> 8;
120502  
120503          // Reset trie node.
120504          nodeIdx = 0; seqStart = i+1;
120505      }
120506  
120507      this.nodeIdx = nodeIdx;
120508      this.prevBuf = (seqStart >= 0) ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset);
120509      return newBuf.slice(0, j).toString('ucs2');
120510  }
120511  
120512  DBCSDecoder.prototype.end = function() {
120513      var ret = '';
120514  
120515      // Try to parse all remaining chars.
120516      while (this.prevBuf.length > 0) {
120517          // Skip 1 character in the buffer.
120518          ret += this.defaultCharUnicode;
120519          var buf = this.prevBuf.slice(1);
120520  
120521          // Parse remaining as usual.
120522          this.prevBuf = Buffer.alloc(0);
120523          this.nodeIdx = 0;
120524          if (buf.length > 0)
120525              ret += this.write(buf);
120526      }
120527  
120528      this.nodeIdx = 0;
120529      return ret;
120530  }
120531  
120532  // Binary search for GB18030. Returns largest i such that table[i] <= val.
120533  function findIdx(table, val) {
120534      if (table[0] > val)
120535          return -1;
120536  
120537      var l = 0, r = table.length;
120538      while (l < r-1) { // always table[l] <= val < table[r]
120539          var mid = l + Math.floor((r-l+1)/2);
120540          if (table[mid] <= val)
120541              l = mid;
120542          else
120543              r = mid;
120544      }
120545      return l;
120546  }
120547  
120548  
120549  
120550  /***/ }),
120551  /* 711 */
120552  /***/ (function(module, exports, __webpack_require__) {
120553  
120554  "use strict";
120555  
120556  
120557  // Description of supported double byte encodings and aliases.
120558  // Tables are not require()-d until they are needed to speed up library load.
120559  // require()-s are direct to support Browserify.
120560  
120561  module.exports = {
120562      
120563      // == Japanese/ShiftJIS ====================================================
120564      // All japanese encodings are based on JIS X set of standards:
120565      // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.
120566      // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. 
120567      //              Has several variations in 1978, 1983, 1990 and 1997.
120568      // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.
120569      // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.
120570      //              2 planes, first is superset of 0208, second - revised 0212.
120571      //              Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)
120572  
120573      // Byte encodings are:
120574      //  * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte
120575      //               encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.
120576      //               Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.
120577      //  * EUC-JP:    Up to 3 bytes per character. Used mostly on *nixes.
120578      //               0x00-0x7F       - lower part of 0201
120579      //               0x8E, 0xA1-0xDF - upper part of 0201
120580      //               (0xA1-0xFE)x2   - 0208 plane (94x94).
120581      //               0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).
120582      //  * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.
120583      //               Used as-is in ISO2022 family.
120584      //  * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, 
120585      //                0201-1976 Roman, 0208-1978, 0208-1983.
120586      //  * ISO2022-JP-1: Adds esc seq for 0212-1990.
120587      //  * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.
120588      //  * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.
120589      //  * ISO2022-JP-2004: Adds 0213-2004 Plane 1.
120590      //
120591      // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.
120592      //
120593      // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html
120594  
120595      'shiftjis': {
120596          type: '_dbcs',
120597          table: function() { return __webpack_require__(721) },
120598          encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E},
120599          encodeSkipVals: [{from: 0xED40, to: 0xF940}],
120600      },
120601      'csshiftjis': 'shiftjis',
120602      'mskanji': 'shiftjis',
120603      'sjis': 'shiftjis',
120604      'windows31j': 'shiftjis',
120605      'ms31j': 'shiftjis',
120606      'xsjis': 'shiftjis',
120607      'windows932': 'shiftjis',
120608      'ms932': 'shiftjis',
120609      '932': 'shiftjis',
120610      'cp932': 'shiftjis',
120611  
120612      'eucjp': {
120613          type: '_dbcs',
120614          table: function() { return __webpack_require__(719) },
120615          encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E},
120616      },
120617  
120618      // TODO: KDDI extension to Shift_JIS
120619      // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.
120620      // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.
120621  
120622  
120623      // == Chinese/GBK ==========================================================
120624      // http://en.wikipedia.org/wiki/GBK
120625      // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder
120626  
120627      // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936
120628      'gb2312': 'cp936',
120629      'gb231280': 'cp936',
120630      'gb23121980': 'cp936',
120631      'csgb2312': 'cp936',
120632      'csiso58gb231280': 'cp936',
120633      'euccn': 'cp936',
120634  
120635      // Microsoft's CP936 is a subset and approximation of GBK.
120636      'windows936': 'cp936',
120637      'ms936': 'cp936',
120638      '936': 'cp936',
120639      'cp936': {
120640          type: '_dbcs',
120641          table: function() { return __webpack_require__(277) },
120642      },
120643  
120644      // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.
120645      'gbk': {
120646          type: '_dbcs',
120647          table: function() { return __webpack_require__(277).concat(__webpack_require__(396)) },
120648      },
120649      'xgbk': 'gbk',
120650      'isoir58': 'gbk',
120651  
120652      // GB18030 is an algorithmic extension of GBK.
120653      // Main source: https://www.w3.org/TR/encoding/#gbk-encoder
120654      // http://icu-project.org/docs/papers/gb18030.html
120655      // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml
120656      // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0
120657      'gb18030': {
120658          type: '_dbcs',
120659          table: function() { return __webpack_require__(277).concat(__webpack_require__(396)) },
120660          gb18030: function() { return __webpack_require__(720) },
120661          encodeSkipVals: [0x80],
120662          encodeAdd: {'€': 0xA2E3},
120663      },
120664  
120665      'chinese': 'gb18030',
120666  
120667  
120668      // == Korean ===============================================================
120669      // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.
120670      'windows949': 'cp949',
120671      'ms949': 'cp949',
120672      '949': 'cp949',
120673      'cp949': {
120674          type: '_dbcs',
120675          table: function() { return __webpack_require__(718) },
120676      },
120677  
120678      'cseuckr': 'cp949',
120679      'csksc56011987': 'cp949',
120680      'euckr': 'cp949',
120681      'isoir149': 'cp949',
120682      'korean': 'cp949',
120683      'ksc56011987': 'cp949',
120684      'ksc56011989': 'cp949',
120685      'ksc5601': 'cp949',
120686  
120687  
120688      // == Big5/Taiwan/Hong Kong ================================================
120689      // There are lots of tables for Big5 and cp950. Please see the following links for history:
120690      // http://moztw.org/docs/big5/  http://www.haible.de/bruno/charsets/conversion-tables/Big5.html
120691      // Variations, in roughly number of defined chars:
120692      //  * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT
120693      //  * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/
120694      //  * Big5-2003 (Taiwan standard) almost superset of cp950.
120695      //  * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.
120696      //  * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. 
120697      //    many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.
120698      //    Plus, it has 4 combining sequences.
120699      //    Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299
120700      //    because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.
120701      //    Implementations are not consistent within browsers; sometimes labeled as just big5.
120702      //    MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.
120703      //    Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31
120704      //    In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.
120705      //    Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt
120706      //                   http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt
120707      // 
120708      // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder
120709      // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.
120710  
120711      'windows950': 'cp950',
120712      'ms950': 'cp950',
120713      '950': 'cp950',
120714      'cp950': {
120715          type: '_dbcs',
120716          table: function() { return __webpack_require__(395) },
120717      },
120718  
120719      // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.
120720      'big5': 'big5hkscs',
120721      'big5hkscs': {
120722          type: '_dbcs',
120723          table: function() { return __webpack_require__(395).concat(__webpack_require__(717)) },
120724          encodeSkipVals: [0xa2cc],
120725      },
120726  
120727      'cnbig5': 'big5hkscs',
120728      'csbig5': 'big5hkscs',
120729      'xxbig5': 'big5hkscs',
120730  };
120731  
120732  
120733  /***/ }),
120734  /* 712 */
120735  /***/ (function(module, exports, __webpack_require__) {
120736  
120737  "use strict";
120738  
120739  
120740  // Update this array if you add/rename/remove files in this directory.
120741  // We support Browserify by skipping automatic module discovery and requiring modules directly.
120742  var modules = [
120743      __webpack_require__(713),
120744      __webpack_require__(722),
120745      __webpack_require__(723),
120746      __webpack_require__(714),
120747      __webpack_require__(716),
120748      __webpack_require__(715),
120749      __webpack_require__(710),
120750      __webpack_require__(711),
120751  ];
120752  
120753  // Put all encoding/alias/codec definitions to single object and export it. 
120754  for (var i = 0; i < modules.length; i++) {
120755      var module = modules[i];
120756      for (var enc in module)
120757          if (Object.prototype.hasOwnProperty.call(module, enc))
120758              exports[enc] = module[enc];
120759  }
120760  
120761  
120762  /***/ }),
120763  /* 713 */
120764  /***/ (function(module, exports, __webpack_require__) {
120765  
120766  "use strict";
120767  
120768  var Buffer = __webpack_require__(15).Buffer;
120769  
120770  // Export Node.js internal encodings.
120771  
120772  module.exports = {
120773      // Encodings
120774      utf8:   { type: "_internal", bomAware: true},
120775      cesu8:  { type: "_internal", bomAware: true},
120776      unicode11utf8: "utf8",
120777  
120778      ucs2:   { type: "_internal", bomAware: true},
120779      utf16le: "ucs2",
120780  
120781      binary: { type: "_internal" },
120782      base64: { type: "_internal" },
120783      hex:    { type: "_internal" },
120784  
120785      // Codec.
120786      _internal: InternalCodec,
120787  };
120788  
120789  //------------------------------------------------------------------------------
120790  
120791  function InternalCodec(codecOptions, iconv) {
120792      this.enc = codecOptions.encodingName;
120793      this.bomAware = codecOptions.bomAware;
120794  
120795      if (this.enc === "base64")
120796          this.encoder = InternalEncoderBase64;
120797      else if (this.enc === "cesu8") {
120798          this.enc = "utf8"; // Use utf8 for decoding.
120799          this.encoder = InternalEncoderCesu8;
120800  
120801          // Add decoder for versions of Node not supporting CESU-8
120802          if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') {
120803              this.decoder = InternalDecoderCesu8;
120804              this.defaultCharUnicode = iconv.defaultCharUnicode;
120805          }
120806      }
120807  }
120808  
120809  InternalCodec.prototype.encoder = InternalEncoder;
120810  InternalCodec.prototype.decoder = InternalDecoder;
120811  
120812  //------------------------------------------------------------------------------
120813  
120814  // We use node.js internal decoder. Its signature is the same as ours.
120815  var StringDecoder = __webpack_require__(333).StringDecoder;
120816  
120817  if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.
120818      StringDecoder.prototype.end = function() {};
120819  
120820  
120821  function InternalDecoder(options, codec) {
120822      StringDecoder.call(this, codec.enc);
120823  }
120824  
120825  InternalDecoder.prototype = StringDecoder.prototype;
120826  
120827  
120828  //------------------------------------------------------------------------------
120829  // Encoder is mostly trivial
120830  
120831  function InternalEncoder(options, codec) {
120832      this.enc = codec.enc;
120833  }
120834  
120835  InternalEncoder.prototype.write = function(str) {
120836      return Buffer.from(str, this.enc);
120837  }
120838  
120839  InternalEncoder.prototype.end = function() {
120840  }
120841  
120842  
120843  //------------------------------------------------------------------------------
120844  // Except base64 encoder, which must keep its state.
120845  
120846  function InternalEncoderBase64(options, codec) {
120847      this.prevStr = '';
120848  }
120849  
120850  InternalEncoderBase64.prototype.write = function(str) {
120851      str = this.prevStr + str;
120852      var completeQuads = str.length - (str.length % 4);
120853      this.prevStr = str.slice(completeQuads);
120854      str = str.slice(0, completeQuads);
120855  
120856      return Buffer.from(str, "base64");
120857  }
120858  
120859  InternalEncoderBase64.prototype.end = function() {
120860      return Buffer.from(this.prevStr, "base64");
120861  }
120862  
120863  
120864  //------------------------------------------------------------------------------
120865  // CESU-8 encoder is also special.
120866  
120867  function InternalEncoderCesu8(options, codec) {
120868  }
120869  
120870  InternalEncoderCesu8.prototype.write = function(str) {
120871      var buf = Buffer.alloc(str.length * 3), bufIdx = 0;
120872      for (var i = 0; i < str.length; i++) {
120873          var charCode = str.charCodeAt(i);
120874          // Naive implementation, but it works because CESU-8 is especially easy
120875          // to convert from UTF-16 (which all JS strings are encoded in).
120876          if (charCode < 0x80)
120877              buf[bufIdx++] = charCode;
120878          else if (charCode < 0x800) {
120879              buf[bufIdx++] = 0xC0 + (charCode >>> 6);
120880              buf[bufIdx++] = 0x80 + (charCode & 0x3f);
120881          }
120882          else { // charCode will always be < 0x10000 in javascript.
120883              buf[bufIdx++] = 0xE0 + (charCode >>> 12);
120884              buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);
120885              buf[bufIdx++] = 0x80 + (charCode & 0x3f);
120886          }
120887      }
120888      return buf.slice(0, bufIdx);
120889  }
120890  
120891  InternalEncoderCesu8.prototype.end = function() {
120892  }
120893  
120894  //------------------------------------------------------------------------------
120895  // CESU-8 decoder is not implemented in Node v4.0+
120896  
120897  function InternalDecoderCesu8(options, codec) {
120898      this.acc = 0;
120899      this.contBytes = 0;
120900      this.accBytes = 0;
120901      this.defaultCharUnicode = codec.defaultCharUnicode;
120902  }
120903  
120904  InternalDecoderCesu8.prototype.write = function(buf) {
120905      var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, 
120906          res = '';
120907      for (var i = 0; i < buf.length; i++) {
120908          var curByte = buf[i];
120909          if ((curByte & 0xC0) !== 0x80) { // Leading byte
120910              if (contBytes > 0) { // Previous code is invalid
120911                  res += this.defaultCharUnicode;
120912                  contBytes = 0;
120913              }
120914  
120915              if (curByte < 0x80) { // Single-byte code
120916                  res += String.fromCharCode(curByte);
120917              } else if (curByte < 0xE0) { // Two-byte code
120918                  acc = curByte & 0x1F;
120919                  contBytes = 1; accBytes = 1;
120920              } else if (curByte < 0xF0) { // Three-byte code
120921                  acc = curByte & 0x0F;
120922                  contBytes = 2; accBytes = 1;
120923              } else { // Four or more are not supported for CESU-8.
120924                  res += this.defaultCharUnicode;
120925              }
120926          } else { // Continuation byte
120927              if (contBytes > 0) { // We're waiting for it.
120928                  acc = (acc << 6) | (curByte & 0x3f);
120929                  contBytes--; accBytes++;
120930                  if (contBytes === 0) {
120931                      // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)
120932                      if (accBytes === 2 && acc < 0x80 && acc > 0)
120933                          res += this.defaultCharUnicode;
120934                      else if (accBytes === 3 && acc < 0x800)
120935                          res += this.defaultCharUnicode;
120936                      else
120937                          // Actually add character.
120938                          res += String.fromCharCode(acc);
120939                  }
120940              } else { // Unexpected continuation byte
120941                  res += this.defaultCharUnicode;
120942              }
120943          }
120944      }
120945      this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;
120946      return res;
120947  }
120948  
120949  InternalDecoderCesu8.prototype.end = function() {
120950      var res = 0;
120951      if (this.contBytes > 0)
120952          res += this.defaultCharUnicode;
120953      return res;
120954  }
120955  
120956  
120957  /***/ }),
120958  /* 714 */
120959  /***/ (function(module, exports, __webpack_require__) {
120960  
120961  "use strict";
120962  
120963  var Buffer = __webpack_require__(15).Buffer;
120964  
120965  // Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that
120966  // correspond to encoded bytes (if 128 - then lower half is ASCII). 
120967  
120968  exports._sbcs = SBCSCodec;
120969  function SBCSCodec(codecOptions, iconv) {
120970      if (!codecOptions)
120971          throw new Error("SBCS codec is called without the data.")
120972      
120973      // Prepare char buffer for decoding.
120974      if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))
120975          throw new Error("Encoding '"+codecOptions.type+"' has incorrect 'chars' (must be of len 128 or 256)");
120976      
120977      if (codecOptions.chars.length === 128) {
120978          var asciiString = "";
120979          for (var i = 0; i < 128; i++)
120980              asciiString += String.fromCharCode(i);
120981          codecOptions.chars = asciiString + codecOptions.chars;
120982      }
120983  
120984      this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');
120985      
120986      // Encoding buffer.
120987      var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));
120988  
120989      for (var i = 0; i < codecOptions.chars.length; i++)
120990          encodeBuf[codecOptions.chars.charCodeAt(i)] = i;
120991  
120992      this.encodeBuf = encodeBuf;
120993  }
120994  
120995  SBCSCodec.prototype.encoder = SBCSEncoder;
120996  SBCSCodec.prototype.decoder = SBCSDecoder;
120997  
120998  
120999  function SBCSEncoder(options, codec) {
121000      this.encodeBuf = codec.encodeBuf;
121001  }
121002  
121003  SBCSEncoder.prototype.write = function(str) {
121004      var buf = Buffer.alloc(str.length);
121005      for (var i = 0; i < str.length; i++)
121006          buf[i] = this.encodeBuf[str.charCodeAt(i)];
121007      
121008      return buf;
121009  }
121010  
121011  SBCSEncoder.prototype.end = function() {
121012  }
121013  
121014  
121015  function SBCSDecoder(options, codec) {
121016      this.decodeBuf = codec.decodeBuf;
121017  }
121018  
121019  SBCSDecoder.prototype.write = function(buf) {
121020      // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.
121021      var decodeBuf = this.decodeBuf;
121022      var newBuf = Buffer.alloc(buf.length*2);
121023      var idx1 = 0, idx2 = 0;
121024      for (var i = 0; i < buf.length; i++) {
121025          idx1 = buf[i]*2; idx2 = i*2;
121026          newBuf[idx2] = decodeBuf[idx1];
121027          newBuf[idx2+1] = decodeBuf[idx1+1];
121028      }
121029      return newBuf.toString('ucs2');
121030  }
121031  
121032  SBCSDecoder.prototype.end = function() {
121033  }
121034  
121035  
121036  /***/ }),
121037  /* 715 */
121038  /***/ (function(module, exports, __webpack_require__) {
121039  
121040  "use strict";
121041  
121042  
121043  // Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.
121044  module.exports = {
121045    "437": "cp437",
121046    "737": "cp737",
121047    "775": "cp775",
121048    "850": "cp850",
121049    "852": "cp852",
121050    "855": "cp855",
121051    "856": "cp856",
121052    "857": "cp857",
121053    "858": "cp858",
121054    "860": "cp860",
121055    "861": "cp861",
121056    "862": "cp862",
121057    "863": "cp863",
121058    "864": "cp864",
121059    "865": "cp865",
121060    "866": "cp866",
121061    "869": "cp869",
121062    "874": "windows874",
121063    "922": "cp922",
121064    "1046": "cp1046",
121065    "1124": "cp1124",
121066    "1125": "cp1125",
121067    "1129": "cp1129",
121068    "1133": "cp1133",
121069    "1161": "cp1161",
121070    "1162": "cp1162",
121071    "1163": "cp1163",
121072    "1250": "windows1250",
121073    "1251": "windows1251",
121074    "1252": "windows1252",
121075    "1253": "windows1253",
121076    "1254": "windows1254",
121077    "1255": "windows1255",
121078    "1256": "windows1256",
121079    "1257": "windows1257",
121080    "1258": "windows1258",
121081    "28591": "iso88591",
121082    "28592": "iso88592",
121083    "28593": "iso88593",
121084    "28594": "iso88594",
121085    "28595": "iso88595",
121086    "28596": "iso88596",
121087    "28597": "iso88597",
121088    "28598": "iso88598",
121089    "28599": "iso88599",
121090    "28600": "iso885910",
121091    "28601": "iso885911",
121092    "28603": "iso885913",
121093    "28604": "iso885914",
121094    "28605": "iso885915",
121095    "28606": "iso885916",
121096    "windows874": {
121097      "type": "_sbcs",
121098      "chars": "€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
121099    },
121100    "win874": "windows874",
121101    "cp874": "windows874",
121102    "windows1250": {
121103      "type": "_sbcs",
121104      "chars": "€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"
121105    },
121106    "win1250": "windows1250",
121107    "cp1250": "windows1250",
121108    "windows1251": {
121109      "type": "_sbcs",
121110      "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
121111    },
121112    "win1251": "windows1251",
121113    "cp1251": "windows1251",
121114    "windows1252": {
121115      "type": "_sbcs",
121116      "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
121117    },
121118    "win1252": "windows1252",
121119    "cp1252": "windows1252",
121120    "windows1253": {
121121      "type": "_sbcs",
121122      "chars": "€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"
121123    },
121124    "win1253": "windows1253",
121125    "cp1253": "windows1253",
121126    "windows1254": {
121127      "type": "_sbcs",
121128      "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"
121129    },
121130    "win1254": "windows1254",
121131    "cp1254": "windows1254",
121132    "windows1255": {
121133      "type": "_sbcs",
121134      "chars": "€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"
121135    },
121136    "win1255": "windows1255",
121137    "cp1255": "windows1255",
121138    "windows1256": {
121139      "type": "_sbcs",
121140      "chars": "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے"
121141    },
121142    "win1256": "windows1256",
121143    "cp1256": "windows1256",
121144    "windows1257": {
121145      "type": "_sbcs",
121146      "chars": "€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙"
121147    },
121148    "win1257": "windows1257",
121149    "cp1257": "windows1257",
121150    "windows1258": {
121151      "type": "_sbcs",
121152      "chars": "€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
121153    },
121154    "win1258": "windows1258",
121155    "cp1258": "windows1258",
121156    "iso88591": {
121157      "type": "_sbcs",
121158      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
121159    },
121160    "cp28591": "iso88591",
121161    "iso88592": {
121162      "type": "_sbcs",
121163      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"
121164    },
121165    "cp28592": "iso88592",
121166    "iso88593": {
121167      "type": "_sbcs",
121168      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�ݰħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙"
121169    },
121170    "cp28593": "iso88593",
121171    "iso88594": {
121172      "type": "_sbcs",
121173      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĸŖ¤Ĩϧ¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙"
121174    },
121175    "cp28594": "iso88594",
121176    "iso88595": {
121177      "type": "_sbcs",
121178      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ"
121179    },
121180    "cp28595": "iso88595",
121181    "iso88596": {
121182      "type": "_sbcs",
121183      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������"
121184    },
121185    "cp28596": "iso88596",
121186    "iso88597": {
121187      "type": "_sbcs",
121188      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"
121189    },
121190    "cp28597": "iso88597",
121191    "iso88598": {
121192      "type": "_sbcs",
121193      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"
121194    },
121195    "cp28598": "iso88598",
121196    "iso88599": {
121197      "type": "_sbcs",
121198      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"
121199    },
121200    "cp28599": "iso88599",
121201    "iso885910": {
121202      "type": "_sbcs",
121203      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨͧĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ"
121204    },
121205    "cp28600": "iso885910",
121206    "iso885911": {
121207      "type": "_sbcs",
121208      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
121209    },
121210    "cp28601": "iso885911",
121211    "iso885913": {
121212      "type": "_sbcs",
121213      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’"
121214    },
121215    "cp28603": "iso885913",
121216    "iso885914": {
121217      "type": "_sbcs",
121218      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ"
121219    },
121220    "cp28604": "iso885914",
121221    "iso885915": {
121222      "type": "_sbcs",
121223      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
121224    },
121225    "cp28605": "iso885915",
121226    "iso885916": {
121227      "type": "_sbcs",
121228      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Чš©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ"
121229    },
121230    "cp28606": "iso885916",
121231    "cp437": {
121232      "type": "_sbcs",
121233      "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
121234    },
121235    "ibm437": "cp437",
121236    "csibm437": "cp437",
121237    "cp737": {
121238      "type": "_sbcs",
121239      "chars": "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ "
121240    },
121241    "ibm737": "cp737",
121242    "csibm737": "cp737",
121243    "cp775": {
121244      "type": "_sbcs",
121245      "chars": "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ "
121246    },
121247    "ibm775": "cp775",
121248    "csibm775": "cp775",
121249    "cp850": {
121250      "type": "_sbcs",
121251      "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ "
121252    },
121253    "ibm850": "cp850",
121254    "csibm850": "cp850",
121255    "cp852": {
121256      "type": "_sbcs",
121257      "chars": "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ "
121258    },
121259    "ibm852": "cp852",
121260    "csibm852": "cp852",
121261    "cp855": {
121262      "type": "_sbcs",
121263      "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ "
121264    },
121265    "ibm855": "cp855",
121266    "csibm855": "cp855",
121267    "cp856": {
121268      "type": "_sbcs",
121269      "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ "
121270    },
121271    "ibm856": "cp856",
121272    "csibm856": "cp856",
121273    "cp857": {
121274      "type": "_sbcs",
121275      "chars": "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ "
121276    },
121277    "ibm857": "cp857",
121278    "csibm857": "cp857",
121279    "cp858": {
121280      "type": "_sbcs",
121281      "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ "
121282    },
121283    "ibm858": "cp858",
121284    "csibm858": "cp858",
121285    "cp860": {
121286      "type": "_sbcs",
121287      "chars": "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
121288    },
121289    "ibm860": "cp860",
121290    "csibm860": "cp860",
121291    "cp861": {
121292      "type": "_sbcs",
121293      "chars": "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
121294    },
121295    "ibm861": "cp861",
121296    "csibm861": "cp861",
121297    "cp862": {
121298      "type": "_sbcs",
121299      "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
121300    },
121301    "ibm862": "cp862",
121302    "csibm862": "cp862",
121303    "cp863": {
121304      "type": "_sbcs",
121305      "chars": "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
121306    },
121307    "ibm863": "cp863",
121308    "csibm863": "cp863",
121309    "cp864": {
121310      "type": "_sbcs",
121311      "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�"
121312    },
121313    "ibm864": "cp864",
121314    "csibm864": "cp864",
121315    "cp865": {
121316      "type": "_sbcs",
121317      "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
121318    },
121319    "ibm865": "cp865",
121320    "csibm865": "cp865",
121321    "cp866": {
121322      "type": "_sbcs",
121323      "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "
121324    },
121325    "ibm866": "cp866",
121326    "csibm866": "cp866",
121327    "cp869": {
121328      "type": "_sbcs",
121329      "chars": "������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ "
121330    },
121331    "ibm869": "cp869",
121332    "csibm869": "cp869",
121333    "cp922": {
121334      "type": "_sbcs",
121335      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"
121336    },
121337    "ibm922": "cp922",
121338    "csibm922": "cp922",
121339    "cp1046": {
121340      "type": "_sbcs",
121341      "chars": "ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�"
121342    },
121343    "ibm1046": "cp1046",
121344    "csibm1046": "cp1046",
121345    "cp1124": {
121346      "type": "_sbcs",
121347      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"
121348    },
121349    "ibm1124": "cp1124",
121350    "csibm1124": "cp1124",
121351    "cp1125": {
121352      "type": "_sbcs",
121353      "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "
121354    },
121355    "ibm1125": "cp1125",
121356    "csibm1125": "cp1125",
121357    "cp1129": {
121358      "type": "_sbcs",
121359      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
121360    },
121361    "ibm1129": "cp1129",
121362    "csibm1129": "cp1129",
121363    "cp1133": {
121364      "type": "_sbcs",
121365      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�"
121366    },
121367    "ibm1133": "cp1133",
121368    "csibm1133": "cp1133",
121369    "cp1161": {
121370      "type": "_sbcs",
121371      "chars": "��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "
121372    },
121373    "ibm1161": "cp1161",
121374    "csibm1161": "cp1161",
121375    "cp1162": {
121376      "type": "_sbcs",
121377      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
121378    },
121379    "ibm1162": "cp1162",
121380    "csibm1162": "cp1162",
121381    "cp1163": {
121382      "type": "_sbcs",
121383      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
121384    },
121385    "ibm1163": "cp1163",
121386    "csibm1163": "cp1163",
121387    "maccroatian": {
121388      "type": "_sbcs",
121389      "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"
121390    },
121391    "maccyrillic": {
121392      "type": "_sbcs",
121393      "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"
121394    },
121395    "macgreek": {
121396      "type": "_sbcs",
121397      "chars": "Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"
121398    },
121399    "maciceland": {
121400      "type": "_sbcs",
121401      "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
121402    },
121403    "macroman": {
121404      "type": "_sbcs",
121405      "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
121406    },
121407    "macromania": {
121408      "type": "_sbcs",
121409      "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
121410    },
121411    "macthai": {
121412      "type": "_sbcs",
121413      "chars": "«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����"
121414    },
121415    "macturkish": {
121416      "type": "_sbcs",
121417      "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"
121418    },
121419    "macukraine": {
121420      "type": "_sbcs",
121421      "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"
121422    },
121423    "koi8r": {
121424      "type": "_sbcs",
121425      "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
121426    },
121427    "koi8u": {
121428      "type": "_sbcs",
121429      "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
121430    },
121431    "koi8ru": {
121432      "type": "_sbcs",
121433      "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
121434    },
121435    "koi8t": {
121436      "type": "_sbcs",
121437      "chars": "қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
121438    },
121439    "armscii8": {
121440      "type": "_sbcs",
121441      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�"
121442    },
121443    "rk1048": {
121444      "type": "_sbcs",
121445      "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
121446    },
121447    "tcvn": {
121448      "type": "_sbcs",
121449      "chars": "\u0000ÚỤ\u0003ỪỬỮ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010ỨỰỲỶỸÝỴ\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ"
121450    },
121451    "georgianacademy": {
121452      "type": "_sbcs",
121453      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
121454    },
121455    "georgianps": {
121456      "type": "_sbcs",
121457      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
121458    },
121459    "pt154": {
121460      "type": "_sbcs",
121461      "chars": "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
121462    },
121463    "viscii": {
121464      "type": "_sbcs",
121465      "chars": "\u0000\u0001Ẳ\u0003\u0004ẴẪ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013Ỷ\u0015\u0016\u0017\u0018Ỹ\u001a\u001b\u001c\u001dỴ\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ"
121466    },
121467    "iso646cn": {
121468      "type": "_sbcs",
121469      "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"
121470    },
121471    "iso646jp": {
121472      "type": "_sbcs",
121473      "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"
121474    },
121475    "hproman8": {
121476      "type": "_sbcs",
121477      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�"
121478    },
121479    "macintosh": {
121480      "type": "_sbcs",
121481      "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
121482    },
121483    "ascii": {
121484      "type": "_sbcs",
121485      "chars": "��������������������������������������������������������������������������������������������������������������������������������"
121486    },
121487    "tis620": {
121488      "type": "_sbcs",
121489      "chars": "���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
121490    }
121491  }
121492  
121493  /***/ }),
121494  /* 716 */
121495  /***/ (function(module, exports, __webpack_require__) {
121496  
121497  "use strict";
121498  
121499  
121500  // Manually added data to be used by sbcs codec in addition to generated one.
121501  
121502  module.exports = {
121503      // Not supported by iconv, not sure why.
121504      "10029": "maccenteuro",
121505      "maccenteuro": {
121506          "type": "_sbcs",
121507          "chars": "ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ"
121508      },
121509  
121510      "808": "cp808",
121511      "ibm808": "cp808",
121512      "cp808": {
121513          "type": "_sbcs",
121514          "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ "
121515      },
121516  
121517      "mik": {
121518          "type": "_sbcs",
121519          "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
121520      },
121521  
121522      // Aliases of generated encodings.
121523      "ascii8bit": "ascii",
121524      "usascii": "ascii",
121525      "ansix34": "ascii",
121526      "ansix341968": "ascii",
121527      "ansix341986": "ascii",
121528      "csascii": "ascii",
121529      "cp367": "ascii",
121530      "ibm367": "ascii",
121531      "isoir6": "ascii",
121532      "iso646us": "ascii",
121533      "iso646irv": "ascii",
121534      "us": "ascii",
121535  
121536      "latin1": "iso88591",
121537      "latin2": "iso88592",
121538      "latin3": "iso88593",
121539      "latin4": "iso88594",
121540      "latin5": "iso88599",
121541      "latin6": "iso885910",
121542      "latin7": "iso885913",
121543      "latin8": "iso885914",
121544      "latin9": "iso885915",
121545      "latin10": "iso885916",
121546  
121547      "csisolatin1": "iso88591",
121548      "csisolatin2": "iso88592",
121549      "csisolatin3": "iso88593",
121550      "csisolatin4": "iso88594",
121551      "csisolatincyrillic": "iso88595",
121552      "csisolatinarabic": "iso88596",
121553      "csisolatingreek" : "iso88597",
121554      "csisolatinhebrew": "iso88598",
121555      "csisolatin5": "iso88599",
121556      "csisolatin6": "iso885910",
121557  
121558      "l1": "iso88591",
121559      "l2": "iso88592",
121560      "l3": "iso88593",
121561      "l4": "iso88594",
121562      "l5": "iso88599",
121563      "l6": "iso885910",
121564      "l7": "iso885913",
121565      "l8": "iso885914",
121566      "l9": "iso885915",
121567      "l10": "iso885916",
121568  
121569      "isoir14": "iso646jp",
121570      "isoir57": "iso646cn",
121571      "isoir100": "iso88591",
121572      "isoir101": "iso88592",
121573      "isoir109": "iso88593",
121574      "isoir110": "iso88594",
121575      "isoir144": "iso88595",
121576      "isoir127": "iso88596",
121577      "isoir126": "iso88597",
121578      "isoir138": "iso88598",
121579      "isoir148": "iso88599",
121580      "isoir157": "iso885910",
121581      "isoir166": "tis620",
121582      "isoir179": "iso885913",
121583      "isoir199": "iso885914",
121584      "isoir203": "iso885915",
121585      "isoir226": "iso885916",
121586  
121587      "cp819": "iso88591",
121588      "ibm819": "iso88591",
121589  
121590      "cyrillic": "iso88595",
121591  
121592      "arabic": "iso88596",
121593      "arabic8": "iso88596",
121594      "ecma114": "iso88596",
121595      "asmo708": "iso88596",
121596  
121597      "greek" : "iso88597",
121598      "greek8" : "iso88597",
121599      "ecma118" : "iso88597",
121600      "elot928" : "iso88597",
121601  
121602      "hebrew": "iso88598",
121603      "hebrew8": "iso88598",
121604  
121605      "turkish": "iso88599",
121606      "turkish8": "iso88599",
121607  
121608      "thai": "iso885911",
121609      "thai8": "iso885911",
121610  
121611      "celtic": "iso885914",
121612      "celtic8": "iso885914",
121613      "isoceltic": "iso885914",
121614  
121615      "tis6200": "tis620",
121616      "tis62025291": "tis620",
121617      "tis62025330": "tis620",
121618  
121619      "10000": "macroman",
121620      "10006": "macgreek",
121621      "10007": "maccyrillic",
121622      "10079": "maciceland",
121623      "10081": "macturkish",
121624  
121625      "cspc8codepage437": "cp437",
121626      "cspc775baltic": "cp775",
121627      "cspc850multilingual": "cp850",
121628      "cspcp852": "cp852",
121629      "cspc862latinhebrew": "cp862",
121630      "cpgr": "cp869",
121631  
121632      "msee": "cp1250",
121633      "mscyrl": "cp1251",
121634      "msansi": "cp1252",
121635      "msgreek": "cp1253",
121636      "msturk": "cp1254",
121637      "mshebr": "cp1255",
121638      "msarab": "cp1256",
121639      "winbaltrim": "cp1257",
121640  
121641      "cp20866": "koi8r",
121642      "20866": "koi8r",
121643      "ibm878": "koi8r",
121644      "cskoi8r": "koi8r",
121645  
121646      "cp21866": "koi8u",
121647      "21866": "koi8u",
121648      "ibm1168": "koi8u",
121649  
121650      "strk10482002": "rk1048",
121651  
121652      "tcvn5712": "tcvn",
121653      "tcvn57121": "tcvn",
121654  
121655      "gb198880": "iso646cn",
121656      "cn": "iso646cn",
121657  
121658      "csiso14jisc6220ro": "iso646jp",
121659      "jisc62201969ro": "iso646jp",
121660      "jp": "iso646jp",
121661  
121662      "cshproman8": "hproman8",
121663      "r8": "hproman8",
121664      "roman8": "hproman8",
121665      "xroman8": "hproman8",
121666      "ibm1051": "hproman8",
121667  
121668      "mac": "macintosh",
121669      "csmacintosh": "macintosh",
121670  };
121671  
121672  
121673  
121674  /***/ }),
121675  /* 717 */
121676  /***/ (function(module, exports) {
121677  
121678  module.exports = [["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"],["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"],["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"],["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"],["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"],["8940","𪎩𡅅"],["8943","攊"],["8946","丽滝鵎釟"],["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"],["89a1","琑糼緍楆竉刧"],["89ab","醌碸酞肼"],["89b0","贋胶𠧧"],["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"],["89c1","溚舾甙"],["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"],["8a40","𧶄唥"],["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"],["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"],["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"],["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"],["8aac","䠋𠆩㿺塳𢶍"],["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"],["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"],["8ac9","𪘁𠸉𢫏𢳉"],["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"],["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"],["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"],["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"],["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"],["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"],["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"],["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"],["8ca1","𣏹椙橃𣱣泿"],["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"],["8cc9","顨杫䉶圽"],["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"],["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"],["8d40","𠮟"],["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"],["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"],["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"],["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"],["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"],["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"],["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"],["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"],["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"],["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"],["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"],["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"],["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"],["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"],["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"],["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"],["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"],["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"],["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"],["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"],["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"],["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"],["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"],["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"],["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"],["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"],["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"],["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"],["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"],["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"],["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"],["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"],["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"],["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"],["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"],["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"],["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"],["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"],["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"],["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"],["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"],["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"],["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"],["9fae","酙隁酜"],["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"],["9fc1","𤤙盖鮝个𠳔莾衂"],["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"],["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"],["9fe7","毺蠘罸"],["9feb","嘠𪙊蹷齓"],["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"],["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"],["a055","𡠻𦸅"],["a058","詾𢔛"],["a05b","惽癧髗鵄鍮鮏蟵"],["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"],["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"],["a0a1","嵗𨯂迚𨸹"],["a0a6","僙𡵆礆匲阸𠼻䁥"],["a0ae","矾"],["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"],["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"],["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"],["a3c0","␀",31,"␡"],["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23],["c740","す",58,"ァアィイ"],["c7a1","ゥ",81,"А",5,"ЁЖ",4],["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"],["c8a1","龰冈龱𧘇"],["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"],["c8f5","ʃɐɛɔɵœøŋʊɪ"],["f9fe","■"],["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"],["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"],["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"],["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"],["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"],["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"],["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"],["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"],["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"],["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"]]
121679  
121680  /***/ }),
121681  /* 718 */
121682  /***/ (function(module, exports) {
121683  
121684  module.exports = [["0","\u0000",127],["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"],["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"],["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"],["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5],["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"],["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18],["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7],["8361","긝",18,"긲긳긵긶긹긻긼"],["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8],["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8],["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18],["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"],["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4],["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"],["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"],["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"],["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10],["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"],["8741","놞",9,"놩",15],["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"],["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4],["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4],["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"],["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"],["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"],["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"],["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15],["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"],["8a61","둧",4,"둭",18,"뒁뒂"],["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"],["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"],["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8],["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18],["8c41","똀",15,"똒똓똕똖똗똙",4],["8c61","똞",6,"똦",5,"똭",6,"똵",5],["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16],["8d41","뛃",16,"뛕",8],["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"],["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"],["8e41","랟랡",6,"랪랮",5,"랶랷랹",8],["8e61","럂",4,"럈럊",19],["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7],["8f41","뢅",7,"뢎",17],["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4],["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5],["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"],["9061","륾",5,"릆릈릋릌릏",15],["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"],["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5],["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5],["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6],["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"],["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4],["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"],["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"],["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8],["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"],["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8],["9461","봞",5,"봥",6,"봭",12],["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24],["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"],["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"],["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14],["9641","뺸",23,"뻒뻓"],["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8],["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44],["9741","뾃",16,"뾕",8],["9761","뾞",17,"뾱",7],["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"],["9841","쁀",16,"쁒",5,"쁙쁚쁛"],["9861","쁝쁞쁟쁡",6,"쁪",15],["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"],["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"],["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"],["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"],["9a41","숤숥숦숧숪숬숮숰숳숵",16],["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"],["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"],["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8],["9b61","쌳",17,"썆",7],["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"],["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5],["9c61","쏿",8,"쐉",6,"쐑",9],["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12],["9d41","쒪",13,"쒹쒺쒻쒽",8],["9d61","쓆",25],["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"],["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"],["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"],["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"],["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"],["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"],["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"],["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"],["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13],["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"],["a141","좥좦좧좩",18,"좾좿죀죁"],["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"],["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"],["a241","줐줒",5,"줙",18],["a261","줭",6,"줵",18],["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"],["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"],["a361","즑",6,"즚즜즞",16],["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"],["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"],["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12],["a481","쨦쨧쨨쨪",28,"ㄱ",93],["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"],["a561","쩫",17,"쩾",5,"쪅쪆"],["a581","쪇",16,"쪙",14,"ⅰ",9],["a5b0","Ⅰ",9],["a5c1","Α",16,"Σ",6],["a5e1","α",16,"σ",6],["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"],["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6],["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7],["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7],["a761","쬪",22,"쭂쭃쭄"],["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"],["a841","쭭",10,"쭺",14],["a861","쮉",18,"쮝",6],["a881","쮤",19,"쮹",11,"ÆÐªĦ"],["a8a6","IJ"],["a8a8","ĿŁØŒºÞŦŊ"],["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"],["a941","쯅",14,"쯕",10],["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18],["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"],["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"],["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"],["aa81","챳챴챶",29,"ぁ",82],["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"],["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5],["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85],["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"],["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4],["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25],["acd1","а",5,"ёж",25],["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7],["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"],["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"],["ae41","췆",5,"췍췎췏췑",16],["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4],["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"],["af41","츬츭츮츯츲츴츶",19],["af61","칊",13,"칚칛칝칞칢",5,"칪칬"],["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"],["b041","캚",5,"캢캦",5,"캮",12],["b061","캻",5,"컂",19],["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"],["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"],["b161","켥",6,"켮켲",5,"켹",11],["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"],["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"],["b261","쾎",18,"쾢",5,"쾩"],["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"],["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"],["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5],["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"],["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5],["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"],["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"],["b541","킕",14,"킦킧킩킪킫킭",5],["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4],["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"],["b641","턅",7,"턎",17],["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"],["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"],["b741","텮",13,"텽",6,"톅톆톇톉톊"],["b761","톋",20,"톢톣톥톦톧"],["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"],["b841","퇐",7,"퇙",17],["b861","퇫",8,"퇵퇶퇷퇹",13],["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"],["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"],["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"],["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"],["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"],["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5],["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"],["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"],["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"],["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"],["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"],["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"],["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"],["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"],["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13],["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"],["be41","퐸",7,"푁푂푃푅",14],["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"],["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"],["bf41","풞",10,"풪",14],["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"],["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"],["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5],["c061","픞",25],["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"],["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"],["c161","햌햍햎햏햑",19,"햦햧"],["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"],["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"],["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"],["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"],["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4],["c361","홢",4,"홨홪",5,"홲홳홵",11],["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"],["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"],["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4],["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"],["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"],["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4],["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"],["c641","힍힎힏힑",6,"힚힜힞",5],["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"],["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"],["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"],["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"],["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"],["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"],["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"],["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"],["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"],["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"],["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"],["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"],["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"],["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"],["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"],["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"],["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"],["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"],["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"],["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"],["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"],["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"],["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"],["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"],["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"],["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"],["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"],["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"],["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"],["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"],["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"],["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"],["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"],["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"],["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"],["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"],["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"],["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"],["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"],["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"],["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"],["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"],["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"],["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"],["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"],["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"],["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"],["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"],["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"],["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"],["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"],["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"],["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"],["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"],["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"]]
121685  
121686  /***/ }),
121687  /* 719 */
121688  /***/ (function(module, exports) {
121689  
121690  module.exports = [["0","\u0000",127],["8ea1","。",62],["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"],["a2a1","◆□■△▲▽▼※〒→←↑↓〓"],["a2ba","∈∋⊆⊇⊂⊃∪∩"],["a2ca","∧∨¬⇒⇔∀∃"],["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["a2f2","ʼn♯♭♪†‡¶"],["a2fe","◯"],["a3b0","0",9],["a3c1","A",25],["a3e1","a",25],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["ada1","①",19,"Ⅰ",9],["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"],["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"],["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"],["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"],["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"],["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"],["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"],["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"],["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"],["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"],["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"],["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"],["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"],["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"],["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"],["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"],["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"],["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"],["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"],["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"],["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"],["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"],["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"],["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"],["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"],["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"],["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"],["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"],["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"],["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"],["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"],["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"],["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"],["f4a1","堯槇遙瑤凜熙"],["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"],["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"],["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["fcf1","ⅰ",9,"¬¦'""],["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"],["8fa2c2","¡¦¿"],["8fa2eb","ºª©®™¤№"],["8fa6e1","ΆΈΉΊΪ"],["8fa6e7","Ό"],["8fa6e9","ΎΫ"],["8fa6ec","Ώ"],["8fa6f1","άέήίϊΐόςύϋΰώ"],["8fa7c2","Ђ",10,"ЎЏ"],["8fa7f2","ђ",10,"ўџ"],["8fa9a1","ÆĐ"],["8fa9a4","Ħ"],["8fa9a6","IJ"],["8fa9a8","ŁĿ"],["8fa9ab","ŊØŒ"],["8fa9af","ŦÞ"],["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"],["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"],["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"],["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"],["8fabbd","ġĥíìïîǐ"],["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"],["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"],["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"],["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"],["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"],["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"],["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"],["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"],["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"],["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"],["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"],["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"],["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"],["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"],["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"],["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"],["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"],["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"],["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"],["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"],["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"],["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"],["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"],["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"],["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"],["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"],["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"],["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"],["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"],["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"],["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"],["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"],["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"],["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"],["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"],["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5],["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"],["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"],["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"],["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"],["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"],["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"],["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"],["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"],["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"],["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"],["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"],["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"],["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"],["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"],["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"],["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"],["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"],["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"],["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"],["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"],["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"],["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"],["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4],["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"],["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"],["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"],["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"]]
121691  
121692  /***/ }),
121693  /* 720 */
121694  /***/ (function(module, exports) {
121695  
121696  module.exports = {"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]}
121697  
121698  /***/ }),
121699  /* 721 */
121700  /***/ (function(module, exports) {
121701  
121702  module.exports = [["0","\u0000",128],["a1","。",62],["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"],["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"],["81b8","∈∋⊆⊇⊂⊃∪∩"],["81c8","∧∨¬⇒⇔∀∃"],["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["81f0","ʼn♯♭♪†‡¶"],["81fc","◯"],["824f","0",9],["8260","A",25],["8281","a",25],["829f","ぁ",82],["8340","ァ",62],["8380","ム",22],["839f","Α",16,"Σ",6],["83bf","α",16,"σ",6],["8440","А",5,"ЁЖ",25],["8470","а",5,"ёж",7],["8480","о",17],["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["8740","①",19,"Ⅰ",9],["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["877e","㍻"],["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"],["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"],["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"],["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"],["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"],["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"],["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"],["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"],["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"],["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"],["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"],["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"],["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"],["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"],["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"],["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"],["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"],["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"],["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"],["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"],["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"],["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"],["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"],["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"],["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"],["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"],["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"],["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"],["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"],["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"],["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"],["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"],["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"],["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"],["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"],["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"],["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["eeef","ⅰ",9,"¬¦'""],["f040","",62],["f080","",124],["f140","",62],["f180","",124],["f240","",62],["f280","",124],["f340","",62],["f380","",124],["f440","",62],["f480","",124],["f540","",62],["f580","",124],["f640","",62],["f680","",124],["f740","",62],["f780","",124],["f840","",62],["f880","",124],["f940",""],["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"],["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"],["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"],["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"],["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"]]
121703  
121704  /***/ }),
121705  /* 722 */
121706  /***/ (function(module, exports, __webpack_require__) {
121707  
121708  "use strict";
121709  
121710  var Buffer = __webpack_require__(15).Buffer;
121711  
121712  // Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js
121713  
121714  // == UTF16-BE codec. ==========================================================
121715  
121716  exports.utf16be = Utf16BECodec;
121717  function Utf16BECodec() {
121718  }
121719  
121720  Utf16BECodec.prototype.encoder = Utf16BEEncoder;
121721  Utf16BECodec.prototype.decoder = Utf16BEDecoder;
121722  Utf16BECodec.prototype.bomAware = true;
121723  
121724  
121725  // -- Encoding
121726  
121727  function Utf16BEEncoder() {
121728  }
121729  
121730  Utf16BEEncoder.prototype.write = function(str) {
121731      var buf = Buffer.from(str, 'ucs2');
121732      for (var i = 0; i < buf.length; i += 2) {
121733          var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;
121734      }
121735      return buf;
121736  }
121737  
121738  Utf16BEEncoder.prototype.end = function() {
121739  }
121740  
121741  
121742  // -- Decoding
121743  
121744  function Utf16BEDecoder() {
121745      this.overflowByte = -1;
121746  }
121747  
121748  Utf16BEDecoder.prototype.write = function(buf) {
121749      if (buf.length == 0)
121750          return '';
121751  
121752      var buf2 = Buffer.alloc(buf.length + 1),
121753          i = 0, j = 0;
121754  
121755      if (this.overflowByte !== -1) {
121756          buf2[0] = buf[0];
121757          buf2[1] = this.overflowByte;
121758          i = 1; j = 2;
121759      }
121760  
121761      for (; i < buf.length-1; i += 2, j+= 2) {
121762          buf2[j] = buf[i+1];
121763          buf2[j+1] = buf[i];
121764      }
121765  
121766      this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;
121767  
121768      return buf2.slice(0, j).toString('ucs2');
121769  }
121770  
121771  Utf16BEDecoder.prototype.end = function() {
121772  }
121773  
121774  
121775  // == UTF-16 codec =============================================================
121776  // Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.
121777  // Defaults to UTF-16LE, as it's prevalent and default in Node.
121778  // http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le
121779  // Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});
121780  
121781  // Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).
121782  
121783  exports.utf16 = Utf16Codec;
121784  function Utf16Codec(codecOptions, iconv) {
121785      this.iconv = iconv;
121786  }
121787  
121788  Utf16Codec.prototype.encoder = Utf16Encoder;
121789  Utf16Codec.prototype.decoder = Utf16Decoder;
121790  
121791  
121792  // -- Encoding (pass-through)
121793  
121794  function Utf16Encoder(options, codec) {
121795      options = options || {};
121796      if (options.addBOM === undefined)
121797          options.addBOM = true;
121798      this.encoder = codec.iconv.getEncoder('utf-16le', options);
121799  }
121800  
121801  Utf16Encoder.prototype.write = function(str) {
121802      return this.encoder.write(str);
121803  }
121804  
121805  Utf16Encoder.prototype.end = function() {
121806      return this.encoder.end();
121807  }
121808  
121809  
121810  // -- Decoding
121811  
121812  function Utf16Decoder(options, codec) {
121813      this.decoder = null;
121814      this.initialBytes = [];
121815      this.initialBytesLen = 0;
121816  
121817      this.options = options || {};
121818      this.iconv = codec.iconv;
121819  }
121820  
121821  Utf16Decoder.prototype.write = function(buf) {
121822      if (!this.decoder) {
121823          // Codec is not chosen yet. Accumulate initial bytes.
121824          this.initialBytes.push(buf);
121825          this.initialBytesLen += buf.length;
121826          
121827          if (this.initialBytesLen < 16) // We need more bytes to use space heuristic (see below)
121828              return '';
121829  
121830          // We have enough bytes -> detect endianness.
121831          var buf = Buffer.concat(this.initialBytes),
121832              encoding = detectEncoding(buf, this.options.defaultEncoding);
121833          this.decoder = this.iconv.getDecoder(encoding, this.options);
121834          this.initialBytes.length = this.initialBytesLen = 0;
121835      }
121836  
121837      return this.decoder.write(buf);
121838  }
121839  
121840  Utf16Decoder.prototype.end = function() {
121841      if (!this.decoder) {
121842          var buf = Buffer.concat(this.initialBytes),
121843              encoding = detectEncoding(buf, this.options.defaultEncoding);
121844          this.decoder = this.iconv.getDecoder(encoding, this.options);
121845  
121846          var res = this.decoder.write(buf),
121847              trail = this.decoder.end();
121848  
121849          return trail ? (res + trail) : res;
121850      }
121851      return this.decoder.end();
121852  }
121853  
121854  function detectEncoding(buf, defaultEncoding) {
121855      var enc = defaultEncoding || 'utf-16le';
121856  
121857      if (buf.length >= 2) {
121858          // Check BOM.
121859          if (buf[0] == 0xFE && buf[1] == 0xFF) // UTF-16BE BOM
121860              enc = 'utf-16be';
121861          else if (buf[0] == 0xFF && buf[1] == 0xFE) // UTF-16LE BOM
121862              enc = 'utf-16le';
121863          else {
121864              // No BOM found. Try to deduce encoding from initial content.
121865              // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.
121866              // So, we count ASCII as if it was LE or BE, and decide from that.
121867              var asciiCharsLE = 0, asciiCharsBE = 0, // Counts of chars in both positions
121868                  _len = Math.min(buf.length - (buf.length % 2), 64); // Len is always even.
121869  
121870              for (var i = 0; i < _len; i += 2) {
121871                  if (buf[i] === 0 && buf[i+1] !== 0) asciiCharsBE++;
121872                  if (buf[i] !== 0 && buf[i+1] === 0) asciiCharsLE++;
121873              }
121874  
121875              if (asciiCharsBE > asciiCharsLE)
121876                  enc = 'utf-16be';
121877              else if (asciiCharsBE < asciiCharsLE)
121878                  enc = 'utf-16le';
121879          }
121880      }
121881  
121882      return enc;
121883  }
121884  
121885  
121886  
121887  
121888  /***/ }),
121889  /* 723 */
121890  /***/ (function(module, exports, __webpack_require__) {
121891  
121892  "use strict";
121893  
121894  var Buffer = __webpack_require__(15).Buffer;
121895  
121896  // UTF-7 codec, according to https://tools.ietf.org/html/rfc2152
121897  // See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3
121898  
121899  exports.utf7 = Utf7Codec;
121900  exports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7
121901  function Utf7Codec(codecOptions, iconv) {
121902      this.iconv = iconv;
121903  };
121904  
121905  Utf7Codec.prototype.encoder = Utf7Encoder;
121906  Utf7Codec.prototype.decoder = Utf7Decoder;
121907  Utf7Codec.prototype.bomAware = true;
121908  
121909  
121910  // -- Encoding
121911  
121912  var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;
121913  
121914  function Utf7Encoder(options, codec) {
121915      this.iconv = codec.iconv;
121916  }
121917  
121918  Utf7Encoder.prototype.write = function(str) {
121919      // Naive implementation.
121920      // Non-direct chars are encoded as "+<base64>-"; single "+" char is encoded as "+-".
121921      return Buffer.from(str.replace(nonDirectChars, function(chunk) {
121922          return "+" + (chunk === '+' ? '' : 
121923              this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) 
121924              + "-";
121925      }.bind(this)));
121926  }
121927  
121928  Utf7Encoder.prototype.end = function() {
121929  }
121930  
121931  
121932  // -- Decoding
121933  
121934  function Utf7Decoder(options, codec) {
121935      this.iconv = codec.iconv;
121936      this.inBase64 = false;
121937      this.base64Accum = '';
121938  }
121939  
121940  var base64Regex = /[A-Za-z0-9\/+]/;
121941  var base64Chars = [];
121942  for (var i = 0; i < 256; i++)
121943      base64Chars[i] = base64Regex.test(String.fromCharCode(i));
121944  
121945  var plusChar = '+'.charCodeAt(0), 
121946      minusChar = '-'.charCodeAt(0),
121947      andChar = '&'.charCodeAt(0);
121948  
121949  Utf7Decoder.prototype.write = function(buf) {
121950      var res = "", lastI = 0,
121951          inBase64 = this.inBase64,
121952          base64Accum = this.base64Accum;
121953  
121954      // The decoder is more involved as we must handle chunks in stream.
121955  
121956      for (var i = 0; i < buf.length; i++) {
121957          if (!inBase64) { // We're in direct mode.
121958              // Write direct chars until '+'
121959              if (buf[i] == plusChar) {
121960                  res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars.
121961                  lastI = i+1;
121962                  inBase64 = true;
121963              }
121964          } else { // We decode base64.
121965              if (!base64Chars[buf[i]]) { // Base64 ended.
121966                  if (i == lastI && buf[i] == minusChar) {// "+-" -> "+"
121967                      res += "+";
121968                  } else {
121969                      var b64str = base64Accum + buf.slice(lastI, i).toString();
121970                      res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be");
121971                  }
121972  
121973                  if (buf[i] != minusChar) // Minus is absorbed after base64.
121974                      i--;
121975  
121976                  lastI = i+1;
121977                  inBase64 = false;
121978                  base64Accum = '';
121979              }
121980          }
121981      }
121982  
121983      if (!inBase64) {
121984          res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars.
121985      } else {
121986          var b64str = base64Accum + buf.slice(lastI).toString();
121987  
121988          var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.
121989          base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.
121990          b64str = b64str.slice(0, canBeDecoded);
121991  
121992          res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be");
121993      }
121994  
121995      this.inBase64 = inBase64;
121996      this.base64Accum = base64Accum;
121997  
121998      return res;
121999  }
122000  
122001  Utf7Decoder.prototype.end = function() {
122002      var res = "";
122003      if (this.inBase64 && this.base64Accum.length > 0)
122004          res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be");
122005  
122006      this.inBase64 = false;
122007      this.base64Accum = '';
122008      return res;
122009  }
122010  
122011  
122012  // UTF-7-IMAP codec.
122013  // RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)
122014  // Differences:
122015  //  * Base64 part is started by "&" instead of "+"
122016  //  * Direct characters are 0x20-0x7E, except "&" (0x26)
122017  //  * In Base64, "," is used instead of "/"
122018  //  * Base64 must not be used to represent direct characters.
122019  //  * No implicit shift back from Base64 (should always end with '-')
122020  //  * String must end in non-shifted position.
122021  //  * "-&" while in base64 is not allowed.
122022  
122023  
122024  exports.utf7imap = Utf7IMAPCodec;
122025  function Utf7IMAPCodec(codecOptions, iconv) {
122026      this.iconv = iconv;
122027  };
122028  
122029  Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;
122030  Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;
122031  Utf7IMAPCodec.prototype.bomAware = true;
122032  
122033  
122034  // -- Encoding
122035  
122036  function Utf7IMAPEncoder(options, codec) {
122037      this.iconv = codec.iconv;
122038      this.inBase64 = false;
122039      this.base64Accum = Buffer.alloc(6);
122040      this.base64AccumIdx = 0;
122041  }
122042  
122043  Utf7IMAPEncoder.prototype.write = function(str) {
122044      var inBase64 = this.inBase64,
122045          base64Accum = this.base64Accum,
122046          base64AccumIdx = this.base64AccumIdx,
122047          buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;
122048  
122049      for (var i = 0; i < str.length; i++) {
122050          var uChar = str.charCodeAt(i);
122051          if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.
122052              if (inBase64) {
122053                  if (base64AccumIdx > 0) {
122054                      bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx);
122055                      base64AccumIdx = 0;
122056                  }
122057  
122058                  buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.
122059                  inBase64 = false;
122060              }
122061  
122062              if (!inBase64) {
122063                  buf[bufIdx++] = uChar; // Write direct character
122064  
122065                  if (uChar === andChar)  // Ampersand -> '&-'
122066                      buf[bufIdx++] = minusChar;
122067              }
122068  
122069          } else { // Non-direct character
122070              if (!inBase64) {
122071                  buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.
122072                  inBase64 = true;
122073              }
122074              if (inBase64) {
122075                  base64Accum[base64AccumIdx++] = uChar >> 8;
122076                  base64Accum[base64AccumIdx++] = uChar & 0xFF;
122077  
122078                  if (base64AccumIdx == base64Accum.length) {
122079                      bufIdx += buf.write(base64Accum.toString('base64').replace(/\//g, ','), bufIdx);
122080                      base64AccumIdx = 0;
122081                  }
122082              }
122083          }
122084      }
122085  
122086      this.inBase64 = inBase64;
122087      this.base64AccumIdx = base64AccumIdx;
122088  
122089      return buf.slice(0, bufIdx);
122090  }
122091  
122092  Utf7IMAPEncoder.prototype.end = function() {
122093      var buf = Buffer.alloc(10), bufIdx = 0;
122094      if (this.inBase64) {
122095          if (this.base64AccumIdx > 0) {
122096              bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx);
122097              this.base64AccumIdx = 0;
122098          }
122099  
122100          buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.
122101          this.inBase64 = false;
122102      }
122103  
122104      return buf.slice(0, bufIdx);
122105  }
122106  
122107  
122108  // -- Decoding
122109  
122110  function Utf7IMAPDecoder(options, codec) {
122111      this.iconv = codec.iconv;
122112      this.inBase64 = false;
122113      this.base64Accum = '';
122114  }
122115  
122116  var base64IMAPChars = base64Chars.slice();
122117  base64IMAPChars[','.charCodeAt(0)] = true;
122118  
122119  Utf7IMAPDecoder.prototype.write = function(buf) {
122120      var res = "", lastI = 0,
122121          inBase64 = this.inBase64,
122122          base64Accum = this.base64Accum;
122123  
122124      // The decoder is more involved as we must handle chunks in stream.
122125      // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).
122126  
122127      for (var i = 0; i < buf.length; i++) {
122128          if (!inBase64) { // We're in direct mode.
122129              // Write direct chars until '&'
122130              if (buf[i] == andChar) {
122131                  res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars.
122132                  lastI = i+1;
122133                  inBase64 = true;
122134              }
122135          } else { // We decode base64.
122136              if (!base64IMAPChars[buf[i]]) { // Base64 ended.
122137                  if (i == lastI && buf[i] == minusChar) { // "&-" -> "&"
122138                      res += "&";
122139                  } else {
122140                      var b64str = base64Accum + buf.slice(lastI, i).toString().replace(/,/g, '/');
122141                      res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be");
122142                  }
122143  
122144                  if (buf[i] != minusChar) // Minus may be absorbed after base64.
122145                      i--;
122146  
122147                  lastI = i+1;
122148                  inBase64 = false;
122149                  base64Accum = '';
122150              }
122151          }
122152      }
122153  
122154      if (!inBase64) {
122155          res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars.
122156      } else {
122157          var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, '/');
122158  
122159          var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.
122160          base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.
122161          b64str = b64str.slice(0, canBeDecoded);
122162  
122163          res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be");
122164      }
122165  
122166      this.inBase64 = inBase64;
122167      this.base64Accum = base64Accum;
122168  
122169      return res;
122170  }
122171  
122172  Utf7IMAPDecoder.prototype.end = function() {
122173      var res = "";
122174      if (this.inBase64 && this.base64Accum.length > 0)
122175          res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be");
122176  
122177      this.inBase64 = false;
122178      this.base64Accum = '';
122179      return res;
122180  }
122181  
122182  
122183  
122184  
122185  /***/ }),
122186  /* 724 */
122187  /***/ (function(module, exports, __webpack_require__) {
122188  
122189  "use strict";
122190  
122191  
122192  var BOMChar = '\uFEFF';
122193  
122194  exports.PrependBOM = PrependBOMWrapper
122195  function PrependBOMWrapper(encoder, options) {
122196      this.encoder = encoder;
122197      this.addBOM = true;
122198  }
122199  
122200  PrependBOMWrapper.prototype.write = function(str) {
122201      if (this.addBOM) {
122202          str = BOMChar + str;
122203          this.addBOM = false;
122204      }
122205  
122206      return this.encoder.write(str);
122207  }
122208  
122209  PrependBOMWrapper.prototype.end = function() {
122210      return this.encoder.end();
122211  }
122212  
122213  
122214  //------------------------------------------------------------------------------
122215  
122216  exports.StripBOM = StripBOMWrapper;
122217  function StripBOMWrapper(decoder, options) {
122218      this.decoder = decoder;
122219      this.pass = false;
122220      this.options = options || {};
122221  }
122222  
122223  StripBOMWrapper.prototype.write = function(buf) {
122224      var res = this.decoder.write(buf);
122225      if (this.pass || !res)
122226          return res;
122227  
122228      if (res[0] === BOMChar) {
122229          res = res.slice(1);
122230          if (typeof this.options.stripBOM === 'function')
122231              this.options.stripBOM();
122232      }
122233  
122234      this.pass = true;
122235      return res;
122236  }
122237  
122238  StripBOMWrapper.prototype.end = function() {
122239      return this.decoder.end();
122240  }
122241  
122242  
122243  
122244  /***/ }),
122245  /* 725 */
122246  /***/ (function(module, exports, __webpack_require__) {
122247  
122248  "use strict";
122249  
122250  var Buffer = __webpack_require__(64).Buffer;
122251  // Note: not polyfilled with safer-buffer on a purpose, as overrides Buffer
122252  
122253  // == Extend Node primitives to use iconv-lite =================================
122254  
122255  module.exports = function (iconv) {
122256      var original = undefined; // Place to keep original methods.
122257  
122258      // Node authors rewrote Buffer internals to make it compatible with
122259      // Uint8Array and we cannot patch key functions since then.
122260      // Note: this does use older Buffer API on a purpose
122261      iconv.supportsNodeEncodingsExtension = !(Buffer.from || new Buffer(0) instanceof Uint8Array);
122262  
122263      iconv.extendNodeEncodings = function extendNodeEncodings() {
122264          if (original) return;
122265          original = {};
122266  
122267          if (!iconv.supportsNodeEncodingsExtension) {
122268              console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node");
122269              console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility");
122270              return;
122271          }
122272  
122273          var nodeNativeEncodings = {
122274              'hex': true, 'utf8': true, 'utf-8': true, 'ascii': true, 'binary': true, 
122275              'base64': true, 'ucs2': true, 'ucs-2': true, 'utf16le': true, 'utf-16le': true,
122276          };
122277  
122278          Buffer.isNativeEncoding = function(enc) {
122279              return enc && nodeNativeEncodings[enc.toLowerCase()];
122280          }
122281  
122282          // -- SlowBuffer -----------------------------------------------------------
122283          var SlowBuffer = __webpack_require__(64).SlowBuffer;
122284  
122285          original.SlowBufferToString = SlowBuffer.prototype.toString;
122286          SlowBuffer.prototype.toString = function(encoding, start, end) {
122287              encoding = String(encoding || 'utf8').toLowerCase();
122288  
122289              // Use native conversion when possible
122290              if (Buffer.isNativeEncoding(encoding))
122291                  return original.SlowBufferToString.call(this, encoding, start, end);
122292  
122293              // Otherwise, use our decoding method.
122294              if (typeof start == 'undefined') start = 0;
122295              if (typeof end == 'undefined') end = this.length;
122296              return iconv.decode(this.slice(start, end), encoding);
122297          }
122298  
122299          original.SlowBufferWrite = SlowBuffer.prototype.write;
122300          SlowBuffer.prototype.write = function(string, offset, length, encoding) {
122301              // Support both (string, offset, length, encoding)
122302              // and the legacy (string, encoding, offset, length)
122303              if (isFinite(offset)) {
122304                  if (!isFinite(length)) {
122305                      encoding = length;
122306                      length = undefined;
122307                  }
122308              } else {  // legacy
122309                  var swap = encoding;
122310                  encoding = offset;
122311                  offset = length;
122312                  length = swap;
122313              }
122314  
122315              offset = +offset || 0;
122316              var remaining = this.length - offset;
122317              if (!length) {
122318                  length = remaining;
122319              } else {
122320                  length = +length;
122321                  if (length > remaining) {
122322                      length = remaining;
122323                  }
122324              }
122325              encoding = String(encoding || 'utf8').toLowerCase();
122326  
122327              // Use native conversion when possible
122328              if (Buffer.isNativeEncoding(encoding))
122329                  return original.SlowBufferWrite.call(this, string, offset, length, encoding);
122330  
122331              if (string.length > 0 && (length < 0 || offset < 0))
122332                  throw new RangeError('attempt to write beyond buffer bounds');
122333  
122334              // Otherwise, use our encoding method.
122335              var buf = iconv.encode(string, encoding);
122336              if (buf.length < length) length = buf.length;
122337              buf.copy(this, offset, 0, length);
122338              return length;
122339          }
122340  
122341          // -- Buffer ---------------------------------------------------------------
122342  
122343          original.BufferIsEncoding = Buffer.isEncoding;
122344          Buffer.isEncoding = function(encoding) {
122345              return Buffer.isNativeEncoding(encoding) || iconv.encodingExists(encoding);
122346          }
122347  
122348          original.BufferByteLength = Buffer.byteLength;
122349          Buffer.byteLength = SlowBuffer.byteLength = function(str, encoding) {
122350              encoding = String(encoding || 'utf8').toLowerCase();
122351  
122352              // Use native conversion when possible
122353              if (Buffer.isNativeEncoding(encoding))
122354                  return original.BufferByteLength.call(this, str, encoding);
122355  
122356              // Slow, I know, but we don't have a better way yet.
122357              return iconv.encode(str, encoding).length;
122358          }
122359  
122360          original.BufferToString = Buffer.prototype.toString;
122361          Buffer.prototype.toString = function(encoding, start, end) {
122362              encoding = String(encoding || 'utf8').toLowerCase();
122363  
122364              // Use native conversion when possible
122365              if (Buffer.isNativeEncoding(encoding))
122366                  return original.BufferToString.call(this, encoding, start, end);
122367  
122368              // Otherwise, use our decoding method.
122369              if (typeof start == 'undefined') start = 0;
122370              if (typeof end == 'undefined') end = this.length;
122371              return iconv.decode(this.slice(start, end), encoding);
122372          }
122373  
122374          original.BufferWrite = Buffer.prototype.write;
122375          Buffer.prototype.write = function(string, offset, length, encoding) {
122376              var _offset = offset, _length = length, _encoding = encoding;
122377              // Support both (string, offset, length, encoding)
122378              // and the legacy (string, encoding, offset, length)
122379              if (isFinite(offset)) {
122380                  if (!isFinite(length)) {
122381                      encoding = length;
122382                      length = undefined;
122383                  }
122384              } else {  // legacy
122385                  var swap = encoding;
122386                  encoding = offset;
122387                  offset = length;
122388                  length = swap;
122389              }
122390  
122391              encoding = String(encoding || 'utf8').toLowerCase();
122392  
122393              // Use native conversion when possible
122394              if (Buffer.isNativeEncoding(encoding))
122395                  return original.BufferWrite.call(this, string, _offset, _length, _encoding);
122396  
122397              offset = +offset || 0;
122398              var remaining = this.length - offset;
122399              if (!length) {
122400                  length = remaining;
122401              } else {
122402                  length = +length;
122403                  if (length > remaining) {
122404                      length = remaining;
122405                  }
122406              }
122407  
122408              if (string.length > 0 && (length < 0 || offset < 0))
122409                  throw new RangeError('attempt to write beyond buffer bounds');
122410  
122411              // Otherwise, use our encoding method.
122412              var buf = iconv.encode(string, encoding);
122413              if (buf.length < length) length = buf.length;
122414              buf.copy(this, offset, 0, length);
122415              return length;
122416  
122417              // TODO: Set _charsWritten.
122418          }
122419  
122420  
122421          // -- Readable -------------------------------------------------------------
122422          if (iconv.supportsStreams) {
122423              var Readable = __webpack_require__(23).Readable;
122424  
122425              original.ReadableSetEncoding = Readable.prototype.setEncoding;
122426              Readable.prototype.setEncoding = function setEncoding(enc, options) {
122427                  // Use our own decoder, it has the same interface.
122428                  // We cannot use original function as it doesn't handle BOM-s.
122429                  this._readableState.decoder = iconv.getDecoder(enc, options);
122430                  this._readableState.encoding = enc;
122431              }
122432  
122433              Readable.prototype.collect = iconv._collect;
122434          }
122435      }
122436  
122437      // Remove iconv-lite Node primitive extensions.
122438      iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() {
122439          if (!iconv.supportsNodeEncodingsExtension)
122440              return;
122441          if (!original)
122442              throw new Error("require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.")
122443  
122444          delete Buffer.isNativeEncoding;
122445  
122446          var SlowBuffer = __webpack_require__(64).SlowBuffer;
122447  
122448          SlowBuffer.prototype.toString = original.SlowBufferToString;
122449          SlowBuffer.prototype.write = original.SlowBufferWrite;
122450  
122451          Buffer.isEncoding = original.BufferIsEncoding;
122452          Buffer.byteLength = original.BufferByteLength;
122453          Buffer.prototype.toString = original.BufferToString;
122454          Buffer.prototype.write = original.BufferWrite;
122455  
122456          if (iconv.supportsStreams) {
122457              var Readable = __webpack_require__(23).Readable;
122458  
122459              Readable.prototype.setEncoding = original.ReadableSetEncoding;
122460              delete Readable.prototype.collect;
122461          }
122462  
122463          original = undefined;
122464      }
122465  }
122466  
122467  
122468  /***/ }),
122469  /* 726 */
122470  /***/ (function(module, exports, __webpack_require__) {
122471  
122472  "use strict";
122473  
122474  
122475  // Some environments don't have global Buffer (e.g. React Native).
122476  // Solution would be installing npm modules "buffer" and "stream" explicitly.
122477  var Buffer = __webpack_require__(15).Buffer;
122478  
122479  var bomHandling = __webpack_require__(724),
122480      iconv = module.exports;
122481  
122482  // All codecs and aliases are kept here, keyed by encoding name/alias.
122483  // They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.
122484  iconv.encodings = null;
122485  
122486  // Characters emitted in case of error.
122487  iconv.defaultCharUnicode = '�';
122488  iconv.defaultCharSingleByte = '?';
122489  
122490  // Public API.
122491  iconv.encode = function encode(str, encoding, options) {
122492      str = "" + (str || ""); // Ensure string.
122493  
122494      var encoder = iconv.getEncoder(encoding, options);
122495  
122496      var res = encoder.write(str);
122497      var trail = encoder.end();
122498      
122499      return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;
122500  }
122501  
122502  iconv.decode = function decode(buf, encoding, options) {
122503      if (typeof buf === 'string') {
122504          if (!iconv.skipDecodeWarning) {
122505              console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');
122506              iconv.skipDecodeWarning = true;
122507          }
122508  
122509          buf = Buffer.from("" + (buf || ""), "binary"); // Ensure buffer.
122510      }
122511  
122512      var decoder = iconv.getDecoder(encoding, options);
122513  
122514      var res = decoder.write(buf);
122515      var trail = decoder.end();
122516  
122517      return trail ? (res + trail) : res;
122518  }
122519  
122520  iconv.encodingExists = function encodingExists(enc) {
122521      try {
122522          iconv.getCodec(enc);
122523          return true;
122524      } catch (e) {
122525          return false;
122526      }
122527  }
122528  
122529  // Legacy aliases to convert functions
122530  iconv.toEncoding = iconv.encode;
122531  iconv.fromEncoding = iconv.decode;
122532  
122533  // Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.
122534  iconv._codecDataCache = {};
122535  iconv.getCodec = function getCodec(encoding) {
122536      if (!iconv.encodings)
122537          iconv.encodings = __webpack_require__(712); // Lazy load all encoding definitions.
122538      
122539      // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.
122540      var enc = iconv._canonicalizeEncoding(encoding);
122541  
122542      // Traverse iconv.encodings to find actual codec.
122543      var codecOptions = {};
122544      while (true) {
122545          var codec = iconv._codecDataCache[enc];
122546          if (codec)
122547              return codec;
122548  
122549          var codecDef = iconv.encodings[enc];
122550  
122551          switch (typeof codecDef) {
122552              case "string": // Direct alias to other encoding.
122553                  enc = codecDef;
122554                  break;
122555  
122556              case "object": // Alias with options. Can be layered.
122557                  for (var key in codecDef)
122558                      codecOptions[key] = codecDef[key];
122559  
122560                  if (!codecOptions.encodingName)
122561                      codecOptions.encodingName = enc;
122562                  
122563                  enc = codecDef.type;
122564                  break;
122565  
122566              case "function": // Codec itself.
122567                  if (!codecOptions.encodingName)
122568                      codecOptions.encodingName = enc;
122569  
122570                  // The codec function must load all tables and return object with .encoder and .decoder methods.
122571                  // It'll be called only once (for each different options object).
122572                  codec = new codecDef(codecOptions, iconv);
122573  
122574                  iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.
122575                  return codec;
122576  
122577              default:
122578                  throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')");
122579          }
122580      }
122581  }
122582  
122583  iconv._canonicalizeEncoding = function(encoding) {
122584      // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.
122585      return (''+encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, "");
122586  }
122587  
122588  iconv.getEncoder = function getEncoder(encoding, options) {
122589      var codec = iconv.getCodec(encoding),
122590          encoder = new codec.encoder(options, codec);
122591  
122592      if (codec.bomAware && options && options.addBOM)
122593          encoder = new bomHandling.PrependBOM(encoder, options);
122594  
122595      return encoder;
122596  }
122597  
122598  iconv.getDecoder = function getDecoder(encoding, options) {
122599      var codec = iconv.getCodec(encoding),
122600          decoder = new codec.decoder(options, codec);
122601  
122602      if (codec.bomAware && !(options && options.stripBOM === false))
122603          decoder = new bomHandling.StripBOM(decoder, options);
122604  
122605      return decoder;
122606  }
122607  
122608  
122609  // Load extensions in Node. All of them are omitted in Browserify build via 'browser' field in package.json.
122610  var nodeVer = typeof process !== 'undefined' && process.versions && process.versions.node;
122611  if (nodeVer) {
122612  
122613      // Load streaming support in Node v0.10+
122614      var nodeVerArr = nodeVer.split(".").map(Number);
122615      if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) {
122616          __webpack_require__(727)(iconv);
122617      }
122618  
122619      // Load Node primitive extensions.
122620      __webpack_require__(725)(iconv);
122621  }
122622  
122623  if (false) {
122624      console.error("iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.");
122625  }
122626  
122627  
122628  /***/ }),
122629  /* 727 */
122630  /***/ (function(module, exports, __webpack_require__) {
122631  
122632  "use strict";
122633  
122634  
122635  var Buffer = __webpack_require__(64).Buffer,
122636      Transform = __webpack_require__(23).Transform;
122637  
122638  
122639  // == Exports ==================================================================
122640  module.exports = function(iconv) {
122641      
122642      // Additional Public API.
122643      iconv.encodeStream = function encodeStream(encoding, options) {
122644          return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);
122645      }
122646  
122647      iconv.decodeStream = function decodeStream(encoding, options) {
122648          return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);
122649      }
122650  
122651      iconv.supportsStreams = true;
122652  
122653  
122654      // Not published yet.
122655      iconv.IconvLiteEncoderStream = IconvLiteEncoderStream;
122656      iconv.IconvLiteDecoderStream = IconvLiteDecoderStream;
122657      iconv._collect = IconvLiteDecoderStream.prototype.collect;
122658  };
122659  
122660  
122661  // == Encoder stream =======================================================
122662  function IconvLiteEncoderStream(conv, options) {
122663      this.conv = conv;
122664      options = options || {};
122665      options.decodeStrings = false; // We accept only strings, so we don't need to decode them.
122666      Transform.call(this, options);
122667  }
122668  
122669  IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {
122670      constructor: { value: IconvLiteEncoderStream }
122671  });
122672  
122673  IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {
122674      if (typeof chunk != 'string')
122675          return done(new Error("Iconv encoding stream needs strings as its input."));
122676      try {
122677          var res = this.conv.write(chunk);
122678          if (res && res.length) this.push(res);
122679          done();
122680      }
122681      catch (e) {
122682          done(e);
122683      }
122684  }
122685  
122686  IconvLiteEncoderStream.prototype._flush = function(done) {
122687      try {
122688          var res = this.conv.end();
122689          if (res && res.length) this.push(res);
122690          done();
122691      }
122692      catch (e) {
122693          done(e);
122694      }
122695  }
122696  
122697  IconvLiteEncoderStream.prototype.collect = function(cb) {
122698      var chunks = [];
122699      this.on('error', cb);
122700      this.on('data', function(chunk) { chunks.push(chunk); });
122701      this.on('end', function() {
122702          cb(null, Buffer.concat(chunks));
122703      });
122704      return this;
122705  }
122706  
122707  
122708  // == Decoder stream =======================================================
122709  function IconvLiteDecoderStream(conv, options) {
122710      this.conv = conv;
122711      options = options || {};
122712      options.encoding = this.encoding = 'utf8'; // We output strings.
122713      Transform.call(this, options);
122714  }
122715  
122716  IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {
122717      constructor: { value: IconvLiteDecoderStream }
122718  });
122719  
122720  IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {
122721      if (!Buffer.isBuffer(chunk))
122722          return done(new Error("Iconv decoding stream needs buffers as its input."));
122723      try {
122724          var res = this.conv.write(chunk);
122725          if (res && res.length) this.push(res, this.encoding);
122726          done();
122727      }
122728      catch (e) {
122729          done(e);
122730      }
122731  }
122732  
122733  IconvLiteDecoderStream.prototype._flush = function(done) {
122734      try {
122735          var res = this.conv.end();
122736          if (res && res.length) this.push(res, this.encoding);                
122737          done();
122738      }
122739      catch (e) {
122740          done(e);
122741      }
122742  }
122743  
122744  IconvLiteDecoderStream.prototype.collect = function(cb) {
122745      var res = '';
122746      this.on('error', cb);
122747      this.on('data', function(chunk) { res += chunk; });
122748      this.on('end', function() {
122749          cb(null, res);
122750      });
122751      return this;
122752  }
122753  
122754  
122755  
122756  /***/ }),
122757  /* 728 */
122758  /***/ (function(module, exports, __webpack_require__) {
122759  
122760  "use strict";
122761  
122762  const stripAnsi = __webpack_require__(329);
122763  const isFullwidthCodePoint = __webpack_require__(736);
122764  
122765  module.exports = str => {
122766  	if (typeof str !== 'string' || str.length === 0) {
122767  		return 0;
122768  	}
122769  
122770  	str = stripAnsi(str);
122771  
122772  	let width = 0;
122773  
122774  	for (let i = 0; i < str.length; i++) {
122775  		const code = str.codePointAt(i);
122776  
122777  		// Ignore control characters
122778  		if (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {
122779  			continue;
122780  		}
122781  
122782  		// Ignore combining characters
122783  		if (code >= 0x300 && code <= 0x36F) {
122784  			continue;
122785  		}
122786  
122787  		// Surrogates
122788  		if (code > 0xFFFF) {
122789  			i++;
122790  		}
122791  
122792  		width += isFullwidthCodePoint(code) ? 2 : 1;
122793  	}
122794  
122795  	return width;
122796  };
122797  
122798  
122799  /***/ }),
122800  /* 729 */
122801  /***/ (function(module, exports) {
122802  
122803  /*!
122804   * Determine if an object is a Buffer
122805   *
122806   * @author   Feross Aboukhadijeh <https://feross.org>
122807   * @license  MIT
122808   */
122809  
122810  // The _isBuffer check is for Safari 5-7 support, because it's missing
122811  // Object.prototype.constructor. Remove this eventually
122812  module.exports = function (obj) {
122813    return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
122814  }
122815  
122816  function isBuffer (obj) {
122817    return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
122818  }
122819  
122820  // For Node v0.10 support. Remove this eventually.
122821  function isSlowBuffer (obj) {
122822    return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
122823  }
122824  
122825  
122826  /***/ }),
122827  /* 730 */
122828  /***/ (function(module, exports, __webpack_require__) {
122829  
122830  "use strict";
122831  
122832  const builtinModules = __webpack_require__(731);
122833  
122834  const moduleSet = new Set(builtinModules);
122835  
122836  module.exports = moduleName => {
122837  	if (typeof moduleName !== 'string') {
122838  		throw new TypeError('Expected a string');
122839  	}
122840  
122841  	return moduleSet.has(moduleName);
122842  };
122843  
122844  
122845  /***/ }),
122846  /* 731 */
122847  /***/ (function(module, exports, __webpack_require__) {
122848  
122849  "use strict";
122850  
122851  
122852  const blacklist = [
122853  	'freelist',
122854  	'sys'
122855  ];
122856  
122857  module.exports = Object.keys(process.binding('natives'))
122858  	.filter(x => !/^_|^internal|\//.test(x) && blacklist.indexOf(x) === -1)
122859  	.sort();
122860  
122861  
122862  /***/ }),
122863  /* 732 */
122864  /***/ (function(module, exports, __webpack_require__) {
122865  
122866  "use strict";
122867  
122868  
122869  module.exports = function (buf) {
122870    if (!buf || buf.length < 2) return false
122871    return buf[0] === 0x78 && (buf[1] === 1 || buf[1] === 0x9c || buf[1] === 0xda)
122872  }
122873  
122874  
122875  /***/ }),
122876  /* 733 */
122877  /***/ (function(module, exports) {
122878  
122879  /*!
122880   * is-dotfile <https://github.com/jonschlinkert/is-dotfile>
122881   *
122882   * Copyright (c) 2015-2017, Jon Schlinkert.
122883   * Released under the MIT License.
122884   */
122885  
122886  module.exports = function(str) {
122887    if (str.charCodeAt(0) === 46 /* . */ && str.indexOf('/', 1) === -1) {
122888      return true;
122889    }
122890    var slash = str.lastIndexOf('/');
122891    return slash !== -1 ? str.charCodeAt(slash + 1) === 46  /* . */ : false;
122892  };
122893  
122894  
122895  /***/ }),
122896  /* 734 */
122897  /***/ (function(module, exports, __webpack_require__) {
122898  
122899  "use strict";
122900  /*!
122901   * is-equal-shallow <https://github.com/jonschlinkert/is-equal-shallow>
122902   *
122903   * Copyright (c) 2015, Jon Schlinkert.
122904   * Licensed under the MIT License.
122905   */
122906  
122907  
122908  
122909  var isPrimitive = __webpack_require__(740);
122910  
122911  module.exports = function isEqual(a, b) {
122912    if (!a && !b) { return true; }
122913    if (!a && b || a && !b) { return false; }
122914  
122915    var numKeysA = 0, numKeysB = 0, key;
122916    for (key in b) {
122917      numKeysB++;
122918      if (!isPrimitive(b[key]) || !a.hasOwnProperty(key) || (a[key] !== b[key])) {
122919        return false;
122920      }
122921    }
122922    for (key in a) {
122923      numKeysA++;
122924    }
122925    return numKeysA === numKeysB;
122926  };
122927  
122928  
122929  /***/ }),
122930  /* 735 */
122931  /***/ (function(module, exports, __webpack_require__) {
122932  
122933  "use strict";
122934  /*!
122935   * is-extendable <https://github.com/jonschlinkert/is-extendable>
122936   *
122937   * Copyright (c) 2015, Jon Schlinkert.
122938   * Licensed under the MIT License.
122939   */
122940  
122941  
122942  
122943  module.exports = function isExtendable(val) {
122944    return typeof val !== 'undefined' && val !== null
122945      && (typeof val === 'object' || typeof val === 'function');
122946  };
122947  
122948  
122949  /***/ }),
122950  /* 736 */
122951  /***/ (function(module, exports, __webpack_require__) {
122952  
122953  "use strict";
122954  
122955  /* eslint-disable yoda */
122956  module.exports = x => {
122957  	if (Number.isNaN(x)) {
122958  		return false;
122959  	}
122960  
122961  	// code points are derived from:
122962  	// http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
122963  	if (
122964  		x >= 0x1100 && (
122965  			x <= 0x115f ||  // Hangul Jamo
122966  			x === 0x2329 || // LEFT-POINTING ANGLE BRACKET
122967  			x === 0x232a || // RIGHT-POINTING ANGLE BRACKET
122968  			// CJK Radicals Supplement .. Enclosed CJK Letters and Months
122969  			(0x2e80 <= x && x <= 0x3247 && x !== 0x303f) ||
122970  			// Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
122971  			(0x3250 <= x && x <= 0x4dbf) ||
122972  			// CJK Unified Ideographs .. Yi Radicals
122973  			(0x4e00 <= x && x <= 0xa4c6) ||
122974  			// Hangul Jamo Extended-A
122975  			(0xa960 <= x && x <= 0xa97c) ||
122976  			// Hangul Syllables
122977  			(0xac00 <= x && x <= 0xd7a3) ||
122978  			// CJK Compatibility Ideographs
122979  			(0xf900 <= x && x <= 0xfaff) ||
122980  			// Vertical Forms
122981  			(0xfe10 <= x && x <= 0xfe19) ||
122982  			// CJK Compatibility Forms .. Small Form Variants
122983  			(0xfe30 <= x && x <= 0xfe6b) ||
122984  			// Halfwidth and Fullwidth Forms
122985  			(0xff01 <= x && x <= 0xff60) ||
122986  			(0xffe0 <= x && x <= 0xffe6) ||
122987  			// Kana Supplement
122988  			(0x1b000 <= x && x <= 0x1b001) ||
122989  			// Enclosed Ideographic Supplement
122990  			(0x1f200 <= x && x <= 0x1f251) ||
122991  			// CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
122992  			(0x20000 <= x && x <= 0x3fffd)
122993  		)
122994  	) {
122995  		return true;
122996  	}
122997  
122998  	return false;
122999  };
123000  
123001  
123002  /***/ }),
123003  /* 737 */
123004  /***/ (function(module, exports, __webpack_require__) {
123005  
123006  "use strict";
123007  
123008  
123009  /**
123010   * Check if a Buffer/Uint8Array is a GZIP file
123011   *
123012   * @param {Buffer} buf
123013   * @api public
123014   */
123015  
123016  module.exports = function (buf) {
123017      if (!buf || buf.length < 3) {
123018          return false;
123019      }
123020  
123021      return buf[0] === 31 && buf[1] === 139 && buf[2] === 8;
123022  };
123023  
123024  
123025  /***/ }),
123026  /* 738 */
123027  /***/ (function(module, exports, __webpack_require__) {
123028  
123029  "use strict";
123030  
123031  var toString = Object.prototype.toString;
123032  
123033  module.exports = function (x) {
123034  	var prototype;
123035  	return toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));
123036  };
123037  
123038  
123039  /***/ }),
123040  /* 739 */
123041  /***/ (function(module, exports) {
123042  
123043  /*!
123044   * is-posix-bracket <https://github.com/jonschlinkert/is-posix-bracket>
123045   *
123046   * Copyright (c) 2015-2016, Jon Schlinkert.
123047   * Licensed under the MIT License.
123048   */
123049  
123050  module.exports = function isPosixBracket(str) {
123051    return typeof str === 'string' && /\[([:.=+])(?:[^\[\]]|)+\1\]/.test(str);
123052  };
123053  
123054  
123055  /***/ }),
123056  /* 740 */
123057  /***/ (function(module, exports, __webpack_require__) {
123058  
123059  "use strict";
123060  /*!
123061   * is-primitive <https://github.com/jonschlinkert/is-primitive>
123062   *
123063   * Copyright (c) 2014-2015, Jon Schlinkert.
123064   * Licensed under the MIT License.
123065   */
123066  
123067  
123068  
123069  // see http://jsperf.com/testing-value-is-primitive/7
123070  module.exports = function isPrimitive(value) {
123071    return value == null || (typeof value !== 'function' && typeof value !== 'object');
123072  };
123073  
123074  
123075  /***/ }),
123076  /* 741 */
123077  /***/ (function(module, exports) {
123078  
123079  module.exports = isPromise;
123080  
123081  function isPromise(obj) {
123082    return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
123083  }
123084  
123085  
123086  /***/ }),
123087  /* 742 */
123088  /***/ (function(module, exports) {
123089  
123090  module.exports      = isTypedArray
123091  isTypedArray.strict = isStrictTypedArray
123092  isTypedArray.loose  = isLooseTypedArray
123093  
123094  var toString = Object.prototype.toString
123095  var names = {
123096      '[object Int8Array]': true
123097    , '[object Int16Array]': true
123098    , '[object Int32Array]': true
123099    , '[object Uint8Array]': true
123100    , '[object Uint8ClampedArray]': true
123101    , '[object Uint16Array]': true
123102    , '[object Uint32Array]': true
123103    , '[object Float32Array]': true
123104    , '[object Float64Array]': true
123105  }
123106  
123107  function isTypedArray(arr) {
123108    return (
123109         isStrictTypedArray(arr)
123110      || isLooseTypedArray(arr)
123111    )
123112  }
123113  
123114  function isStrictTypedArray(arr) {
123115    return (
123116         arr instanceof Int8Array
123117      || arr instanceof Int16Array
123118      || arr instanceof Int32Array
123119      || arr instanceof Uint8Array
123120      || arr instanceof Uint8ClampedArray
123121      || arr instanceof Uint16Array
123122      || arr instanceof Uint32Array
123123      || arr instanceof Float32Array
123124      || arr instanceof Float64Array
123125    )
123126  }
123127  
123128  function isLooseTypedArray(arr) {
123129    return names[toString.call(arr)]
123130  }
123131  
123132  
123133  /***/ }),
123134  /* 743 */
123135  /***/ (function(module, exports, __webpack_require__) {
123136  
123137  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
123138   * is-windows <https://github.com/jonschlinkert/is-windows>
123139   *
123140   * Copyright © 2015-2018, Jon Schlinkert.
123141   * Released under the MIT License.
123142   */
123143  
123144  (function(factory) {
123145    if (exports && typeof exports === 'object' && typeof module !== 'undefined') {
123146      module.exports = factory();
123147    } else if (true) {
123148      !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
123149  				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
123150  				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
123151  				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
123152    } else if (typeof window !== 'undefined') {
123153      window.isWindows = factory();
123154    } else if (typeof global !== 'undefined') {
123155      global.isWindows = factory();
123156    } else if (typeof self !== 'undefined') {
123157      self.isWindows = factory();
123158    } else {
123159      this.isWindows = factory();
123160    }
123161  })(function() {
123162    'use strict';
123163    return function isWindows() {
123164      return process && (process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE));
123165    };
123166  });
123167  
123168  
123169  /***/ }),
123170  /* 744 */
123171  /***/ (function(module, exports, __webpack_require__) {
123172  
123173  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
123174   * JSONSchema Validator - Validates JavaScript objects using JSON Schemas
123175   *	(http://www.json.com/json-schema-proposal/)
123176   *
123177   * Copyright (c) 2007 Kris Zyp SitePen (www.sitepen.com)
123178   * Licensed under the MIT (MIT-LICENSE.txt) license.
123179  To use the validator call the validate function with an instance object and an optional schema object.
123180  If a schema is provided, it will be used to validate. If the instance object refers to a schema (self-validating),
123181  that schema will be used to validate and the schema parameter is not necessary (if both exist,
123182  both validations will occur).
123183  The validate method will return an array of validation errors. If there are no errors, then an
123184  empty list will be returned. A validation error will have two properties:
123185  "property" which indicates which property had the error
123186  "message" which indicates what the error was
123187   */
123188  (function (root, factory) {
123189      if (true) {
123190          // AMD. Register as an anonymous module.
123191          !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {
123192              return factory();
123193          }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
123194  				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
123195      } else if (typeof module === 'object' && module.exports) {
123196          // Node. Does not work with strict CommonJS, but
123197          // only CommonJS-like environments that support module.exports,
123198          // like Node.
123199          module.exports = factory();
123200      } else {
123201          // Browser globals
123202          root.jsonSchema = factory();
123203      }
123204  }(this, function () {// setup primitive classes to be JSON Schema types
123205  var exports = validate
123206  exports.Integer = {type:"integer"};
123207  var primitiveConstructors = {
123208  	String: String,
123209  	Boolean: Boolean,
123210  	Number: Number,
123211  	Object: Object,
123212  	Array: Array,
123213  	Date: Date
123214  }
123215  exports.validate = validate;
123216  function validate(/*Any*/instance,/*Object*/schema) {
123217  		// Summary:
123218  		//  	To use the validator call JSONSchema.validate with an instance object and an optional schema object.
123219  		// 		If a schema is provided, it will be used to validate. If the instance object refers to a schema (self-validating),
123220  		// 		that schema will be used to validate and the schema parameter is not necessary (if both exist,
123221  		// 		both validations will occur).
123222  		// 		The validate method will return an object with two properties:
123223  		// 			valid: A boolean indicating if the instance is valid by the schema
123224  		// 			errors: An array of validation errors. If there are no errors, then an
123225  		// 					empty list will be returned. A validation error will have two properties:
123226  		// 						property: which indicates which property had the error
123227  		// 						message: which indicates what the error was
123228  		//
123229  		return validate(instance, schema, {changing: false});//, coerce: false, existingOnly: false});
123230  	};
123231  exports.checkPropertyChange = function(/*Any*/value,/*Object*/schema, /*String*/property) {
123232  		// Summary:
123233  		// 		The checkPropertyChange method will check to see if an value can legally be in property with the given schema
123234  		// 		This is slightly different than the validate method in that it will fail if the schema is readonly and it will
123235  		// 		not check for self-validation, it is assumed that the passed in value is already internally valid.
123236  		// 		The checkPropertyChange method will return the same object type as validate, see JSONSchema.validate for
123237  		// 		information.
123238  		//
123239  		return validate(value, schema, {changing: property || "property"});
123240  	};
123241  var validate = exports._validate = function(/*Any*/instance,/*Object*/schema,/*Object*/options) {
123242  
123243  	if (!options) options = {};
123244  	var _changing = options.changing;
123245  
123246  	function getType(schema){
123247  		return schema.type || (primitiveConstructors[schema.name] == schema && schema.name.toLowerCase());
123248  	}
123249  	var errors = [];
123250  	// validate a value against a property definition
123251  	function checkProp(value, schema, path,i){
123252  
123253  		var l;
123254  		path += path ? typeof i == 'number' ? '[' + i + ']' : typeof i == 'undefined' ? '' : '.' + i : i;
123255  		function addError(message){
123256  			errors.push({property:path,message:message});
123257  		}
123258  
123259  		if((typeof schema != 'object' || schema instanceof Array) && (path || typeof schema != 'function') && !(schema && getType(schema))){
123260  			if(typeof schema == 'function'){
123261  				if(!(value instanceof schema)){
123262  					addError("is not an instance of the class/constructor " + schema.name);
123263  				}
123264  			}else if(schema){
123265  				addError("Invalid schema/property definition " + schema);
123266  			}
123267  			return null;
123268  		}
123269  		if(_changing && schema.readonly){
123270  			addError("is a readonly field, it can not be changed");
123271  		}
123272  		if(schema['extends']){ // if it extends another schema, it must pass that schema as well
123273  			checkProp(value,schema['extends'],path,i);
123274  		}
123275  		// validate a value against a type definition
123276  		function checkType(type,value){
123277  			if(type){
123278  				if(typeof type == 'string' && type != 'any' &&
123279  						(type == 'null' ? value !== null : typeof value != type) &&
123280  						!(value instanceof Array && type == 'array') &&
123281  						!(value instanceof Date && type == 'date') &&
123282  						!(type == 'integer' && value%1===0)){
123283  					return [{property:path,message:(typeof value) + " value found, but a " + type + " is required"}];
123284  				}
123285  				if(type instanceof Array){
123286  					var unionErrors=[];
123287  					for(var j = 0; j < type.length; j++){ // a union type
123288  						if(!(unionErrors=checkType(type[j],value)).length){
123289  							break;
123290  						}
123291  					}
123292  					if(unionErrors.length){
123293  						return unionErrors;
123294  					}
123295  				}else if(typeof type == 'object'){
123296  					var priorErrors = errors;
123297  					errors = [];
123298  					checkProp(value,type,path);
123299  					var theseErrors = errors;
123300  					errors = priorErrors;
123301  					return theseErrors;
123302  				}
123303  			}
123304  			return [];
123305  		}
123306  		if(value === undefined){
123307  			if(schema.required){
123308  				addError("is missing and it is required");
123309  			}
123310  		}else{
123311  			errors = errors.concat(checkType(getType(schema),value));
123312  			if(schema.disallow && !checkType(schema.disallow,value).length){
123313  				addError(" disallowed value was matched");
123314  			}
123315  			if(value !== null){
123316  				if(value instanceof Array){
123317  					if(schema.items){
123318  						var itemsIsArray = schema.items instanceof Array;
123319  						var propDef = schema.items;
123320  						for (i = 0, l = value.length; i < l; i += 1) {
123321  							if (itemsIsArray)
123322  								propDef = schema.items[i];
123323  							if (options.coerce)
123324  								value[i] = options.coerce(value[i], propDef);
123325  							errors.concat(checkProp(value[i],propDef,path,i));
123326  						}
123327  					}
123328  					if(schema.minItems && value.length < schema.minItems){
123329  						addError("There must be a minimum of " + schema.minItems + " in the array");
123330  					}
123331  					if(schema.maxItems && value.length > schema.maxItems){
123332  						addError("There must be a maximum of " + schema.maxItems + " in the array");
123333  					}
123334  				}else if(schema.properties || schema.additionalProperties){
123335  					errors.concat(checkObj(value, schema.properties, path, schema.additionalProperties));
123336  				}
123337  				if(schema.pattern && typeof value == 'string' && !value.match(schema.pattern)){
123338  					addError("does not match the regex pattern " + schema.pattern);
123339  				}
123340  				if(schema.maxLength && typeof value == 'string' && value.length > schema.maxLength){
123341  					addError("may only be " + schema.maxLength + " characters long");
123342  				}
123343  				if(schema.minLength && typeof value == 'string' && value.length < schema.minLength){
123344  					addError("must be at least " + schema.minLength + " characters long");
123345  				}
123346  				if(typeof schema.minimum !== undefined && typeof value == typeof schema.minimum &&
123347  						schema.minimum > value){
123348  					addError("must have a minimum value of " + schema.minimum);
123349  				}
123350  				if(typeof schema.maximum !== undefined && typeof value == typeof schema.maximum &&
123351  						schema.maximum < value){
123352  					addError("must have a maximum value of " + schema.maximum);
123353  				}
123354  				if(schema['enum']){
123355  					var enumer = schema['enum'];
123356  					l = enumer.length;
123357  					var found;
123358  					for(var j = 0; j < l; j++){
123359  						if(enumer[j]===value){
123360  							found=1;
123361  							break;
123362  						}
123363  					}
123364  					if(!found){
123365  						addError("does not have a value in the enumeration " + enumer.join(", "));
123366  					}
123367  				}
123368  				if(typeof schema.maxDecimal == 'number' &&
123369  					(value.toString().match(new RegExp("\\.[0-9]{" + (schema.maxDecimal + 1) + ",}")))){
123370  					addError("may only have " + schema.maxDecimal + " digits of decimal places");
123371  				}
123372  			}
123373  		}
123374  		return null;
123375  	}
123376  	// validate an object against a schema
123377  	function checkObj(instance,objTypeDef,path,additionalProp){
123378  
123379  		if(typeof objTypeDef =='object'){
123380  			if(typeof instance != 'object' || instance instanceof Array){
123381  				errors.push({property:path,message:"an object is required"});
123382  			}
123383  			
123384  			for(var i in objTypeDef){ 
123385  				if(objTypeDef.hasOwnProperty(i)){
123386  					var value = instance[i];
123387  					// skip _not_ specified properties
123388  					if (value === undefined && options.existingOnly) continue;
123389  					var propDef = objTypeDef[i];
123390  					// set default
123391  					if(value === undefined && propDef["default"]){
123392  						value = instance[i] = propDef["default"];
123393  					}
123394  					if(options.coerce && i in instance){
123395  						value = instance[i] = options.coerce(value, propDef);
123396  					}
123397  					checkProp(value,propDef,path,i);
123398  				}
123399  			}
123400  		}
123401  		for(i in instance){
123402  			if(instance.hasOwnProperty(i) && !(i.charAt(0) == '_' && i.charAt(1) == '_') && objTypeDef && !objTypeDef[i] && additionalProp===false){
123403  				if (options.filter) {
123404  					delete instance[i];
123405  					continue;
123406  				} else {
123407  					errors.push({property:path,message:(typeof value) + "The property " + i +
123408  						" is not defined in the schema and the schema does not allow additional properties"});
123409  				}
123410  			}
123411  			var requires = objTypeDef && objTypeDef[i] && objTypeDef[i].requires;
123412  			if(requires && !(requires in instance)){
123413  				errors.push({property:path,message:"the presence of the property " + i + " requires that " + requires + " also be present"});
123414  			}
123415  			value = instance[i];
123416  			if(additionalProp && (!(objTypeDef && typeof objTypeDef == 'object') || !(i in objTypeDef))){
123417  				if(options.coerce){
123418  					value = instance[i] = options.coerce(value, additionalProp);
123419  				}
123420  				checkProp(value,additionalProp,path,i);
123421  			}
123422  			if(!_changing && value && value.$schema){
123423  				errors = errors.concat(checkProp(value,value.$schema,path,i));
123424  			}
123425  		}
123426  		return errors;
123427  	}
123428  	if(schema){
123429  		checkProp(instance,schema,'',_changing || '');
123430  	}
123431  	if(!_changing && instance && instance.$schema){
123432  		checkProp(instance,instance.$schema,'','');
123433  	}
123434  	return {valid:!errors.length,errors:errors};
123435  };
123436  exports.mustBeValid = function(result){
123437  	//	summary:
123438  	//		This checks to ensure that the result is valid and will throw an appropriate error message if it is not
123439  	// result: the result returned from checkPropertyChange or validate
123440  	if(!result.valid){
123441  		throw new TypeError(result.errors.map(function(error){return "for property " + error.property + ': ' + error.message;}).join(", \n"));
123442  	}
123443  }
123444  
123445  return exports;
123446  }));
123447  
123448  
123449  /***/ }),
123450  /* 745 */
123451  /***/ (function(module, exports) {
123452  
123453  exports = module.exports = stringify
123454  exports.getSerialize = serializer
123455  
123456  function stringify(obj, replacer, spaces, cycleReplacer) {
123457    return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces)
123458  }
123459  
123460  function serializer(replacer, cycleReplacer) {
123461    var stack = [], keys = []
123462  
123463    if (cycleReplacer == null) cycleReplacer = function(key, value) {
123464      if (stack[0] === value) return "[Circular ~]"
123465      return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]"
123466    }
123467  
123468    return function(key, value) {
123469      if (stack.length > 0) {
123470        var thisPos = stack.indexOf(this)
123471        ~thisPos ? stack.splice(thisPos + 1) : stack.push(this)
123472        ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)
123473        if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value)
123474      }
123475      else stack.push(value)
123476  
123477      return replacer == null ? value : replacer.call(this, key, value)
123478    }
123479  }
123480  
123481  
123482  /***/ }),
123483  /* 746 */
123484  /***/ (function(module, exports, __webpack_require__) {
123485  
123486  /*
123487   * lib/jsprim.js: utilities for primitive JavaScript types
123488   */
123489  
123490  var mod_assert = __webpack_require__(16);
123491  var mod_util = __webpack_require__(3);
123492  
123493  var mod_extsprintf = __webpack_require__(613);
123494  var mod_verror = __webpack_require__(960);
123495  var mod_jsonschema = __webpack_require__(744);
123496  
123497  /*
123498   * Public interface
123499   */
123500  exports.deepCopy = deepCopy;
123501  exports.deepEqual = deepEqual;
123502  exports.isEmpty = isEmpty;
123503  exports.hasKey = hasKey;
123504  exports.forEachKey = forEachKey;
123505  exports.pluck = pluck;
123506  exports.flattenObject = flattenObject;
123507  exports.flattenIter = flattenIter;
123508  exports.validateJsonObject = validateJsonObjectJS;
123509  exports.validateJsonObjectJS = validateJsonObjectJS;
123510  exports.randElt = randElt;
123511  exports.extraProperties = extraProperties;
123512  exports.mergeObjects = mergeObjects;
123513  
123514  exports.startsWith = startsWith;
123515  exports.endsWith = endsWith;
123516  
123517  exports.parseInteger = parseInteger;
123518  
123519  exports.iso8601 = iso8601;
123520  exports.rfc1123 = rfc1123;
123521  exports.parseDateTime = parseDateTime;
123522  
123523  exports.hrtimediff = hrtimeDiff;
123524  exports.hrtimeDiff = hrtimeDiff;
123525  exports.hrtimeAccum = hrtimeAccum;
123526  exports.hrtimeAdd = hrtimeAdd;
123527  exports.hrtimeNanosec = hrtimeNanosec;
123528  exports.hrtimeMicrosec = hrtimeMicrosec;
123529  exports.hrtimeMillisec = hrtimeMillisec;
123530  
123531  
123532  /*
123533   * Deep copy an acyclic *basic* Javascript object.  This only handles basic
123534   * scalars (strings, numbers, booleans) and arbitrarily deep arrays and objects
123535   * containing these.  This does *not* handle instances of other classes.
123536   */
123537  function deepCopy(obj)
123538  {
123539  	var ret, key;
123540  	var marker = '__deepCopy';
123541  
123542  	if (obj && obj[marker])
123543  		throw (new Error('attempted deep copy of cyclic object'));
123544  
123545  	if (obj && obj.constructor == Object) {
123546  		ret = {};
123547  		obj[marker] = true;
123548  
123549  		for (key in obj) {
123550  			if (key == marker)
123551  				continue;
123552  
123553  			ret[key] = deepCopy(obj[key]);
123554  		}
123555  
123556  		delete (obj[marker]);
123557  		return (ret);
123558  	}
123559  
123560  	if (obj && obj.constructor == Array) {
123561  		ret = [];
123562  		obj[marker] = true;
123563  
123564  		for (key = 0; key < obj.length; key++)
123565  			ret.push(deepCopy(obj[key]));
123566  
123567  		delete (obj[marker]);
123568  		return (ret);
123569  	}
123570  
123571  	/*
123572  	 * It must be a primitive type -- just return it.
123573  	 */
123574  	return (obj);
123575  }
123576  
123577  function deepEqual(obj1, obj2)
123578  {
123579  	if (typeof (obj1) != typeof (obj2))
123580  		return (false);
123581  
123582  	if (obj1 === null || obj2 === null || typeof (obj1) != 'object')
123583  		return (obj1 === obj2);
123584  
123585  	if (obj1.constructor != obj2.constructor)
123586  		return (false);
123587  
123588  	var k;
123589  	for (k in obj1) {
123590  		if (!obj2.hasOwnProperty(k))
123591  			return (false);
123592  
123593  		if (!deepEqual(obj1[k], obj2[k]))
123594  			return (false);
123595  	}
123596  
123597  	for (k in obj2) {
123598  		if (!obj1.hasOwnProperty(k))
123599  			return (false);
123600  	}
123601  
123602  	return (true);
123603  }
123604  
123605  function isEmpty(obj)
123606  {
123607  	var key;
123608  	for (key in obj)
123609  		return (false);
123610  	return (true);
123611  }
123612  
123613  function hasKey(obj, key)
123614  {
123615  	mod_assert.equal(typeof (key), 'string');
123616  	return (Object.prototype.hasOwnProperty.call(obj, key));
123617  }
123618  
123619  function forEachKey(obj, callback)
123620  {
123621  	for (var key in obj) {
123622  		if (hasKey(obj, key)) {
123623  			callback(key, obj[key]);
123624  		}
123625  	}
123626  }
123627  
123628  function pluck(obj, key)
123629  {
123630  	mod_assert.equal(typeof (key), 'string');
123631  	return (pluckv(obj, key));
123632  }
123633  
123634  function pluckv(obj, key)
123635  {
123636  	if (obj === null || typeof (obj) !== 'object')
123637  		return (undefined);
123638  
123639  	if (obj.hasOwnProperty(key))
123640  		return (obj[key]);
123641  
123642  	var i = key.indexOf('.');
123643  	if (i == -1)
123644  		return (undefined);
123645  
123646  	var key1 = key.substr(0, i);
123647  	if (!obj.hasOwnProperty(key1))
123648  		return (undefined);
123649  
123650  	return (pluckv(obj[key1], key.substr(i + 1)));
123651  }
123652  
123653  /*
123654   * Invoke callback(row) for each entry in the array that would be returned by
123655   * flattenObject(data, depth).  This is just like flattenObject(data,
123656   * depth).forEach(callback), except that the intermediate array is never
123657   * created.
123658   */
123659  function flattenIter(data, depth, callback)
123660  {
123661  	doFlattenIter(data, depth, [], callback);
123662  }
123663  
123664  function doFlattenIter(data, depth, accum, callback)
123665  {
123666  	var each;
123667  	var key;
123668  
123669  	if (depth === 0) {
123670  		each = accum.slice(0);
123671  		each.push(data);
123672  		callback(each);
123673  		return;
123674  	}
123675  
123676  	mod_assert.ok(data !== null);
123677  	mod_assert.equal(typeof (data), 'object');
123678  	mod_assert.equal(typeof (depth), 'number');
123679  	mod_assert.ok(depth >= 0);
123680  
123681  	for (key in data) {
123682  		each = accum.slice(0);
123683  		each.push(key);
123684  		doFlattenIter(data[key], depth - 1, each, callback);
123685  	}
123686  }
123687  
123688  function flattenObject(data, depth)
123689  {
123690  	if (depth === 0)
123691  		return ([ data ]);
123692  
123693  	mod_assert.ok(data !== null);
123694  	mod_assert.equal(typeof (data), 'object');
123695  	mod_assert.equal(typeof (depth), 'number');
123696  	mod_assert.ok(depth >= 0);
123697  
123698  	var rv = [];
123699  	var key;
123700  
123701  	for (key in data) {
123702  		flattenObject(data[key], depth - 1).forEach(function (p) {
123703  			rv.push([ key ].concat(p));
123704  		});
123705  	}
123706  
123707  	return (rv);
123708  }
123709  
123710  function startsWith(str, prefix)
123711  {
123712  	return (str.substr(0, prefix.length) == prefix);
123713  }
123714  
123715  function endsWith(str, suffix)
123716  {
123717  	return (str.substr(
123718  	    str.length - suffix.length, suffix.length) == suffix);
123719  }
123720  
123721  function iso8601(d)
123722  {
123723  	if (typeof (d) == 'number')
123724  		d = new Date(d);
123725  	mod_assert.ok(d.constructor === Date);
123726  	return (mod_extsprintf.sprintf('%4d-%02d-%02dT%02d:%02d:%02d.%03dZ',
123727  	    d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate(),
123728  	    d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(),
123729  	    d.getUTCMilliseconds()));
123730  }
123731  
123732  var RFC1123_MONTHS = [
123733      'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
123734      'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
123735  var RFC1123_DAYS = [
123736      'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
123737  
123738  function rfc1123(date) {
123739  	return (mod_extsprintf.sprintf('%s, %02d %s %04d %02d:%02d:%02d GMT',
123740  	    RFC1123_DAYS[date.getUTCDay()], date.getUTCDate(),
123741  	    RFC1123_MONTHS[date.getUTCMonth()], date.getUTCFullYear(),
123742  	    date.getUTCHours(), date.getUTCMinutes(),
123743  	    date.getUTCSeconds()));
123744  }
123745  
123746  /*
123747   * Parses a date expressed as a string, as either a number of milliseconds since
123748   * the epoch or any string format that Date accepts, giving preference to the
123749   * former where these two sets overlap (e.g., small numbers).
123750   */
123751  function parseDateTime(str)
123752  {
123753  	/*
123754  	 * This is irritatingly implicit, but significantly more concise than
123755  	 * alternatives.  The "+str" will convert a string containing only a
123756  	 * number directly to a Number, or NaN for other strings.  Thus, if the
123757  	 * conversion succeeds, we use it (this is the milliseconds-since-epoch
123758  	 * case).  Otherwise, we pass the string directly to the Date
123759  	 * constructor to parse.
123760  	 */
123761  	var numeric = +str;
123762  	if (!isNaN(numeric)) {
123763  		return (new Date(numeric));
123764  	} else {
123765  		return (new Date(str));
123766  	}
123767  }
123768  
123769  
123770  /*
123771   * Number.*_SAFE_INTEGER isn't present before node v0.12, so we hardcode
123772   * the ES6 definitions here, while allowing for them to someday be higher.
123773   */
123774  var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
123775  var MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;
123776  
123777  
123778  /*
123779   * Default options for parseInteger().
123780   */
123781  var PI_DEFAULTS = {
123782  	base: 10,
123783  	allowSign: true,
123784  	allowPrefix: false,
123785  	allowTrailing: false,
123786  	allowImprecise: false,
123787  	trimWhitespace: false,
123788  	leadingZeroIsOctal: false
123789  };
123790  
123791  var CP_0 = 0x30;
123792  var CP_9 = 0x39;
123793  
123794  var CP_A = 0x41;
123795  var CP_B = 0x42;
123796  var CP_O = 0x4f;
123797  var CP_T = 0x54;
123798  var CP_X = 0x58;
123799  var CP_Z = 0x5a;
123800  
123801  var CP_a = 0x61;
123802  var CP_b = 0x62;
123803  var CP_o = 0x6f;
123804  var CP_t = 0x74;
123805  var CP_x = 0x78;
123806  var CP_z = 0x7a;
123807  
123808  var PI_CONV_DEC = 0x30;
123809  var PI_CONV_UC = 0x37;
123810  var PI_CONV_LC = 0x57;
123811  
123812  
123813  /*
123814   * A stricter version of parseInt() that provides options for changing what
123815   * is an acceptable string (for example, disallowing trailing characters).
123816   */
123817  function parseInteger(str, uopts)
123818  {
123819  	mod_assert.string(str, 'str');
123820  	mod_assert.optionalObject(uopts, 'options');
123821  
123822  	var baseOverride = false;
123823  	var options = PI_DEFAULTS;
123824  
123825  	if (uopts) {
123826  		baseOverride = hasKey(uopts, 'base');
123827  		options = mergeObjects(options, uopts);
123828  		mod_assert.number(options.base, 'options.base');
123829  		mod_assert.ok(options.base >= 2, 'options.base >= 2');
123830  		mod_assert.ok(options.base <= 36, 'options.base <= 36');
123831  		mod_assert.bool(options.allowSign, 'options.allowSign');
123832  		mod_assert.bool(options.allowPrefix, 'options.allowPrefix');
123833  		mod_assert.bool(options.allowTrailing,
123834  		    'options.allowTrailing');
123835  		mod_assert.bool(options.allowImprecise,
123836  		    'options.allowImprecise');
123837  		mod_assert.bool(options.trimWhitespace,
123838  		    'options.trimWhitespace');
123839  		mod_assert.bool(options.leadingZeroIsOctal,
123840  		    'options.leadingZeroIsOctal');
123841  
123842  		if (options.leadingZeroIsOctal) {
123843  			mod_assert.ok(!baseOverride,
123844  			    '"base" and "leadingZeroIsOctal" are ' +
123845  			    'mutually exclusive');
123846  		}
123847  	}
123848  
123849  	var c;
123850  	var pbase = -1;
123851  	var base = options.base;
123852  	var start;
123853  	var mult = 1;
123854  	var value = 0;
123855  	var idx = 0;
123856  	var len = str.length;
123857  
123858  	/* Trim any whitespace on the left side. */
123859  	if (options.trimWhitespace) {
123860  		while (idx < len && isSpace(str.charCodeAt(idx))) {
123861  			++idx;
123862  		}
123863  	}
123864  
123865  	/* Check the number for a leading sign. */
123866  	if (options.allowSign) {
123867  		if (str[idx] === '-') {
123868  			idx += 1;
123869  			mult = -1;
123870  		} else if (str[idx] === '+') {
123871  			idx += 1;
123872  		}
123873  	}
123874  
123875  	/* Parse the base-indicating prefix if there is one. */
123876  	if (str[idx] === '0') {
123877  		if (options.allowPrefix) {
123878  			pbase = prefixToBase(str.charCodeAt(idx + 1));
123879  			if (pbase !== -1 && (!baseOverride || pbase === base)) {
123880  				base = pbase;
123881  				idx += 2;
123882  			}
123883  		}
123884  
123885  		if (pbase === -1 && options.leadingZeroIsOctal) {
123886  			base = 8;
123887  		}
123888  	}
123889  
123890  	/* Parse the actual digits. */
123891  	for (start = idx; idx < len; ++idx) {
123892  		c = translateDigit(str.charCodeAt(idx));
123893  		if (c !== -1 && c < base) {
123894  			value *= base;
123895  			value += c;
123896  		} else {
123897  			break;
123898  		}
123899  	}
123900  
123901  	/* If we didn't parse any digits, we have an invalid number. */
123902  	if (start === idx) {
123903  		return (new Error('invalid number: ' + JSON.stringify(str)));
123904  	}
123905  
123906  	/* Trim any whitespace on the right side. */
123907  	if (options.trimWhitespace) {
123908  		while (idx < len && isSpace(str.charCodeAt(idx))) {
123909  			++idx;
123910  		}
123911  	}
123912  
123913  	/* Check for trailing characters. */
123914  	if (idx < len && !options.allowTrailing) {
123915  		return (new Error('trailing characters after number: ' +
123916  		    JSON.stringify(str.slice(idx))));
123917  	}
123918  
123919  	/* If our value is 0, we return now, to avoid returning -0. */
123920  	if (value === 0) {
123921  		return (0);
123922  	}
123923  
123924  	/* Calculate our final value. */
123925  	var result = value * mult;
123926  
123927  	/*
123928  	 * If the string represents a value that cannot be precisely represented
123929  	 * by JavaScript, then we want to check that:
123930  	 *
123931  	 * - We never increased the value past MAX_SAFE_INTEGER
123932  	 * - We don't make the result negative and below MIN_SAFE_INTEGER
123933  	 *
123934  	 * Because we only ever increment the value during parsing, there's no
123935  	 * chance of moving past MAX_SAFE_INTEGER and then dropping below it
123936  	 * again, losing precision in the process. This means that we only need
123937  	 * to do our checks here, at the end.
123938  	 */
123939  	if (!options.allowImprecise &&
123940  	    (value > MAX_SAFE_INTEGER || result < MIN_SAFE_INTEGER)) {
123941  		return (new Error('number is outside of the supported range: ' +
123942  		    JSON.stringify(str.slice(start, idx))));
123943  	}
123944  
123945  	return (result);
123946  }
123947  
123948  
123949  /*
123950   * Interpret a character code as a base-36 digit.
123951   */
123952  function translateDigit(d)
123953  {
123954  	if (d >= CP_0 && d <= CP_9) {
123955  		/* '0' to '9' -> 0 to 9 */
123956  		return (d - PI_CONV_DEC);
123957  	} else if (d >= CP_A && d <= CP_Z) {
123958  		/* 'A' - 'Z' -> 10 to 35 */
123959  		return (d - PI_CONV_UC);
123960  	} else if (d >= CP_a && d <= CP_z) {
123961  		/* 'a' - 'z' -> 10 to 35 */
123962  		return (d - PI_CONV_LC);
123963  	} else {
123964  		/* Invalid character code */
123965  		return (-1);
123966  	}
123967  }
123968  
123969  
123970  /*
123971   * Test if a value matches the ECMAScript definition of trimmable whitespace.
123972   */
123973  function isSpace(c)
123974  {
123975  	return (c === 0x20) ||
123976  	    (c >= 0x0009 && c <= 0x000d) ||
123977  	    (c === 0x00a0) ||
123978  	    (c === 0x1680) ||
123979  	    (c === 0x180e) ||
123980  	    (c >= 0x2000 && c <= 0x200a) ||
123981  	    (c === 0x2028) ||
123982  	    (c === 0x2029) ||
123983  	    (c === 0x202f) ||
123984  	    (c === 0x205f) ||
123985  	    (c === 0x3000) ||
123986  	    (c === 0xfeff);
123987  }
123988  
123989  
123990  /*
123991   * Determine which base a character indicates (e.g., 'x' indicates hex).
123992   */
123993  function prefixToBase(c)
123994  {
123995  	if (c === CP_b || c === CP_B) {
123996  		/* 0b/0B (binary) */
123997  		return (2);
123998  	} else if (c === CP_o || c === CP_O) {
123999  		/* 0o/0O (octal) */
124000  		return (8);
124001  	} else if (c === CP_t || c === CP_T) {
124002  		/* 0t/0T (decimal) */
124003  		return (10);
124004  	} else if (c === CP_x || c === CP_X) {
124005  		/* 0x/0X (hexadecimal) */
124006  		return (16);
124007  	} else {
124008  		/* Not a meaningful character */
124009  		return (-1);
124010  	}
124011  }
124012  
124013  
124014  function validateJsonObjectJS(schema, input)
124015  {
124016  	var report = mod_jsonschema.validate(input, schema);
124017  
124018  	if (report.errors.length === 0)
124019  		return (null);
124020  
124021  	/* Currently, we only do anything useful with the first error. */
124022  	var error = report.errors[0];
124023  
124024  	/* The failed property is given by a URI with an irrelevant prefix. */
124025  	var propname = error['property'];
124026  	var reason = error['message'].toLowerCase();
124027  	var i, j;
124028  
124029  	/*
124030  	 * There's at least one case where the property error message is
124031  	 * confusing at best.  We work around this here.
124032  	 */
124033  	if ((i = reason.indexOf('the property ')) != -1 &&
124034  	    (j = reason.indexOf(' is not defined in the schema and the ' +
124035  	    'schema does not allow additional properties')) != -1) {
124036  		i += 'the property '.length;
124037  		if (propname === '')
124038  			propname = reason.substr(i, j - i);
124039  		else
124040  			propname = propname + '.' + reason.substr(i, j - i);
124041  
124042  		reason = 'unsupported property';
124043  	}
124044  
124045  	var rv = new mod_verror.VError('property "%s": %s', propname, reason);
124046  	rv.jsv_details = error;
124047  	return (rv);
124048  }
124049  
124050  function randElt(arr)
124051  {
124052  	mod_assert.ok(Array.isArray(arr) && arr.length > 0,
124053  	    'randElt argument must be a non-empty array');
124054  
124055  	return (arr[Math.floor(Math.random() * arr.length)]);
124056  }
124057  
124058  function assertHrtime(a)
124059  {
124060  	mod_assert.ok(a[0] >= 0 && a[1] >= 0,
124061  	    'negative numbers not allowed in hrtimes');
124062  	mod_assert.ok(a[1] < 1e9, 'nanoseconds column overflow');
124063  }
124064  
124065  /*
124066   * Compute the time elapsed between hrtime readings A and B, where A is later
124067   * than B.  hrtime readings come from Node's process.hrtime().  There is no
124068   * defined way to represent negative deltas, so it's illegal to diff B from A
124069   * where the time denoted by B is later than the time denoted by A.  If this
124070   * becomes valuable, we can define a representation and extend the
124071   * implementation to support it.
124072   */
124073  function hrtimeDiff(a, b)
124074  {
124075  	assertHrtime(a);
124076  	assertHrtime(b);
124077  	mod_assert.ok(a[0] > b[0] || (a[0] == b[0] && a[1] >= b[1]),
124078  	    'negative differences not allowed');
124079  
124080  	var rv = [ a[0] - b[0], 0 ];
124081  
124082  	if (a[1] >= b[1]) {
124083  		rv[1] = a[1] - b[1];
124084  	} else {
124085  		rv[0]--;
124086  		rv[1] = 1e9 - (b[1] - a[1]);
124087  	}
124088  
124089  	return (rv);
124090  }
124091  
124092  /*
124093   * Convert a hrtime reading from the array format returned by Node's
124094   * process.hrtime() into a scalar number of nanoseconds.
124095   */
124096  function hrtimeNanosec(a)
124097  {
124098  	assertHrtime(a);
124099  
124100  	return (Math.floor(a[0] * 1e9 + a[1]));
124101  }
124102  
124103  /*
124104   * Convert a hrtime reading from the array format returned by Node's
124105   * process.hrtime() into a scalar number of microseconds.
124106   */
124107  function hrtimeMicrosec(a)
124108  {
124109  	assertHrtime(a);
124110  
124111  	return (Math.floor(a[0] * 1e6 + a[1] / 1e3));
124112  }
124113  
124114  /*
124115   * Convert a hrtime reading from the array format returned by Node's
124116   * process.hrtime() into a scalar number of milliseconds.
124117   */
124118  function hrtimeMillisec(a)
124119  {
124120  	assertHrtime(a);
124121  
124122  	return (Math.floor(a[0] * 1e3 + a[1] / 1e6));
124123  }
124124  
124125  /*
124126   * Add two hrtime readings A and B, overwriting A with the result of the
124127   * addition.  This function is useful for accumulating several hrtime intervals
124128   * into a counter.  Returns A.
124129   */
124130  function hrtimeAccum(a, b)
124131  {
124132  	assertHrtime(a);
124133  	assertHrtime(b);
124134  
124135  	/*
124136  	 * Accumulate the nanosecond component.
124137  	 */
124138  	a[1] += b[1];
124139  	if (a[1] >= 1e9) {
124140  		/*
124141  		 * The nanosecond component overflowed, so carry to the seconds
124142  		 * field.
124143  		 */
124144  		a[0]++;
124145  		a[1] -= 1e9;
124146  	}
124147  
124148  	/*
124149  	 * Accumulate the seconds component.
124150  	 */
124151  	a[0] += b[0];
124152  
124153  	return (a);
124154  }
124155  
124156  /*
124157   * Add two hrtime readings A and B, returning the result as a new hrtime array.
124158   * Does not modify either input argument.
124159   */
124160  function hrtimeAdd(a, b)
124161  {
124162  	assertHrtime(a);
124163  
124164  	var rv = [ a[0], a[1] ];
124165  
124166  	return (hrtimeAccum(rv, b));
124167  }
124168  
124169  
124170  /*
124171   * Check an object for unexpected properties.  Accepts the object to check, and
124172   * an array of allowed property names (strings).  Returns an array of key names
124173   * that were found on the object, but did not appear in the list of allowed
124174   * properties.  If no properties were found, the returned array will be of
124175   * zero length.
124176   */
124177  function extraProperties(obj, allowed)
124178  {
124179  	mod_assert.ok(typeof (obj) === 'object' && obj !== null,
124180  	    'obj argument must be a non-null object');
124181  	mod_assert.ok(Array.isArray(allowed),
124182  	    'allowed argument must be an array of strings');
124183  	for (var i = 0; i < allowed.length; i++) {
124184  		mod_assert.ok(typeof (allowed[i]) === 'string',
124185  		    'allowed argument must be an array of strings');
124186  	}
124187  
124188  	return (Object.keys(obj).filter(function (key) {
124189  		return (allowed.indexOf(key) === -1);
124190  	}));
124191  }
124192  
124193  /*
124194   * Given three sets of properties "provided" (may be undefined), "overrides"
124195   * (required), and "defaults" (may be undefined), construct an object containing
124196   * the union of these sets with "overrides" overriding "provided", and
124197   * "provided" overriding "defaults".  None of the input objects are modified.
124198   */
124199  function mergeObjects(provided, overrides, defaults)
124200  {
124201  	var rv, k;
124202  
124203  	rv = {};
124204  	if (defaults) {
124205  		for (k in defaults)
124206  			rv[k] = defaults[k];
124207  	}
124208  
124209  	if (provided) {
124210  		for (k in provided)
124211  			rv[k] = provided[k];
124212  	}
124213  
124214  	if (overrides) {
124215  		for (k in overrides)
124216  			rv[k] = overrides[k];
124217  	}
124218  
124219  	return (rv);
124220  }
124221  
124222  
124223  /***/ }),
124224  /* 747 */
124225  /***/ (function(module, exports, __webpack_require__) {
124226  
124227  "use strict";
124228  /* eslint-disable no-nested-ternary */
124229  
124230  var arr = [];
124231  var charCodeCache = [];
124232  
124233  module.exports = function (a, b) {
124234  	if (a === b) {
124235  		return 0;
124236  	}
124237  
124238  	var swap = a;
124239  
124240  	// Swapping the strings if `a` is longer than `b` so we know which one is the
124241  	// shortest & which one is the longest
124242  	if (a.length > b.length) {
124243  		a = b;
124244  		b = swap;
124245  	}
124246  
124247  	var aLen = a.length;
124248  	var bLen = b.length;
124249  
124250  	if (aLen === 0) {
124251  		return bLen;
124252  	}
124253  
124254  	if (bLen === 0) {
124255  		return aLen;
124256  	}
124257  
124258  	// Performing suffix trimming:
124259  	// We can linearly drop suffix common to both strings since they
124260  	// don't increase distance at all
124261  	// Note: `~-` is the bitwise way to perform a `- 1` operation
124262  	while (aLen > 0 && (a.charCodeAt(~-aLen) === b.charCodeAt(~-bLen))) {
124263  		aLen--;
124264  		bLen--;
124265  	}
124266  
124267  	if (aLen === 0) {
124268  		return bLen;
124269  	}
124270  
124271  	// Performing prefix trimming
124272  	// We can linearly drop prefix common to both strings since they
124273  	// don't increase distance at all
124274  	var start = 0;
124275  
124276  	while (start < aLen && (a.charCodeAt(start) === b.charCodeAt(start))) {
124277  		start++;
124278  	}
124279  
124280  	aLen -= start;
124281  	bLen -= start;
124282  
124283  	if (aLen === 0) {
124284  		return bLen;
124285  	}
124286  
124287  	var bCharCode;
124288  	var ret;
124289  	var tmp;
124290  	var tmp2;
124291  	var i = 0;
124292  	var j = 0;
124293  
124294  	while (i < aLen) {
124295  		charCodeCache[start + i] = a.charCodeAt(start + i);
124296  		arr[i] = ++i;
124297  	}
124298  
124299  	while (j < bLen) {
124300  		bCharCode = b.charCodeAt(start + j);
124301  		tmp = j++;
124302  		ret = j;
124303  
124304  		for (i = 0; i < aLen; i++) {
124305  			tmp2 = bCharCode === charCodeCache[start + i] ? tmp : tmp + 1;
124306  			tmp = arr[i];
124307  			ret = arr[i] = tmp > ret ? tmp2 > ret ? ret + 1 : tmp2 : tmp2 > tmp ? tmp + 1 : tmp2;
124308  		}
124309  	}
124310  
124311  	return ret;
124312  };
124313  
124314  
124315  /***/ }),
124316  /* 748 */
124317  /***/ (function(module, exports, __webpack_require__) {
124318  
124319  /* WEBPACK VAR INJECTION */(function(module) {/**
124320   * lodash (Custom Build) <https://lodash.com/>
124321   * Build: `lodash modularize exports="npm" -o ./`
124322   * Copyright jQuery Foundation and other contributors <https://jquery.org/>
124323   * Released under MIT license <https://lodash.com/license>
124324   * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
124325   * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
124326   */
124327  
124328  /** Used as the size to enable large array optimizations. */
124329  var LARGE_ARRAY_SIZE = 200;
124330  
124331  /** Used to stand-in for `undefined` hash values. */
124332  var HASH_UNDEFINED = '__lodash_hash_undefined__';
124333  
124334  /** Used as references for various `Number` constants. */
124335  var MAX_SAFE_INTEGER = 9007199254740991;
124336  
124337  /** `Object#toString` result references. */
124338  var argsTag = '[object Arguments]',
124339      arrayTag = '[object Array]',
124340      boolTag = '[object Boolean]',
124341      dateTag = '[object Date]',
124342      errorTag = '[object Error]',
124343      funcTag = '[object Function]',
124344      genTag = '[object GeneratorFunction]',
124345      mapTag = '[object Map]',
124346      numberTag = '[object Number]',
124347      objectTag = '[object Object]',
124348      promiseTag = '[object Promise]',
124349      regexpTag = '[object RegExp]',
124350      setTag = '[object Set]',
124351      stringTag = '[object String]',
124352      symbolTag = '[object Symbol]',
124353      weakMapTag = '[object WeakMap]';
124354  
124355  var arrayBufferTag = '[object ArrayBuffer]',
124356      dataViewTag = '[object DataView]',
124357      float32Tag = '[object Float32Array]',
124358      float64Tag = '[object Float64Array]',
124359      int8Tag = '[object Int8Array]',
124360      int16Tag = '[object Int16Array]',
124361      int32Tag = '[object Int32Array]',
124362      uint8Tag = '[object Uint8Array]',
124363      uint8ClampedTag = '[object Uint8ClampedArray]',
124364      uint16Tag = '[object Uint16Array]',
124365      uint32Tag = '[object Uint32Array]';
124366  
124367  /**
124368   * Used to match `RegExp`
124369   * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).
124370   */
124371  var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
124372  
124373  /** Used to match `RegExp` flags from their coerced string values. */
124374  var reFlags = /\w*$/;
124375  
124376  /** Used to detect host constructors (Safari). */
124377  var reIsHostCtor = /^\[object .+?Constructor\]$/;
124378  
124379  /** Used to detect unsigned integer values. */
124380  var reIsUint = /^(?:0|[1-9]\d*)$/;
124381  
124382  /** Used to identify `toStringTag` values supported by `_.clone`. */
124383  var cloneableTags = {};
124384  cloneableTags[argsTag] = cloneableTags[arrayTag] =
124385  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
124386  cloneableTags[boolTag] = cloneableTags[dateTag] =
124387  cloneableTags[float32Tag] = cloneableTags[float64Tag] =
124388  cloneableTags[int8Tag] = cloneableTags[int16Tag] =
124389  cloneableTags[int32Tag] = cloneableTags[mapTag] =
124390  cloneableTags[numberTag] = cloneableTags[objectTag] =
124391  cloneableTags[regexpTag] = cloneableTags[setTag] =
124392  cloneableTags[stringTag] = cloneableTags[symbolTag] =
124393  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
124394  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
124395  cloneableTags[errorTag] = cloneableTags[funcTag] =
124396  cloneableTags[weakMapTag] = false;
124397  
124398  /** Used to determine if values are of the language type `Object`. */
124399  var objectTypes = {
124400    'function': true,
124401    'object': true
124402  };
124403  
124404  /** Detect free variable `exports`. */
124405  var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)
124406    ? exports
124407    : undefined;
124408  
124409  /** Detect free variable `module`. */
124410  var freeModule = (objectTypes[typeof module] && module && !module.nodeType)
124411    ? module
124412    : undefined;
124413  
124414  /** Detect the popular CommonJS extension `module.exports`. */
124415  var moduleExports = (freeModule && freeModule.exports === freeExports)
124416    ? freeExports
124417    : undefined;
124418  
124419  /** Detect free variable `global` from Node.js. */
124420  var freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);
124421  
124422  /** Detect free variable `self`. */
124423  var freeSelf = checkGlobal(objectTypes[typeof self] && self);
124424  
124425  /** Detect free variable `window`. */
124426  var freeWindow = checkGlobal(objectTypes[typeof window] && window);
124427  
124428  /** Detect `this` as the global object. */
124429  var thisGlobal = checkGlobal(objectTypes[typeof this] && this);
124430  
124431  /**
124432   * Used as a reference to the global object.
124433   *
124434   * The `this` value is used if it's the global object to avoid Greasemonkey's
124435   * restricted `window` object, otherwise the `window` object is used.
124436   */
124437  var root = freeGlobal ||
124438    ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||
124439      freeSelf || thisGlobal || Function('return this')();
124440  
124441  /**
124442   * Adds the key-value `pair` to `map`.
124443   *
124444   * @private
124445   * @param {Object} map The map to modify.
124446   * @param {Array} pair The key-value pair to add.
124447   * @returns {Object} Returns `map`.
124448   */
124449  function addMapEntry(map, pair) {
124450    // Don't return `Map#set` because it doesn't return the map instance in IE 11.
124451    map.set(pair[0], pair[1]);
124452    return map;
124453  }
124454  
124455  /**
124456   * Adds `value` to `set`.
124457   *
124458   * @private
124459   * @param {Object} set The set to modify.
124460   * @param {*} value The value to add.
124461   * @returns {Object} Returns `set`.
124462   */
124463  function addSetEntry(set, value) {
124464    set.add(value);
124465    return set;
124466  }
124467  
124468  /**
124469   * A specialized version of `_.forEach` for arrays without support for
124470   * iteratee shorthands.
124471   *
124472   * @private
124473   * @param {Array} array The array to iterate over.
124474   * @param {Function} iteratee The function invoked per iteration.
124475   * @returns {Array} Returns `array`.
124476   */
124477  function arrayEach(array, iteratee) {
124478    var index = -1,
124479        length = array.length;
124480  
124481    while (++index < length) {
124482      if (iteratee(array[index], index, array) === false) {
124483        break;
124484      }
124485    }
124486    return array;
124487  }
124488  
124489  /**
124490   * Appends the elements of `values` to `array`.
124491   *
124492   * @private
124493   * @param {Array} array The array to modify.
124494   * @param {Array} values The values to append.
124495   * @returns {Array} Returns `array`.
124496   */
124497  function arrayPush(array, values) {
124498    var index = -1,
124499        length = values.length,
124500        offset = array.length;
124501  
124502    while (++index < length) {
124503      array[offset + index] = values[index];
124504    }
124505    return array;
124506  }
124507  
124508  /**
124509   * A specialized version of `_.reduce` for arrays without support for
124510   * iteratee shorthands.
124511   *
124512   * @private
124513   * @param {Array} array The array to iterate over.
124514   * @param {Function} iteratee The function invoked per iteration.
124515   * @param {*} [accumulator] The initial value.
124516   * @param {boolean} [initAccum] Specify using the first element of `array` as
124517   *  the initial value.
124518   * @returns {*} Returns the accumulated value.
124519   */
124520  function arrayReduce(array, iteratee, accumulator, initAccum) {
124521    var index = -1,
124522        length = array.length;
124523  
124524    if (initAccum && length) {
124525      accumulator = array[++index];
124526    }
124527    while (++index < length) {
124528      accumulator = iteratee(accumulator, array[index], index, array);
124529    }
124530    return accumulator;
124531  }
124532  
124533  /**
124534   * The base implementation of `_.times` without support for iteratee shorthands
124535   * or max array length checks.
124536   *
124537   * @private
124538   * @param {number} n The number of times to invoke `iteratee`.
124539   * @param {Function} iteratee The function invoked per iteration.
124540   * @returns {Array} Returns the array of results.
124541   */
124542  function baseTimes(n, iteratee) {
124543    var index = -1,
124544        result = Array(n);
124545  
124546    while (++index < n) {
124547      result[index] = iteratee(index);
124548    }
124549    return result;
124550  }
124551  
124552  /**
124553   * Checks if `value` is a global object.
124554   *
124555   * @private
124556   * @param {*} value The value to check.
124557   * @returns {null|Object} Returns `value` if it's a global object, else `null`.
124558   */
124559  function checkGlobal(value) {
124560    return (value && value.Object === Object) ? value : null;
124561  }
124562  
124563  /**
124564   * Checks if `value` is a host object in IE < 9.
124565   *
124566   * @private
124567   * @param {*} value The value to check.
124568   * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
124569   */
124570  function isHostObject(value) {
124571    // Many host objects are `Object` objects that can coerce to strings
124572    // despite having improperly defined `toString` methods.
124573    var result = false;
124574    if (value != null && typeof value.toString != 'function') {
124575      try {
124576        result = !!(value + '');
124577      } catch (e) {}
124578    }
124579    return result;
124580  }
124581  
124582  /**
124583   * Converts `map` to its key-value pairs.
124584   *
124585   * @private
124586   * @param {Object} map The map to convert.
124587   * @returns {Array} Returns the key-value pairs.
124588   */
124589  function mapToArray(map) {
124590    var index = -1,
124591        result = Array(map.size);
124592  
124593    map.forEach(function(value, key) {
124594      result[++index] = [key, value];
124595    });
124596    return result;
124597  }
124598  
124599  /**
124600   * Converts `set` to an array of its values.
124601   *
124602   * @private
124603   * @param {Object} set The set to convert.
124604   * @returns {Array} Returns the values.
124605   */
124606  function setToArray(set) {
124607    var index = -1,
124608        result = Array(set.size);
124609  
124610    set.forEach(function(value) {
124611      result[++index] = value;
124612    });
124613    return result;
124614  }
124615  
124616  /** Used for built-in method references. */
124617  var arrayProto = Array.prototype,
124618      objectProto = Object.prototype;
124619  
124620  /** Used to resolve the decompiled source of functions. */
124621  var funcToString = Function.prototype.toString;
124622  
124623  /** Used to check objects for own properties. */
124624  var hasOwnProperty = objectProto.hasOwnProperty;
124625  
124626  /**
124627   * Used to resolve the
124628   * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
124629   * of values.
124630   */
124631  var objectToString = objectProto.toString;
124632  
124633  /** Used to detect if a method is native. */
124634  var reIsNative = RegExp('^' +
124635    funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
124636    .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
124637  );
124638  
124639  /** Built-in value references. */
124640  var Buffer = moduleExports ? root.Buffer : undefined,
124641      Symbol = root.Symbol,
124642      Uint8Array = root.Uint8Array,
124643      getOwnPropertySymbols = Object.getOwnPropertySymbols,
124644      objectCreate = Object.create,
124645      propertyIsEnumerable = objectProto.propertyIsEnumerable,
124646      splice = arrayProto.splice;
124647  
124648  /* Built-in method references for those with the same name as other `lodash` methods. */
124649  var nativeGetPrototype = Object.getPrototypeOf,
124650      nativeKeys = Object.keys;
124651  
124652  /* Built-in method references that are verified to be native. */
124653  var DataView = getNative(root, 'DataView'),
124654      Map = getNative(root, 'Map'),
124655      Promise = getNative(root, 'Promise'),
124656      Set = getNative(root, 'Set'),
124657      WeakMap = getNative(root, 'WeakMap'),
124658      nativeCreate = getNative(Object, 'create');
124659  
124660  /** Used to detect maps, sets, and weakmaps. */
124661  var dataViewCtorString = toSource(DataView),
124662      mapCtorString = toSource(Map),
124663      promiseCtorString = toSource(Promise),
124664      setCtorString = toSource(Set),
124665      weakMapCtorString = toSource(WeakMap);
124666  
124667  /** Used to convert symbols to primitives and strings. */
124668  var symbolProto = Symbol ? Symbol.prototype : undefined,
124669      symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
124670  
124671  /**
124672   * Creates a hash object.
124673   *
124674   * @private
124675   * @constructor
124676   * @param {Array} [entries] The key-value pairs to cache.
124677   */
124678  function Hash(entries) {
124679    var index = -1,
124680        length = entries ? entries.length : 0;
124681  
124682    this.clear();
124683    while (++index < length) {
124684      var entry = entries[index];
124685      this.set(entry[0], entry[1]);
124686    }
124687  }
124688  
124689  /**
124690   * Removes all key-value entries from the hash.
124691   *
124692   * @private
124693   * @name clear
124694   * @memberOf Hash
124695   */
124696  function hashClear() {
124697    this.__data__ = nativeCreate ? nativeCreate(null) : {};
124698  }
124699  
124700  /**
124701   * Removes `key` and its value from the hash.
124702   *
124703   * @private
124704   * @name delete
124705   * @memberOf Hash
124706   * @param {Object} hash The hash to modify.
124707   * @param {string} key The key of the value to remove.
124708   * @returns {boolean} Returns `true` if the entry was removed, else `false`.
124709   */
124710  function hashDelete(key) {
124711    return this.has(key) && delete this.__data__[key];
124712  }
124713  
124714  /**
124715   * Gets the hash value for `key`.
124716   *
124717   * @private
124718   * @name get
124719   * @memberOf Hash
124720   * @param {string} key The key of the value to get.
124721   * @returns {*} Returns the entry value.
124722   */
124723  function hashGet(key) {
124724    var data = this.__data__;
124725    if (nativeCreate) {
124726      var result = data[key];
124727      return result === HASH_UNDEFINED ? undefined : result;
124728    }
124729    return hasOwnProperty.call(data, key) ? data[key] : undefined;
124730  }
124731  
124732  /**
124733   * Checks if a hash value for `key` exists.
124734   *
124735   * @private
124736   * @name has
124737   * @memberOf Hash
124738   * @param {string} key The key of the entry to check.
124739   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
124740   */
124741  function hashHas(key) {
124742    var data = this.__data__;
124743    return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
124744  }
124745  
124746  /**
124747   * Sets the hash `key` to `value`.
124748   *
124749   * @private
124750   * @name set
124751   * @memberOf Hash
124752   * @param {string} key The key of the value to set.
124753   * @param {*} value The value to set.
124754   * @returns {Object} Returns the hash instance.
124755   */
124756  function hashSet(key, value) {
124757    var data = this.__data__;
124758    data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
124759    return this;
124760  }
124761  
124762  // Add methods to `Hash`.
124763  Hash.prototype.clear = hashClear;
124764  Hash.prototype['delete'] = hashDelete;
124765  Hash.prototype.get = hashGet;
124766  Hash.prototype.has = hashHas;
124767  Hash.prototype.set = hashSet;
124768  
124769  /**
124770   * Creates an list cache object.
124771   *
124772   * @private
124773   * @constructor
124774   * @param {Array} [entries] The key-value pairs to cache.
124775   */
124776  function ListCache(entries) {
124777    var index = -1,
124778        length = entries ? entries.length : 0;
124779  
124780    this.clear();
124781    while (++index < length) {
124782      var entry = entries[index];
124783      this.set(entry[0], entry[1]);
124784    }
124785  }
124786  
124787  /**
124788   * Removes all key-value entries from the list cache.
124789   *
124790   * @private
124791   * @name clear
124792   * @memberOf ListCache
124793   */
124794  function listCacheClear() {
124795    this.__data__ = [];
124796  }
124797  
124798  /**
124799   * Removes `key` and its value from the list cache.
124800   *
124801   * @private
124802   * @name delete
124803   * @memberOf ListCache
124804   * @param {string} key The key of the value to remove.
124805   * @returns {boolean} Returns `true` if the entry was removed, else `false`.
124806   */
124807  function listCacheDelete(key) {
124808    var data = this.__data__,
124809        index = assocIndexOf(data, key);
124810  
124811    if (index < 0) {
124812      return false;
124813    }
124814    var lastIndex = data.length - 1;
124815    if (index == lastIndex) {
124816      data.pop();
124817    } else {
124818      splice.call(data, index, 1);
124819    }
124820    return true;
124821  }
124822  
124823  /**
124824   * Gets the list cache value for `key`.
124825   *
124826   * @private
124827   * @name get
124828   * @memberOf ListCache
124829   * @param {string} key The key of the value to get.
124830   * @returns {*} Returns the entry value.
124831   */
124832  function listCacheGet(key) {
124833    var data = this.__data__,
124834        index = assocIndexOf(data, key);
124835  
124836    return index < 0 ? undefined : data[index][1];
124837  }
124838  
124839  /**
124840   * Checks if a list cache value for `key` exists.
124841   *
124842   * @private
124843   * @name has
124844   * @memberOf ListCache
124845   * @param {string} key The key of the entry to check.
124846   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
124847   */
124848  function listCacheHas(key) {
124849    return assocIndexOf(this.__data__, key) > -1;
124850  }
124851  
124852  /**
124853   * Sets the list cache `key` to `value`.
124854   *
124855   * @private
124856   * @name set
124857   * @memberOf ListCache
124858   * @param {string} key The key of the value to set.
124859   * @param {*} value The value to set.
124860   * @returns {Object} Returns the list cache instance.
124861   */
124862  function listCacheSet(key, value) {
124863    var data = this.__data__,
124864        index = assocIndexOf(data, key);
124865  
124866    if (index < 0) {
124867      data.push([key, value]);
124868    } else {
124869      data[index][1] = value;
124870    }
124871    return this;
124872  }
124873  
124874  // Add methods to `ListCache`.
124875  ListCache.prototype.clear = listCacheClear;
124876  ListCache.prototype['delete'] = listCacheDelete;
124877  ListCache.prototype.get = listCacheGet;
124878  ListCache.prototype.has = listCacheHas;
124879  ListCache.prototype.set = listCacheSet;
124880  
124881  /**
124882   * Creates a map cache object to store key-value pairs.
124883   *
124884   * @private
124885   * @constructor
124886   * @param {Array} [entries] The key-value pairs to cache.
124887   */
124888  function MapCache(entries) {
124889    var index = -1,
124890        length = entries ? entries.length : 0;
124891  
124892    this.clear();
124893    while (++index < length) {
124894      var entry = entries[index];
124895      this.set(entry[0], entry[1]);
124896    }
124897  }
124898  
124899  /**
124900   * Removes all key-value entries from the map.
124901   *
124902   * @private
124903   * @name clear
124904   * @memberOf MapCache
124905   */
124906  function mapCacheClear() {
124907    this.__data__ = {
124908      'hash': new Hash,
124909      'map': new (Map || ListCache),
124910      'string': new Hash
124911    };
124912  }
124913  
124914  /**
124915   * Removes `key` and its value from the map.
124916   *
124917   * @private
124918   * @name delete
124919   * @memberOf MapCache
124920   * @param {string} key The key of the value to remove.
124921   * @returns {boolean} Returns `true` if the entry was removed, else `false`.
124922   */
124923  function mapCacheDelete(key) {
124924    return getMapData(this, key)['delete'](key);
124925  }
124926  
124927  /**
124928   * Gets the map value for `key`.
124929   *
124930   * @private
124931   * @name get
124932   * @memberOf MapCache
124933   * @param {string} key The key of the value to get.
124934   * @returns {*} Returns the entry value.
124935   */
124936  function mapCacheGet(key) {
124937    return getMapData(this, key).get(key);
124938  }
124939  
124940  /**
124941   * Checks if a map value for `key` exists.
124942   *
124943   * @private
124944   * @name has
124945   * @memberOf MapCache
124946   * @param {string} key The key of the entry to check.
124947   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
124948   */
124949  function mapCacheHas(key) {
124950    return getMapData(this, key).has(key);
124951  }
124952  
124953  /**
124954   * Sets the map `key` to `value`.
124955   *
124956   * @private
124957   * @name set
124958   * @memberOf MapCache
124959   * @param {string} key The key of the value to set.
124960   * @param {*} value The value to set.
124961   * @returns {Object} Returns the map cache instance.
124962   */
124963  function mapCacheSet(key, value) {
124964    getMapData(this, key).set(key, value);
124965    return this;
124966  }
124967  
124968  // Add methods to `MapCache`.
124969  MapCache.prototype.clear = mapCacheClear;
124970  MapCache.prototype['delete'] = mapCacheDelete;
124971  MapCache.prototype.get = mapCacheGet;
124972  MapCache.prototype.has = mapCacheHas;
124973  MapCache.prototype.set = mapCacheSet;
124974  
124975  /**
124976   * Creates a stack cache object to store key-value pairs.
124977   *
124978   * @private
124979   * @constructor
124980   * @param {Array} [entries] The key-value pairs to cache.
124981   */
124982  function Stack(entries) {
124983    this.__data__ = new ListCache(entries);
124984  }
124985  
124986  /**
124987   * Removes all key-value entries from the stack.
124988   *
124989   * @private
124990   * @name clear
124991   * @memberOf Stack
124992   */
124993  function stackClear() {
124994    this.__data__ = new ListCache;
124995  }
124996  
124997  /**
124998   * Removes `key` and its value from the stack.
124999   *
125000   * @private
125001   * @name delete
125002   * @memberOf Stack
125003   * @param {string} key The key of the value to remove.
125004   * @returns {boolean} Returns `true` if the entry was removed, else `false`.
125005   */
125006  function stackDelete(key) {
125007    return this.__data__['delete'](key);
125008  }
125009  
125010  /**
125011   * Gets the stack value for `key`.
125012   *
125013   * @private
125014   * @name get
125015   * @memberOf Stack
125016   * @param {string} key The key of the value to get.
125017   * @returns {*} Returns the entry value.
125018   */
125019  function stackGet(key) {
125020    return this.__data__.get(key);
125021  }
125022  
125023  /**
125024   * Checks if a stack value for `key` exists.
125025   *
125026   * @private
125027   * @name has
125028   * @memberOf Stack
125029   * @param {string} key The key of the entry to check.
125030   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
125031   */
125032  function stackHas(key) {
125033    return this.__data__.has(key);
125034  }
125035  
125036  /**
125037   * Sets the stack `key` to `value`.
125038   *
125039   * @private
125040   * @name set
125041   * @memberOf Stack
125042   * @param {string} key The key of the value to set.
125043   * @param {*} value The value to set.
125044   * @returns {Object} Returns the stack cache instance.
125045   */
125046  function stackSet(key, value) {
125047    var cache = this.__data__;
125048    if (cache instanceof ListCache && cache.__data__.length == LARGE_ARRAY_SIZE) {
125049      cache = this.__data__ = new MapCache(cache.__data__);
125050    }
125051    cache.set(key, value);
125052    return this;
125053  }
125054  
125055  // Add methods to `Stack`.
125056  Stack.prototype.clear = stackClear;
125057  Stack.prototype['delete'] = stackDelete;
125058  Stack.prototype.get = stackGet;
125059  Stack.prototype.has = stackHas;
125060  Stack.prototype.set = stackSet;
125061  
125062  /**
125063   * Assigns `value` to `key` of `object` if the existing value is not equivalent
125064   * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
125065   * for equality comparisons.
125066   *
125067   * @private
125068   * @param {Object} object The object to modify.
125069   * @param {string} key The key of the property to assign.
125070   * @param {*} value The value to assign.
125071   */
125072  function assignValue(object, key, value) {
125073    var objValue = object[key];
125074    if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
125075        (value === undefined && !(key in object))) {
125076      object[key] = value;
125077    }
125078  }
125079  
125080  /**
125081   * Gets the index at which the `key` is found in `array` of key-value pairs.
125082   *
125083   * @private
125084   * @param {Array} array The array to search.
125085   * @param {*} key The key to search for.
125086   * @returns {number} Returns the index of the matched value, else `-1`.
125087   */
125088  function assocIndexOf(array, key) {
125089    var length = array.length;
125090    while (length--) {
125091      if (eq(array[length][0], key)) {
125092        return length;
125093      }
125094    }
125095    return -1;
125096  }
125097  
125098  /**
125099   * The base implementation of `_.assign` without support for multiple sources
125100   * or `customizer` functions.
125101   *
125102   * @private
125103   * @param {Object} object The destination object.
125104   * @param {Object} source The source object.
125105   * @returns {Object} Returns `object`.
125106   */
125107  function baseAssign(object, source) {
125108    return object && copyObject(source, keys(source), object);
125109  }
125110  
125111  /**
125112   * The base implementation of `_.clone` and `_.cloneDeep` which tracks
125113   * traversed objects.
125114   *
125115   * @private
125116   * @param {*} value The value to clone.
125117   * @param {boolean} [isDeep] Specify a deep clone.
125118   * @param {boolean} [isFull] Specify a clone including symbols.
125119   * @param {Function} [customizer] The function to customize cloning.
125120   * @param {string} [key] The key of `value`.
125121   * @param {Object} [object] The parent object of `value`.
125122   * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
125123   * @returns {*} Returns the cloned value.
125124   */
125125  function baseClone(value, isDeep, isFull, customizer, key, object, stack) {
125126    var result;
125127    if (customizer) {
125128      result = object ? customizer(value, key, object, stack) : customizer(value);
125129    }
125130    if (result !== undefined) {
125131      return result;
125132    }
125133    if (!isObject(value)) {
125134      return value;
125135    }
125136    var isArr = isArray(value);
125137    if (isArr) {
125138      result = initCloneArray(value);
125139      if (!isDeep) {
125140        return copyArray(value, result);
125141      }
125142    } else {
125143      var tag = getTag(value),
125144          isFunc = tag == funcTag || tag == genTag;
125145  
125146      if (isBuffer(value)) {
125147        return cloneBuffer(value, isDeep);
125148      }
125149      if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
125150        if (isHostObject(value)) {
125151          return object ? value : {};
125152        }
125153        result = initCloneObject(isFunc ? {} : value);
125154        if (!isDeep) {
125155          return copySymbols(value, baseAssign(result, value));
125156        }
125157      } else {
125158        if (!cloneableTags[tag]) {
125159          return object ? value : {};
125160        }
125161        result = initCloneByTag(value, tag, baseClone, isDeep);
125162      }
125163    }
125164    // Check for circular references and return its corresponding clone.
125165    stack || (stack = new Stack);
125166    var stacked = stack.get(value);
125167    if (stacked) {
125168      return stacked;
125169    }
125170    stack.set(value, result);
125171  
125172    if (!isArr) {
125173      var props = isFull ? getAllKeys(value) : keys(value);
125174    }
125175    // Recursively populate clone (susceptible to call stack limits).
125176    arrayEach(props || value, function(subValue, key) {
125177      if (props) {
125178        key = subValue;
125179        subValue = value[key];
125180      }
125181      assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));
125182    });
125183    return result;
125184  }
125185  
125186  /**
125187   * The base implementation of `_.create` without support for assigning
125188   * properties to the created object.
125189   *
125190   * @private
125191   * @param {Object} prototype The object to inherit from.
125192   * @returns {Object} Returns the new object.
125193   */
125194  function baseCreate(proto) {
125195    return isObject(proto) ? objectCreate(proto) : {};
125196  }
125197  
125198  /**
125199   * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
125200   * `keysFunc` and `symbolsFunc` to get the enumerable property names and
125201   * symbols of `object`.
125202   *
125203   * @private
125204   * @param {Object} object The object to query.
125205   * @param {Function} keysFunc The function to get the keys of `object`.
125206   * @param {Function} symbolsFunc The function to get the symbols of `object`.
125207   * @returns {Array} Returns the array of property names and symbols.
125208   */
125209  function baseGetAllKeys(object, keysFunc, symbolsFunc) {
125210    var result = keysFunc(object);
125211    return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
125212  }
125213  
125214  /**
125215   * The base implementation of `_.has` without support for deep paths.
125216   *
125217   * @private
125218   * @param {Object} object The object to query.
125219   * @param {Array|string} key The key to check.
125220   * @returns {boolean} Returns `true` if `key` exists, else `false`.
125221   */
125222  function baseHas(object, key) {
125223    // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,
125224    // that are composed entirely of index properties, return `false` for
125225    // `hasOwnProperty` checks of them.
125226    return hasOwnProperty.call(object, key) ||
125227      (typeof object == 'object' && key in object && getPrototype(object) === null);
125228  }
125229  
125230  /**
125231   * The base implementation of `_.keys` which doesn't skip the constructor
125232   * property of prototypes or treat sparse arrays as dense.
125233   *
125234   * @private
125235   * @param {Object} object The object to query.
125236   * @returns {Array} Returns the array of property names.
125237   */
125238  function baseKeys(object) {
125239    return nativeKeys(Object(object));
125240  }
125241  
125242  /**
125243   * The base implementation of `_.property` without support for deep paths.
125244   *
125245   * @private
125246   * @param {string} key The key of the property to get.
125247   * @returns {Function} Returns the new accessor function.
125248   */
125249  function baseProperty(key) {
125250    return function(object) {
125251      return object == null ? undefined : object[key];
125252    };
125253  }
125254  
125255  /**
125256   * Creates a clone of  `buffer`.
125257   *
125258   * @private
125259   * @param {Buffer} buffer The buffer to clone.
125260   * @param {boolean} [isDeep] Specify a deep clone.
125261   * @returns {Buffer} Returns the cloned buffer.
125262   */
125263  function cloneBuffer(buffer, isDeep) {
125264    if (isDeep) {
125265      return buffer.slice();
125266    }
125267    var result = new buffer.constructor(buffer.length);
125268    buffer.copy(result);
125269    return result;
125270  }
125271  
125272  /**
125273   * Creates a clone of `arrayBuffer`.
125274   *
125275   * @private
125276   * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
125277   * @returns {ArrayBuffer} Returns the cloned array buffer.
125278   */
125279  function cloneArrayBuffer(arrayBuffer) {
125280    var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
125281    new Uint8Array(result).set(new Uint8Array(arrayBuffer));
125282    return result;
125283  }
125284  
125285  /**
125286   * Creates a clone of `dataView`.
125287   *
125288   * @private
125289   * @param {Object} dataView The data view to clone.
125290   * @param {boolean} [isDeep] Specify a deep clone.
125291   * @returns {Object} Returns the cloned data view.
125292   */
125293  function cloneDataView(dataView, isDeep) {
125294    var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
125295    return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
125296  }
125297  
125298  /**
125299   * Creates a clone of `map`.
125300   *
125301   * @private
125302   * @param {Object} map The map to clone.
125303   * @param {Function} cloneFunc The function to clone values.
125304   * @param {boolean} [isDeep] Specify a deep clone.
125305   * @returns {Object} Returns the cloned map.
125306   */
125307  function cloneMap(map, isDeep, cloneFunc) {
125308    var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);
125309    return arrayReduce(array, addMapEntry, new map.constructor);
125310  }
125311  
125312  /**
125313   * Creates a clone of `regexp`.
125314   *
125315   * @private
125316   * @param {Object} regexp The regexp to clone.
125317   * @returns {Object} Returns the cloned regexp.
125318   */
125319  function cloneRegExp(regexp) {
125320    var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
125321    result.lastIndex = regexp.lastIndex;
125322    return result;
125323  }
125324  
125325  /**
125326   * Creates a clone of `set`.
125327   *
125328   * @private
125329   * @param {Object} set The set to clone.
125330   * @param {Function} cloneFunc The function to clone values.
125331   * @param {boolean} [isDeep] Specify a deep clone.
125332   * @returns {Object} Returns the cloned set.
125333   */
125334  function cloneSet(set, isDeep, cloneFunc) {
125335    var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);
125336    return arrayReduce(array, addSetEntry, new set.constructor);
125337  }
125338  
125339  /**
125340   * Creates a clone of the `symbol` object.
125341   *
125342   * @private
125343   * @param {Object} symbol The symbol object to clone.
125344   * @returns {Object} Returns the cloned symbol object.
125345   */
125346  function cloneSymbol(symbol) {
125347    return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
125348  }
125349  
125350  /**
125351   * Creates a clone of `typedArray`.
125352   *
125353   * @private
125354   * @param {Object} typedArray The typed array to clone.
125355   * @param {boolean} [isDeep] Specify a deep clone.
125356   * @returns {Object} Returns the cloned typed array.
125357   */
125358  function cloneTypedArray(typedArray, isDeep) {
125359    var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
125360    return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
125361  }
125362  
125363  /**
125364   * Copies the values of `source` to `array`.
125365   *
125366   * @private
125367   * @param {Array} source The array to copy values from.
125368   * @param {Array} [array=[]] The array to copy values to.
125369   * @returns {Array} Returns `array`.
125370   */
125371  function copyArray(source, array) {
125372    var index = -1,
125373        length = source.length;
125374  
125375    array || (array = Array(length));
125376    while (++index < length) {
125377      array[index] = source[index];
125378    }
125379    return array;
125380  }
125381  
125382  /**
125383   * Copies properties of `source` to `object`.
125384   *
125385   * @private
125386   * @param {Object} source The object to copy properties from.
125387   * @param {Array} props The property identifiers to copy.
125388   * @param {Object} [object={}] The object to copy properties to.
125389   * @param {Function} [customizer] The function to customize copied values.
125390   * @returns {Object} Returns `object`.
125391   */
125392  function copyObject(source, props, object, customizer) {
125393    object || (object = {});
125394  
125395    var index = -1,
125396        length = props.length;
125397  
125398    while (++index < length) {
125399      var key = props[index];
125400  
125401      var newValue = customizer
125402        ? customizer(object[key], source[key], key, object, source)
125403        : source[key];
125404  
125405      assignValue(object, key, newValue);
125406    }
125407    return object;
125408  }
125409  
125410  /**
125411   * Copies own symbol properties of `source` to `object`.
125412   *
125413   * @private
125414   * @param {Object} source The object to copy symbols from.
125415   * @param {Object} [object={}] The object to copy symbols to.
125416   * @returns {Object} Returns `object`.
125417   */
125418  function copySymbols(source, object) {
125419    return copyObject(source, getSymbols(source), object);
125420  }
125421  
125422  /**
125423   * Creates an array of own enumerable property names and symbols of `object`.
125424   *
125425   * @private
125426   * @param {Object} object The object to query.
125427   * @returns {Array} Returns the array of property names and symbols.
125428   */
125429  function getAllKeys(object) {
125430    return baseGetAllKeys(object, keys, getSymbols);
125431  }
125432  
125433  /**
125434   * Gets the "length" property value of `object`.
125435   *
125436   * **Note:** This function is used to avoid a
125437   * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects
125438   * Safari on at least iOS 8.1-8.3 ARM64.
125439   *
125440   * @private
125441   * @param {Object} object The object to query.
125442   * @returns {*} Returns the "length" value.
125443   */
125444  var getLength = baseProperty('length');
125445  
125446  /**
125447   * Gets the data for `map`.
125448   *
125449   * @private
125450   * @param {Object} map The map to query.
125451   * @param {string} key The reference key.
125452   * @returns {*} Returns the map data.
125453   */
125454  function getMapData(map, key) {
125455    var data = map.__data__;
125456    return isKeyable(key)
125457      ? data[typeof key == 'string' ? 'string' : 'hash']
125458      : data.map;
125459  }
125460  
125461  /**
125462   * Gets the native function at `key` of `object`.
125463   *
125464   * @private
125465   * @param {Object} object The object to query.
125466   * @param {string} key The key of the method to get.
125467   * @returns {*} Returns the function if it's native, else `undefined`.
125468   */
125469  function getNative(object, key) {
125470    var value = object[key];
125471    return isNative(value) ? value : undefined;
125472  }
125473  
125474  /**
125475   * Gets the `[[Prototype]]` of `value`.
125476   *
125477   * @private
125478   * @param {*} value The value to query.
125479   * @returns {null|Object} Returns the `[[Prototype]]`.
125480   */
125481  function getPrototype(value) {
125482    return nativeGetPrototype(Object(value));
125483  }
125484  
125485  /**
125486   * Creates an array of the own enumerable symbol properties of `object`.
125487   *
125488   * @private
125489   * @param {Object} object The object to query.
125490   * @returns {Array} Returns the array of symbols.
125491   */
125492  function getSymbols(object) {
125493    // Coerce `object` to an object to avoid non-object errors in V8.
125494    // See https://bugs.chromium.org/p/v8/issues/detail?id=3443 for more details.
125495    return getOwnPropertySymbols(Object(object));
125496  }
125497  
125498  // Fallback for IE < 11.
125499  if (!getOwnPropertySymbols) {
125500    getSymbols = function() {
125501      return [];
125502    };
125503  }
125504  
125505  /**
125506   * Gets the `toStringTag` of `value`.
125507   *
125508   * @private
125509   * @param {*} value The value to query.
125510   * @returns {string} Returns the `toStringTag`.
125511   */
125512  function getTag(value) {
125513    return objectToString.call(value);
125514  }
125515  
125516  // Fallback for data views, maps, sets, and weak maps in IE 11,
125517  // for data views in Edge, and promises in Node.js.
125518  if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
125519      (Map && getTag(new Map) != mapTag) ||
125520      (Promise && getTag(Promise.resolve()) != promiseTag) ||
125521      (Set && getTag(new Set) != setTag) ||
125522      (WeakMap && getTag(new WeakMap) != weakMapTag)) {
125523    getTag = function(value) {
125524      var result = objectToString.call(value),
125525          Ctor = result == objectTag ? value.constructor : undefined,
125526          ctorString = Ctor ? toSource(Ctor) : undefined;
125527  
125528      if (ctorString) {
125529        switch (ctorString) {
125530          case dataViewCtorString: return dataViewTag;
125531          case mapCtorString: return mapTag;
125532          case promiseCtorString: return promiseTag;
125533          case setCtorString: return setTag;
125534          case weakMapCtorString: return weakMapTag;
125535        }
125536      }
125537      return result;
125538    };
125539  }
125540  
125541  /**
125542   * Initializes an array clone.
125543   *
125544   * @private
125545   * @param {Array} array The array to clone.
125546   * @returns {Array} Returns the initialized clone.
125547   */
125548  function initCloneArray(array) {
125549    var length = array.length,
125550        result = array.constructor(length);
125551  
125552    // Add properties assigned by `RegExp#exec`.
125553    if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
125554      result.index = array.index;
125555      result.input = array.input;
125556    }
125557    return result;
125558  }
125559  
125560  /**
125561   * Initializes an object clone.
125562   *
125563   * @private
125564   * @param {Object} object The object to clone.
125565   * @returns {Object} Returns the initialized clone.
125566   */
125567  function initCloneObject(object) {
125568    return (typeof object.constructor == 'function' && !isPrototype(object))
125569      ? baseCreate(getPrototype(object))
125570      : {};
125571  }
125572  
125573  /**
125574   * Initializes an object clone based on its `toStringTag`.
125575   *
125576   * **Note:** This function only supports cloning values with tags of
125577   * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
125578   *
125579   * @private
125580   * @param {Object} object The object to clone.
125581   * @param {string} tag The `toStringTag` of the object to clone.
125582   * @param {Function} cloneFunc The function to clone values.
125583   * @param {boolean} [isDeep] Specify a deep clone.
125584   * @returns {Object} Returns the initialized clone.
125585   */
125586  function initCloneByTag(object, tag, cloneFunc, isDeep) {
125587    var Ctor = object.constructor;
125588    switch (tag) {
125589      case arrayBufferTag:
125590        return cloneArrayBuffer(object);
125591  
125592      case boolTag:
125593      case dateTag:
125594        return new Ctor(+object);
125595  
125596      case dataViewTag:
125597        return cloneDataView(object, isDeep);
125598  
125599      case float32Tag: case float64Tag:
125600      case int8Tag: case int16Tag: case int32Tag:
125601      case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
125602        return cloneTypedArray(object, isDeep);
125603  
125604      case mapTag:
125605        return cloneMap(object, isDeep, cloneFunc);
125606  
125607      case numberTag:
125608      case stringTag:
125609        return new Ctor(object);
125610  
125611      case regexpTag:
125612        return cloneRegExp(object);
125613  
125614      case setTag:
125615        return cloneSet(object, isDeep, cloneFunc);
125616  
125617      case symbolTag:
125618        return cloneSymbol(object);
125619    }
125620  }
125621  
125622  /**
125623   * Creates an array of index keys for `object` values of arrays,
125624   * `arguments` objects, and strings, otherwise `null` is returned.
125625   *
125626   * @private
125627   * @param {Object} object The object to query.
125628   * @returns {Array|null} Returns index keys, else `null`.
125629   */
125630  function indexKeys(object) {
125631    var length = object ? object.length : undefined;
125632    if (isLength(length) &&
125633        (isArray(object) || isString(object) || isArguments(object))) {
125634      return baseTimes(length, String);
125635    }
125636    return null;
125637  }
125638  
125639  /**
125640   * Checks if `value` is a valid array-like index.
125641   *
125642   * @private
125643   * @param {*} value The value to check.
125644   * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
125645   * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
125646   */
125647  function isIndex(value, length) {
125648    length = length == null ? MAX_SAFE_INTEGER : length;
125649    return !!length &&
125650      (typeof value == 'number' || reIsUint.test(value)) &&
125651      (value > -1 && value % 1 == 0 && value < length);
125652  }
125653  
125654  /**
125655   * Checks if `value` is suitable for use as unique object key.
125656   *
125657   * @private
125658   * @param {*} value The value to check.
125659   * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
125660   */
125661  function isKeyable(value) {
125662    var type = typeof value;
125663    return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
125664      ? (value !== '__proto__')
125665      : (value === null);
125666  }
125667  
125668  /**
125669   * Checks if `value` is likely a prototype object.
125670   *
125671   * @private
125672   * @param {*} value The value to check.
125673   * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
125674   */
125675  function isPrototype(value) {
125676    var Ctor = value && value.constructor,
125677        proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
125678  
125679    return value === proto;
125680  }
125681  
125682  /**
125683   * Converts `func` to its source code.
125684   *
125685   * @private
125686   * @param {Function} func The function to process.
125687   * @returns {string} Returns the source code.
125688   */
125689  function toSource(func) {
125690    if (func != null) {
125691      try {
125692        return funcToString.call(func);
125693      } catch (e) {}
125694      try {
125695        return (func + '');
125696      } catch (e) {}
125697    }
125698    return '';
125699  }
125700  
125701  /**
125702   * Performs a
125703   * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
125704   * comparison between two values to determine if they are equivalent.
125705   *
125706   * @static
125707   * @memberOf _
125708   * @since 4.0.0
125709   * @category Lang
125710   * @param {*} value The value to compare.
125711   * @param {*} other The other value to compare.
125712   * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
125713   * @example
125714   *
125715   * var object = { 'user': 'fred' };
125716   * var other = { 'user': 'fred' };
125717   *
125718   * _.eq(object, object);
125719   * // => true
125720   *
125721   * _.eq(object, other);
125722   * // => false
125723   *
125724   * _.eq('a', 'a');
125725   * // => true
125726   *
125727   * _.eq('a', Object('a'));
125728   * // => false
125729   *
125730   * _.eq(NaN, NaN);
125731   * // => true
125732   */
125733  function eq(value, other) {
125734    return value === other || (value !== value && other !== other);
125735  }
125736  
125737  /**
125738   * Checks if `value` is likely an `arguments` object.
125739   *
125740   * @static
125741   * @memberOf _
125742   * @since 0.1.0
125743   * @category Lang
125744   * @param {*} value The value to check.
125745   * @returns {boolean} Returns `true` if `value` is correctly classified,
125746   *  else `false`.
125747   * @example
125748   *
125749   * _.isArguments(function() { return arguments; }());
125750   * // => true
125751   *
125752   * _.isArguments([1, 2, 3]);
125753   * // => false
125754   */
125755  function isArguments(value) {
125756    // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.
125757    return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&
125758      (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);
125759  }
125760  
125761  /**
125762   * Checks if `value` is classified as an `Array` object.
125763   *
125764   * @static
125765   * @memberOf _
125766   * @since 0.1.0
125767   * @type {Function}
125768   * @category Lang
125769   * @param {*} value The value to check.
125770   * @returns {boolean} Returns `true` if `value` is correctly classified,
125771   *  else `false`.
125772   * @example
125773   *
125774   * _.isArray([1, 2, 3]);
125775   * // => true
125776   *
125777   * _.isArray(document.body.children);
125778   * // => false
125779   *
125780   * _.isArray('abc');
125781   * // => false
125782   *
125783   * _.isArray(_.noop);
125784   * // => false
125785   */
125786  var isArray = Array.isArray;
125787  
125788  /**
125789   * Checks if `value` is array-like. A value is considered array-like if it's
125790   * not a function and has a `value.length` that's an integer greater than or
125791   * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
125792   *
125793   * @static
125794   * @memberOf _
125795   * @since 4.0.0
125796   * @category Lang
125797   * @param {*} value The value to check.
125798   * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
125799   * @example
125800   *
125801   * _.isArrayLike([1, 2, 3]);
125802   * // => true
125803   *
125804   * _.isArrayLike(document.body.children);
125805   * // => true
125806   *
125807   * _.isArrayLike('abc');
125808   * // => true
125809   *
125810   * _.isArrayLike(_.noop);
125811   * // => false
125812   */
125813  function isArrayLike(value) {
125814    return value != null && isLength(getLength(value)) && !isFunction(value);
125815  }
125816  
125817  /**
125818   * This method is like `_.isArrayLike` except that it also checks if `value`
125819   * is an object.
125820   *
125821   * @static
125822   * @memberOf _
125823   * @since 4.0.0
125824   * @category Lang
125825   * @param {*} value The value to check.
125826   * @returns {boolean} Returns `true` if `value` is an array-like object,
125827   *  else `false`.
125828   * @example
125829   *
125830   * _.isArrayLikeObject([1, 2, 3]);
125831   * // => true
125832   *
125833   * _.isArrayLikeObject(document.body.children);
125834   * // => true
125835   *
125836   * _.isArrayLikeObject('abc');
125837   * // => false
125838   *
125839   * _.isArrayLikeObject(_.noop);
125840   * // => false
125841   */
125842  function isArrayLikeObject(value) {
125843    return isObjectLike(value) && isArrayLike(value);
125844  }
125845  
125846  /**
125847   * Checks if `value` is a buffer.
125848   *
125849   * @static
125850   * @memberOf _
125851   * @since 4.3.0
125852   * @category Lang
125853   * @param {*} value The value to check.
125854   * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
125855   * @example
125856   *
125857   * _.isBuffer(new Buffer(2));
125858   * // => true
125859   *
125860   * _.isBuffer(new Uint8Array(2));
125861   * // => false
125862   */
125863  var isBuffer = !Buffer ? constant(false) : function(value) {
125864    return value instanceof Buffer;
125865  };
125866  
125867  /**
125868   * Checks if `value` is classified as a `Function` object.
125869   *
125870   * @static
125871   * @memberOf _
125872   * @since 0.1.0
125873   * @category Lang
125874   * @param {*} value The value to check.
125875   * @returns {boolean} Returns `true` if `value` is correctly classified,
125876   *  else `false`.
125877   * @example
125878   *
125879   * _.isFunction(_);
125880   * // => true
125881   *
125882   * _.isFunction(/abc/);
125883   * // => false
125884   */
125885  function isFunction(value) {
125886    // The use of `Object#toString` avoids issues with the `typeof` operator
125887    // in Safari 8 which returns 'object' for typed array and weak map constructors,
125888    // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.
125889    var tag = isObject(value) ? objectToString.call(value) : '';
125890    return tag == funcTag || tag == genTag;
125891  }
125892  
125893  /**
125894   * Checks if `value` is a valid array-like length.
125895   *
125896   * **Note:** This function is loosely based on
125897   * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).
125898   *
125899   * @static
125900   * @memberOf _
125901   * @since 4.0.0
125902   * @category Lang
125903   * @param {*} value The value to check.
125904   * @returns {boolean} Returns `true` if `value` is a valid length,
125905   *  else `false`.
125906   * @example
125907   *
125908   * _.isLength(3);
125909   * // => true
125910   *
125911   * _.isLength(Number.MIN_VALUE);
125912   * // => false
125913   *
125914   * _.isLength(Infinity);
125915   * // => false
125916   *
125917   * _.isLength('3');
125918   * // => false
125919   */
125920  function isLength(value) {
125921    return typeof value == 'number' &&
125922      value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
125923  }
125924  
125925  /**
125926   * Checks if `value` is the
125927   * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)
125928   * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
125929   *
125930   * @static
125931   * @memberOf _
125932   * @since 0.1.0
125933   * @category Lang
125934   * @param {*} value The value to check.
125935   * @returns {boolean} Returns `true` if `value` is an object, else `false`.
125936   * @example
125937   *
125938   * _.isObject({});
125939   * // => true
125940   *
125941   * _.isObject([1, 2, 3]);
125942   * // => true
125943   *
125944   * _.isObject(_.noop);
125945   * // => true
125946   *
125947   * _.isObject(null);
125948   * // => false
125949   */
125950  function isObject(value) {
125951    var type = typeof value;
125952    return !!value && (type == 'object' || type == 'function');
125953  }
125954  
125955  /**
125956   * Checks if `value` is object-like. A value is object-like if it's not `null`
125957   * and has a `typeof` result of "object".
125958   *
125959   * @static
125960   * @memberOf _
125961   * @since 4.0.0
125962   * @category Lang
125963   * @param {*} value The value to check.
125964   * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
125965   * @example
125966   *
125967   * _.isObjectLike({});
125968   * // => true
125969   *
125970   * _.isObjectLike([1, 2, 3]);
125971   * // => true
125972   *
125973   * _.isObjectLike(_.noop);
125974   * // => false
125975   *
125976   * _.isObjectLike(null);
125977   * // => false
125978   */
125979  function isObjectLike(value) {
125980    return !!value && typeof value == 'object';
125981  }
125982  
125983  /**
125984   * Checks if `value` is a native function.
125985   *
125986   * @static
125987   * @memberOf _
125988   * @since 3.0.0
125989   * @category Lang
125990   * @param {*} value The value to check.
125991   * @returns {boolean} Returns `true` if `value` is a native function,
125992   *  else `false`.
125993   * @example
125994   *
125995   * _.isNative(Array.prototype.push);
125996   * // => true
125997   *
125998   * _.isNative(_);
125999   * // => false
126000   */
126001  function isNative(value) {
126002    if (!isObject(value)) {
126003      return false;
126004    }
126005    var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
126006    return pattern.test(toSource(value));
126007  }
126008  
126009  /**
126010   * Checks if `value` is classified as a `String` primitive or object.
126011   *
126012   * @static
126013   * @since 0.1.0
126014   * @memberOf _
126015   * @category Lang
126016   * @param {*} value The value to check.
126017   * @returns {boolean} Returns `true` if `value` is correctly classified,
126018   *  else `false`.
126019   * @example
126020   *
126021   * _.isString('abc');
126022   * // => true
126023   *
126024   * _.isString(1);
126025   * // => false
126026   */
126027  function isString(value) {
126028    return typeof value == 'string' ||
126029      (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);
126030  }
126031  
126032  /**
126033   * Creates an array of the own enumerable property names of `object`.
126034   *
126035   * **Note:** Non-object values are coerced to objects. See the
126036   * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)
126037   * for more details.
126038   *
126039   * @static
126040   * @since 0.1.0
126041   * @memberOf _
126042   * @category Object
126043   * @param {Object} object The object to query.
126044   * @returns {Array} Returns the array of property names.
126045   * @example
126046   *
126047   * function Foo() {
126048   *   this.a = 1;
126049   *   this.b = 2;
126050   * }
126051   *
126052   * Foo.prototype.c = 3;
126053   *
126054   * _.keys(new Foo);
126055   * // => ['a', 'b'] (iteration order is not guaranteed)
126056   *
126057   * _.keys('hi');
126058   * // => ['0', '1']
126059   */
126060  function keys(object) {
126061    var isProto = isPrototype(object);
126062    if (!(isProto || isArrayLike(object))) {
126063      return baseKeys(object);
126064    }
126065    var indexes = indexKeys(object),
126066        skipIndexes = !!indexes,
126067        result = indexes || [],
126068        length = result.length;
126069  
126070    for (var key in object) {
126071      if (baseHas(object, key) &&
126072          !(skipIndexes && (key == 'length' || isIndex(key, length))) &&
126073          !(isProto && key == 'constructor')) {
126074        result.push(key);
126075      }
126076    }
126077    return result;
126078  }
126079  
126080  /**
126081   * Creates a function that returns `value`.
126082   *
126083   * @static
126084   * @memberOf _
126085   * @since 2.4.0
126086   * @category Util
126087   * @param {*} value The value to return from the new function.
126088   * @returns {Function} Returns the new constant function.
126089   * @example
126090   *
126091   * var object = { 'user': 'fred' };
126092   * var getter = _.constant(object);
126093   *
126094   * getter() === object;
126095   * // => true
126096   */
126097  function constant(value) {
126098    return function() {
126099      return value;
126100    };
126101  }
126102  
126103  module.exports = baseClone;
126104  
126105  /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(163)(module)))
126106  
126107  /***/ }),
126108  /* 749 */
126109  /***/ (function(module, exports, __webpack_require__) {
126110  
126111  /**
126112   * lodash 4.3.2 (Custom Build) <https://lodash.com/>
126113   * Build: `lodash modularize exports="npm" -o ./`
126114   * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
126115   * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
126116   * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
126117   * Available under MIT license <https://lodash.com/license>
126118   */
126119  var baseClone = __webpack_require__(748);
126120  
126121  /**
126122   * Creates a shallow clone of `value`.
126123   *
126124   * **Note:** This method is loosely based on the
126125   * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
126126   * and supports cloning arrays, array buffers, booleans, date objects, maps,
126127   * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
126128   * arrays. The own enumerable properties of `arguments` objects are cloned
126129   * as plain objects. An empty object is returned for uncloneable values such
126130   * as error objects, functions, DOM nodes, and WeakMaps.
126131   *
126132   * @static
126133   * @memberOf _
126134   * @category Lang
126135   * @param {*} value The value to clone.
126136   * @returns {*} Returns the cloned value.
126137   * @example
126138   *
126139   * var objects = [{ 'a': 1 }, { 'b': 2 }];
126140   *
126141   * var shallow = _.clone(objects);
126142   * console.log(shallow[0] === objects[0]);
126143   * // => true
126144   */
126145  function clone(value) {
126146    return baseClone(value, false, true);
126147  }
126148  
126149  module.exports = clone;
126150  
126151  
126152  /***/ }),
126153  /* 750 */
126154  /***/ (function(module, exports) {
126155  
126156  /**
126157   * lodash (Custom Build) <https://lodash.com/>
126158   * Build: `lodash modularize exports="npm" -o ./`
126159   * Copyright jQuery Foundation and other contributors <https://jquery.org/>
126160   * Released under MIT license <https://lodash.com/license>
126161   * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
126162   * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
126163   */
126164  
126165  /** Used as references for various `Number` constants. */
126166  var MAX_SAFE_INTEGER = 9007199254740991;
126167  
126168  /** `Object#toString` result references. */
126169  var argsTag = '[object Arguments]',
126170      funcTag = '[object Function]',
126171      genTag = '[object GeneratorFunction]',
126172      mapTag = '[object Map]',
126173      objectTag = '[object Object]',
126174      promiseTag = '[object Promise]',
126175      setTag = '[object Set]',
126176      stringTag = '[object String]',
126177      weakMapTag = '[object WeakMap]';
126178  
126179  var dataViewTag = '[object DataView]';
126180  
126181  /**
126182   * Used to match `RegExp`
126183   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
126184   */
126185  var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
126186  
126187  /** Used to detect host constructors (Safari). */
126188  var reIsHostCtor = /^\[object .+?Constructor\]$/;
126189  
126190  /** Used to detect unsigned integer values. */
126191  var reIsUint = /^(?:0|[1-9]\d*)$/;
126192  
126193  /** Used to compose unicode character classes. */
126194  var rsAstralRange = '\\ud800-\\udfff',
126195      rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23',
126196      rsComboSymbolsRange = '\\u20d0-\\u20f0',
126197      rsVarRange = '\\ufe0e\\ufe0f';
126198  
126199  /** Used to compose unicode capture groups. */
126200  var rsAstral = '[' + rsAstralRange + ']',
126201      rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',
126202      rsFitz = '\\ud83c[\\udffb-\\udfff]',
126203      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
126204      rsNonAstral = '[^' + rsAstralRange + ']',
126205      rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
126206      rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
126207      rsZWJ = '\\u200d';
126208  
126209  /** Used to compose unicode regexes. */
126210  var reOptMod = rsModifier + '?',
126211      rsOptVar = '[' + rsVarRange + ']?',
126212      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
126213      rsSeq = rsOptVar + reOptMod + rsOptJoin,
126214      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
126215  
126216  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
126217  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
126218  
126219  /** 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/). */
126220  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');
126221  
126222  /** Detect free variable `global` from Node.js. */
126223  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
126224  
126225  /** Detect free variable `self`. */
126226  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
126227  
126228  /** Used as a reference to the global object. */
126229  var root = freeGlobal || freeSelf || Function('return this')();
126230  
126231  /**
126232   * A specialized version of `_.map` for arrays without support for iteratee
126233   * shorthands.
126234   *
126235   * @private
126236   * @param {Array} [array] The array to iterate over.
126237   * @param {Function} iteratee The function invoked per iteration.
126238   * @returns {Array} Returns the new mapped array.
126239   */
126240  function arrayMap(array, iteratee) {
126241    var index = -1,
126242        length = array ? array.length : 0,
126243        result = Array(length);
126244  
126245    while (++index < length) {
126246      result[index] = iteratee(array[index], index, array);
126247    }
126248    return result;
126249  }
126250  
126251  /**
126252   * Converts an ASCII `string` to an array.
126253   *
126254   * @private
126255   * @param {string} string The string to convert.
126256   * @returns {Array} Returns the converted array.
126257   */
126258  function asciiToArray(string) {
126259    return string.split('');
126260  }
126261  
126262  /**
126263   * The base implementation of `_.times` without support for iteratee shorthands
126264   * or max array length checks.
126265   *
126266   * @private
126267   * @param {number} n The number of times to invoke `iteratee`.
126268   * @param {Function} iteratee The function invoked per iteration.
126269   * @returns {Array} Returns the array of results.
126270   */
126271  function baseTimes(n, iteratee) {
126272    var index = -1,
126273        result = Array(n);
126274  
126275    while (++index < n) {
126276      result[index] = iteratee(index);
126277    }
126278    return result;
126279  }
126280  
126281  /**
126282   * The base implementation of `_.values` and `_.valuesIn` which creates an
126283   * array of `object` property values corresponding to the property names
126284   * of `props`.
126285   *
126286   * @private
126287   * @param {Object} object The object to query.
126288   * @param {Array} props The property names to get values for.
126289   * @returns {Object} Returns the array of property values.
126290   */
126291  function baseValues(object, props) {
126292    return arrayMap(props, function(key) {
126293      return object[key];
126294    });
126295  }
126296  
126297  /**
126298   * Gets the value at `key` of `object`.
126299   *
126300   * @private
126301   * @param {Object} [object] The object to query.
126302   * @param {string} key The key of the property to get.
126303   * @returns {*} Returns the property value.
126304   */
126305  function getValue(object, key) {
126306    return object == null ? undefined : object[key];
126307  }
126308  
126309  /**
126310   * Checks if `string` contains Unicode symbols.
126311   *
126312   * @private
126313   * @param {string} string The string to inspect.
126314   * @returns {boolean} Returns `true` if a symbol is found, else `false`.
126315   */
126316  function hasUnicode(string) {
126317    return reHasUnicode.test(string);
126318  }
126319  
126320  /**
126321   * Checks if `value` is a host object in IE < 9.
126322   *
126323   * @private
126324   * @param {*} value The value to check.
126325   * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
126326   */
126327  function isHostObject(value) {
126328    // Many host objects are `Object` objects that can coerce to strings
126329    // despite having improperly defined `toString` methods.
126330    var result = false;
126331    if (value != null && typeof value.toString != 'function') {
126332      try {
126333        result = !!(value + '');
126334      } catch (e) {}
126335    }
126336    return result;
126337  }
126338  
126339  /**
126340   * Converts `iterator` to an array.
126341   *
126342   * @private
126343   * @param {Object} iterator The iterator to convert.
126344   * @returns {Array} Returns the converted array.
126345   */
126346  function iteratorToArray(iterator) {
126347    var data,
126348        result = [];
126349  
126350    while (!(data = iterator.next()).done) {
126351      result.push(data.value);
126352    }
126353    return result;
126354  }
126355  
126356  /**
126357   * Converts `map` to its key-value pairs.
126358   *
126359   * @private
126360   * @param {Object} map The map to convert.
126361   * @returns {Array} Returns the key-value pairs.
126362   */
126363  function mapToArray(map) {
126364    var index = -1,
126365        result = Array(map.size);
126366  
126367    map.forEach(function(value, key) {
126368      result[++index] = [key, value];
126369    });
126370    return result;
126371  }
126372  
126373  /**
126374   * Creates a unary function that invokes `func` with its argument transformed.
126375   *
126376   * @private
126377   * @param {Function} func The function to wrap.
126378   * @param {Function} transform The argument transform.
126379   * @returns {Function} Returns the new function.
126380   */
126381  function overArg(func, transform) {
126382    return function(arg) {
126383      return func(transform(arg));
126384    };
126385  }
126386  
126387  /**
126388   * Converts `set` to an array of its values.
126389   *
126390   * @private
126391   * @param {Object} set The set to convert.
126392   * @returns {Array} Returns the values.
126393   */
126394  function setToArray(set) {
126395    var index = -1,
126396        result = Array(set.size);
126397  
126398    set.forEach(function(value) {
126399      result[++index] = value;
126400    });
126401    return result;
126402  }
126403  
126404  /**
126405   * Converts `string` to an array.
126406   *
126407   * @private
126408   * @param {string} string The string to convert.
126409   * @returns {Array} Returns the converted array.
126410   */
126411  function stringToArray(string) {
126412    return hasUnicode(string)
126413      ? unicodeToArray(string)
126414      : asciiToArray(string);
126415  }
126416  
126417  /**
126418   * Converts a Unicode `string` to an array.
126419   *
126420   * @private
126421   * @param {string} string The string to convert.
126422   * @returns {Array} Returns the converted array.
126423   */
126424  function unicodeToArray(string) {
126425    return string.match(reUnicode) || [];
126426  }
126427  
126428  /** Used for built-in method references. */
126429  var funcProto = Function.prototype,
126430      objectProto = Object.prototype;
126431  
126432  /** Used to detect overreaching core-js shims. */
126433  var coreJsData = root['__core-js_shared__'];
126434  
126435  /** Used to detect methods masquerading as native. */
126436  var maskSrcKey = (function() {
126437    var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
126438    return uid ? ('Symbol(src)_1.' + uid) : '';
126439  }());
126440  
126441  /** Used to resolve the decompiled source of functions. */
126442  var funcToString = funcProto.toString;
126443  
126444  /** Used to check objects for own properties. */
126445  var hasOwnProperty = objectProto.hasOwnProperty;
126446  
126447  /**
126448   * Used to resolve the
126449   * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
126450   * of values.
126451   */
126452  var objectToString = objectProto.toString;
126453  
126454  /** Used to detect if a method is native. */
126455  var reIsNative = RegExp('^' +
126456    funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
126457    .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
126458  );
126459  
126460  /** Built-in value references. */
126461  var Symbol = root.Symbol,
126462      iteratorSymbol = Symbol ? Symbol.iterator : undefined,
126463      propertyIsEnumerable = objectProto.propertyIsEnumerable;
126464  
126465  /* Built-in method references for those with the same name as other `lodash` methods. */
126466  var nativeKeys = overArg(Object.keys, Object);
126467  
126468  /* Built-in method references that are verified to be native. */
126469  var DataView = getNative(root, 'DataView'),
126470      Map = getNative(root, 'Map'),
126471      Promise = getNative(root, 'Promise'),
126472      Set = getNative(root, 'Set'),
126473      WeakMap = getNative(root, 'WeakMap');
126474  
126475  /** Used to detect maps, sets, and weakmaps. */
126476  var dataViewCtorString = toSource(DataView),
126477      mapCtorString = toSource(Map),
126478      promiseCtorString = toSource(Promise),
126479      setCtorString = toSource(Set),
126480      weakMapCtorString = toSource(WeakMap);
126481  
126482  /**
126483   * Creates an array of the enumerable property names of the array-like `value`.
126484   *
126485   * @private
126486   * @param {*} value The value to query.
126487   * @param {boolean} inherited Specify returning inherited property names.
126488   * @returns {Array} Returns the array of property names.
126489   */
126490  function arrayLikeKeys(value, inherited) {
126491    // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
126492    // Safari 9 makes `arguments.length` enumerable in strict mode.
126493    var result = (isArray(value) || isArguments(value))
126494      ? baseTimes(value.length, String)
126495      : [];
126496  
126497    var length = result.length,
126498        skipIndexes = !!length;
126499  
126500    for (var key in value) {
126501      if ((inherited || hasOwnProperty.call(value, key)) &&
126502          !(skipIndexes && (key == 'length' || isIndex(key, length)))) {
126503        result.push(key);
126504      }
126505    }
126506    return result;
126507  }
126508  
126509  /**
126510   * The base implementation of `getTag`.
126511   *
126512   * @private
126513   * @param {*} value The value to query.
126514   * @returns {string} Returns the `toStringTag`.
126515   */
126516  function baseGetTag(value) {
126517    return objectToString.call(value);
126518  }
126519  
126520  /**
126521   * The base implementation of `_.isNative` without bad shim checks.
126522   *
126523   * @private
126524   * @param {*} value The value to check.
126525   * @returns {boolean} Returns `true` if `value` is a native function,
126526   *  else `false`.
126527   */
126528  function baseIsNative(value) {
126529    if (!isObject(value) || isMasked(value)) {
126530      return false;
126531    }
126532    var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
126533    return pattern.test(toSource(value));
126534  }
126535  
126536  /**
126537   * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
126538   *
126539   * @private
126540   * @param {Object} object The object to query.
126541   * @returns {Array} Returns the array of property names.
126542   */
126543  function baseKeys(object) {
126544    if (!isPrototype(object)) {
126545      return nativeKeys(object);
126546    }
126547    var result = [];
126548    for (var key in Object(object)) {
126549      if (hasOwnProperty.call(object, key) && key != 'constructor') {
126550        result.push(key);
126551      }
126552    }
126553    return result;
126554  }
126555  
126556  /**
126557   * Copies the values of `source` to `array`.
126558   *
126559   * @private
126560   * @param {Array} source The array to copy values from.
126561   * @param {Array} [array=[]] The array to copy values to.
126562   * @returns {Array} Returns `array`.
126563   */
126564  function copyArray(source, array) {
126565    var index = -1,
126566        length = source.length;
126567  
126568    array || (array = Array(length));
126569    while (++index < length) {
126570      array[index] = source[index];
126571    }
126572    return array;
126573  }
126574  
126575  /**
126576   * Gets the native function at `key` of `object`.
126577   *
126578   * @private
126579   * @param {Object} object The object to query.
126580   * @param {string} key The key of the method to get.
126581   * @returns {*} Returns the function if it's native, else `undefined`.
126582   */
126583  function getNative(object, key) {
126584    var value = getValue(object, key);
126585    return baseIsNative(value) ? value : undefined;
126586  }
126587  
126588  /**
126589   * Gets the `toStringTag` of `value`.
126590   *
126591   * @private
126592   * @param {*} value The value to query.
126593   * @returns {string} Returns the `toStringTag`.
126594   */
126595  var getTag = baseGetTag;
126596  
126597  // Fallback for data views, maps, sets, and weak maps in IE 11,
126598  // for data views in Edge < 14, and promises in Node.js.
126599  if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
126600      (Map && getTag(new Map) != mapTag) ||
126601      (Promise && getTag(Promise.resolve()) != promiseTag) ||
126602      (Set && getTag(new Set) != setTag) ||
126603      (WeakMap && getTag(new WeakMap) != weakMapTag)) {
126604    getTag = function(value) {
126605      var result = objectToString.call(value),
126606          Ctor = result == objectTag ? value.constructor : undefined,
126607          ctorString = Ctor ? toSource(Ctor) : undefined;
126608  
126609      if (ctorString) {
126610        switch (ctorString) {
126611          case dataViewCtorString: return dataViewTag;
126612          case mapCtorString: return mapTag;
126613          case promiseCtorString: return promiseTag;
126614          case setCtorString: return setTag;
126615          case weakMapCtorString: return weakMapTag;
126616        }
126617      }
126618      return result;
126619    };
126620  }
126621  
126622  /**
126623   * Checks if `value` is a valid array-like index.
126624   *
126625   * @private
126626   * @param {*} value The value to check.
126627   * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
126628   * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
126629   */
126630  function isIndex(value, length) {
126631    length = length == null ? MAX_SAFE_INTEGER : length;
126632    return !!length &&
126633      (typeof value == 'number' || reIsUint.test(value)) &&
126634      (value > -1 && value % 1 == 0 && value < length);
126635  }
126636  
126637  /**
126638   * Checks if `func` has its source masked.
126639   *
126640   * @private
126641   * @param {Function} func The function to check.
126642   * @returns {boolean} Returns `true` if `func` is masked, else `false`.
126643   */
126644  function isMasked(func) {
126645    return !!maskSrcKey && (maskSrcKey in func);
126646  }
126647  
126648  /**
126649   * Checks if `value` is likely a prototype object.
126650   *
126651   * @private
126652   * @param {*} value The value to check.
126653   * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
126654   */
126655  function isPrototype(value) {
126656    var Ctor = value && value.constructor,
126657        proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
126658  
126659    return value === proto;
126660  }
126661  
126662  /**
126663   * Converts `func` to its source code.
126664   *
126665   * @private
126666   * @param {Function} func The function to process.
126667   * @returns {string} Returns the source code.
126668   */
126669  function toSource(func) {
126670    if (func != null) {
126671      try {
126672        return funcToString.call(func);
126673      } catch (e) {}
126674      try {
126675        return (func + '');
126676      } catch (e) {}
126677    }
126678    return '';
126679  }
126680  
126681  /**
126682   * Checks if `value` is likely an `arguments` object.
126683   *
126684   * @static
126685   * @memberOf _
126686   * @since 0.1.0
126687   * @category Lang
126688   * @param {*} value The value to check.
126689   * @returns {boolean} Returns `true` if `value` is an `arguments` object,
126690   *  else `false`.
126691   * @example
126692   *
126693   * _.isArguments(function() { return arguments; }());
126694   * // => true
126695   *
126696   * _.isArguments([1, 2, 3]);
126697   * // => false
126698   */
126699  function isArguments(value) {
126700    // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
126701    return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&
126702      (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);
126703  }
126704  
126705  /**
126706   * Checks if `value` is classified as an `Array` object.
126707   *
126708   * @static
126709   * @memberOf _
126710   * @since 0.1.0
126711   * @category Lang
126712   * @param {*} value The value to check.
126713   * @returns {boolean} Returns `true` if `value` is an array, else `false`.
126714   * @example
126715   *
126716   * _.isArray([1, 2, 3]);
126717   * // => true
126718   *
126719   * _.isArray(document.body.children);
126720   * // => false
126721   *
126722   * _.isArray('abc');
126723   * // => false
126724   *
126725   * _.isArray(_.noop);
126726   * // => false
126727   */
126728  var isArray = Array.isArray;
126729  
126730  /**
126731   * Checks if `value` is array-like. A value is considered array-like if it's
126732   * not a function and has a `value.length` that's an integer greater than or
126733   * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
126734   *
126735   * @static
126736   * @memberOf _
126737   * @since 4.0.0
126738   * @category Lang
126739   * @param {*} value The value to check.
126740   * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
126741   * @example
126742   *
126743   * _.isArrayLike([1, 2, 3]);
126744   * // => true
126745   *
126746   * _.isArrayLike(document.body.children);
126747   * // => true
126748   *
126749   * _.isArrayLike('abc');
126750   * // => true
126751   *
126752   * _.isArrayLike(_.noop);
126753   * // => false
126754   */
126755  function isArrayLike(value) {
126756    return value != null && isLength(value.length) && !isFunction(value);
126757  }
126758  
126759  /**
126760   * This method is like `_.isArrayLike` except that it also checks if `value`
126761   * is an object.
126762   *
126763   * @static
126764   * @memberOf _
126765   * @since 4.0.0
126766   * @category Lang
126767   * @param {*} value The value to check.
126768   * @returns {boolean} Returns `true` if `value` is an array-like object,
126769   *  else `false`.
126770   * @example
126771   *
126772   * _.isArrayLikeObject([1, 2, 3]);
126773   * // => true
126774   *
126775   * _.isArrayLikeObject(document.body.children);
126776   * // => true
126777   *
126778   * _.isArrayLikeObject('abc');
126779   * // => false
126780   *
126781   * _.isArrayLikeObject(_.noop);
126782   * // => false
126783   */
126784  function isArrayLikeObject(value) {
126785    return isObjectLike(value) && isArrayLike(value);
126786  }
126787  
126788  /**
126789   * Checks if `value` is classified as a `Function` object.
126790   *
126791   * @static
126792   * @memberOf _
126793   * @since 0.1.0
126794   * @category Lang
126795   * @param {*} value The value to check.
126796   * @returns {boolean} Returns `true` if `value` is a function, else `false`.
126797   * @example
126798   *
126799   * _.isFunction(_);
126800   * // => true
126801   *
126802   * _.isFunction(/abc/);
126803   * // => false
126804   */
126805  function isFunction(value) {
126806    // The use of `Object#toString` avoids issues with the `typeof` operator
126807    // in Safari 8-9 which returns 'object' for typed array and other constructors.
126808    var tag = isObject(value) ? objectToString.call(value) : '';
126809    return tag == funcTag || tag == genTag;
126810  }
126811  
126812  /**
126813   * Checks if `value` is a valid array-like length.
126814   *
126815   * **Note:** This method is loosely based on
126816   * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
126817   *
126818   * @static
126819   * @memberOf _
126820   * @since 4.0.0
126821   * @category Lang
126822   * @param {*} value The value to check.
126823   * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
126824   * @example
126825   *
126826   * _.isLength(3);
126827   * // => true
126828   *
126829   * _.isLength(Number.MIN_VALUE);
126830   * // => false
126831   *
126832   * _.isLength(Infinity);
126833   * // => false
126834   *
126835   * _.isLength('3');
126836   * // => false
126837   */
126838  function isLength(value) {
126839    return typeof value == 'number' &&
126840      value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
126841  }
126842  
126843  /**
126844   * Checks if `value` is the
126845   * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
126846   * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
126847   *
126848   * @static
126849   * @memberOf _
126850   * @since 0.1.0
126851   * @category Lang
126852   * @param {*} value The value to check.
126853   * @returns {boolean} Returns `true` if `value` is an object, else `false`.
126854   * @example
126855   *
126856   * _.isObject({});
126857   * // => true
126858   *
126859   * _.isObject([1, 2, 3]);
126860   * // => true
126861   *
126862   * _.isObject(_.noop);
126863   * // => true
126864   *
126865   * _.isObject(null);
126866   * // => false
126867   */
126868  function isObject(value) {
126869    var type = typeof value;
126870    return !!value && (type == 'object' || type == 'function');
126871  }
126872  
126873  /**
126874   * Checks if `value` is object-like. A value is object-like if it's not `null`
126875   * and has a `typeof` result of "object".
126876   *
126877   * @static
126878   * @memberOf _
126879   * @since 4.0.0
126880   * @category Lang
126881   * @param {*} value The value to check.
126882   * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
126883   * @example
126884   *
126885   * _.isObjectLike({});
126886   * // => true
126887   *
126888   * _.isObjectLike([1, 2, 3]);
126889   * // => true
126890   *
126891   * _.isObjectLike(_.noop);
126892   * // => false
126893   *
126894   * _.isObjectLike(null);
126895   * // => false
126896   */
126897  function isObjectLike(value) {
126898    return !!value && typeof value == 'object';
126899  }
126900  
126901  /**
126902   * Checks if `value` is classified as a `String` primitive or object.
126903   *
126904   * @static
126905   * @since 0.1.0
126906   * @memberOf _
126907   * @category Lang
126908   * @param {*} value The value to check.
126909   * @returns {boolean} Returns `true` if `value` is a string, else `false`.
126910   * @example
126911   *
126912   * _.isString('abc');
126913   * // => true
126914   *
126915   * _.isString(1);
126916   * // => false
126917   */
126918  function isString(value) {
126919    return typeof value == 'string' ||
126920      (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);
126921  }
126922  
126923  /**
126924   * Converts `value` to an array.
126925   *
126926   * @static
126927   * @since 0.1.0
126928   * @memberOf _
126929   * @category Lang
126930   * @param {*} value The value to convert.
126931   * @returns {Array} Returns the converted array.
126932   * @example
126933   *
126934   * _.toArray({ 'a': 1, 'b': 2 });
126935   * // => [1, 2]
126936   *
126937   * _.toArray('abc');
126938   * // => ['a', 'b', 'c']
126939   *
126940   * _.toArray(1);
126941   * // => []
126942   *
126943   * _.toArray(null);
126944   * // => []
126945   */
126946  function toArray(value) {
126947    if (!value) {
126948      return [];
126949    }
126950    if (isArrayLike(value)) {
126951      return isString(value) ? stringToArray(value) : copyArray(value);
126952    }
126953    if (iteratorSymbol && value[iteratorSymbol]) {
126954      return iteratorToArray(value[iteratorSymbol]());
126955    }
126956    var tag = getTag(value),
126957        func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);
126958  
126959    return func(value);
126960  }
126961  
126962  /**
126963   * Creates an array of the own enumerable property names of `object`.
126964   *
126965   * **Note:** Non-object values are coerced to objects. See the
126966   * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
126967   * for more details.
126968   *
126969   * @static
126970   * @since 0.1.0
126971   * @memberOf _
126972   * @category Object
126973   * @param {Object} object The object to query.
126974   * @returns {Array} Returns the array of property names.
126975   * @example
126976   *
126977   * function Foo() {
126978   *   this.a = 1;
126979   *   this.b = 2;
126980   * }
126981   *
126982   * Foo.prototype.c = 3;
126983   *
126984   * _.keys(new Foo);
126985   * // => ['a', 'b'] (iteration order is not guaranteed)
126986   *
126987   * _.keys('hi');
126988   * // => ['0', '1']
126989   */
126990  function keys(object) {
126991    return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
126992  }
126993  
126994  /**
126995   * Creates an array of the own enumerable string keyed property values of `object`.
126996   *
126997   * **Note:** Non-object values are coerced to objects.
126998   *
126999   * @static
127000   * @since 0.1.0
127001   * @memberOf _
127002   * @category Object
127003   * @param {Object} object The object to query.
127004   * @returns {Array} Returns the array of property values.
127005   * @example
127006   *
127007   * function Foo() {
127008   *   this.a = 1;
127009   *   this.b = 2;
127010   * }
127011   *
127012   * Foo.prototype.c = 3;
127013   *
127014   * _.values(new Foo);
127015   * // => [1, 2] (iteration order is not guaranteed)
127016   *
127017   * _.values('hi');
127018   * // => ['h', 'i']
127019   */
127020  function values(object) {
127021    return object ? baseValues(object, keys(object)) : [];
127022  }
127023  
127024  module.exports = toArray;
127025  
127026  
127027  /***/ }),
127028  /* 751 */
127029  /***/ (function(module, exports, __webpack_require__) {
127030  
127031  var crypto = __webpack_require__(11)
127032  var max = Math.pow(2, 32)
127033  
127034  module.exports = random
127035  module.exports.cryptographic = true
127036  
127037  function random () {
127038    var buf = crypto
127039      .randomBytes(4)
127040      .toString('hex')
127041  
127042    return parseInt(buf, 16) / max
127043  }
127044  
127045  
127046  /***/ }),
127047  /* 752 */
127048  /***/ (function(module, exports, __webpack_require__) {
127049  
127050  "use strict";
127051  
127052  
127053  var chars = {}, unesc, temp;
127054  
127055  function reverse(object, prepender) {
127056    return Object.keys(object).reduce(function(reversed, key) {
127057      var newKey = prepender ? prepender + key : key; // Optionally prepend a string to key.
127058      reversed[object[key]] = newKey; // Swap key and value.
127059      return reversed; // Return the result.
127060    }, {});
127061  }
127062  
127063  /**
127064   * Regex for common characters
127065   */
127066  
127067  chars.escapeRegex = {
127068    '?': /\?/g,
127069    '@': /\@/g,
127070    '!': /\!/g,
127071    '+': /\+/g,
127072    '*': /\*/g,
127073    '(': /\(/g,
127074    ')': /\)/g,
127075    '[': /\[/g,
127076    ']': /\]/g
127077  };
127078  
127079  /**
127080   * Escape characters
127081   */
127082  
127083  chars.ESC = {
127084    '?': '__UNESC_QMRK__',
127085    '@': '__UNESC_AMPE__',
127086    '!': '__UNESC_EXCL__',
127087    '+': '__UNESC_PLUS__',
127088    '*': '__UNESC_STAR__',
127089    ',': '__UNESC_COMMA__',
127090    '(': '__UNESC_LTPAREN__',
127091    ')': '__UNESC_RTPAREN__',
127092    '[': '__UNESC_LTBRACK__',
127093    ']': '__UNESC_RTBRACK__'
127094  };
127095  
127096  /**
127097   * Unescape characters
127098   */
127099  
127100  chars.UNESC = unesc || (unesc = reverse(chars.ESC, '\\'));
127101  
127102  chars.ESC_TEMP = {
127103    '?': '__TEMP_QMRK__',
127104    '@': '__TEMP_AMPE__',
127105    '!': '__TEMP_EXCL__',
127106    '*': '__TEMP_STAR__',
127107    '+': '__TEMP_PLUS__',
127108    ',': '__TEMP_COMMA__',
127109    '(': '__TEMP_LTPAREN__',
127110    ')': '__TEMP_RTPAREN__',
127111    '[': '__TEMP_LTBRACK__',
127112    ']': '__TEMP_RTBRACK__'
127113  };
127114  
127115  chars.TEMP = temp || (temp = reverse(chars.ESC_TEMP));
127116  
127117  module.exports = chars;
127118  
127119  
127120  /***/ }),
127121  /* 753 */
127122  /***/ (function(module, exports, __webpack_require__) {
127123  
127124  "use strict";
127125  /*!
127126   * micromatch <https://github.com/jonschlinkert/micromatch>
127127   *
127128   * Copyright (c) 2014-2015, Jon Schlinkert.
127129   * Licensed under the MIT License.
127130   */
127131  
127132  
127133  
127134  var utils = __webpack_require__(300);
127135  var Glob = __webpack_require__(754);
127136  
127137  /**
127138   * Expose `expand`
127139   */
127140  
127141  module.exports = expand;
127142  
127143  /**
127144   * Expand a glob pattern to resolve braces and
127145   * similar patterns before converting to regex.
127146   *
127147   * @param  {String|Array} `pattern`
127148   * @param  {Array} `files`
127149   * @param  {Options} `opts`
127150   * @return {Array}
127151   */
127152  
127153  function expand(pattern, options) {
127154    if (typeof pattern !== 'string') {
127155      throw new TypeError('micromatch.expand(): argument should be a string.');
127156    }
127157  
127158    var glob = new Glob(pattern, options || {});
127159    var opts = glob.options;
127160  
127161    if (!utils.isGlob(pattern)) {
127162      glob.pattern = glob.pattern.replace(/([\/.])/g, '\\$1');
127163      return glob;
127164    }
127165  
127166    glob.pattern = glob.pattern.replace(/(\+)(?!\()/g, '\\$1');
127167    glob.pattern = glob.pattern.split('$').join('\\$');
127168  
127169    if (typeof opts.braces !== 'boolean' && typeof opts.nobraces !== 'boolean') {
127170      opts.braces = true;
127171    }
127172  
127173    if (glob.pattern === '.*') {
127174      return {
127175        pattern: '\\.' + star,
127176        tokens: tok,
127177        options: opts
127178      };
127179    }
127180  
127181    if (glob.pattern === '*') {
127182      return {
127183        pattern: oneStar(opts.dot),
127184        tokens: tok,
127185        options: opts
127186      };
127187    }
127188  
127189    // parse the glob pattern into tokens
127190    glob.parse();
127191    var tok = glob.tokens;
127192    tok.is.negated = opts.negated;
127193  
127194    // dotfile handling
127195    if ((opts.dotfiles === true || tok.is.dotfile) && opts.dot !== false) {
127196      opts.dotfiles = true;
127197      opts.dot = true;
127198    }
127199  
127200    if ((opts.dotdirs === true || tok.is.dotdir) && opts.dot !== false) {
127201      opts.dotdirs = true;
127202      opts.dot = true;
127203    }
127204  
127205    // check for braces with a dotfile pattern
127206    if (/[{,]\./.test(glob.pattern)) {
127207      opts.makeRe = false;
127208      opts.dot = true;
127209    }
127210  
127211    if (opts.nonegate !== true) {
127212      opts.negated = glob.negated;
127213    }
127214  
127215    // if the leading character is a dot or a slash, escape it
127216    if (glob.pattern.charAt(0) === '.' && glob.pattern.charAt(1) !== '/') {
127217      glob.pattern = '\\' + glob.pattern;
127218    }
127219  
127220    /**
127221     * Extended globs
127222     */
127223  
127224    // expand braces, e.g `{1..5}`
127225    glob.track('before braces');
127226    if (tok.is.braces) {
127227      glob.braces();
127228    }
127229    glob.track('after braces');
127230  
127231    // expand extglobs, e.g `foo/!(a|b)`
127232    glob.track('before extglob');
127233    if (tok.is.extglob) {
127234      glob.extglob();
127235    }
127236    glob.track('after extglob');
127237  
127238    // expand brackets, e.g `[[:alpha:]]`
127239    glob.track('before brackets');
127240    if (tok.is.brackets) {
127241      glob.brackets();
127242    }
127243    glob.track('after brackets');
127244  
127245    // special patterns
127246    glob._replace('[!', '[^');
127247    glob._replace('(?', '(%~');
127248    glob._replace(/\[\]/, '\\[\\]');
127249    glob._replace('/[', '/' + (opts.dot ? dotfiles : nodot) + '[', true);
127250    glob._replace('/?', '/' + (opts.dot ? dotfiles : nodot) + '[^/]', true);
127251    glob._replace('/.', '/(?=.)\\.', true);
127252  
127253    // windows drives
127254    glob._replace(/^(\w):([\\\/]+?)/gi, '(?=.)$1:$2', true);
127255  
127256    // negate slashes in exclusion ranges
127257    if (glob.pattern.indexOf('[^') !== -1) {
127258      glob.pattern = negateSlash(glob.pattern);
127259    }
127260  
127261    if (opts.globstar !== false && glob.pattern === '**') {
127262      glob.pattern = globstar(opts.dot);
127263  
127264    } else {
127265      glob.pattern = balance(glob.pattern, '[', ']');
127266      glob.escape(glob.pattern);
127267  
127268      // if the pattern has `**`
127269      if (tok.is.globstar) {
127270        glob.pattern = collapse(glob.pattern, '/**');
127271        glob.pattern = collapse(glob.pattern, '**/');
127272        glob._replace('/**/', '(?:/' + globstar(opts.dot) + '/|/)', true);
127273        glob._replace(/\*{2,}/g, '**');
127274  
127275        // 'foo/*'
127276        glob._replace(/(\w+)\*(?!\/)/g, '$1[^/]*?', true);
127277        glob._replace(/\*\*\/\*(\w)/g, globstar(opts.dot) + '\\/' + (opts.dot ? dotfiles : nodot) + '[^/]*?$1', true);
127278  
127279        if (opts.dot !== true) {
127280          glob._replace(/\*\*\/(.)/g, '(?:**\\/|)$1');
127281        }
127282  
127283        // 'foo/**' or '{**,*}', but not 'foo**'
127284        if (tok.path.dirname !== '' || /,\*\*|\*\*,/.test(glob.orig)) {
127285          glob._replace('**', globstar(opts.dot), true);
127286        }
127287      }
127288  
127289      // ends with /*
127290      glob._replace(/\/\*$/, '\\/' + oneStar(opts.dot), true);
127291      // ends with *, no slashes
127292      glob._replace(/(?!\/)\*$/, star, true);
127293      // has 'n*.' (partial wildcard w/ file extension)
127294      glob._replace(/([^\/]+)\*/, '$1' + oneStar(true), true);
127295      // has '*'
127296      glob._replace('*', oneStar(opts.dot), true);
127297      glob._replace('?.', '?\\.', true);
127298      glob._replace('?:', '?:', true);
127299  
127300      glob._replace(/\?+/g, function(match) {
127301        var len = match.length;
127302        if (len === 1) {
127303          return qmark;
127304        }
127305        return qmark + '{' + len + '}';
127306      });
127307  
127308      // escape '.abc' => '\\.abc'
127309      glob._replace(/\.([*\w]+)/g, '\\.$1');
127310      // fix '[^\\\\/]'
127311      glob._replace(/\[\^[\\\/]+\]/g, qmark);
127312      // '///' => '\/'
127313      glob._replace(/\/+/g, '\\/');
127314      // '\\\\\\' => '\\'
127315      glob._replace(/\\{2,}/g, '\\');
127316    }
127317  
127318    // unescape previously escaped patterns
127319    glob.unescape(glob.pattern);
127320    glob._replace('__UNESC_STAR__', '*');
127321  
127322    // escape dots that follow qmarks
127323    glob._replace('?.', '?\\.');
127324  
127325    // remove unnecessary slashes in character classes
127326    glob._replace('[^\\/]', qmark);
127327  
127328    if (glob.pattern.length > 1) {
127329      if (/^[\[?*]/.test(glob.pattern)) {
127330        // only prepend the string if we don't want to match dotfiles
127331        glob.pattern = (opts.dot ? dotfiles : nodot) + glob.pattern;
127332      }
127333    }
127334  
127335    return glob;
127336  }
127337  
127338  /**
127339   * Collapse repeated character sequences.
127340   *
127341   * ```js
127342   * collapse('a/../../../b', '../');
127343   * //=> 'a/../b'
127344   * ```
127345   *
127346   * @param  {String} `str`
127347   * @param  {String} `ch` Character sequence to collapse
127348   * @return {String}
127349   */
127350  
127351  function collapse(str, ch) {
127352    var res = str.split(ch);
127353    var isFirst = res[0] === '';
127354    var isLast = res[res.length - 1] === '';
127355    res = res.filter(Boolean);
127356    if (isFirst) res.unshift('');
127357    if (isLast) res.push('');
127358    return res.join(ch);
127359  }
127360  
127361  /**
127362   * Negate slashes in exclusion ranges, per glob spec:
127363   *
127364   * ```js
127365   * negateSlash('[^foo]');
127366   * //=> '[^\\/foo]'
127367   * ```
127368   *
127369   * @param  {String} `str` glob pattern
127370   * @return {String}
127371   */
127372  
127373  function negateSlash(str) {
127374    return str.replace(/\[\^([^\]]*?)\]/g, function(match, inner) {
127375      if (inner.indexOf('/') === -1) {
127376        inner = '\\/' + inner;
127377      }
127378      return '[^' + inner + ']';
127379    });
127380  }
127381  
127382  /**
127383   * Escape imbalanced braces/bracket. This is a very
127384   * basic, naive implementation that only does enough
127385   * to serve the purpose.
127386   */
127387  
127388  function balance(str, a, b) {
127389    var aarr = str.split(a);
127390    var alen = aarr.join('').length;
127391    var blen = str.split(b).join('').length;
127392  
127393    if (alen !== blen) {
127394      str = aarr.join('\\' + a);
127395      return str.split(b).join('\\' + b);
127396    }
127397    return str;
127398  }
127399  
127400  /**
127401   * Special patterns to be converted to regex.
127402   * Heuristics are used to simplify patterns
127403   * and speed up processing.
127404   */
127405  
127406  /* eslint no-multi-spaces: 0 */
127407  var qmark       = '[^/]';
127408  var star        = qmark + '*?';
127409  var nodot       = '(?!\\.)(?=.)';
127410  var dotfileGlob = '(?:\\/|^)\\.{1,2}($|\\/)';
127411  var dotfiles    = '(?!' + dotfileGlob + ')(?=.)';
127412  var twoStarDot  = '(?:(?!' + dotfileGlob + ').)*?';
127413  
127414  /**
127415   * Create a regex for `*`.
127416   *
127417   * If `dot` is true, or the pattern does not begin with
127418   * a leading star, then return the simpler regex.
127419   */
127420  
127421  function oneStar(dotfile) {
127422    return dotfile ? '(?!' + dotfileGlob + ')(?=.)' + star : (nodot + star);
127423  }
127424  
127425  function globstar(dotfile) {
127426    if (dotfile) { return twoStarDot; }
127427    return '(?:(?!(?:\\/|^)\\.).)*?';
127428  }
127429  
127430  
127431  /***/ }),
127432  /* 754 */
127433  /***/ (function(module, exports, __webpack_require__) {
127434  
127435  "use strict";
127436  
127437  
127438  var chars = __webpack_require__(752);
127439  var utils = __webpack_require__(300);
127440  
127441  /**
127442   * Expose `Glob`
127443   */
127444  
127445  var Glob = module.exports = function Glob(pattern, options) {
127446    if (!(this instanceof Glob)) {
127447      return new Glob(pattern, options);
127448    }
127449    this.options = options || {};
127450    this.pattern = pattern;
127451    this.history = [];
127452    this.tokens = {};
127453    this.init(pattern);
127454  };
127455  
127456  /**
127457   * Initialize defaults
127458   */
127459  
127460  Glob.prototype.init = function(pattern) {
127461    this.orig = pattern;
127462    this.negated = this.isNegated();
127463    this.options.track = this.options.track || false;
127464    this.options.makeRe = true;
127465  };
127466  
127467  /**
127468   * Push a change into `glob.history`. Useful
127469   * for debugging.
127470   */
127471  
127472  Glob.prototype.track = function(msg) {
127473    if (this.options.track) {
127474      this.history.push({msg: msg, pattern: this.pattern});
127475    }
127476  };
127477  
127478  /**
127479   * Return true if `glob.pattern` was negated
127480   * with `!`, also remove the `!` from the pattern.
127481   *
127482   * @return {Boolean}
127483   */
127484  
127485  Glob.prototype.isNegated = function() {
127486    if (this.pattern.charCodeAt(0) === 33 /* '!' */) {
127487      this.pattern = this.pattern.slice(1);
127488      return true;
127489    }
127490    return false;
127491  };
127492  
127493  /**
127494   * Expand braces in the given glob pattern.
127495   *
127496   * We only need to use the [braces] lib when
127497   * patterns are nested.
127498   */
127499  
127500  Glob.prototype.braces = function() {
127501    if (this.options.nobraces !== true && this.options.nobrace !== true) {
127502      // naive/fast check for imbalanced characters
127503      var a = this.pattern.match(/[\{\(\[]/g);
127504      var b = this.pattern.match(/[\}\)\]]/g);
127505  
127506      // if imbalanced, don't optimize the pattern
127507      if (a && b && (a.length !== b.length)) {
127508        this.options.makeRe = false;
127509      }
127510  
127511      // expand brace patterns and join the resulting array
127512      var expanded = utils.braces(this.pattern, this.options);
127513      this.pattern = expanded.join('|');
127514    }
127515  };
127516  
127517  /**
127518   * Expand bracket expressions in `glob.pattern`
127519   */
127520  
127521  Glob.prototype.brackets = function() {
127522    if (this.options.nobrackets !== true) {
127523      this.pattern = utils.brackets(this.pattern);
127524    }
127525  };
127526  
127527  /**
127528   * Expand bracket expressions in `glob.pattern`
127529   */
127530  
127531  Glob.prototype.extglob = function() {
127532    if (this.options.noextglob === true) return;
127533  
127534    if (utils.isExtglob(this.pattern)) {
127535      this.pattern = utils.extglob(this.pattern, {escape: true});
127536    }
127537  };
127538  
127539  /**
127540   * Parse the given pattern
127541   */
127542  
127543  Glob.prototype.parse = function(pattern) {
127544    this.tokens = utils.parseGlob(pattern || this.pattern, true);
127545    return this.tokens;
127546  };
127547  
127548  /**
127549   * Replace `a` with `b`. Also tracks the change before and
127550   * after each replacement. This is disabled by default, but
127551   * can be enabled by setting `options.track` to true.
127552   *
127553   * Also, when the pattern is a string, `.split()` is used,
127554   * because it's much faster than replace.
127555   *
127556   * @param  {RegExp|String} `a`
127557   * @param  {String} `b`
127558   * @param  {Boolean} `escape` When `true`, escapes `*` and `?` in the replacement.
127559   * @return {String}
127560   */
127561  
127562  Glob.prototype._replace = function(a, b, escape) {
127563    this.track('before (find): "' + a + '" (replace with): "' + b + '"');
127564    if (escape) b = esc(b);
127565    if (a && b && typeof a === 'string') {
127566      this.pattern = this.pattern.split(a).join(b);
127567    } else {
127568      this.pattern = this.pattern.replace(a, b);
127569    }
127570    this.track('after');
127571  };
127572  
127573  /**
127574   * Escape special characters in the given string.
127575   *
127576   * @param  {String} `str` Glob pattern
127577   * @return {String}
127578   */
127579  
127580  Glob.prototype.escape = function(str) {
127581    this.track('before escape: ');
127582    var re = /["\\](['"]?[^"'\\]['"]?)/g;
127583  
127584    this.pattern = str.replace(re, function($0, $1) {
127585      var o = chars.ESC;
127586      var ch = o && o[$1];
127587      if (ch) {
127588        return ch;
127589      }
127590      if (/[a-z]/i.test($0)) {
127591        return $0.split('\\').join('');
127592      }
127593      return $0;
127594    });
127595  
127596    this.track('after escape: ');
127597  };
127598  
127599  /**
127600   * Unescape special characters in the given string.
127601   *
127602   * @param  {String} `str`
127603   * @return {String}
127604   */
127605  
127606  Glob.prototype.unescape = function(str) {
127607    var re = /__([A-Z]+)_([A-Z]+)__/g;
127608    this.pattern = str.replace(re, function($0, $1) {
127609      return chars[$1][$0];
127610    });
127611    this.pattern = unesc(this.pattern);
127612  };
127613  
127614  /**
127615   * Escape/unescape utils
127616   */
127617  
127618  function esc(str) {
127619    str = str.split('?').join('%~');
127620    str = str.split('*').join('%%');
127621    return str;
127622  }
127623  
127624  function unesc(str) {
127625    str = str.split('%~').join('?');
127626    str = str.split('%%').join('*');
127627    return str;
127628  }
127629  
127630  
127631  /***/ }),
127632  /* 755 */
127633  /***/ (function(module, exports, __webpack_require__) {
127634  
127635  "use strict";
127636  /*!
127637   * arr-diff <https://github.com/jonschlinkert/arr-diff>
127638   *
127639   * Copyright (c) 2014 Jon Schlinkert, contributors.
127640   * Licensed under the MIT License
127641   */
127642  
127643  
127644  
127645  var flatten = __webpack_require__(478);
127646  var slice = [].slice;
127647  
127648  /**
127649   * Return the difference between the first array and
127650   * additional arrays.
127651   *
127652   * ```js
127653   * var diff = require('{%= name %}');
127654   *
127655   * var a = ['a', 'b', 'c', 'd'];
127656   * var b = ['b', 'c'];
127657   *
127658   * console.log(diff(a, b))
127659   * //=> ['a', 'd']
127660   * ```
127661   *
127662   * @param  {Array} `a`
127663   * @param  {Array} `b`
127664   * @return {Array}
127665   * @api public
127666   */
127667  
127668  function diff(arr, arrays) {
127669    var argsLen = arguments.length;
127670    var len = arr.length, i = -1;
127671    var res = [], arrays;
127672  
127673    if (argsLen === 1) {
127674      return arr;
127675    }
127676  
127677    if (argsLen > 2) {
127678      arrays = flatten(slice.call(arguments, 1));
127679    }
127680  
127681    while (++i < len) {
127682      if (!~arrays.indexOf(arr[i])) {
127683        res.push(arr[i]);
127684      }
127685    }
127686    return res;
127687  }
127688  
127689  /**
127690   * Expose `diff`
127691   */
127692  
127693  module.exports = diff;
127694  
127695  
127696  /***/ }),
127697  /* 756 */
127698  /***/ (function(module, exports, __webpack_require__) {
127699  
127700  "use strict";
127701  /*!
127702   * array-unique <https://github.com/jonschlinkert/array-unique>
127703   *
127704   * Copyright (c) 2014-2015, Jon Schlinkert.
127705   * Licensed under the MIT License.
127706   */
127707  
127708  
127709  
127710  module.exports = function unique(arr) {
127711    if (!Array.isArray(arr)) {
127712      throw new TypeError('array-unique expects an array.');
127713    }
127714  
127715    var len = arr.length;
127716    var i = -1;
127717  
127718    while (i++ < len) {
127719      var j = i + 1;
127720  
127721      for (; j < arr.length; ++j) {
127722        if (arr[i] === arr[j]) {
127723          arr.splice(j--, 1);
127724        }
127725      }
127726    }
127727    return arr;
127728  };
127729  
127730  
127731  /***/ }),
127732  /* 757 */
127733  /***/ (function(module, exports, __webpack_require__) {
127734  
127735  "use strict";
127736  /*!
127737   * braces <https://github.com/jonschlinkert/braces>
127738   *
127739   * Copyright (c) 2014-2015, Jon Schlinkert.
127740   * Licensed under the MIT license.
127741   */
127742  
127743  
127744  
127745  /**
127746   * Module dependencies
127747   */
127748  
127749  var expand = __webpack_require__(608);
127750  var repeat = __webpack_require__(411);
127751  var tokens = __webpack_require__(778);
127752  
127753  /**
127754   * Expose `braces`
127755   */
127756  
127757  module.exports = function(str, options) {
127758    if (typeof str !== 'string') {
127759      throw new Error('braces expects a string');
127760    }
127761    return braces(str, options);
127762  };
127763  
127764  /**
127765   * Expand `{foo,bar}` or `{1..5}` braces in the
127766   * given `string`.
127767   *
127768   * @param  {String} `str`
127769   * @param  {Array} `arr`
127770   * @param  {Object} `options`
127771   * @return {Array}
127772   */
127773  
127774  function braces(str, arr, options) {
127775    if (str === '') {
127776      return [];
127777    }
127778  
127779    if (!Array.isArray(arr)) {
127780      options = arr;
127781      arr = [];
127782    }
127783  
127784    var opts = options || {};
127785    arr = arr || [];
127786  
127787    if (typeof opts.nodupes === 'undefined') {
127788      opts.nodupes = true;
127789    }
127790  
127791    var fn = opts.fn;
127792    var es6;
127793  
127794    if (typeof opts === 'function') {
127795      fn = opts;
127796      opts = {};
127797    }
127798  
127799    if (!(patternRe instanceof RegExp)) {
127800      patternRe = patternRegex();
127801    }
127802  
127803    var matches = str.match(patternRe) || [];
127804    var m = matches[0];
127805  
127806    switch(m) {
127807      case '\\,':
127808        return escapeCommas(str, arr, opts);
127809      case '\\.':
127810        return escapeDots(str, arr, opts);
127811      case '\/.':
127812        return escapePaths(str, arr, opts);
127813      case ' ':
127814        return splitWhitespace(str);
127815      case '{,}':
127816        return exponential(str, opts, braces);
127817      case '{}':
127818        return emptyBraces(str, arr, opts);
127819      case '\\{':
127820      case '\\}':
127821        return escapeBraces(str, arr, opts);
127822      case '${':
127823        if (!/\{[^{]+\{/.test(str)) {
127824          return arr.concat(str);
127825        } else {
127826          es6 = true;
127827          str = tokens.before(str, es6Regex());
127828        }
127829    }
127830  
127831    if (!(braceRe instanceof RegExp)) {
127832      braceRe = braceRegex();
127833    }
127834  
127835    var match = braceRe.exec(str);
127836    if (match == null) {
127837      return [str];
127838    }
127839  
127840    var outter = match[1];
127841    var inner = match[2];
127842    if (inner === '') { return [str]; }
127843  
127844    var segs, segsLength;
127845  
127846    if (inner.indexOf('..') !== -1) {
127847      segs = expand(inner, opts, fn) || inner.split(',');
127848      segsLength = segs.length;
127849  
127850    } else if (inner[0] === '"' || inner[0] === '\'') {
127851      return arr.concat(str.split(/['"]/).join(''));
127852  
127853    } else {
127854      segs = inner.split(',');
127855      if (opts.makeRe) {
127856        return braces(str.replace(outter, wrap(segs, '|')), opts);
127857      }
127858  
127859      segsLength = segs.length;
127860      if (segsLength === 1 && opts.bash) {
127861        segs[0] = wrap(segs[0], '\\');
127862      }
127863    }
127864  
127865    var len = segs.length;
127866    var i = 0, val;
127867  
127868    while (len--) {
127869      var path = segs[i++];
127870  
127871      if (/(\.[^.\/])/.test(path)) {
127872        if (segsLength > 1) {
127873          return segs;
127874        } else {
127875          return [str];
127876        }
127877      }
127878  
127879      val = splice(str, outter, path);
127880  
127881      if (/\{[^{}]+?\}/.test(val)) {
127882        arr = braces(val, arr, opts);
127883      } else if (val !== '') {
127884        if (opts.nodupes && arr.indexOf(val) !== -1) { continue; }
127885        arr.push(es6 ? tokens.after(val) : val);
127886      }
127887    }
127888  
127889    if (opts.strict) { return filter(arr, filterEmpty); }
127890    return arr;
127891  }
127892  
127893  /**
127894   * Expand exponential ranges
127895   *
127896   *   `a{,}{,}` => ['a', 'a', 'a', 'a']
127897   */
127898  
127899  function exponential(str, options, fn) {
127900    if (typeof options === 'function') {
127901      fn = options;
127902      options = null;
127903    }
127904  
127905    var opts = options || {};
127906    var esc = '__ESC_EXP__';
127907    var exp = 0;
127908    var res;
127909  
127910    var parts = str.split('{,}');
127911    if (opts.nodupes) {
127912      return fn(parts.join(''), opts);
127913    }
127914  
127915    exp = parts.length - 1;
127916    res = fn(parts.join(esc), opts);
127917    var len = res.length;
127918    var arr = [];
127919    var i = 0;
127920  
127921    while (len--) {
127922      var ele = res[i++];
127923      var idx = ele.indexOf(esc);
127924  
127925      if (idx === -1) {
127926        arr.push(ele);
127927  
127928      } else {
127929        ele = ele.split('__ESC_EXP__').join('');
127930        if (!!ele && opts.nodupes !== false) {
127931          arr.push(ele);
127932  
127933        } else {
127934          var num = Math.pow(2, exp);
127935          arr.push.apply(arr, repeat(ele, num));
127936        }
127937      }
127938    }
127939    return arr;
127940  }
127941  
127942  /**
127943   * Wrap a value with parens, brackets or braces,
127944   * based on the given character/separator.
127945   *
127946   * @param  {String|Array} `val`
127947   * @param  {String} `ch`
127948   * @return {String}
127949   */
127950  
127951  function wrap(val, ch) {
127952    if (ch === '|') {
127953      return '(' + val.join(ch) + ')';
127954    }
127955    if (ch === ',') {
127956      return '{' + val.join(ch) + '}';
127957    }
127958    if (ch === '-') {
127959      return '[' + val.join(ch) + ']';
127960    }
127961    if (ch === '\\') {
127962      return '\\{' + val + '\\}';
127963    }
127964  }
127965  
127966  /**
127967   * Handle empty braces: `{}`
127968   */
127969  
127970  function emptyBraces(str, arr, opts) {
127971    return braces(str.split('{}').join('\\{\\}'), arr, opts);
127972  }
127973  
127974  /**
127975   * Filter out empty-ish values
127976   */
127977  
127978  function filterEmpty(ele) {
127979    return !!ele && ele !== '\\';
127980  }
127981  
127982  /**
127983   * Handle patterns with whitespace
127984   */
127985  
127986  function splitWhitespace(str) {
127987    var segs = str.split(' ');
127988    var len = segs.length;
127989    var res = [];
127990    var i = 0;
127991  
127992    while (len--) {
127993      res.push.apply(res, braces(segs[i++]));
127994    }
127995    return res;
127996  }
127997  
127998  /**
127999   * Handle escaped braces: `\\{foo,bar}`
128000   */
128001  
128002  function escapeBraces(str, arr, opts) {
128003    if (!/\{[^{]+\{/.test(str)) {
128004      return arr.concat(str.split('\\').join(''));
128005    } else {
128006      str = str.split('\\{').join('__LT_BRACE__');
128007      str = str.split('\\}').join('__RT_BRACE__');
128008      return map(braces(str, arr, opts), function(ele) {
128009        ele = ele.split('__LT_BRACE__').join('{');
128010        return ele.split('__RT_BRACE__').join('}');
128011      });
128012    }
128013  }
128014  
128015  /**
128016   * Handle escaped dots: `{1\\.2}`
128017   */
128018  
128019  function escapeDots(str, arr, opts) {
128020    if (!/[^\\]\..+\\\./.test(str)) {
128021      return arr.concat(str.split('\\').join(''));
128022    } else {
128023      str = str.split('\\.').join('__ESC_DOT__');
128024      return map(braces(str, arr, opts), function(ele) {
128025        return ele.split('__ESC_DOT__').join('.');
128026      });
128027    }
128028  }
128029  
128030  /**
128031   * Handle escaped dots: `{1\\.2}`
128032   */
128033  
128034  function escapePaths(str, arr, opts) {
128035    str = str.split('\/.').join('__ESC_PATH__');
128036    return map(braces(str, arr, opts), function(ele) {
128037      return ele.split('__ESC_PATH__').join('\/.');
128038    });
128039  }
128040  
128041  /**
128042   * Handle escaped commas: `{a\\,b}`
128043   */
128044  
128045  function escapeCommas(str, arr, opts) {
128046    if (!/\w,/.test(str)) {
128047      return arr.concat(str.split('\\').join(''));
128048    } else {
128049      str = str.split('\\,').join('__ESC_COMMA__');
128050      return map(braces(str, arr, opts), function(ele) {
128051        return ele.split('__ESC_COMMA__').join(',');
128052      });
128053    }
128054  }
128055  
128056  /**
128057   * Regex for common patterns
128058   */
128059  
128060  function patternRegex() {
128061    return /\${|( (?=[{,}])|(?=[{,}]) )|{}|{,}|\\,(?=.*[{}])|\/\.(?=.*[{}])|\\\.(?={)|\\{|\\}/;
128062  }
128063  
128064  /**
128065   * Braces regex.
128066   */
128067  
128068  function braceRegex() {
128069    return /.*(\\?\{([^}]+)\})/;
128070  }
128071  
128072  /**
128073   * es6 delimiter regex.
128074   */
128075  
128076  function es6Regex() {
128077    return /\$\{([^}]+)\}/;
128078  }
128079  
128080  var braceRe;
128081  var patternRe;
128082  
128083  /**
128084   * Faster alternative to `String.replace()` when the
128085   * index of the token to be replaces can't be supplied
128086   */
128087  
128088  function splice(str, token, replacement) {
128089    var i = str.indexOf(token);
128090    return str.substr(0, i) + replacement
128091      + str.substr(i + token.length);
128092  }
128093  
128094  /**
128095   * Fast array map
128096   */
128097  
128098  function map(arr, fn) {
128099    if (arr == null) {
128100      return [];
128101    }
128102  
128103    var len = arr.length;
128104    var res = new Array(len);
128105    var i = -1;
128106  
128107    while (++i < len) {
128108      res[i] = fn(arr[i], i, arr);
128109    }
128110  
128111    return res;
128112  }
128113  
128114  /**
128115   * Fast array filter
128116   */
128117  
128118  function filter(arr, cb) {
128119    if (arr == null) return [];
128120    if (typeof cb !== 'function') {
128121      throw new TypeError('braces: filter expects a callback function.');
128122    }
128123  
128124    var len = arr.length;
128125    var res = arr.slice();
128126    var i = 0;
128127  
128128    while (len--) {
128129      if (!cb(arr[len], i++)) {
128130        res.splice(len, 1);
128131      }
128132    }
128133    return res;
128134  }
128135  
128136  
128137  /***/ }),
128138  /* 758 */
128139  /***/ (function(module, exports) {
128140  
128141  module.exports = {"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/cbor":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["ecma","es"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true},"application/fhir+json":{"source":"iana","compressible":true},"application/fhir+xml":{"source":"iana","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mmt-usd+xml":{"source":"iana","compressible":true},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true},"application/mrb-publish+xml":{"source":"iana","compressible":true},"application/msc-ivr+xml":{"source":"iana","compressible":true},"application/msc-mixer+xml":{"source":"iana","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana"},"application/n-triples":{"source":"iana"},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana"},"application/news-groupinfo":{"source":"iana"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana"},"application/nss":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p2p-overlay+xml":{"source":"iana","compressible":true},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana"},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","compressible":true},"application/pidf-diff+xml":{"source":"iana","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true},"application/route-s-tsid+xml":{"source":"iana","compressible":true},"application/route-usd+xml":{"source":"iana","compressible":true},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana"},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana"},"application/ttml+xml":{"source":"iana","compressible":true},"application/tve-trigger":{"source":"iana"},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true},"application/urc-targetdesc+xml":{"source":"iana","compressible":true},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume-movie":{"source":"iana"},"application/vnd.desmume.movie":{"source":"apache"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana"},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos+xml":{"source":"iana","compressible":true},"application/vnd.paos.xml":{"source":"apache"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana"},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","compressible":true},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"apache","extensions":["der","crt","pem"]},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true},"application/xcap-caps+xml":{"source":"iana","compressible":true},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true},"application/xcap-error+xml":{"source":"iana","compressible":true},"application/xcap-ns+xml":{"source":"iana","compressible":true},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana"},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana"},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana"},"image/apng":{"compressible":false,"extensions":["apng"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana"},"image/emf":{"source":"iana"},"image/fits":{"source":"iana"},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana"},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana"},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana"},"image/tiff":{"source":"iana","compressible":false,"extensions":["tiff","tif"]},"image/tiff-fx":{"source":"iana"},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana"},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana"},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana"},"image/vnd.valve.source.texture":{"source":"iana"},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana"},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana"},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/stl":{"source":"iana"},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana"},"model/vnd.parasolid.transmit.binary":{"source":"iana"},"model/vnd.parasolid.transmit.text":{"source":"iana"},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.usdz+zip":{"source":"iana","compressible":false},"model/vnd.valve.source.compiled-map":{"source":"iana"},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana"},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana"},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana","compressible":false},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shex":{"extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana"},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vp8":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}}
128142  
128143  /***/ }),
128144  /* 759 */
128145  /***/ (function(module, exports, __webpack_require__) {
128146  
128147  /*!
128148   * mime-db
128149   * Copyright(c) 2014 Jonathan Ong
128150   * MIT Licensed
128151   */
128152  
128153  /**
128154   * Module exports.
128155   */
128156  
128157  module.exports = __webpack_require__(758)
128158  
128159  
128160  /***/ }),
128161  /* 760 */
128162  /***/ (function(module, exports, __webpack_require__) {
128163  
128164  "use strict";
128165  
128166  module.exports = (to, from) => {
128167  	// TODO: use `Reflect.ownKeys()` when targeting Node.js 6
128168  	for (const prop of Object.getOwnPropertyNames(from).concat(Object.getOwnPropertySymbols(from))) {
128169  		Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop));
128170  	}
128171  
128172  	return to;
128173  };
128174  
128175  
128176  /***/ }),
128177  /* 761 */
128178  /***/ (function(module, exports, __webpack_require__) {
128179  
128180  "use strict";
128181  
128182  
128183  const mkdirp = __webpack_require__(145)
128184  
128185  module.exports = function (dir, opts) {
128186    return new Promise((resolve, reject) => {
128187      mkdirp(dir, opts, (err, made) => err === null ? resolve(made) : reject(err))
128188    })
128189  }
128190  
128191  
128192  /***/ }),
128193  /* 762 */
128194  /***/ (function(module, exports, __webpack_require__) {
128195  
128196  
128197  var Promise = __webpack_require__(339)
128198  var fs
128199  try {
128200    fs = __webpack_require__(385)
128201  } catch(err) {
128202    fs = __webpack_require__(4)
128203  }
128204  
128205  var api = [
128206    'appendFile',
128207    'chmod',
128208    'chown',
128209    'close',
128210    'fchmod',
128211    'fchown',
128212    'fdatasync',
128213    'fstat',
128214    'fsync',
128215    'ftruncate',
128216    'futimes',
128217    'lchown',
128218    'link',
128219    'lstat',
128220    'mkdir',
128221    'open',
128222    'read',
128223    'readFile',
128224    'readdir',
128225    'readlink',
128226    'realpath',
128227    'rename',
128228    'rmdir',
128229    'stat',
128230    'symlink',
128231    'truncate',
128232    'unlink',
128233    'utimes',
128234    'write',
128235    'writeFile'
128236  ]
128237  
128238  typeof fs.access === 'function' && api.push('access')
128239  typeof fs.copyFile === 'function' && api.push('copyFile')
128240  typeof fs.mkdtemp === 'function' && api.push('mkdtemp')
128241  
128242  __webpack_require__(951).withCallback(fs, exports, api)
128243  
128244  exports.exists = function (filename, callback) {
128245    // callback
128246    if (typeof callback === 'function') {
128247      return fs.stat(filename, function (err) {
128248        callback(null, !err);
128249      })
128250    }
128251    // or promise
128252    return new Promise(function (resolve) {
128253      fs.stat(filename, function (err) {
128254        resolve(!err)
128255      })
128256    })
128257  }
128258  
128259  
128260  /***/ }),
128261  /* 763 */
128262  /***/ (function(module, exports, __webpack_require__) {
128263  
128264  /*jslint node: true*/
128265  var toArray = __webpack_require__(750);
128266  var emojiByName = __webpack_require__(764);
128267  
128268  "use strict";
128269  
128270  /**
128271   * regex to parse emoji in a string - finds emoji, e.g. :coffee:
128272   */
128273  var emojiNameRegex = /:([a-zA-Z0-9_\-\+]+):/g;
128274  
128275  /**
128276   * regex to trim whitespace
128277   * use instead of String.prototype.trim() for IE8 supprt
128278   */
128279  var trimSpaceRegex = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
128280  
128281  /**
128282   * Removes colons on either side
128283   * of the string if present
128284   * @param  {string} str
128285   * @return {string}
128286   */
128287  function stripColons (str) {
128288    var colonIndex = str.indexOf(':');
128289    if (colonIndex > -1) {
128290      // :emoji: (http://www.emoji-cheat-sheet.com/)
128291      if (colonIndex === str.length - 1) {
128292        str = str.substring(0, colonIndex);
128293        return stripColons(str);
128294      } else {
128295        str = str.substr(colonIndex + 1);
128296        return stripColons(str);
128297      }
128298    }
128299  
128300    return str;
128301  }
128302  
128303  /**
128304   * Adds colons to either side
128305   * of the string
128306   * @param {string} str
128307   * @return {string}
128308   */
128309  function wrapColons (str) {
128310    return (typeof str === 'string' && str.length > 0) ? ':' + str + ':' : str;
128311  }
128312  
128313  /**
128314   * Ensure that the word is wrapped in colons
128315   * by only adding them, if they are not there.
128316   * @param {string} str
128317   * @return {string}
128318   */
128319  function ensureColons (str) {
128320    return (typeof str === 'string' && str[0] !== ':') ? wrapColons(str) : str;
128321  }
128322  
128323  // Non spacing mark, some emoticons have them. It's the 'Variant Form',
128324  // which provides more information so that emoticons can be rendered as
128325  // more colorful graphics. FE0E is a unicode text version, where as FE0F
128326  // should be rendered as a graphical version. The code gracefully degrades.
128327  var NON_SPACING_MARK = String.fromCharCode(65039); // 65039 - '️' - 0xFE0F;
128328  var nonSpacingRegex = new RegExp(NON_SPACING_MARK, 'g')
128329  
128330  // Remove the non-spacing-mark from the code, never send a stripped version
128331  // to the client, as it kills graphical emoticons.
128332  function stripNSB (code) {
128333    return code.replace(nonSpacingRegex, '');
128334  };
128335  
128336  // Reversed hash table, where as emojiByName contains a { heart: '❤' }
128337  // dictionary emojiByCode contains { ❤: 'heart' }. The codes are normalized
128338  // to the text version.
128339  var emojiByCode = Object.keys(emojiByName).reduce(function(h,k) {
128340    h[stripNSB(emojiByName[k])] = k;
128341    return h;
128342  }, {});
128343  
128344  /**
128345   * Emoji namespace
128346   */
128347  var Emoji = {
128348    emoji: emojiByName,
128349  };
128350  
128351  /**
128352   * get emoji code from name
128353   * @param  {string} emoji
128354   * @return {string}
128355   */
128356  Emoji._get = function _get (emoji) {
128357    if (emojiByName.hasOwnProperty(emoji)) {
128358      return emojiByName[emoji];
128359    }
128360  
128361    return ensureColons(emoji);
128362  };
128363  
128364  /**
128365   * get emoji code from :emoji: string or name
128366   * @param  {string} emoji
128367   * @return {string}
128368   */
128369  Emoji.get = function get (emoji) {
128370    emoji = stripColons(emoji);
128371  
128372    return Emoji._get(emoji);
128373  };
128374  
128375  /**
128376   * find the emoji by either code or name
128377   * @param {string} nameOrCode The emoji to find, either `coffee`, `:coffee:` or `☕`;
128378   * @return {object}
128379   */
128380  Emoji.find = function find (nameOrCode) {
128381    return Emoji.findByName(nameOrCode) || Emoji.findByCode(nameOrCode);
128382  };
128383  
128384  /**
128385   * find the emoji by name
128386   * @param {string} name The emoji to find either `coffee` or `:coffee:`;
128387   * @return {object}
128388   */
128389  Emoji.findByName = function findByName (name) {
128390    var stripped = stripColons(name);
128391    var emoji = emojiByName[stripped];
128392  
128393    return emoji ? ({ emoji: emoji, key: stripped }) : undefined;
128394  };
128395  
128396  /**
128397   * find the emoji by code (emoji)
128398   * @param {string} code The emoji to find; for example `☕` or `☔`
128399   * @return {object}
128400   */
128401  Emoji.findByCode = function findByCode (code) {
128402    var stripped = stripNSB(code);
128403    var name = emojiByCode[stripped];
128404  
128405    // lookup emoji to ensure the Variant Form is returned
128406    return name ? ({ emoji: emojiByName[name], key: name }) : undefined;
128407  };
128408  
128409  
128410  /**
128411   * Check if an emoji is known by this library
128412   * @param {string} nameOrCode The emoji to validate, either `coffee`, `:coffee:` or `☕`;
128413   * @return {object}
128414   */
128415  Emoji.hasEmoji = function hasEmoji (nameOrCode) {
128416    return Emoji.hasEmojiByName(nameOrCode) || Emoji.hasEmojiByCode(nameOrCode);
128417  };
128418  
128419  /**
128420   * Check if an emoji with given name is known by this library
128421   * @param {string} name The emoji to validate either `coffee` or `:coffee:`;
128422   * @return {object}
128423   */
128424  Emoji.hasEmojiByName = function hasEmojiByName (name) {
128425    var result = Emoji.findByName(name);
128426    return !!result && result.key === stripColons(name);
128427  };
128428  
128429  /**
128430   * Check if a given emoji is known by this library
128431   * @param {string} code The emoji to validate; for example `☕` or `☔`
128432   * @return {object}
128433   */
128434  Emoji.hasEmojiByCode = function hasEmojiByCode (code) {
128435    var result = Emoji.findByCode(code);
128436    return !!result && stripNSB(result.emoji) === stripNSB(code);
128437  };
128438  
128439  /**
128440   * get emoji name from code
128441   * @param  {string} emoji
128442   * @param  {boolean} includeColons should the result include the ::
128443   * @return {string}
128444   */
128445  Emoji.which = function which (emoji_code, includeColons) {
128446    var code = stripNSB(emoji_code);
128447    var word = emojiByCode[code];
128448  
128449    return includeColons ? wrapColons(word) : word;
128450  };
128451  
128452  /**
128453   * emojify a string (replace :emoji: with an emoji)
128454   * @param  {string} str
128455   * @param  {function} on_missing (gets emoji name without :: and returns a proper emoji if no emoji was found)
128456   * @param  {function} format (wrap the returned emoji in a custom element)
128457   * @return {string}
128458   */
128459  Emoji.emojify = function emojify (str, on_missing, format) {
128460    if (!str) return '';
128461  
128462    return str.split(emojiNameRegex) // parse emoji via regex
128463              .map(function parseEmoji(s, i) {
128464                // every second element is an emoji, e.g. "test :fast_forward:" -> [ "test ", "fast_forward" ]
128465                if (i % 2 === 0) return s;
128466                var emoji = Emoji._get(s);
128467                var isMissing = emoji.indexOf(':') > -1;
128468  
128469                if (isMissing && typeof on_missing === 'function') {
128470                  return on_missing(s);
128471                }
128472  
128473                if (!isMissing && typeof format === 'function') {
128474                  return format(emoji, s);
128475                }
128476  
128477                return emoji;
128478              })
128479              .join('') // convert back to string
128480    ;
128481  };
128482  
128483  /**
128484   * return a random emoji
128485   * @return {string}
128486   */
128487  Emoji.random = function random () {
128488    var emojiKeys = Object.keys(emojiByName);
128489    var randomIndex = Math.floor(Math.random() * emojiKeys.length);
128490    var key = emojiKeys[randomIndex];
128491    var emoji = Emoji._get(key);
128492    return { key: key, emoji: emoji };
128493  }
128494  
128495  /**
128496   *  return an collection of potential emoji matches
128497   *  @param {string} str
128498   *  @return {Array.<Object>}
128499   */
128500  Emoji.search = function search (str) {
128501    var emojiKeys = Object.keys(emojiByName);
128502    var matcher = stripColons(str)
128503    var matchingKeys = emojiKeys.filter(function(key) {
128504      return key.toString().indexOf(matcher) === 0;
128505    });
128506    return matchingKeys.map(function(key) {
128507      return {
128508        key: key,
128509        emoji: Emoji._get(key),
128510      };
128511    });
128512  }
128513  
128514  /**
128515   * unemojify a string (replace emoji with :emoji:)
128516   * @param  {string} str
128517   * @return {string}
128518   */
128519  Emoji.unemojify = function unemojify (str) {
128520    if (!str) return '';
128521    var words = toArray(str);
128522  
128523    return words.map(function(word) {
128524      return Emoji.which(word, true) || word;
128525    }).join('');
128526  };
128527  
128528  /**
128529   * replace emojis with replacement value
128530   * @param {string} str
128531   * @param {function|string} the string or callback function to replace the emoji with
128532   * @param {boolean} should trailing whitespaces be cleaned? Defaults false
128533   * @return {string}
128534   */
128535  Emoji.replace = function replace (str, replacement, cleanSpaces) {
128536    if (!str) return '';
128537  
128538    var replace = typeof replacement === 'function' ? replacement : function() { return replacement; };
128539    var words = toArray(str);
128540  
128541    var replaced = words.map(function(word, idx) {
128542      var emoji = Emoji.findByCode(word);
128543      
128544      if (emoji && cleanSpaces && words[idx + 1] === ' ') {
128545        words[idx + 1] = '';
128546      }
128547  
128548      return emoji ? replace(emoji) : word;
128549    }).join('');
128550  
128551    return cleanSpaces ? replaced.replace(trimSpaceRegex, '') : replaced;
128552  };
128553  
128554  
128555  /**
128556   * remove all emojis from a string
128557   * @param {string} str
128558   * @return {string}
128559   */
128560  Emoji.strip = function strip (str) {
128561    return Emoji.replace(str, '', true);
128562  };
128563  
128564  module.exports = Emoji;
128565  
128566  
128567  /***/ }),
128568  /* 764 */
128569  /***/ (function(module, exports) {
128570  
128571  module.exports = {"100":"💯","1234":"🔢","interrobang":"⁉️","tm":"™️","information_source":"ℹ️","left_right_arrow":"↔️","arrow_up_down":"↕️","arrow_upper_left":"↖️","arrow_upper_right":"↗️","arrow_lower_right":"↘️","arrow_lower_left":"↙️","keyboard":"⌨","sunny":"☀️","cloud":"☁️","umbrella":"☔️","showman":"☃","comet":"☄","ballot_box_with_check":"☑️","coffee":"☕️","shamrock":"☘","skull_and_crossbones":"☠","radioactive_sign":"☢","biohazard_sign":"☣","orthodox_cross":"☦","wheel_of_dharma":"☸","white_frowning_face":"☹","aries":"♈️","taurus":"♉️","sagittarius":"♐️","capricorn":"♑️","aquarius":"♒️","pisces":"♓️","spades":"♠️","clubs":"♣️","hearts":"♥️","diamonds":"♦️","hotsprings":"♨️","hammer_and_pick":"⚒","anchor":"⚓️","crossed_swords":"⚔","scales":"⚖","alembic":"⚗","gear":"⚙","scissors":"✂️","white_check_mark":"✅","airplane":"✈️","email":"✉️","envelope":"✉️","black_nib":"✒️","heavy_check_mark":"✔️","heavy_multiplication_x":"✖️","star_of_david":"✡","sparkles":"✨","eight_spoked_asterisk":"✳️","eight_pointed_black_star":"✴️","snowflake":"❄️","sparkle":"❇️","question":"❓","grey_question":"❔","grey_exclamation":"❕","exclamation":"❗️","heavy_exclamation_mark":"❗️","heavy_heart_exclamation_mark_ornament":"❣","heart":"❤️","heavy_plus_sign":"➕","heavy_minus_sign":"➖","heavy_division_sign":"➗","arrow_heading_up":"⤴️","arrow_heading_down":"⤵️","wavy_dash":"〰️","congratulations":"㊗️","secret":"㊙️","copyright":"©️","registered":"®️","bangbang":"‼️","leftwards_arrow_with_hook":"↩️","arrow_right_hook":"↪️","watch":"⌚️","hourglass":"⌛️","fast_forward":"⏩","rewind":"⏪","arrow_double_up":"⏫","arrow_double_down":"⏬","black_right_pointing_double_triangle_with_vertical_bar":"⏭","black_left_pointing_double_triangle_with_vertical_bar":"⏮","black_right_pointing_triangle_with_double_vertical_bar":"⏯","alarm_clock":"⏰","stopwatch":"⏱","timer_clock":"⏲","hourglass_flowing_sand":"⏳","double_vertical_bar":"⏸","black_square_for_stop":"⏹","black_circle_for_record":"⏺","m":"Ⓜ️","black_small_square":"▪️","white_small_square":"▫️","arrow_forward":"▶️","arrow_backward":"◀️","white_medium_square":"◻️","black_medium_square":"◼️","white_medium_small_square":"◽️","black_medium_small_square":"◾️","phone":"☎️","telephone":"☎️","point_up":"☝️","star_and_crescent":"☪","peace_symbol":"☮","yin_yang":"☯","relaxed":"☺️","gemini":"♊️","cancer":"♋️","leo":"♌️","virgo":"♍️","libra":"♎️","scorpius":"♏️","recycle":"♻️","wheelchair":"♿️","atom_symbol":"⚛","fleur_de_lis":"⚜","warning":"⚠️","zap":"⚡️","white_circle":"⚪️","black_circle":"⚫️","coffin":"⚰","funeral_urn":"⚱","soccer":"⚽️","baseball":"⚾️","snowman":"⛄️","partly_sunny":"⛅️","thunder_cloud_and_rain":"⛈","ophiuchus":"⛎","pick":"⛏","helmet_with_white_cross":"⛑","chains":"⛓","no_entry":"⛔️","shinto_shrine":"⛩","church":"⛪️","mountain":"⛰","umbrella_on_ground":"⛱","fountain":"⛲️","golf":"⛳️","ferry":"⛴","boat":"⛵️","sailboat":"⛵️","skier":"⛷","ice_skate":"⛸","person_with_ball":"⛹","tent":"⛺️","fuelpump":"⛽️","fist":"✊","hand":"✋","raised_hand":"✋","v":"✌️","writing_hand":"✍","pencil2":"✏️","latin_cross":"✝","x":"❌","negative_squared_cross_mark":"❎","arrow_right":"➡️","curly_loop":"➰","loop":"➿","arrow_left":"⬅️","arrow_up":"⬆️","arrow_down":"⬇️","black_large_square":"⬛️","white_large_square":"⬜️","star":"⭐️","o":"⭕️","part_alternation_mark":"〽️","mahjong":"🀄️","black_joker":"🃏","a":"🅰️","b":"🅱️","o2":"🅾️","parking":"🅿️","ab":"🆎","cl":"🆑","cool":"🆒","free":"🆓","id":"🆔","new":"🆕","ng":"🆖","ok":"🆗","sos":"🆘","up":"🆙","vs":"🆚","koko":"🈁","sa":"🈂️","u7121":"🈚️","u6307":"🈯️","u7981":"🈲","u7a7a":"🈳","u5408":"🈴","u6e80":"🈵","u6709":"🈶","u6708":"🈷️","u7533":"🈸","u5272":"🈹","u55b6":"🈺","ideograph_advantage":"🉐","accept":"🉑","cyclone":"🌀","foggy":"🌁","closed_umbrella":"🌂","night_with_stars":"🌃","sunrise_over_mountains":"🌄","sunrise":"🌅","city_sunset":"🌆","city_sunrise":"🌇","rainbow":"🌈","bridge_at_night":"🌉","ocean":"🌊","volcano":"🌋","milky_way":"🌌","earth_africa":"🌍","earth_americas":"🌎","earth_asia":"🌏","globe_with_meridians":"🌐","new_moon":"🌑","waxing_crescent_moon":"🌒","first_quarter_moon":"🌓","moon":"🌔","waxing_gibbous_moon":"🌔","full_moon":"🌕","waning_gibbous_moon":"🌖","last_quarter_moon":"🌗","waning_crescent_moon":"🌘","crescent_moon":"🌙","new_moon_with_face":"🌚","first_quarter_moon_with_face":"🌛","last_quarter_moon_with_face":"🌜","full_moon_with_face":"🌝","sun_with_face":"🌞","star2":"🌟","stars":"🌠","thermometer":"🌡","mostly_sunny":"🌤","sun_small_cloud":"🌤","barely_sunny":"🌥","sun_behind_cloud":"🌥","partly_sunny_rain":"🌦","sun_behind_rain_cloud":"🌦","rain_cloud":"🌧","snow_cloud":"🌨","lightning":"🌩","lightning_cloud":"🌩","tornado":"🌪","tornado_cloud":"🌪","fog":"🌫","wind_blowing_face":"🌬","hotdog":"🌭","taco":"🌮","burrito":"🌯","chestnut":"🌰","seedling":"🌱","evergreen_tree":"🌲","deciduous_tree":"🌳","palm_tree":"🌴","cactus":"🌵","hot_pepper":"🌶","tulip":"🌷","cherry_blossom":"🌸","rose":"🌹","hibiscus":"🌺","sunflower":"🌻","blossom":"🌼","corn":"🌽","ear_of_rice":"🌾","herb":"🌿","four_leaf_clover":"🍀","maple_leaf":"🍁","fallen_leaf":"🍂","leaves":"🍃","mushroom":"🍄","tomato":"🍅","eggplant":"🍆","grapes":"🍇","melon":"🍈","watermelon":"🍉","tangerine":"🍊","lemon":"🍋","banana":"🍌","pineapple":"🍍","apple":"🍎","green_apple":"🍏","pear":"🍐","peach":"🍑","cherries":"🍒","strawberry":"🍓","hamburger":"🍔","pizza":"🍕","meat_on_bone":"🍖","poultry_leg":"🍗","rice_cracker":"🍘","rice_ball":"🍙","rice":"🍚","curry":"🍛","ramen":"🍜","spaghetti":"🍝","bread":"🍞","fries":"🍟","sweet_potato":"🍠","dango":"🍡","oden":"🍢","sushi":"🍣","fried_shrimp":"🍤","fish_cake":"🍥","icecream":"🍦","shaved_ice":"🍧","ice_cream":"🍨","doughnut":"🍩","cookie":"🍪","chocolate_bar":"🍫","candy":"🍬","lollipop":"🍭","custard":"🍮","honey_pot":"🍯","cake":"🍰","bento":"🍱","stew":"🍲","egg":"🍳","fork_and_knife":"🍴","tea":"🍵","sake":"🍶","wine_glass":"🍷","cocktail":"🍸","tropical_drink":"🍹","beer":"🍺","beers":"🍻","baby_bottle":"🍼","knife_fork_plate":"🍽","champagne":"🍾","popcorn":"🍿","ribbon":"🎀","gift":"🎁","birthday":"🎂","jack_o_lantern":"🎃","christmas_tree":"🎄","santa":"🎅","fireworks":"🎆","sparkler":"🎇","balloon":"🎈","tada":"🎉","confetti_ball":"🎊","tanabata_tree":"🎋","crossed_flags":"🎌","bamboo":"🎍","dolls":"🎎","flags":"🎏","wind_chime":"🎐","rice_scene":"🎑","school_satchel":"🎒","mortar_board":"🎓","medal":"🎖","reminder_ribbon":"🎗","studio_microphone":"🎙","level_slider":"🎚","control_knobs":"🎛","film_frames":"🎞","admission_tickets":"🎟","carousel_horse":"🎠","ferris_wheel":"🎡","roller_coaster":"🎢","fishing_pole_and_fish":"🎣","microphone":"🎤","movie_camera":"🎥","cinema":"🎦","headphones":"🎧","art":"🎨","tophat":"🎩","circus_tent":"🎪","ticket":"🎫","clapper":"🎬","performing_arts":"🎭","video_game":"🎮","dart":"🎯","slot_machine":"🎰","8ball":"🎱","game_die":"🎲","bowling":"🎳","flower_playing_cards":"🎴","musical_note":"🎵","notes":"🎶","saxophone":"🎷","guitar":"🎸","musical_keyboard":"🎹","trumpet":"🎺","violin":"🎻","musical_score":"🎼","running_shirt_with_sash":"🎽","tennis":"🎾","ski":"🎿","basketball":"🏀","checkered_flag":"🏁","snowboarder":"🏂","runner":"🏃","running":"🏃","surfer":"🏄","sports_medal":"🏅","trophy":"🏆","horse_racing":"🏇","football":"🏈","rugby_football":"🏉","swimmer":"🏊","weight_lifter":"🏋","golfer":"🏌","racing_motorcycle":"🏍","racing_car":"🏎","cricket_bat_and_ball":"🏏","volleyball":"🏐","field_hockey_stick_and_ball":"🏑","ice_hockey_stick_and_puck":"🏒","table_tennis_paddle_and_ball":"🏓","snow_capped_mountain":"🏔","camping":"🏕","beach_with_umbrella":"🏖","building_construction":"🏗","house_buildings":"🏘","cityscape":"🏙","derelict_house_building":"🏚","classical_building":"🏛","desert":"🏜","desert_island":"🏝","national_park":"🏞","stadium":"🏟","house":"🏠","house_with_garden":"🏡","office":"🏢","post_office":"🏣","european_post_office":"🏤","hospital":"🏥","bank":"🏦","atm":"🏧","hotel":"🏨","love_hotel":"🏩","convenience_store":"🏪","school":"🏫","department_store":"🏬","factory":"🏭","izakaya_lantern":"🏮","lantern":"🏮","japanese_castle":"🏯","european_castle":"🏰","waving_white_flag":"🏳","waving_black_flag":"🏴","rosette":"🏵","label":"🏷","badminton_racquet_and_shuttlecock":"🏸","bow_and_arrow":"🏹","amphora":"🏺","skin-tone-2":"🏻","skin-tone-3":"🏼","skin-tone-4":"🏽","skin-tone-5":"🏾","skin-tone-6":"🏿","rat":"🐀","mouse2":"🐁","ox":"🐂","water_buffalo":"🐃","cow2":"🐄","tiger2":"🐅","leopard":"🐆","rabbit2":"🐇","cat2":"🐈","dragon":"🐉","crocodile":"🐊","whale2":"🐋","snail":"🐌","snake":"🐍","racehorse":"🐎","ram":"🐏","goat":"🐐","sheep":"🐑","monkey":"🐒","rooster":"🐓","chicken":"🐔","dog2":"🐕","pig2":"🐖","boar":"🐗","elephant":"🐘","octopus":"🐙","shell":"🐚","bug":"🐛","ant":"🐜","bee":"🐝","honeybee":"🐝","beetle":"🐞","fish":"🐟","tropical_fish":"🐠","blowfish":"🐡","turtle":"🐢","hatching_chick":"🐣","baby_chick":"🐤","hatched_chick":"🐥","bird":"🐦","penguin":"🐧","koala":"🐨","poodle":"🐩","dromedary_camel":"🐪","camel":"🐫","dolphin":"🐬","flipper":"🐬","mouse":"🐭","cow":"🐮","tiger":"🐯","rabbit":"🐰","cat":"🐱","dragon_face":"🐲","whale":"🐳","horse":"🐴","monkey_face":"🐵","dog":"🐶","pig":"🐷","frog":"🐸","hamster":"🐹","wolf":"🐺","bear":"🐻","panda_face":"🐼","pig_nose":"🐽","feet":"🐾","paw_prints":"🐾","chipmunk":"🐿","eyes":"👀","eye":"👁","ear":"👂","nose":"👃","lips":"👄","tongue":"👅","point_up_2":"👆","point_down":"👇","point_left":"👈","point_right":"👉","facepunch":"👊","punch":"👊","wave":"👋","ok_hand":"👌","+1":"👍","thumbsup":"👍","-1":"👎","thumbsdown":"👎","clap":"👏","open_hands":"👐","crown":"👑","womans_hat":"👒","eyeglasses":"👓","necktie":"👔","shirt":"👕","tshirt":"👕","jeans":"👖","dress":"👗","kimono":"👘","bikini":"👙","womans_clothes":"👚","purse":"👛","handbag":"👜","pouch":"👝","mans_shoe":"👞","shoe":"👞","athletic_shoe":"👟","high_heel":"👠","sandal":"👡","boot":"👢","footprints":"👣","bust_in_silhouette":"👤","busts_in_silhouette":"👥","boy":"👦","girl":"👧","man":"👨","woman":"👩","family":"👨‍👩‍👦","man-woman-boy":"👨‍👩‍👦","couple":"👫","man_and_woman_holding_hands":"👫","two_men_holding_hands":"👬","two_women_holding_hands":"👭","cop":"👮","dancers":"👯","bride_with_veil":"👰","person_with_blond_hair":"👱","man_with_gua_pi_mao":"👲","man_with_turban":"👳","older_man":"👴","older_woman":"👵","baby":"👶","construction_worker":"👷","princess":"👸","japanese_ogre":"👹","japanese_goblin":"👺","ghost":"👻","angel":"👼","alien":"👽","space_invader":"👾","imp":"👿","skull":"💀","information_desk_person":"💁","guardsman":"💂","dancer":"💃","lipstick":"💄","nail_care":"💅","massage":"💆","haircut":"💇","barber":"💈","syringe":"💉","pill":"💊","kiss":"💋","love_letter":"💌","ring":"💍","gem":"💎","couplekiss":"💏","bouquet":"💐","couple_with_heart":"💑","wedding":"💒","heartbeat":"💓","broken_heart":"💔","two_hearts":"💕","sparkling_heart":"💖","heartpulse":"💗","cupid":"💘","blue_heart":"💙","green_heart":"💚","yellow_heart":"💛","purple_heart":"💜","gift_heart":"💝","revolving_hearts":"💞","heart_decoration":"💟","diamond_shape_with_a_dot_inside":"💠","bulb":"💡","anger":"💢","bomb":"💣","zzz":"💤","boom":"💥","collision":"💥","sweat_drops":"💦","droplet":"💧","dash":"💨","hankey":"💩","poop":"💩","shit":"💩","muscle":"💪","dizzy":"💫","speech_balloon":"💬","thought_balloon":"💭","white_flower":"💮","moneybag":"💰","currency_exchange":"💱","heavy_dollar_sign":"💲","credit_card":"💳","yen":"💴","dollar":"💵","euro":"💶","pound":"💷","money_with_wings":"💸","chart":"💹","seat":"💺","computer":"💻","briefcase":"💼","minidisc":"💽","floppy_disk":"💾","cd":"💿","dvd":"📀","file_folder":"📁","open_file_folder":"📂","page_with_curl":"📃","page_facing_up":"📄","date":"📅","calendar":"📆","card_index":"📇","chart_with_upwards_trend":"📈","chart_with_downwards_trend":"📉","bar_chart":"📊","clipboard":"📋","pushpin":"📌","round_pushpin":"📍","paperclip":"📎","straight_ruler":"📏","triangular_ruler":"📐","bookmark_tabs":"📑","ledger":"📒","notebook":"📓","notebook_with_decorative_cover":"📔","closed_book":"📕","book":"📖","open_book":"📖","green_book":"📗","blue_book":"📘","orange_book":"📙","books":"📚","name_badge":"📛","scroll":"📜","memo":"📝","pencil":"📝","telephone_receiver":"📞","pager":"📟","fax":"📠","satellite":"🛰","loudspeaker":"📢","mega":"📣","outbox_tray":"📤","inbox_tray":"📥","package":"📦","e-mail":"📧","incoming_envelope":"📨","envelope_with_arrow":"📩","mailbox_closed":"📪","mailbox":"📫","mailbox_with_mail":"📬","mailbox_with_no_mail":"📭","postbox":"📮","postal_horn":"📯","newspaper":"📰","iphone":"📱","calling":"📲","vibration_mode":"📳","mobile_phone_off":"📴","no_mobile_phones":"📵","signal_strength":"📶","camera":"📷","camera_with_flash":"📸","video_camera":"📹","tv":"📺","radio":"📻","vhs":"📼","film_projector":"📽","prayer_beads":"📿","twisted_rightwards_arrows":"🔀","repeat":"🔁","repeat_one":"🔂","arrows_clockwise":"🔃","arrows_counterclockwise":"🔄","low_brightness":"🔅","high_brightness":"🔆","mute":"🔇","speaker":"🔈","sound":"🔉","loud_sound":"🔊","battery":"🔋","electric_plug":"🔌","mag":"🔍","mag_right":"🔎","lock_with_ink_pen":"🔏","closed_lock_with_key":"🔐","key":"🔑","lock":"🔒","unlock":"🔓","bell":"🔔","no_bell":"🔕","bookmark":"🔖","link":"🔗","radio_button":"🔘","back":"🔙","end":"🔚","on":"🔛","soon":"🔜","top":"🔝","underage":"🔞","keycap_ten":"🔟","capital_abcd":"🔠","abcd":"🔡","symbols":"🔣","abc":"🔤","fire":"🔥","flashlight":"🔦","wrench":"🔧","hammer":"🔨","nut_and_bolt":"🔩","hocho":"🔪","knife":"🔪","gun":"🔫","microscope":"🔬","telescope":"🔭","crystal_ball":"🔮","six_pointed_star":"🔯","beginner":"🔰","trident":"🔱","black_square_button":"🔲","white_square_button":"🔳","red_circle":"🔴","large_blue_circle":"🔵","large_orange_diamond":"🔶","large_blue_diamond":"🔷","small_orange_diamond":"🔸","small_blue_diamond":"🔹","small_red_triangle":"🔺","small_red_triangle_down":"🔻","arrow_up_small":"🔼","arrow_down_small":"🔽","om_symbol":"🕉","dove_of_peace":"🕊","kaaba":"🕋","mosque":"🕌","synagogue":"🕍","menorah_with_nine_branches":"🕎","clock1":"🕐","clock2":"🕑","clock3":"🕒","clock4":"🕓","clock5":"🕔","clock6":"🕕","clock7":"🕖","clock8":"🕗","clock9":"🕘","clock10":"🕙","clock11":"🕚","clock12":"🕛","clock130":"🕜","clock230":"🕝","clock330":"🕞","clock430":"🕟","clock530":"🕠","clock630":"🕡","clock730":"🕢","clock830":"🕣","clock930":"🕤","clock1030":"🕥","clock1130":"🕦","clock1230":"🕧","candle":"🕯","mantelpiece_clock":"🕰","hole":"🕳","man_in_business_suit_levitating":"🕴","sleuth_or_spy":"🕵","dark_sunglasses":"🕶","spider":"🕷","spider_web":"🕸","joystick":"🕹","linked_paperclips":"🖇","lower_left_ballpoint_pen":"🖊","lower_left_fountain_pen":"🖋","lower_left_paintbrush":"🖌","lower_left_crayon":"🖍","raised_hand_with_fingers_splayed":"🖐","middle_finger":"🖕","reversed_hand_with_middle_finger_extended":"🖕","spock-hand":"🖖","desktop_computer":"🖥","printer":"🖨","three_button_mouse":"🖱","trackball":"🖲","frame_with_picture":"🖼","card_index_dividers":"🗂","card_file_box":"🗃","file_cabinet":"🗄","wastebasket":"🗑","spiral_note_pad":"🗒","spiral_calendar_pad":"🗓","compression":"🗜","old_key":"🗝","rolled_up_newspaper":"🗞","dagger_knife":"🗡","speaking_head_in_silhouette":"🗣","left_speech_bubble":"🗨","right_anger_bubble":"🗯","ballot_box_with_ballot":"🗳","world_map":"🗺","mount_fuji":"🗻","tokyo_tower":"🗼","statue_of_liberty":"🗽","japan":"🗾","moyai":"🗿","grinning":"😀","grin":"😁","joy":"😂","smiley":"😃","smile":"😄","sweat_smile":"😅","laughing":"😆","satisfied":"😆","innocent":"😇","smiling_imp":"😈","wink":"😉","blush":"😊","yum":"😋","relieved":"😌","heart_eyes":"😍","sunglasses":"😎","smirk":"😏","neutral_face":"😐","expressionless":"😑","unamused":"😒","sweat":"😓","pensive":"😔","confused":"😕","confounded":"😖","kissing":"😗","kissing_heart":"😘","kissing_smiling_eyes":"😙","kissing_closed_eyes":"😚","stuck_out_tongue":"😛","stuck_out_tongue_winking_eye":"😜","stuck_out_tongue_closed_eyes":"😝","disappointed":"😞","worried":"😟","angry":"😠","rage":"😡","cry":"😢","persevere":"😣","triumph":"😤","disappointed_relieved":"😥","frowning":"😦","anguished":"😧","fearful":"😨","weary":"😩","sleepy":"😪","tired_face":"😫","grimacing":"😬","sob":"😭","open_mouth":"😮","hushed":"😯","cold_sweat":"😰","scream":"😱","astonished":"😲","flushed":"😳","sleeping":"😴","dizzy_face":"😵","no_mouth":"😶","mask":"😷","smile_cat":"😸","joy_cat":"😹","smiley_cat":"😺","heart_eyes_cat":"😻","smirk_cat":"😼","kissing_cat":"😽","pouting_cat":"😾","crying_cat_face":"😿","scream_cat":"🙀","slightly_frowning_face":"🙁","slightly_smiling_face":"🙂","upside_down_face":"🙃","face_with_rolling_eyes":"🙄","no_good":"🙅","ok_woman":"🙆","bow":"🙇","see_no_evil":"🙈","hear_no_evil":"🙉","speak_no_evil":"🙊","raising_hand":"🙋","raised_hands":"🙌","person_frowning":"🙍","person_with_pouting_face":"🙎","pray":"🙏","rocket":"🚀","helicopter":"🚁","steam_locomotive":"🚂","railway_car":"🚃","bullettrain_side":"🚄","bullettrain_front":"🚅","train2":"🚆","metro":"🚇","light_rail":"🚈","station":"🚉","tram":"🚊","train":"🚋","bus":"🚌","oncoming_bus":"🚍","trolleybus":"🚎","busstop":"🚏","minibus":"🚐","ambulance":"🚑","fire_engine":"🚒","police_car":"🚓","oncoming_police_car":"🚔","taxi":"🚕","oncoming_taxi":"🚖","car":"🚗","red_car":"🚗","oncoming_automobile":"🚘","blue_car":"🚙","truck":"🚚","articulated_lorry":"🚛","tractor":"🚜","monorail":"🚝","mountain_railway":"🚞","suspension_railway":"🚟","mountain_cableway":"🚠","aerial_tramway":"🚡","ship":"🚢","rowboat":"🚣","speedboat":"🚤","traffic_light":"🚥","vertical_traffic_light":"🚦","construction":"🚧","rotating_light":"🚨","triangular_flag_on_post":"🚩","door":"🚪","no_entry_sign":"🚫","smoking":"🚬","no_smoking":"🚭","put_litter_in_its_place":"🚮","do_not_litter":"🚯","potable_water":"🚰","non-potable_water":"🚱","bike":"🚲","no_bicycles":"🚳","bicyclist":"🚴","mountain_bicyclist":"🚵","walking":"🚶","no_pedestrians":"🚷","children_crossing":"🚸","mens":"🚹","womens":"🚺","restroom":"🚻","baby_symbol":"🚼","toilet":"🚽","wc":"🚾","shower":"🚿","bath":"🛀","bathtub":"🛁","passport_control":"🛂","customs":"🛃","baggage_claim":"🛄","left_luggage":"🛅","couch_and_lamp":"🛋","sleeping_accommodation":"🛌","shopping_bags":"🛍","bellhop_bell":"🛎","bed":"🛏","place_of_worship":"🛐","hammer_and_wrench":"🛠","shield":"🛡","oil_drum":"🛢","motorway":"🛣","railway_track":"🛤","motor_boat":"🛥","small_airplane":"🛩","airplane_departure":"🛫","airplane_arriving":"🛬","passenger_ship":"🛳","zipper_mouth_face":"🤐","money_mouth_face":"🤑","face_with_thermometer":"🤒","nerd_face":"🤓","thinking_face":"🤔","face_with_head_bandage":"🤕","robot_face":"🤖","hugging_face":"🤗","the_horns":"🤘","sign_of_the_horns":"🤘","crab":"🦀","lion_face":"🦁","scorpion":"🦂","turkey":"🦃","unicorn_face":"🦄","cheese_wedge":"🧀","hash":"#️⃣","keycap_star":"*⃣","zero":"0️⃣","one":"1️⃣","two":"2️⃣","three":"3️⃣","four":"4️⃣","five":"5️⃣","six":"6️⃣","seven":"7️⃣","eight":"8️⃣","nine":"9️⃣","flag-ac":"🇦🇨","flag-ad":"🇦🇩","flag-ae":"🇦🇪","flag-af":"🇦🇫","flag-ag":"🇦🇬","flag-ai":"🇦🇮","flag-al":"🇦🇱","flag-am":"🇦🇲","flag-ao":"🇦🇴","flag-aq":"🇦🇶","flag-ar":"🇦🇷","flag-as":"🇦🇸","flag-at":"🇦🇹","flag-au":"🇦🇺","flag-aw":"🇦🇼","flag-ax":"🇦🇽","flag-az":"🇦🇿","flag-ba":"🇧🇦","flag-bb":"🇧🇧","flag-bd":"🇧🇩","flag-be":"🇧🇪","flag-bf":"🇧🇫","flag-bg":"🇧🇬","flag-bh":"🇧🇭","flag-bi":"🇧🇮","flag-bj":"🇧🇯","flag-bl":"🇧🇱","flag-bm":"🇧🇲","flag-bn":"🇧🇳","flag-bo":"🇧🇴","flag-bq":"🇧🇶","flag-br":"🇧🇷","flag-bs":"🇧🇸","flag-bt":"🇧🇹","flag-bv":"🇧🇻","flag-bw":"🇧🇼","flag-by":"🇧🇾","flag-bz":"🇧🇿","flag-ca":"🇨🇦","flag-cc":"🇨🇨","flag-cd":"🇨🇩","flag-cf":"🇨🇫","flag-cg":"🇨🇬","flag-ch":"🇨🇭","flag-ci":"🇨🇮","flag-ck":"🇨🇰","flag-cl":"🇨🇱","flag-cm":"🇨🇲","flag-cn":"🇨🇳","cn":"🇨🇳","flag-co":"🇨🇴","flag-cp":"🇨🇵","flag-cr":"🇨🇷","flag-cu":"🇨🇺","flag-cv":"🇨🇻","flag-cw":"🇨🇼","flag-cx":"🇨🇽","flag-cy":"🇨🇾","flag-cz":"🇨🇿","flag-de":"🇩🇪","de":"🇩🇪","flag-dg":"🇩🇬","flag-dj":"🇩🇯","flag-dk":"🇩🇰","flag-dm":"🇩🇲","flag-do":"🇩🇴","flag-dz":"🇩🇿","flag-ea":"🇪🇦","flag-ec":"🇪🇨","flag-ee":"🇪🇪","flag-eg":"🇪🇬","flag-eh":"🇪🇭","flag-er":"🇪🇷","flag-es":"🇪🇸","es":"🇪🇸","flag-et":"🇪🇹","flag-eu":"🇪🇺","flag-fi":"🇫🇮","flag-fj":"🇫🇯","flag-fk":"🇫🇰","flag-fm":"🇫🇲","flag-fo":"🇫🇴","flag-fr":"🇫🇷","fr":"🇫🇷","flag-ga":"🇬🇦","flag-gb":"🇬🇧","gb":"🇬🇧","uk":"🇬🇧","flag-gd":"🇬🇩","flag-ge":"🇬🇪","flag-gf":"🇬🇫","flag-gg":"🇬🇬","flag-gh":"🇬🇭","flag-gi":"🇬🇮","flag-gl":"🇬🇱","flag-gm":"🇬🇲","flag-gn":"🇬🇳","flag-gp":"🇬🇵","flag-gq":"🇬🇶","flag-gr":"🇬🇷","flag-gs":"🇬🇸","flag-gt":"🇬🇹","flag-gu":"🇬🇺","flag-gw":"🇬🇼","flag-gy":"🇬🇾","flag-hk":"🇭🇰","flag-hm":"🇭🇲","flag-hn":"🇭🇳","flag-hr":"🇭🇷","flag-ht":"🇭🇹","flag-hu":"🇭🇺","flag-ic":"🇮🇨","flag-id":"🇮🇩","flag-ie":"🇮🇪","flag-il":"🇮🇱","flag-im":"🇮🇲","flag-in":"🇮🇳","flag-io":"🇮🇴","flag-iq":"🇮🇶","flag-ir":"🇮🇷","flag-is":"🇮🇸","flag-it":"🇮🇹","it":"🇮🇹","flag-je":"🇯🇪","flag-jm":"🇯🇲","flag-jo":"🇯🇴","flag-jp":"🇯🇵","jp":"🇯🇵","flag-ke":"🇰🇪","flag-kg":"🇰🇬","flag-kh":"🇰🇭","flag-ki":"🇰🇮","flag-km":"🇰🇲","flag-kn":"🇰🇳","flag-kp":"🇰🇵","flag-kr":"🇰🇷","kr":"🇰🇷","flag-kw":"🇰🇼","flag-ky":"🇰🇾","flag-kz":"🇰🇿","flag-la":"🇱🇦","flag-lb":"🇱🇧","flag-lc":"🇱🇨","flag-li":"🇱🇮","flag-lk":"🇱🇰","flag-lr":"🇱🇷","flag-ls":"🇱🇸","flag-lt":"🇱🇹","flag-lu":"🇱🇺","flag-lv":"🇱🇻","flag-ly":"🇱🇾","flag-ma":"🇲🇦","flag-mc":"🇲🇨","flag-md":"🇲🇩","flag-me":"🇲🇪","flag-mf":"🇲🇫","flag-mg":"🇲🇬","flag-mh":"🇲🇭","flag-mk":"🇲🇰","flag-ml":"🇲🇱","flag-mm":"🇲🇲","flag-mn":"🇲🇳","flag-mo":"🇲🇴","flag-mp":"🇲🇵","flag-mq":"🇲🇶","flag-mr":"🇲🇷","flag-ms":"🇲🇸","flag-mt":"🇲🇹","flag-mu":"🇲🇺","flag-mv":"🇲🇻","flag-mw":"🇲🇼","flag-mx":"🇲🇽","flag-my":"🇲🇾","flag-mz":"🇲🇿","flag-na":"🇳🇦","flag-nc":"🇳🇨","flag-ne":"🇳🇪","flag-nf":"🇳🇫","flag-ng":"🇳🇬","flag-ni":"🇳🇮","flag-nl":"🇳🇱","flag-no":"🇳🇴","flag-np":"🇳🇵","flag-nr":"🇳🇷","flag-nu":"🇳🇺","flag-nz":"🇳🇿","flag-om":"🇴🇲","flag-pa":"🇵🇦","flag-pe":"🇵🇪","flag-pf":"🇵🇫","flag-pg":"🇵🇬","flag-ph":"🇵🇭","flag-pk":"🇵🇰","flag-pl":"🇵🇱","flag-pm":"🇵🇲","flag-pn":"🇵🇳","flag-pr":"🇵🇷","flag-ps":"🇵🇸","flag-pt":"🇵🇹","flag-pw":"🇵🇼","flag-py":"🇵🇾","flag-qa":"🇶🇦","flag-re":"🇷🇪","flag-ro":"🇷🇴","flag-rs":"🇷🇸","flag-ru":"🇷🇺","ru":"🇷🇺","flag-rw":"🇷🇼","flag-sa":"🇸🇦","flag-sb":"🇸🇧","flag-sc":"🇸🇨","flag-sd":"🇸🇩","flag-se":"🇸🇪","flag-sg":"🇸🇬","flag-sh":"🇸🇭","flag-si":"🇸🇮","flag-sj":"🇸🇯","flag-sk":"🇸🇰","flag-sl":"🇸🇱","flag-sm":"🇸🇲","flag-sn":"🇸🇳","flag-so":"🇸🇴","flag-sr":"🇸🇷","flag-ss":"🇸🇸","flag-st":"🇸🇹","flag-sv":"🇸🇻","flag-sx":"🇸🇽","flag-sy":"🇸🇾","flag-sz":"🇸🇿","flag-ta":"🇹🇦","flag-tc":"🇹🇨","flag-td":"🇹🇩","flag-tf":"🇹🇫","flag-tg":"🇹🇬","flag-th":"🇹🇭","flag-tj":"🇹🇯","flag-tk":"🇹🇰","flag-tl":"🇹🇱","flag-tm":"🇹🇲","flag-tn":"🇹🇳","flag-to":"🇹🇴","flag-tr":"🇹🇷","flag-tt":"🇹🇹","flag-tv":"🇹🇻","flag-tw":"🇹🇼","flag-tz":"🇹🇿","flag-ua":"🇺🇦","flag-ug":"🇺🇬","flag-um":"🇺🇲","flag-us":"🇺🇸","us":"🇺🇸","flag-uy":"🇺🇾","flag-uz":"🇺🇿","flag-va":"🇻🇦","flag-vc":"🇻🇨","flag-ve":"🇻🇪","flag-vg":"🇻🇬","flag-vi":"🇻🇮","flag-vn":"🇻🇳","flag-vu":"🇻🇺","flag-wf":"🇼🇫","flag-ws":"🇼🇸","flag-xk":"🇽🇰","flag-ye":"🇾🇪","flag-yt":"🇾🇹","flag-za":"🇿🇦","flag-zm":"🇿🇲","flag-zw":"🇿🇼","man-man-boy":"👨‍👨‍👦","man-man-boy-boy":"👨‍👨‍👦‍👦","man-man-girl":"👨‍👨‍👧","man-man-girl-boy":"👨‍👨‍👧‍👦","man-man-girl-girl":"👨‍👨‍👧‍👧","man-woman-boy-boy":"👨‍👩‍👦‍👦","man-woman-girl":"👨‍👩‍👧","man-woman-girl-boy":"👨‍👩‍👧‍👦","man-woman-girl-girl":"👨‍👩‍👧‍👧","man-heart-man":"👨‍❤️‍👨","man-kiss-man":"👨‍❤️‍💋‍👨","woman-woman-boy":"👩‍👩‍👦","woman-woman-boy-boy":"👩‍👩‍👦‍👦","woman-woman-girl":"👩‍👩‍👧","woman-woman-girl-boy":"👩‍👩‍👧‍👦","woman-woman-girl-girl":"👩‍👩‍👧‍👧","woman-heart-woman":"👩‍❤️‍👩","woman-kiss-woman":"👩‍❤️‍💋‍👩"}
128572  
128573  /***/ }),
128574  /* 765 */
128575  /***/ (function(module, exports, __webpack_require__) {
128576  
128577  /*!
128578   * normalize-path <https://github.com/jonschlinkert/normalize-path>
128579   *
128580   * Copyright (c) 2014-2017, Jon Schlinkert.
128581   * Released under the MIT License.
128582   */
128583  
128584  var removeTrailingSeparator = __webpack_require__(796);
128585  
128586  module.exports = function normalizePath(str, stripTrailing) {
128587    if (typeof str !== 'string') {
128588      throw new TypeError('expected a string');
128589    }
128590    str = str.replace(/[\\\/]+/g, '/');
128591    if (stripTrailing !== false) {
128592      str = removeTrailingSeparator(str);
128593    }
128594    return str;
128595  };
128596  
128597  
128598  /***/ }),
128599  /* 766 */
128600  /***/ (function(module, exports, __webpack_require__) {
128601  
128602  "use strict";
128603  
128604  
128605  let path
128606  
128607  class LogicalTree {
128608    constructor (name, address, opts) {
128609      this.name = name
128610      this.version = opts.version
128611      this.address = address || ''
128612      this.optional = !!opts.optional
128613      this.dev = !!opts.dev
128614      this.bundled = !!opts.bundled
128615      this.resolved = opts.resolved
128616      this.integrity = opts.integrity
128617      this.dependencies = new Map()
128618      this.requiredBy = new Set()
128619    }
128620  
128621    get isRoot () { return !this.requiredBy.size }
128622  
128623    addDep (dep) {
128624      this.dependencies.set(dep.name, dep)
128625      dep.requiredBy.add(this)
128626      return this
128627    }
128628  
128629    delDep (dep) {
128630      this.dependencies.delete(dep.name)
128631      dep.requiredBy.delete(this)
128632      return this
128633    }
128634  
128635    getDep (name) {
128636      return this.dependencies.get(name)
128637    }
128638  
128639    path (prefix) {
128640      if (this.isRoot) {
128641        // The address of the root is the prefix itself.
128642        return prefix || ''
128643      } else {
128644        if (!path) { path = __webpack_require__(0) }
128645        return path.join(
128646          prefix || '',
128647          'node_modules',
128648          this.address.replace(/:/g, '/node_modules/')
128649        )
128650      }
128651    }
128652  
128653    // This finds cycles _from_ a given node: if some deeper dep has
128654    // its own cycle, but that cycle does not refer to this node,
128655    // it will return false.
128656    hasCycle (_seen, _from) {
128657      if (!_seen) { _seen = new Set() }
128658      if (!_from) { _from = this }
128659      for (let dep of this.dependencies.values()) {
128660        if (_seen.has(dep)) { continue }
128661        _seen.add(dep)
128662        if (dep === _from || dep.hasCycle(_seen, _from)) {
128663          return true
128664        }
128665      }
128666      return false
128667    }
128668  
128669    forEachAsync (fn, opts, _pending) {
128670      if (!opts) { opts = _pending || {} }
128671      if (!_pending) { _pending = new Map() }
128672      const P = opts.Promise || Promise
128673      if (_pending.has(this)) {
128674        return P.resolve(this.hasCycle() || _pending.get(this))
128675      }
128676      const pending = P.resolve().then(() => {
128677        return fn(this, () => {
128678          return promiseMap(
128679            this.dependencies.values(),
128680            dep => dep.forEachAsync(fn, opts, _pending),
128681            opts
128682          )
128683        })
128684      })
128685      _pending.set(this, pending)
128686      return pending
128687    }
128688  
128689    forEach (fn, _seen) {
128690      if (!_seen) { _seen = new Set() }
128691      if (_seen.has(this)) { return }
128692      _seen.add(this)
128693      fn(this, () => {
128694        for (let dep of this.dependencies.values()) {
128695          dep.forEach(fn, _seen)
128696        }
128697      })
128698    }
128699  }
128700  
128701  module.exports = lockTree
128702  function lockTree (pkg, pkgLock, opts) {
128703    const tree = makeNode(pkg.name, null, pkg)
128704    const allDeps = new Map()
128705    Array.from(
128706      new Set(Object.keys(pkg.devDependencies || {})
128707      .concat(Object.keys(pkg.optionalDependencies || {}))
128708      .concat(Object.keys(pkg.dependencies || {})))
128709    ).forEach(name => {
128710      let dep = allDeps.get(name)
128711      if (!dep) {
128712        const depNode = (pkgLock.dependencies || {})[name]
128713        dep = makeNode(name, name, depNode)
128714      }
128715      addChild(dep, tree, allDeps, pkgLock)
128716    })
128717    return tree
128718  }
128719  
128720  module.exports.node = makeNode
128721  function makeNode (name, address, opts) {
128722    return new LogicalTree(name, address, opts || {})
128723  }
128724  
128725  function addChild (dep, tree, allDeps, pkgLock) {
128726    tree.addDep(dep)
128727    allDeps.set(dep.address, dep)
128728    const addr = dep.address
128729    const lockNode = atAddr(pkgLock, addr)
128730    Object.keys(lockNode.requires || {}).forEach(name => {
128731      const tdepAddr = reqAddr(pkgLock, name, addr)
128732      let tdep = allDeps.get(tdepAddr)
128733      if (!tdep) {
128734        tdep = makeNode(name, tdepAddr, atAddr(pkgLock, tdepAddr))
128735        addChild(tdep, dep, allDeps, pkgLock)
128736      } else {
128737        dep.addDep(tdep)
128738      }
128739    })
128740  }
128741  
128742  module.exports._reqAddr = reqAddr
128743  function reqAddr (pkgLock, name, fromAddr) {
128744    const lockNode = atAddr(pkgLock, fromAddr)
128745    const child = (lockNode.dependencies || {})[name]
128746    if (child) {
128747      return `${fromAddr}:${name}`
128748    } else {
128749      const parts = fromAddr.split(':')
128750      while (parts.length) {
128751        parts.pop()
128752        const joined = parts.join(':')
128753        const parent = atAddr(pkgLock, joined)
128754        if (parent) {
128755          const child = (parent.dependencies || {})[name]
128756          if (child) {
128757            return `${joined}${parts.length ? ':' : ''}${name}`
128758          }
128759        }
128760      }
128761      const err = new Error(`${name} not accessible from ${fromAddr}`)
128762      err.pkgLock = pkgLock
128763      err.target = name
128764      err.from = fromAddr
128765      throw err
128766    }
128767  }
128768  
128769  module.exports._atAddr = atAddr
128770  function atAddr (pkgLock, addr) {
128771    if (!addr.length) { return pkgLock }
128772    const parts = addr.split(':')
128773    return parts.reduce((acc, next) => {
128774      return acc && (acc.dependencies || {})[next]
128775    }, pkgLock)
128776  }
128777  
128778  function promiseMap (arr, fn, opts, _index) {
128779    _index = _index || 0
128780    const P = (opts && opts.Promise) || Promise
128781    if (P.map) {
128782      return P.map(arr, fn, opts)
128783    } else {
128784      if (!(arr instanceof Array)) {
128785        arr = Array.from(arr)
128786      }
128787      if (_index >= arr.length) {
128788        return P.resolve()
128789      } else {
128790        return P.resolve(fn(arr[_index], _index, arr))
128791        .then(() => promiseMap(arr, fn, opts, _index + 1))
128792      }
128793    }
128794  }
128795  
128796  
128797  /***/ }),
128798  /* 767 */
128799  /***/ (function(module, exports, __webpack_require__) {
128800  
128801  "use strict";
128802  
128803  module.exports = Number.isNaN || function (x) {
128804  	return x !== x;
128805  };
128806  
128807  
128808  /***/ }),
128809  /* 768 */
128810  /***/ (function(module, exports, __webpack_require__) {
128811  
128812  var crypto = __webpack_require__(11)
128813    , qs = __webpack_require__(197)
128814    ;
128815  
128816  function sha1 (key, body) {
128817    return crypto.createHmac('sha1', key).update(body).digest('base64')
128818  }
128819  
128820  function rsa (key, body) {
128821    return crypto.createSign("RSA-SHA1").update(body).sign(key, 'base64');
128822  }
128823  
128824  function rfc3986 (str) {
128825    return encodeURIComponent(str)
128826      .replace(/!/g,'%21')
128827      .replace(/\*/g,'%2A')
128828      .replace(/\(/g,'%28')
128829      .replace(/\)/g,'%29')
128830      .replace(/'/g,'%27')
128831      ;
128832  }
128833  
128834  // Maps object to bi-dimensional array
128835  // Converts { foo: 'A', bar: [ 'b', 'B' ]} to
128836  // [ ['foo', 'A'], ['bar', 'b'], ['bar', 'B'] ]
128837  function map (obj) {
128838    var key, val, arr = []
128839    for (key in obj) {
128840      val = obj[key]
128841      if (Array.isArray(val))
128842        for (var i = 0; i < val.length; i++)
128843          arr.push([key, val[i]])
128844      else if (typeof val === "object")
128845        for (var prop in val)
128846          arr.push([key + '[' + prop + ']', val[prop]]);
128847      else
128848        arr.push([key, val])
128849    }
128850    return arr
128851  }
128852  
128853  // Compare function for sort
128854  function compare (a, b) {
128855    return a > b ? 1 : a < b ? -1 : 0
128856  }
128857  
128858  function generateBase (httpMethod, base_uri, params) {
128859    // adapted from https://dev.twitter.com/docs/auth/oauth and 
128860    // https://dev.twitter.com/docs/auth/creating-signature
128861  
128862    // Parameter normalization
128863    // http://tools.ietf.org/html/rfc5849#section-3.4.1.3.2
128864    var normalized = map(params)
128865    // 1.  First, the name and value of each parameter are encoded
128866    .map(function (p) {
128867      return [ rfc3986(p[0]), rfc3986(p[1] || '') ]
128868    })
128869    // 2.  The parameters are sorted by name, using ascending byte value
128870    //     ordering.  If two or more parameters share the same name, they
128871    //     are sorted by their value.
128872    .sort(function (a, b) {
128873      return compare(a[0], b[0]) || compare(a[1], b[1])
128874    })
128875    // 3.  The name of each parameter is concatenated to its corresponding
128876    //     value using an "=" character (ASCII code 61) as a separator, even
128877    //     if the value is empty.
128878    .map(function (p) { return p.join('=') })
128879     // 4.  The sorted name/value pairs are concatenated together into a
128880     //     single string by using an "&" character (ASCII code 38) as
128881     //     separator.
128882    .join('&')
128883  
128884    var base = [
128885      rfc3986(httpMethod ? httpMethod.toUpperCase() : 'GET'),
128886      rfc3986(base_uri),
128887      rfc3986(normalized)
128888    ].join('&')
128889  
128890    return base
128891  }
128892  
128893  function hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret) {
128894    var base = generateBase(httpMethod, base_uri, params)
128895    var key = [
128896      consumer_secret || '',
128897      token_secret || ''
128898    ].map(rfc3986).join('&')
128899  
128900    return sha1(key, base)
128901  }
128902  
128903  function rsasign (httpMethod, base_uri, params, private_key, token_secret) {
128904    var base = generateBase(httpMethod, base_uri, params)
128905    var key = private_key || ''
128906  
128907    return rsa(key, base)
128908  }
128909  
128910  function plaintext (consumer_secret, token_secret) {
128911    var key = [
128912      consumer_secret || '',
128913      token_secret || ''
128914    ].map(rfc3986).join('&')
128915  
128916    return key
128917  }
128918  
128919  function sign (signMethod, httpMethod, base_uri, params, consumer_secret, token_secret) {
128920    var method
128921    var skipArgs = 1
128922  
128923    switch (signMethod) {
128924      case 'RSA-SHA1':
128925        method = rsasign
128926        break
128927      case 'HMAC-SHA1':
128928        method = hmacsign
128929        break
128930      case 'PLAINTEXT':
128931        method = plaintext
128932        skipArgs = 4
128933        break
128934      default:
128935       throw new Error("Signature method not supported: " + signMethod)
128936    }
128937  
128938    return method.apply(null, [].slice.call(arguments, skipArgs))
128939  }
128940  
128941  exports.hmacsign = hmacsign
128942  exports.rsasign = rsasign
128943  exports.plaintext = plaintext
128944  exports.sign = sign
128945  exports.rfc3986 = rfc3986
128946  exports.generateBase = generateBase
128947  
128948  
128949  
128950  /***/ }),
128951  /* 769 */
128952  /***/ (function(module, exports, __webpack_require__) {
128953  
128954  "use strict";
128955  /*!
128956   * object.omit <https://github.com/jonschlinkert/object.omit>
128957   *
128958   * Copyright (c) 2014-2015, Jon Schlinkert.
128959   * Licensed under the MIT License.
128960   */
128961  
128962  
128963  
128964  var isObject = __webpack_require__(735);
128965  var forOwn = __webpack_require__(770);
128966  
128967  module.exports = function omit(obj, keys) {
128968    if (!isObject(obj)) return {};
128969  
128970    keys = [].concat.apply([], [].slice.call(arguments, 1));
128971    var last = keys[keys.length - 1];
128972    var res = {}, fn;
128973  
128974    if (typeof last === 'function') {
128975      fn = keys.pop();
128976    }
128977  
128978    var isFunction = typeof fn === 'function';
128979    if (!keys.length && !isFunction) {
128980      return obj;
128981    }
128982  
128983    forOwn(obj, function(value, key) {
128984      if (keys.indexOf(key) === -1) {
128985  
128986        if (!isFunction) {
128987          res[key] = value;
128988        } else if (fn(value, key, obj)) {
128989          res[key] = value;
128990        }
128991      }
128992    });
128993    return res;
128994  };
128995  
128996  
128997  /***/ }),
128998  /* 770 */
128999  /***/ (function(module, exports, __webpack_require__) {
129000  
129001  "use strict";
129002  /*!
129003   * for-own <https://github.com/jonschlinkert/for-own>
129004   *
129005   * Copyright (c) 2014-2017, Jon Schlinkert.
129006   * Released under the MIT License.
129007   */
129008  
129009  
129010  
129011  var forIn = __webpack_require__(615);
129012  var hasOwn = Object.prototype.hasOwnProperty;
129013  
129014  module.exports = function forOwn(obj, fn, thisArg) {
129015    forIn(obj, function(val, key) {
129016      if (hasOwn.call(obj, key)) {
129017        return fn.call(thisArg, obj[key], key, obj);
129018      }
129019    });
129020  };
129021  
129022  
129023  /***/ }),
129024  /* 771 */
129025  /***/ (function(module, exports, __webpack_require__) {
129026  
129027  "use strict";
129028  
129029  const mimicFn = __webpack_require__(760);
129030  
129031  module.exports = (fn, opts) => {
129032  	// TODO: Remove this in v3
129033  	if (opts === true) {
129034  		throw new TypeError('The second argument is now an options object');
129035  	}
129036  
129037  	if (typeof fn !== 'function') {
129038  		throw new TypeError('Expected a function');
129039  	}
129040  
129041  	opts = opts || {};
129042  
129043  	let ret;
129044  	let called = false;
129045  	const fnName = fn.displayName || fn.name || '<anonymous>';
129046  
129047  	const onetime = function () {
129048  		if (called) {
129049  			if (opts.throw === true) {
129050  				throw new Error(`Function \`${fnName}\` can only be called once`);
129051  			}
129052  
129053  			return ret;
129054  		}
129055  
129056  		called = true;
129057  		ret = fn.apply(this, arguments);
129058  		fn = null;
129059  
129060  		return ret;
129061  	};
129062  
129063  	mimicFn(onetime, fn);
129064  
129065  	return onetime;
129066  };
129067  
129068  
129069  /***/ }),
129070  /* 772 */
129071  /***/ (function(module, exports, __webpack_require__) {
129072  
129073  "use strict";
129074  
129075  var isWindows = process.platform === 'win32';
129076  var trailingSlashRe = isWindows ? /[^:]\\$/ : /.\/$/;
129077  
129078  // https://github.com/nodejs/node/blob/3e7a14381497a3b73dda68d05b5130563cdab420/lib/os.js#L25-L43
129079  module.exports = function () {
129080  	var path;
129081  
129082  	if (isWindows) {
129083  		path = process.env.TEMP ||
129084  			process.env.TMP ||
129085  			(process.env.SystemRoot || process.env.windir) + '\\temp';
129086  	} else {
129087  		path = process.env.TMPDIR ||
129088  			process.env.TMP ||
129089  			process.env.TEMP ||
129090  			'/tmp';
129091  	}
129092  
129093  	if (trailingSlashRe.test(path)) {
129094  		path = path.slice(0, -1);
129095  	}
129096  
129097  	return path;
129098  };
129099  
129100  
129101  /***/ }),
129102  /* 773 */
129103  /***/ (function(module, exports, __webpack_require__) {
129104  
129105  "use strict";
129106  /*!
129107   * parse-glob <https://github.com/jonschlinkert/parse-glob>
129108   *
129109   * Copyright (c) 2015, Jon Schlinkert.
129110   * Licensed under the MIT License.
129111   */
129112  
129113  
129114  
129115  var isGlob = __webpack_require__(179);
129116  var findBase = __webpack_require__(620);
129117  var extglob = __webpack_require__(178);
129118  var dotfile = __webpack_require__(733);
129119  
129120  /**
129121   * Expose `cache`
129122   */
129123  
129124  var cache = module.exports.cache = {};
129125  
129126  /**
129127   * Parse a glob pattern into tokens.
129128   *
129129   * When no paths or '**' are in the glob, we use a
129130   * different strategy for parsing the filename, since
129131   * file names can contain braces and other difficult
129132   * patterns. such as:
129133   *
129134   *  - `*.{a,b}`
129135   *  - `(**|*.js)`
129136   */
129137  
129138  module.exports = function parseGlob(glob) {
129139    if (cache.hasOwnProperty(glob)) {
129140      return cache[glob];
129141    }
129142  
129143    var tok = {};
129144    tok.orig = glob;
129145    tok.is = {};
129146  
129147    // unescape dots and slashes in braces/brackets
129148    glob = escape(glob);
129149  
129150    var parsed = findBase(glob);
129151    tok.is.glob = parsed.isGlob;
129152  
129153    tok.glob = parsed.glob;
129154    tok.base = parsed.base;
129155    var segs = /([^\/]*)$/.exec(glob);
129156  
129157    tok.path = {};
129158    tok.path.dirname = '';
129159    tok.path.basename = segs[1] || '';
129160    tok.path.dirname = glob.split(tok.path.basename).join('') || '';
129161    var basename = (tok.path.basename || '').split('.') || '';
129162    tok.path.filename = basename[0] || '';
129163    tok.path.extname = basename.slice(1).join('.') || '';
129164    tok.path.ext = '';
129165  
129166    if (isGlob(tok.path.dirname) && !tok.path.basename) {
129167      if (!/\/$/.test(tok.glob)) {
129168        tok.path.basename = tok.glob;
129169      }
129170      tok.path.dirname = tok.base;
129171    }
129172  
129173    if (glob.indexOf('/') === -1 && !tok.is.globstar) {
129174      tok.path.dirname = '';
129175      tok.path.basename = tok.orig;
129176    }
129177  
129178    var dot = tok.path.basename.indexOf('.');
129179    if (dot !== -1) {
129180      tok.path.filename = tok.path.basename.slice(0, dot);
129181      tok.path.extname = tok.path.basename.slice(dot);
129182    }
129183  
129184    if (tok.path.extname.charAt(0) === '.') {
129185      var exts = tok.path.extname.split('.');
129186      tok.path.ext = exts[exts.length - 1];
129187    }
129188  
129189    // unescape dots and slashes in braces/brackets
129190    tok.glob = unescape(tok.glob);
129191    tok.path.dirname = unescape(tok.path.dirname);
129192    tok.path.basename = unescape(tok.path.basename);
129193    tok.path.filename = unescape(tok.path.filename);
129194    tok.path.extname = unescape(tok.path.extname);
129195  
129196    // Booleans
129197    var is = (glob && tok.is.glob);
129198    tok.is.negated  = glob && glob.charAt(0) === '!';
129199    tok.is.extglob  = glob && extglob(glob);
129200    tok.is.braces   = has(is, glob, '{');
129201    tok.is.brackets = has(is, glob, '[:');
129202    tok.is.globstar = has(is, glob, '**');
129203    tok.is.dotfile  = dotfile(tok.path.basename) || dotfile(tok.path.filename);
129204    tok.is.dotdir   = dotdir(tok.path.dirname);
129205    return (cache[glob] = tok);
129206  }
129207  
129208  /**
129209   * Returns true if the glob matches dot-directories.
129210   *
129211   * @param  {Object} `tok` The tokens object
129212   * @param  {Object} `path` The path object
129213   * @return {Object}
129214   */
129215  
129216  function dotdir(base) {
129217    if (base.indexOf('/.') !== -1) {
129218      return true;
129219    }
129220    if (base.charAt(0) === '.' && base.charAt(1) !== '/') {
129221      return true;
129222    }
129223    return false;
129224  }
129225  
129226  /**
129227   * Returns true if the pattern has the given `ch`aracter(s)
129228   *
129229   * @param  {Object} `glob` The glob pattern.
129230   * @param  {Object} `ch` The character to test for
129231   * @return {Object}
129232   */
129233  
129234  function has(is, glob, ch) {
129235    return is && glob.indexOf(ch) !== -1;
129236  }
129237  
129238  /**
129239   * Escape/unescape utils
129240   */
129241  
129242  function escape(str) {
129243    var re = /\{([^{}]*?)}|\(([^()]*?)\)|\[([^\[\]]*?)\]/g;
129244    return str.replace(re, function (outter, braces, parens, brackets) {
129245      var inner = braces || parens || brackets;
129246      if (!inner) { return outter; }
129247      return outter.split(inner).join(esc(inner));
129248    });
129249  }
129250  
129251  function esc(str) {
129252    str = str.split('/').join('__SLASH__');
129253    str = str.split('.').join('__DOT__');
129254    return str;
129255  }
129256  
129257  function unescape(str) {
129258    str = str.split('__SLASH__').join('/');
129259    str = str.split('__DOT__').join('.');
129260    return str;
129261  }
129262  
129263  
129264  /***/ }),
129265  /* 774 */
129266  /***/ (function(module, exports, __webpack_require__) {
129267  
129268  "use strict";
129269  
129270  
129271  var isWindows = process.platform === 'win32';
129272  
129273  // Regex to split a windows path into three parts: [*, device, slash,
129274  // tail] windows-only
129275  var splitDeviceRe =
129276      /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/;
129277  
129278  // Regex to split the tail part of the above into [*, dir, basename, ext]
129279  var splitTailRe =
129280      /^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/;
129281  
129282  var win32 = {};
129283  
129284  // Function to split a filename into [root, dir, basename, ext]
129285  function win32SplitPath(filename) {
129286    // Separate device+slash from tail
129287    var result = splitDeviceRe.exec(filename),
129288        device = (result[1] || '') + (result[2] || ''),
129289        tail = result[3] || '';
129290    // Split the tail into dir, basename and extension
129291    var result2 = splitTailRe.exec(tail),
129292        dir = result2[1],
129293        basename = result2[2],
129294        ext = result2[3];
129295    return [device, dir, basename, ext];
129296  }
129297  
129298  win32.parse = function(pathString) {
129299    if (typeof pathString !== 'string') {
129300      throw new TypeError(
129301          "Parameter 'pathString' must be a string, not " + typeof pathString
129302      );
129303    }
129304    var allParts = win32SplitPath(pathString);
129305    if (!allParts || allParts.length !== 4) {
129306      throw new TypeError("Invalid path '" + pathString + "'");
129307    }
129308    return {
129309      root: allParts[0],
129310      dir: allParts[0] + allParts[1].slice(0, -1),
129311      base: allParts[2],
129312      ext: allParts[3],
129313      name: allParts[2].slice(0, allParts[2].length - allParts[3].length)
129314    };
129315  };
129316  
129317  
129318  
129319  // Split a filename into [root, dir, basename, ext], unix version
129320  // 'root' is just a slash, or nothing.
129321  var splitPathRe =
129322      /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
129323  var posix = {};
129324  
129325  
129326  function posixSplitPath(filename) {
129327    return splitPathRe.exec(filename).slice(1);
129328  }
129329  
129330  
129331  posix.parse = function(pathString) {
129332    if (typeof pathString !== 'string') {
129333      throw new TypeError(
129334          "Parameter 'pathString' must be a string, not " + typeof pathString
129335      );
129336    }
129337    var allParts = posixSplitPath(pathString);
129338    if (!allParts || allParts.length !== 4) {
129339      throw new TypeError("Invalid path '" + pathString + "'");
129340    }
129341    allParts[1] = allParts[1] || '';
129342    allParts[2] = allParts[2] || '';
129343    allParts[3] = allParts[3] || '';
129344  
129345    return {
129346      root: allParts[0],
129347      dir: allParts[0] + allParts[1].slice(0, -1),
129348      base: allParts[2],
129349      ext: allParts[3],
129350      name: allParts[2].slice(0, allParts[2].length - allParts[3].length)
129351    };
129352  };
129353  
129354  
129355  if (isWindows)
129356    module.exports = win32.parse;
129357  else /* posix */
129358    module.exports = posix.parse;
129359  
129360  module.exports.posix = posix.parse;
129361  module.exports.win32 = win32.parse;
129362  
129363  
129364  /***/ }),
129365  /* 775 */
129366  /***/ (function(module, exports, __webpack_require__) {
129367  
129368  var duplexify = __webpack_require__(380)
129369  var through = __webpack_require__(461)
129370  var bufferFrom = __webpack_require__(563)
129371  
129372  var noop = function() {}
129373  
129374  var isObject = function(data) {
129375    return !Buffer.isBuffer(data) && typeof data !== 'string'
129376  }
129377  
129378  var peek = function(opts, onpeek) {
129379    if (typeof opts === 'number') opts = {maxBuffer:opts}
129380    if (typeof opts === 'function') return peek(null, opts)
129381    if (!opts) opts = {}
129382  
129383    var maxBuffer = typeof opts.maxBuffer === 'number' ? opts.maxBuffer : 65535
129384    var strict = opts.strict
129385    var newline = opts.newline !== false
129386  
129387    var buffer = []
129388    var bufferSize = 0
129389    var dup = duplexify.obj()
129390  
129391    var peeker = through.obj({highWaterMark:1}, function(data, enc, cb) {
129392      if (isObject(data)) return ready(data, null, cb)
129393      if (!Buffer.isBuffer(data)) data = bufferFrom(data)
129394  
129395      if (newline) {
129396        var nl = Array.prototype.indexOf.call(data, 10)
129397        if (nl > 0 && data[nl-1] === 13) nl--
129398  
129399        if (nl > -1) {
129400          buffer.push(data.slice(0, nl))
129401          return ready(Buffer.concat(buffer), data.slice(nl), cb)
129402        }
129403      }
129404  
129405      buffer.push(data)
129406      bufferSize += data.length
129407  
129408      if (bufferSize < maxBuffer) return cb()
129409      if (strict) return cb(new Error('No newline found'))
129410      ready(Buffer.concat(buffer), null, cb)
129411    })
129412  
129413    var onpreend = function() {
129414      if (strict) return dup.destroy(new Error('No newline found'))
129415      dup.cork()
129416      ready(Buffer.concat(buffer), null, function(err) {
129417        if (err) return dup.destroy(err)
129418        dup.uncork()
129419      })
129420    }
129421  
129422    var ready = function(data, overflow, cb) {
129423      dup.removeListener('preend', onpreend)
129424      onpeek(data, function(err, parser) {
129425        if (err) return cb(err)
129426  
129427        dup.setWritable(parser)
129428        dup.setReadable(parser)
129429  
129430        if (data) parser.write(data)
129431        if (overflow) parser.write(overflow)
129432  
129433        overflow = buffer = peeker = null // free the data
129434        cb()
129435      })
129436    }
129437  
129438    dup.on('preend', onpreend)
129439    dup.setWritable(peeker)
129440  
129441    return dup
129442  }
129443  
129444  module.exports = peek
129445  
129446  
129447  /***/ }),
129448  /* 776 */
129449  /***/ (function(module, exports) {
129450  
129451  // Generated by CoffeeScript 1.12.2
129452  (function() {
129453    var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;
129454  
129455    if ((typeof performance !== "undefined" && performance !== null) && performance.now) {
129456      module.exports = function() {
129457        return performance.now();
129458      };
129459    } else if ((typeof process !== "undefined" && process !== null) && process.hrtime) {
129460      module.exports = function() {
129461        return (getNanoSeconds() - nodeLoadTime) / 1e6;
129462      };
129463      hrtime = process.hrtime;
129464      getNanoSeconds = function() {
129465        var hr;
129466        hr = hrtime();
129467        return hr[0] * 1e9 + hr[1];
129468      };
129469      moduleLoadTime = getNanoSeconds();
129470      upTime = process.uptime() * 1e9;
129471      nodeLoadTime = moduleLoadTime - upTime;
129472    } else if (Date.now) {
129473      module.exports = function() {
129474        return Date.now() - loadTime;
129475      };
129476      loadTime = Date.now();
129477    } else {
129478      module.exports = function() {
129479        return new Date().getTime() - loadTime;
129480      };
129481      loadTime = new Date().getTime();
129482    }
129483  
129484  }).call(this);
129485  
129486  //# sourceMappingURL=performance-now.js.map
129487  
129488  
129489  /***/ }),
129490  /* 777 */
129491  /***/ (function(module, exports, __webpack_require__) {
129492  
129493  "use strict";
129494  
129495  module.exports = (url, opts) => {
129496  	if (typeof url !== 'string') {
129497  		throw new TypeError(`Expected \`url\` to be of type \`string\`, got \`${typeof url}\``);
129498  	}
129499  
129500  	url = url.trim();
129501  	opts = Object.assign({https: false}, opts);
129502  
129503  	if (/^\.*\/|^(?!localhost)\w+:/.test(url)) {
129504  		return url;
129505  	}
129506  
129507  	return url.replace(/^(?!(?:\w+:)?\/\/)/, opts.https ? 'https://' : 'http://');
129508  };
129509  
129510  
129511  /***/ }),
129512  /* 778 */
129513  /***/ (function(module, exports, __webpack_require__) {
129514  
129515  "use strict";
129516  /*!
129517   * preserve <https://github.com/jonschlinkert/preserve>
129518   *
129519   * Copyright (c) 2014-2015, Jon Schlinkert.
129520   * Licensed under the MIT license.
129521   */
129522  
129523  
129524  
129525  /**
129526   * Replace tokens in `str` with a temporary, heuristic placeholder.
129527   *
129528   * ```js
129529   * tokens.before('{a\\,b}');
129530   * //=> '{__ID1__}'
129531   * ```
129532   *
129533   * @param  {String} `str`
129534   * @return {String} String with placeholders.
129535   * @api public
129536   */
129537  
129538  exports.before = function before(str, re) {
129539    return str.replace(re, function (match) {
129540      var id = randomize();
129541      cache[id] = match;
129542      return '__ID' + id + '__';
129543    });
129544  };
129545  
129546  /**
129547   * Replace placeholders in `str` with original tokens.
129548   *
129549   * ```js
129550   * tokens.after('{__ID1__}');
129551   * //=> '{a\\,b}'
129552   * ```
129553   *
129554   * @param  {String} `str` String with placeholders
129555   * @return {String} `str` String with original tokens.
129556   * @api public
129557   */
129558  
129559  exports.after = function after(str) {
129560    return str.replace(/__ID(.{5})__/g, function (_, id) {
129561      return cache[id];
129562    });
129563  };
129564  
129565  function randomize() {
129566    return Math.random().toString().slice(2, 7);
129567  }
129568  
129569  var cache = {};
129570  
129571  /***/ }),
129572  /* 779 */
129573  /***/ (function(module, exports, __webpack_require__) {
129574  
129575  "use strict";
129576  
129577  
129578  function makeSync(fs, name) {
129579      const fn = fs[`${name}Sync`];
129580  
129581      return function () {
129582          const callback = arguments[arguments.length - 1];
129583          const args = Array.prototype.slice.call(arguments, 0, -1);
129584          let ret;
129585  
129586          try {
129587              ret = fn.apply(fs, args);
129588          } catch (err) {
129589              return callback(err);
129590          }
129591  
129592          callback(null, ret);
129593      };
129594  }
129595  
129596  function syncFs(fs) {
129597      const fns = ['mkdir', 'realpath', 'stat', 'rmdir', 'utimes'];
129598      const obj = {};
129599  
129600      // Create the sync versions of the methods that we need
129601      fns.forEach((name) => {
129602          obj[name] = makeSync(fs, name);
129603      });
129604  
129605      // Copy the rest of the functions
129606      for (const key in fs) {
129607          if (!obj[key]) {
129608              obj[key] = fs[key];
129609          }
129610      }
129611  
129612      return obj;
129613  }
129614  
129615  module.exports = syncFs;
129616  
129617  
129618  /***/ }),
129619  /* 780 */
129620  /***/ (function(module, exports, __webpack_require__) {
129621  
129622  "use strict";
129623  
129624  
129625  Object.defineProperty(exports, '__esModule', { value: true });
129626  
129627  /**
129628   * Key a method on your object with this symbol and you can get special
129629   * formatting for that value! See ShellStringText, ShellStringUnquoted, or
129630   * shellStringSemicolon for examples.
129631   * @ignore
129632   */
129633  const formatSymbol = Symbol('format');
129634  /**
129635   * This symbol is for implementing advanced behaviors like the need for extra
129636   * carets in Windows shell strings that use pipes. If present, it's called in
129637   * an earlier phase than formatSymbol, and is passed a mutable context that can
129638   * be read during the format phase to influence formatting.
129639   * @ignore
129640   */
129641  const preformatSymbol = Symbol('preformat');
129642  
129643  // When minimum Node version becomes 6, replace calls to sticky with /.../y and
129644  // inline execFrom.
129645  let stickySupported = true;
129646  try {
129647    new RegExp('', 'y');
129648  } catch (e) {
129649    stickySupported = false;
129650  }
129651  const sticky = stickySupported ? source => new RegExp(source, 'y') : source => new RegExp(`^(?:${source})`);
129652  const execFrom = stickySupported ? (re, haystack, index) => (re.lastIndex = index, re.exec(haystack)) : (re, haystack, index) => re.exec(haystack.substr(index));
129653  
129654  function quoteForCmd(text, forceQuote) {
129655    let caretDepth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
129656    // See the below blog post for an explanation of this function and
129657    // quoteForWin32:
129658    // https://blogs.msdn.microsoft.com/twistylittlepassagesallalike/2011/04/23/everyone-quotes-command-line-arguments-the-wrong-way/
129659    if (!text.length) {
129660      return '""';
129661    }
129662    if (/[\n\r]/.test(text)) {
129663      throw new Error("Line breaks can't be quoted on Windows");
129664    }
129665    const caretEscape = /["%]/.test(text);
129666    text = quoteForWin32(text, forceQuote || !caretEscape && /[&()<>^|]/.test(text));
129667    if (caretEscape) {
129668      // See Win32Context for explanation of what caretDepth is for.
129669      do {
129670        text = text.replace(/[\t "%&()<>^|]/g, '^$&');
129671      } while (caretDepth--);
129672    }
129673    return text;
129674  }
129675  const quoteForWin32 = (text, forceQuote) => forceQuote || /[\t "]/.test(text) ? `"${text.replace(/\\+(?=$|")/g, '$&$&').replace(/"/g, '\\"')}"` : text;
129676  const cmdMetaChars = /[\t\n\r "%&()<>^|]/;
129677  class Win32Context {
129678    constructor() {
129679      this.currentScope = newScope(null);
129680      this.scopesByObject = new Map();
129681    }
129682    read(text) {
129683      // When cmd.exe pipes to or from a batch file, it spawns a second copy of
129684      // itself to run the inner command. This necessitates doubling up on carets
129685      // so that escaped characters survive both cmd.exe invocations. See:
129686      // https://stackoverflow.com/questions/8192318/why-does-delayed-expansion-fail-when-inside-a-piped-block-of-code#8194279
129687      // https://ss64.com/nt/syntax-redirection.html
129688      //
129689      // Parentheses can create an additional subshell, requiring additional
129690      // escaping... it's a mess.
129691      //
129692      // So here's what we do about it: we read all unquoted text in a shell
129693      // string and put it through this tiny parser that looks for pipes,
129694      // sequence operators (&, &&, ||), and parentheses. This can't be part of
129695      // the main Puka parsing, because it can be affected by `unquoted(...)`
129696      // values provided at evaluation time.
129697      //
129698      // Then, after associating each thing that needs to be quoted with a scope
129699      // (via `mark()`), we can determine the depth of caret escaping required
129700      // in each scope and pass it (via `Formatter::quote()`) to `quoteForCmd()`.
129701      //
129702      // See also `ShellStringText`, which holds the logic for the previous
129703      // paragraph.
129704      const length = text.length;
129705      for (let pos = 0, match; pos < length;) {
129706        if (match = execFrom(reUnimportant, text, pos)) {
129707          pos += match[0].length;
129708        }
129709        if (pos >= length) break;
129710        if (match = execFrom(reSeqOp, text, pos)) {
129711          this.seq();
129712          pos += match[0].length;
129713        } else {
129714          const char = text.charCodeAt(pos);
129715          if (char === CARET) {
129716            pos += 2;
129717          } else if (char === QUOTE) {
129718            // If you were foolish enough to leave a dangling quotation mark in
129719            // an unquoted span... you're likely to have bigger problems than
129720            // incorrect escaping. So we just do the simplest thing of looking for
129721            // the end quote only in this piece of text.
129722            pos += execFrom(reNotQuote, text, pos + 1)[0].length + 2;
129723          } else {
129724            if (char === OPEN_PAREN) {
129725              this.enterScope();
129726            } else if (char === CLOSE_PAREN) {
129727              this.exitScope();
129728            } else {
129729              // (char === '|')
129730              this.currentScope.depthDelta = 1;
129731            }
129732            pos++;
129733          }
129734        }
129735      }
129736    }
129737    enterScope() {
129738      this.currentScope = newScope(this.currentScope);
129739    }
129740    exitScope() {
129741      this.currentScope = this.currentScope.parent || (this.currentScope.parent = newScope(null));
129742    }
129743    seq() {
129744      // | binds tighter than sequence operators, so the latter create new sibling
129745      // scopes for future |s to mutate.
129746      this.currentScope = newScope(this.currentScope.parent);
129747    }
129748    mark(obj) {
129749      this.scopesByObject.set(obj, this.currentScope);
129750    }
129751    at(obj) {
129752      return { depth: getDepth(this.scopesByObject.get(obj)) };
129753    }
129754  }
129755  const getDepth = scope => scope === null ? 0 : scope.depth !== -1 ? scope.depth : scope.depth = getDepth(scope.parent) + scope.depthDelta;
129756  const newScope = parent => ({ parent, depthDelta: 0, depth: -1 });
129757  const CARET = '^'.charCodeAt();
129758  const QUOTE = '"'.charCodeAt();
129759  const OPEN_PAREN = '('.charCodeAt();
129760  const CLOSE_PAREN = ')'.charCodeAt();
129761  const reNotQuote = sticky('[^"]*');
129762  const reSeqOp = sticky('&&?|\\|\\|');
129763  const reUnimportant = sticky('(?:>&|[^"$&()^|])+');
129764  
129765  const quoteForSh = (text, forceQuote) => text.length ? forceQuote || shMetaChars.test(text) ? `'${text.replace(/'/g, "'\\''")}'`.replace(/^(?:'')+(?!$)/, '').replace(/\\'''/g, "\\'") : text : "''";
129766  const shMetaChars = /[\t\n\r "#$&'()*;<>?\\`|~]/;
129767  
129768  /**
129769   * To get a Formatter, call `Formatter.for`.
129770   *
129771   * To create a new Formatter, pass an object to `Formatter.declare`.
129772   *
129773   * To set the global default Formatter, assign to `Formatter.default`.
129774   *
129775   * @class
129776   * @property {Formatter} default - The Formatter to be used when no platform
129777   * is provided—for example, when creating strings with `sh`.
129778   * @ignore
129779   */
129780  function Formatter() {}
129781  Object.assign(Formatter, /** @lends Formatter */{
129782    /**
129783     * Gets a Formatter that has been declared for the provided platform, or
129784     * the base `'sh'` formatter if there is no Formatter specific to this
129785     * platform, or the Formatter for the current platform if no specific platform
129786     * is provided.
129787     */
129788    for(platform) {
129789      return platform == null ? Formatter.default || (Formatter.default = Formatter.for(process.platform)) : Formatter._registry.get(platform) || Formatter._registry.get('sh');
129790    },
129791    /**
129792     * Creates a new Formatter or mutates the properties on an existing
129793     * Formatter. The `platform` key on the provided properties object determines
129794     * when the Formatter is retrieved.
129795     */
129796    declare(props) {
129797      const platform = props && props.platform || 'sh';
129798      const existingFormatter = Formatter._registry.get(platform);
129799      const formatter = Object.assign(existingFormatter || new Formatter(), props);
129800      formatter.emptyString === void 0 && (formatter.emptyString = formatter.quote('', true));
129801      existingFormatter || Formatter._registry.set(formatter.platform, formatter);
129802    },
129803    _registry: new Map(),
129804    prototype: {
129805      platform: 'sh',
129806      quote: quoteForSh,
129807      metaChars: shMetaChars,
129808      hasExtraMetaChars: false,
129809      statementSeparator: ';',
129810      createContext() {
129811        return defaultContext;
129812      }
129813    }
129814  });
129815  const defaultContext = {
129816    at() {}
129817  };
129818  Formatter.declare();
129819  Formatter.declare({
129820    platform: 'win32',
129821    quote(text, forceQuote, opts) {
129822      return quoteForCmd(text, forceQuote, opts && opts.depth || 0);
129823    },
129824    metaChars: cmdMetaChars,
129825    hasExtraMetaChars: true,
129826    statementSeparator: '&',
129827    createContext(root) {
129828      const context = new this.Context();
129829      root[preformatSymbol](context);
129830      return context;
129831    },
129832    Context: Win32Context
129833  });
129834  
129835  const isObject = any => any === Object(any);
129836  function memoize(f) {
129837    const cache = new WeakMap();
129838    return arg => {
129839      let result = cache.get(arg);
129840      if (result === void 0) {
129841        result = f(arg);
129842        cache.set(arg, result);
129843      }
129844      return result;
129845    };
129846  }
129847  
129848  /**
129849   * Represents a contiguous span of text that may or must be quoted. The contents
129850   * may already contain quoted segments, which will always be quoted. If unquoted
129851   * segments also require quoting, the entire span will be quoted together.
129852   * @ignore
129853   */
129854  class ShellStringText {
129855    constructor(contents, untested) {
129856      this.contents = contents;
129857      this.untested = untested;
129858    }
129859    [formatSymbol](formatter, context) {
129860      const unformattedContents = this.contents;
129861      const length = unformattedContents.length;
129862      const contents = new Array(length);
129863      for (let i = 0; i < length; i++) {
129864        const c = unformattedContents[i];
129865        contents[i] = isObject(c) && formatSymbol in c ? c[formatSymbol](formatter) : c;
129866      }
129867      for (let unquoted = true, i = 0; i < length; i++) {
129868        const content = contents[i];
129869        if (content === null) {
129870          unquoted = !unquoted;
129871        } else {
129872          if (unquoted && (formatter.hasExtraMetaChars || this.untested && this.untested.has(i)) && formatter.metaChars.test(content)) {
129873            return formatter.quote(contents.join(''), false, context.at(this));
129874          }
129875        }
129876      }
129877      const parts = [];
129878      for (let quoted = null, i = 0; i < length; i++) {
129879        const content = contents[i];
129880        if (content === null) {
129881          quoted = quoted ? (parts.push(formatter.quote(quoted.join(''), true, context.at(this))), null) : [];
129882        } else {
129883          (quoted || parts).push(content);
129884        }
129885      }
129886      const result = parts.join('');
129887      return result.length ? result : formatter.emptyString;
129888    }
129889    [preformatSymbol](context) {
129890      context.mark(this);
129891    }
129892  }
129893  
129894  /**
129895   * Represents a contiguous span of text that will not be quoted.
129896   * @ignore
129897   */
129898  class ShellStringUnquoted {
129899    constructor(value) {
129900      this.value = value;
129901    }
129902    [formatSymbol]() {
129903      return this.value;
129904    }
129905    [preformatSymbol](context) {
129906      context.read(this.value);
129907    }
129908  }
129909  
129910  /**
129911   * Represents a semicolon... or an ampersand, on Windows.
129912   * @ignore
129913   */
129914  const shellStringSemicolon = {
129915    [formatSymbol](formatter) {
129916      return formatter.statementSeparator;
129917    },
129918    [preformatSymbol](context) {
129919      context.seq();
129920    }
129921  };
129922  
129923  const PLACEHOLDER = {};
129924  const parse = memoize(templateSpans => {
129925    // These are the token types our DSL can recognize. Their values won't escape
129926    // this function.
129927    const TOKEN_TEXT = 0;
129928    const TOKEN_QUOTE = 1;
129929    const TOKEN_SEMI = 2;
129930    const TOKEN_UNQUOTED = 3;
129931    const TOKEN_SPACE = 4;
129932    const TOKEN_REDIRECT = 5;
129933    const result = [];
129934    let placeholderCount = 0;
129935    let prefix = null;
129936    let onlyPrefixOnce = false;
129937    let contents = [];
129938    let quote = 0;
129939    const lastSpan = templateSpans.length - 1;
129940    for (let spanIndex = 0; spanIndex <= lastSpan; spanIndex++) {
129941      const templateSpan = templateSpans[spanIndex];
129942      const posEnd = templateSpan.length;
129943      let tokenStart = 0;
129944      if (spanIndex) {
129945        placeholderCount++;
129946        contents.push(PLACEHOLDER);
129947      }
129948      // For each span, we first do a recognizing pass in which we use regular
129949      // expressions to identify the positions of tokens in the text, and then
129950      // a second pass that actually splits the text into the minimum number of
129951      // substrings necessary.
129952      const recognized = []; // [type1, index1, type2, index2...]
129953      let firstWordBreak = -1;
129954      let lastWordBreak = -1;
129955      {
129956        let pos = 0,
129957            match;
129958        while (pos < posEnd) {
129959          if (quote) {
129960            if (match = execFrom(quote === CHAR_SQUO ? reQuotation1 : reQuotation2, templateSpan, pos)) {
129961              recognized.push(TOKEN_TEXT, pos);
129962              pos += match[0].length;
129963            }
129964            if (pos < posEnd) {
129965              recognized.push(TOKEN_QUOTE, pos++);
129966              quote = 0;
129967            }
129968          } else {
129969            if (match = execFrom(reText, templateSpan, pos)) {
129970              const setBreaks = match[1] != null;
129971              setBreaks && firstWordBreak < 0 && (firstWordBreak = pos);
129972              recognized.push(setBreaks ? TOKEN_UNQUOTED : TOKEN_TEXT, pos);
129973              pos += match[0].length;
129974              setBreaks && (lastWordBreak = pos);
129975            }
129976            if (match = execFrom(reRedirectOrSpace, templateSpan, pos)) {
129977              firstWordBreak < 0 && (firstWordBreak = pos);
129978              lastWordBreak = pos;
129979              recognized.push(match[1] ? TOKEN_REDIRECT : TOKEN_SPACE, pos);
129980              pos += match[0].length;
129981            }
129982            const char = templateSpan.charCodeAt(pos);
129983            if (char === CHAR_SEMI) {
129984              firstWordBreak < 0 && (firstWordBreak = pos);
129985              recognized.push(TOKEN_SEMI, pos++);
129986              lastWordBreak = pos;
129987            } else if (char === CHAR_SQUO || char === CHAR_DQUO) {
129988              recognized.push(TOKEN_QUOTE, pos++);
129989              quote = char;
129990            }
129991          }
129992        }
129993      }
129994      // Word breaks are only important if they separate words with placeholders,
129995      // so we can ignore the first/last break if this is the first/last span.
129996      spanIndex === 0 && (firstWordBreak = -1);
129997      spanIndex === lastSpan && (lastWordBreak = posEnd);
129998      // Here begins the second pass mentioned above. This loop runs one more
129999      // iteration than there are tokens in recognized, because it handles tokens
130000      // on a one-iteration delay; hence the i <= iEnd instead of i < iEnd.
130001      const iEnd = recognized.length;
130002      for (let i = 0, type = -1; i <= iEnd; i += 2) {
130003        let typeNext = -1,
130004            pos;
130005        if (i === iEnd) {
130006          pos = posEnd;
130007        } else {
130008          typeNext = recognized[i];
130009          pos = recognized[i + 1];
130010          // If the next token is space or redirect, but there's another word
130011          // break in this span, then we can handle that token the same way we
130012          // would handle unquoted text because it isn't being attached to a
130013          // placeholder.
130014          typeNext >= TOKEN_SPACE && pos !== lastWordBreak && (typeNext = TOKEN_UNQUOTED);
130015        }
130016        const breakHere = pos === firstWordBreak || pos === lastWordBreak;
130017        if (pos && (breakHere || typeNext !== type)) {
130018          let value = type === TOKEN_QUOTE ? null : type === TOKEN_SEMI ? shellStringSemicolon : templateSpan.substring(tokenStart, pos);
130019          if (type >= TOKEN_SEMI) {
130020            // This branch handles semicolons, unquoted text, spaces, and
130021            // redirects. shellStringSemicolon is already a formatSymbol object;
130022            // the rest need to be wrapped.
130023            type === TOKEN_SEMI || (value = new ShellStringUnquoted(value));
130024            // We don't need to check placeholderCount here like we do below;
130025            // that's only relevant during the first word break of the span, and
130026            // because this iteration of the loop is processing the token that
130027            // was checked for breaks in the previous iteration, it will have
130028            // already been handled. For the same reason, prefix is guaranteed to
130029            // be null.
130030            if (contents.length) {
130031              result.push(new ShellStringText(contents, null));
130032              contents = [];
130033            }
130034            // Only spaces and redirects become prefixes, but not if they've been
130035            // rewritten to unquoted above.
130036            if (type >= TOKEN_SPACE) {
130037              prefix = value;
130038              onlyPrefixOnce = type === TOKEN_SPACE;
130039            } else {
130040              result.push(value);
130041            }
130042          } else {
130043            contents.push(value);
130044          }
130045          tokenStart = pos;
130046        }
130047        if (breakHere) {
130048          if (placeholderCount) {
130049            result.push({ contents, placeholderCount, prefix, onlyPrefixOnce });
130050          } else {
130051            // There's no prefix to handle in this branch; a prefix prior to this
130052            // span would mean placeholderCount > 0, and a prefix in this span
130053            // can't be created because spaces and redirects get rewritten to
130054            // unquoted before the last word break.
130055            contents.length && result.push(new ShellStringText(contents, null));
130056          }
130057          placeholderCount = 0;prefix = null;onlyPrefixOnce = false;
130058          contents = [];
130059        }
130060        type = typeNext;
130061      }
130062    }
130063    if (quote) {
130064      throw new SyntaxError(`String is missing a ${String.fromCharCode(quote)} character`);
130065    }
130066    return result;
130067  });
130068  const CHAR_SEMI = ';'.charCodeAt();
130069  const CHAR_SQUO = "'".charCodeAt();
130070  const CHAR_DQUO = '"'.charCodeAt();
130071  const reQuotation1 = sticky("[^']+");
130072  const reQuotation2 = sticky('[^"]+');
130073  const reText = sticky('[^\\s"#$&\'();<>\\\\`|]+|([#$&()\\\\`|]+)');
130074  const reRedirectOrSpace = sticky('((?:\\s+\\d+|\\s*)[<>]+\\s*)|\\s+');
130075  
130076  class BitSet {
130077    constructor() {
130078      this.vector = new Int32Array(1);
130079    }
130080    has(n) {
130081      return (this.vector[n >>> 5] & 1 << n) !== 0;
130082    }
130083    add(n) {
130084      const i = n >>> 5,
130085            requiredLength = i + 1;
130086      let vector = this.vector;var _vector = vector;
130087      let length = _vector.length;
130088      if (requiredLength > length) {
130089        while (requiredLength > (length *= 2));
130090        const oldValues = vector;
130091        vector = new Int32Array(length);
130092        vector.set(oldValues);
130093        this.vector = vector;
130094      }
130095      vector[i] |= 1 << n;
130096    }
130097  }
130098  
130099  function evaluate(template, values) {
130100    values = values.map(toStringishArray);
130101    const children = [];
130102    let valuesStart = 0;
130103    for (let i = 0, iMax = template.length; i < iMax; i++) {
130104      const word = template[i];
130105      if (formatSymbol in word) {
130106        children.push(word);
130107        continue;
130108      }
130109      const contents = word.contents,
130110            placeholderCount = word.placeholderCount,
130111            prefix = word.prefix,
130112            onlyPrefixOnce = word.onlyPrefixOnce;
130113      const kMax = contents.length;
130114      const valuesEnd = valuesStart + placeholderCount;
130115      const tuples = cartesianProduct(values, valuesStart, valuesEnd);
130116      valuesStart = valuesEnd;
130117      for (let j = 0, jMax = tuples.length; j < jMax; j++) {
130118        const needSpace = j > 0;
130119        const tuple = tuples[j];
130120        (needSpace || prefix) && children.push(needSpace && (onlyPrefixOnce || !prefix) ? unquotedSpace : prefix);
130121        let interpolatedContents = [];
130122        let untested = null;
130123        let quoting = false;
130124        let tupleIndex = 0;
130125        for (let k = 0; k < kMax; k++) {
130126          const content = contents[k];
130127          if (content === PLACEHOLDER) {
130128            const value = tuple[tupleIndex++];
130129            if (quoting) {
130130              interpolatedContents.push(value);
130131            } else {
130132              if (isObject(value) && formatSymbol in value) {
130133                if (interpolatedContents.length) {
130134                  children.push(new ShellStringText(interpolatedContents, untested));
130135                  interpolatedContents = [];
130136                  untested = null;
130137                }
130138                children.push(value);
130139              } else {
130140                (untested || (untested = new BitSet())).add(interpolatedContents.length);
130141                interpolatedContents.push(value);
130142              }
130143            }
130144          } else {
130145            interpolatedContents.push(content);
130146            content === null && (quoting = !quoting);
130147          }
130148        }
130149        if (interpolatedContents.length) {
130150          children.push(new ShellStringText(interpolatedContents, untested));
130151        }
130152      }
130153    }
130154    return children;
130155  }
130156  const primToStringish = value => value == null ? '' + value : value;
130157  function toStringishArray(value) {
130158    let array;
130159    switch (true) {
130160      default:
130161        if (isObject(value)) {
130162          if (Array.isArray(value)) {
130163            array = value;break;
130164          }
130165          if (Symbol.iterator in value) {
130166            array = Array.from(value);break;
130167          }
130168        }
130169        array = [value];
130170    }
130171    return array.map(primToStringish);
130172  }
130173  function cartesianProduct(arrs, start, end) {
130174    const size = end - start;
130175    let resultLength = 1;
130176    for (let i = start; i < end; i++) {
130177      resultLength *= arrs[i].length;
130178    }
130179    if (resultLength > 1e6) {
130180      throw new RangeError("Far too many elements to interpolate");
130181    }
130182    const result = new Array(resultLength);
130183    const indices = new Array(size).fill(0);
130184    for (let i = 0; i < resultLength; i++) {
130185      const value = result[i] = new Array(size);
130186      for (let j = 0; j < size; j++) {
130187        value[j] = arrs[j + start][indices[j]];
130188      }
130189      for (let j = size - 1; j >= 0; j--) {
130190        if (++indices[j] < arrs[j + start].length) break;
130191        indices[j] = 0;
130192      }
130193    }
130194    return result;
130195  }
130196  const unquotedSpace = new ShellStringUnquoted(' ');
130197  
130198  /**
130199   * A ShellString represents a shell command after it has been interpolated, but
130200   * before it has been formatted for a particular platform. ShellStrings are
130201   * useful if you want to prepare a command for a different platform than the
130202   * current one, for instance.
130203   *
130204   * To create a ShellString, use `ShellString.sh` the same way you would use
130205   * top-level `sh`.
130206   */
130207  class ShellString {
130208    /** @hideconstructor */
130209    constructor(children) {
130210      this.children = children;
130211    }
130212    /**
130213     * `ShellString.sh` is a template tag just like `sh`; the only difference is
130214     * that this function returns a ShellString which has not yet been formatted
130215     * into a String.
130216     * @returns {ShellString}
130217     * @function sh
130218     * @static
130219     * @memberof ShellString
130220     */
130221    static sh(templateSpans) {
130222      for (var _len = arguments.length, values = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
130223        values[_key - 1] = arguments[_key];
130224      }
130225      return new ShellString(evaluate(parse(templateSpans), values));
130226    }
130227    /**
130228     * A method to format a ShellString into a regular String formatted for a
130229     * particular platform.
130230     *
130231     * @param {String} [platform] a value that `process.platform` might take:
130232     * `'win32'`, `'linux'`, etc.; determines how the string is to be formatted.
130233     * When omitted, effectively the same as `process.platform`.
130234     * @returns {String}
130235     */
130236    toString(platform) {
130237      return this[formatSymbol](Formatter.for(platform));
130238    }
130239    [formatSymbol](formatter) {
130240      let context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : formatter.createContext(this);
130241      return this.children.map(child => child[formatSymbol](formatter, context)).join('');
130242    }
130243    [preformatSymbol](context) {
130244      const children = this.children;
130245      for (let i = 0, iMax = children.length; i < iMax; i++) {
130246        const child = children[i];
130247        if (preformatSymbol in child) {
130248          child[preformatSymbol](context);
130249        }
130250      }
130251    }
130252  }
130253  
130254  /**
130255   * A Windows-specific version of {@link quoteForShell}.
130256   * @param {String} text to be quoted
130257   * @param {Boolean} [forceQuote] whether to always add quotes even if the string
130258   * is already safe. Defaults to `false`.
130259   */
130260  
130261  /**
130262   * A Unix-specific version of {@link quoteForShell}.
130263   * @param {String} text to be quoted
130264   * @param {Boolean} [forceQuote] whether to always add quotes even if the string
130265   * is already safe. Defaults to `false`.
130266   */
130267  
130268  /**
130269   * Quotes a string for injecting into a shell command.
130270   *
130271   * This function is exposed for some hypothetical case when the `sh` DSL simply
130272   * won't do; `sh` is expected to be the more convenient option almost always.
130273   * Compare:
130274   *
130275   * ```javascript
130276   * console.log('cmd' + args.map(a => ' ' + quoteForShell(a)).join(''));
130277   * console.log(sh`cmd ${args}`); // same as above
130278   *
130279   * console.log('cmd' + args.map(a => ' ' + quoteForShell(a, true)).join(''));
130280   * console.log(sh`cmd "${args}"`); // same as above
130281   * ```
130282   *
130283   * Additionally, on Windows, `sh` checks the entire command string for pipes,
130284   * which subtly change how arguments need to be quoted. If your commands may
130285   * involve pipes, you are strongly encouraged to use `sh` and not try to roll
130286   * your own with `quoteForShell`.
130287   *
130288   * @param {String} text to be quoted
130289   * @param {Boolean} [forceQuote] whether to always add quotes even if the string
130290   * is already safe. Defaults to `false`.
130291   * @param {String} [platform] a value that `process.platform` might take:
130292   * `'win32'`, `'linux'`, etc.; determines how the string is to be formatted.
130293   * When omitted, effectively the same as `process.platform`.
130294   *
130295   * @returns {String} a string that is safe for the current (or specified)
130296   * platform.
130297   */
130298  function quoteForShell(text, forceQuote, platform) {
130299    return Formatter.for(platform).quote(text, forceQuote);
130300  }
130301  
130302  /**
130303   * A string template tag for safely constructing cross-platform shell commands.
130304   *
130305   * An `sh` template is not actually treated as a literal string to be
130306   * interpolated; instead, it is a tiny DSL designed to make working with shell
130307   * strings safe, simple, and straightforward. To get started quickly, see the
130308   * examples below. {@link #the-sh-dsl More detailed documentation} is available
130309   * further down.
130310   *
130311   * @name sh
130312   * @example
130313   * const title = '"this" & "that"';
130314   * sh`script --title=${title}`; // => "script '--title=\"this\" & \"that\"'"
130315   * // Note: these examples show results for non-Windows platforms.
130316   * // On Windows, the above would instead be
130317   * // 'script ^"--title=\\^"this\\^" ^& \\^"that\\^"^"'.
130318   *
130319   * const names = ['file1', 'file 2'];
130320   * sh`rimraf ${names}.txt`; // => "rimraf file1.txt 'file 2.txt'"
130321   *
130322   * const cmd1 = ['cat', 'file 1.txt', 'file 2.txt'];
130323   * const cmd2 = ['use-input', '-abc'];
130324   * sh`${cmd1}|${cmd2}`; // => "cat 'file 1.txt' 'file 2.txt'|use-input -abc"
130325   *
130326   * @returns {String} - a string formatted for the platform Node is currently
130327   * running on.
130328   */
130329  const sh = function () {
130330    return ShellString.sh.apply(ShellString, arguments).toString();
130331  };
130332  
130333  /**
130334   * This function permits raw strings to be interpolated into a `sh` template.
130335   *
130336   * **IMPORTANT**: If you're using Puka due to security concerns, make sure you
130337   * don't pass any untrusted content to `unquoted`. This may be obvious, but
130338   * stray punctuation in an `unquoted` section can compromise the safety of the
130339   * entire shell command.
130340   *
130341   * @param value - any value (it will be treated as a string)
130342   *
130343   * @example
130344   * const both = true;
130345   * sh`foo ${unquoted(both ? '&&' : '||')} bar`; // => 'foo && bar'
130346   */
130347  const unquoted = value => new ShellStringUnquoted(value);
130348  
130349  exports.Formatter = Formatter;
130350  exports.ShellString = ShellString;
130351  exports.ShellStringText = ShellStringText;
130352  exports.ShellStringUnquoted = ShellStringUnquoted;
130353  exports.quoteForCmd = quoteForCmd;
130354  exports.quoteForSh = quoteForSh;
130355  exports.quoteForShell = quoteForShell;
130356  exports.sh = sh;
130357  exports.shellStringSemicolon = shellStringSemicolon;
130358  exports.formatSymbol = formatSymbol;
130359  exports.preformatSymbol = preformatSymbol;
130360  exports.unquoted = unquoted;
130361  
130362  
130363  /***/ }),
130364  /* 781 */
130365  /***/ (function(module, exports, __webpack_require__) {
130366  
130367  var once = __webpack_require__(83)
130368  var eos = __webpack_require__(174)
130369  var fs = __webpack_require__(4) // we only need fs to get the ReadStream and WriteStream prototypes
130370  
130371  var noop = function () {}
130372  
130373  var isFn = function (fn) {
130374    return typeof fn === 'function'
130375  }
130376  
130377  var isFS = function (stream) {
130378    if (!fs) return false // browser
130379    return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close)
130380  }
130381  
130382  var isRequest = function (stream) {
130383    return stream.setHeader && isFn(stream.abort)
130384  }
130385  
130386  var destroyer = function (stream, reading, writing, callback) {
130387    callback = once(callback)
130388  
130389    var closed = false
130390    stream.on('close', function () {
130391      closed = true
130392    })
130393  
130394    eos(stream, {readable: reading, writable: writing}, function (err) {
130395      if (err) return callback(err)
130396      closed = true
130397      callback()
130398    })
130399  
130400    var destroyed = false
130401    return function (err) {
130402      if (closed) return
130403      if (destroyed) return
130404      destroyed = true
130405  
130406      if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks
130407      if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want
130408  
130409      if (isFn(stream.destroy)) return stream.destroy()
130410  
130411      callback(err || new Error('stream was destroyed'))
130412    }
130413  }
130414  
130415  var call = function (fn) {
130416    fn()
130417  }
130418  
130419  var pipe = function (from, to) {
130420    return from.pipe(to)
130421  }
130422  
130423  var pump = function () {
130424    var streams = Array.prototype.slice.call(arguments)
130425    var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop
130426  
130427    if (Array.isArray(streams[0])) streams = streams[0]
130428    if (streams.length < 2) throw new Error('pump requires two streams per minimum')
130429  
130430    var error
130431    var destroys = streams.map(function (stream, i) {
130432      var reading = i < streams.length - 1
130433      var writing = i > 0
130434      return destroyer(stream, reading, writing, function (err) {
130435        if (!error) error = err
130436        if (err) destroys.forEach(call)
130437        if (reading) return
130438        destroys.forEach(call)
130439        callback(error)
130440      })
130441    })
130442  
130443    return streams.reduce(pipe)
130444  }
130445  
130446  module.exports = pump
130447  
130448  
130449  /***/ }),
130450  /* 782 */
130451  /***/ (function(module, exports, __webpack_require__) {
130452  
130453  var pump = __webpack_require__(783)
130454  var inherits = __webpack_require__(61)
130455  var Duplexify = __webpack_require__(380)
130456  
130457  var toArray = function(args) {
130458    if (!args.length) return []
130459    return Array.isArray(args[0]) ? args[0] : Array.prototype.slice.call(args)
130460  }
130461  
130462  var define = function(opts) {
130463    var Pumpify = function() {
130464      var streams = toArray(arguments)
130465      if (!(this instanceof Pumpify)) return new Pumpify(streams)
130466      Duplexify.call(this, null, null, opts)
130467      if (streams.length) this.setPipeline(streams)
130468    }
130469  
130470    inherits(Pumpify, Duplexify)
130471  
130472    Pumpify.prototype.setPipeline = function() {
130473      var streams = toArray(arguments)
130474      var self = this
130475      var ended = false
130476      var w = streams[0]
130477      var r = streams[streams.length-1]
130478  
130479      r = r.readable ? r : null
130480      w = w.writable ? w : null
130481  
130482      var onclose = function() {
130483        streams[0].emit('error', new Error('stream was destroyed'))
130484      }
130485  
130486      this.on('close', onclose)
130487      this.on('prefinish', function() {
130488        if (!ended) self.cork()
130489      })
130490  
130491      pump(streams, function(err) {
130492        self.removeListener('close', onclose)
130493        if (err) return self.destroy(err.message === 'premature close' ? null : err)
130494        ended = true
130495        // pump ends after the last stream is not writable *but*
130496        // pumpify still forwards the readable part so we need to catch errors
130497        // still, so reenable autoDestroy in this case
130498        if (self._autoDestroy === false) self._autoDestroy = true
130499        self.uncork()
130500      })
130501  
130502      if (this.destroyed) return onclose()
130503      this.setWritable(w)
130504      this.setReadable(r)
130505    }
130506  
130507    return Pumpify
130508  }
130509  
130510  module.exports = define({autoDestroy:false, destroy:false})
130511  module.exports.obj = define({autoDestroy: false, destroy:false, objectMode:true, highWaterMark:16})
130512  module.exports.ctor = define
130513  
130514  
130515  /***/ }),
130516  /* 783 */
130517  /***/ (function(module, exports, __webpack_require__) {
130518  
130519  var once = __webpack_require__(83)
130520  var eos = __webpack_require__(174)
130521  var fs = __webpack_require__(4) // we only need fs to get the ReadStream and WriteStream prototypes
130522  
130523  var noop = function () {}
130524  var ancient = /^v?\.0/.test(process.version)
130525  
130526  var isFn = function (fn) {
130527    return typeof fn === 'function'
130528  }
130529  
130530  var isFS = function (stream) {
130531    if (!ancient) return false // newer node version do not need to care about fs is a special way
130532    if (!fs) return false // browser
130533    return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close)
130534  }
130535  
130536  var isRequest = function (stream) {
130537    return stream.setHeader && isFn(stream.abort)
130538  }
130539  
130540  var destroyer = function (stream, reading, writing, callback) {
130541    callback = once(callback)
130542  
130543    var closed = false
130544    stream.on('close', function () {
130545      closed = true
130546    })
130547  
130548    eos(stream, {readable: reading, writable: writing}, function (err) {
130549      if (err) return callback(err)
130550      closed = true
130551      callback()
130552    })
130553  
130554    var destroyed = false
130555    return function (err) {
130556      if (closed) return
130557      if (destroyed) return
130558      destroyed = true
130559  
130560      if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks
130561      if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want
130562  
130563      if (isFn(stream.destroy)) return stream.destroy()
130564  
130565      callback(err || new Error('stream was destroyed'))
130566    }
130567  }
130568  
130569  var call = function (fn) {
130570    fn()
130571  }
130572  
130573  var pipe = function (from, to) {
130574    return from.pipe(to)
130575  }
130576  
130577  var pump = function () {
130578    var streams = Array.prototype.slice.call(arguments)
130579    var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop
130580  
130581    if (Array.isArray(streams[0])) streams = streams[0]
130582    if (streams.length < 2) throw new Error('pump requires two streams per minimum')
130583  
130584    var error
130585    var destroys = streams.map(function (stream, i) {
130586      var reading = i < streams.length - 1
130587      var writing = i > 0
130588      return destroyer(stream, reading, writing, function (err) {
130589        if (!error) error = err
130590        if (err) destroys.forEach(call)
130591        if (reading) return
130592        destroys.forEach(call)
130593        callback(error)
130594      })
130595    })
130596  
130597    streams.reduce(pipe)
130598  }
130599  
130600  module.exports = pump
130601  
130602  
130603  /***/ }),
130604  /* 784 */
130605  /***/ (function(module, exports, __webpack_require__) {
130606  
130607  "use strict";
130608  
130609  
130610  var utils = __webpack_require__(405);
130611  
130612  var has = Object.prototype.hasOwnProperty;
130613  
130614  var defaults = {
130615      allowDots: false,
130616      allowPrototypes: false,
130617      arrayLimit: 20,
130618      decoder: utils.decode,
130619      delimiter: '&',
130620      depth: 5,
130621      parameterLimit: 1000,
130622      plainObjects: false,
130623      strictNullHandling: false
130624  };
130625  
130626  var parseValues = function parseQueryStringValues(str, options) {
130627      var obj = {};
130628      var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str;
130629      var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;
130630      var parts = cleanStr.split(options.delimiter, limit);
130631  
130632      for (var i = 0; i < parts.length; ++i) {
130633          var part = parts[i];
130634  
130635          var bracketEqualsPos = part.indexOf(']=');
130636          var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;
130637  
130638          var key, val;
130639          if (pos === -1) {
130640              key = options.decoder(part, defaults.decoder);
130641              val = options.strictNullHandling ? null : '';
130642          } else {
130643              key = options.decoder(part.slice(0, pos), defaults.decoder);
130644              val = options.decoder(part.slice(pos + 1), defaults.decoder);
130645          }
130646          if (has.call(obj, key)) {
130647              obj[key] = [].concat(obj[key]).concat(val);
130648          } else {
130649              obj[key] = val;
130650          }
130651      }
130652  
130653      return obj;
130654  };
130655  
130656  var parseObject = function (chain, val, options) {
130657      var leaf = val;
130658  
130659      for (var i = chain.length - 1; i >= 0; --i) {
130660          var obj;
130661          var root = chain[i];
130662  
130663          if (root === '[]') {
130664              obj = [];
130665              obj = obj.concat(leaf);
130666          } else {
130667              obj = options.plainObjects ? Object.create(null) : {};
130668              var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;
130669              var index = parseInt(cleanRoot, 10);
130670              if (
130671                  !isNaN(index)
130672                  && root !== cleanRoot
130673                  && String(index) === cleanRoot
130674                  && index >= 0
130675                  && (options.parseArrays && index <= options.arrayLimit)
130676              ) {
130677                  obj = [];
130678                  obj[index] = leaf;
130679              } else {
130680                  obj[cleanRoot] = leaf;
130681              }
130682          }
130683  
130684          leaf = obj;
130685      }
130686  
130687      return leaf;
130688  };
130689  
130690  var parseKeys = function parseQueryStringKeys(givenKey, val, options) {
130691      if (!givenKey) {
130692          return;
130693      }
130694  
130695      // Transform dot notation to bracket notation
130696      var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey;
130697  
130698      // The regex chunks
130699  
130700      var brackets = /(\[[^[\]]*])/;
130701      var child = /(\[[^[\]]*])/g;
130702  
130703      // Get the parent
130704  
130705      var segment = brackets.exec(key);
130706      var parent = segment ? key.slice(0, segment.index) : key;
130707  
130708      // Stash the parent if it exists
130709  
130710      var keys = [];
130711      if (parent) {
130712          // If we aren't using plain objects, optionally prefix keys
130713          // that would overwrite object prototype properties
130714          if (!options.plainObjects && has.call(Object.prototype, parent)) {
130715              if (!options.allowPrototypes) {
130716                  return;
130717              }
130718          }
130719  
130720          keys.push(parent);
130721      }
130722  
130723      // Loop through children appending to the array until we hit depth
130724  
130725      var i = 0;
130726      while ((segment = child.exec(key)) !== null && i < options.depth) {
130727          i += 1;
130728          if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {
130729              if (!options.allowPrototypes) {
130730                  return;
130731              }
130732          }
130733          keys.push(segment[1]);
130734      }
130735  
130736      // If there's a remainder, just add whatever is left
130737  
130738      if (segment) {
130739          keys.push('[' + key.slice(segment.index) + ']');
130740      }
130741  
130742      return parseObject(keys, val, options);
130743  };
130744  
130745  module.exports = function (str, opts) {
130746      var options = opts ? utils.assign({}, opts) : {};
130747  
130748      if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {
130749          throw new TypeError('Decoder has to be a function.');
130750      }
130751  
130752      options.ignoreQueryPrefix = options.ignoreQueryPrefix === true;
130753      options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;
130754      options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;
130755      options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;
130756      options.parseArrays = options.parseArrays !== false;
130757      options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;
130758      options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;
130759      options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;
130760      options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;
130761      options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;
130762      options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;
130763  
130764      if (str === '' || str === null || typeof str === 'undefined') {
130765          return options.plainObjects ? Object.create(null) : {};
130766      }
130767  
130768      var tempObj = typeof str === 'string' ? parseValues(str, options) : str;
130769      var obj = options.plainObjects ? Object.create(null) : {};
130770  
130771      // Iterate over the keys and setup the new object
130772  
130773      var keys = Object.keys(tempObj);
130774      for (var i = 0; i < keys.length; ++i) {
130775          var key = keys[i];
130776          var newObj = parseKeys(key, tempObj[key], options);
130777          obj = utils.merge(obj, newObj, options);
130778      }
130779  
130780      return utils.compact(obj);
130781  };
130782  
130783  
130784  /***/ }),
130785  /* 785 */
130786  /***/ (function(module, exports, __webpack_require__) {
130787  
130788  "use strict";
130789  
130790  
130791  var utils = __webpack_require__(405);
130792  var formats = __webpack_require__(403);
130793  
130794  var arrayPrefixGenerators = {
130795      brackets: function brackets(prefix) { // eslint-disable-line func-name-matching
130796          return prefix + '[]';
130797      },
130798      indices: function indices(prefix, key) { // eslint-disable-line func-name-matching
130799          return prefix + '[' + key + ']';
130800      },
130801      repeat: function repeat(prefix) { // eslint-disable-line func-name-matching
130802          return prefix;
130803      }
130804  };
130805  
130806  var toISO = Date.prototype.toISOString;
130807  
130808  var defaults = {
130809      delimiter: '&',
130810      encode: true,
130811      encoder: utils.encode,
130812      encodeValuesOnly: false,
130813      serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching
130814          return toISO.call(date);
130815      },
130816      skipNulls: false,
130817      strictNullHandling: false
130818  };
130819  
130820  var stringify = function stringify( // eslint-disable-line func-name-matching
130821      object,
130822      prefix,
130823      generateArrayPrefix,
130824      strictNullHandling,
130825      skipNulls,
130826      encoder,
130827      filter,
130828      sort,
130829      allowDots,
130830      serializeDate,
130831      formatter,
130832      encodeValuesOnly
130833  ) {
130834      var obj = object;
130835      if (typeof filter === 'function') {
130836          obj = filter(prefix, obj);
130837      } else if (obj instanceof Date) {
130838          obj = serializeDate(obj);
130839      } else if (obj === null) {
130840          if (strictNullHandling) {
130841              return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix;
130842          }
130843  
130844          obj = '';
130845      }
130846  
130847      if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) {
130848          if (encoder) {
130849              var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder);
130850              return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))];
130851          }
130852          return [formatter(prefix) + '=' + formatter(String(obj))];
130853      }
130854  
130855      var values = [];
130856  
130857      if (typeof obj === 'undefined') {
130858          return values;
130859      }
130860  
130861      var objKeys;
130862      if (Array.isArray(filter)) {
130863          objKeys = filter;
130864      } else {
130865          var keys = Object.keys(obj);
130866          objKeys = sort ? keys.sort(sort) : keys;
130867      }
130868  
130869      for (var i = 0; i < objKeys.length; ++i) {
130870          var key = objKeys[i];
130871  
130872          if (skipNulls && obj[key] === null) {
130873              continue;
130874          }
130875  
130876          if (Array.isArray(obj)) {
130877              values = values.concat(stringify(
130878                  obj[key],
130879                  generateArrayPrefix(prefix, key),
130880                  generateArrayPrefix,
130881                  strictNullHandling,
130882                  skipNulls,
130883                  encoder,
130884                  filter,
130885                  sort,
130886                  allowDots,
130887                  serializeDate,
130888                  formatter,
130889                  encodeValuesOnly
130890              ));
130891          } else {
130892              values = values.concat(stringify(
130893                  obj[key],
130894                  prefix + (allowDots ? '.' + key : '[' + key + ']'),
130895                  generateArrayPrefix,
130896                  strictNullHandling,
130897                  skipNulls,
130898                  encoder,
130899                  filter,
130900                  sort,
130901                  allowDots,
130902                  serializeDate,
130903                  formatter,
130904                  encodeValuesOnly
130905              ));
130906          }
130907      }
130908  
130909      return values;
130910  };
130911  
130912  module.exports = function (object, opts) {
130913      var obj = object;
130914      var options = opts ? utils.assign({}, opts) : {};
130915  
130916      if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') {
130917          throw new TypeError('Encoder has to be a function.');
130918      }
130919  
130920      var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;
130921      var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;
130922      var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;
130923      var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;
130924      var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder;
130925      var sort = typeof options.sort === 'function' ? options.sort : null;
130926      var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;
130927      var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate;
130928      var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly;
130929      if (typeof options.format === 'undefined') {
130930          options.format = formats['default'];
130931      } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) {
130932          throw new TypeError('Unknown format option provided.');
130933      }
130934      var formatter = formats.formatters[options.format];
130935      var objKeys;
130936      var filter;
130937  
130938      if (typeof options.filter === 'function') {
130939          filter = options.filter;
130940          obj = filter('', obj);
130941      } else if (Array.isArray(options.filter)) {
130942          filter = options.filter;
130943          objKeys = filter;
130944      }
130945  
130946      var keys = [];
130947  
130948      if (typeof obj !== 'object' || obj === null) {
130949          return '';
130950      }
130951  
130952      var arrayFormat;
130953      if (options.arrayFormat in arrayPrefixGenerators) {
130954          arrayFormat = options.arrayFormat;
130955      } else if ('indices' in options) {
130956          arrayFormat = options.indices ? 'indices' : 'repeat';
130957      } else {
130958          arrayFormat = 'indices';
130959      }
130960  
130961      var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];
130962  
130963      if (!objKeys) {
130964          objKeys = Object.keys(obj);
130965      }
130966  
130967      if (sort) {
130968          objKeys.sort(sort);
130969      }
130970  
130971      for (var i = 0; i < objKeys.length; ++i) {
130972          var key = objKeys[i];
130973  
130974          if (skipNulls && obj[key] === null) {
130975              continue;
130976          }
130977  
130978          keys = keys.concat(stringify(
130979              obj[key],
130980              key,
130981              generateArrayPrefix,
130982              strictNullHandling,
130983              skipNulls,
130984              encode ? encoder : null,
130985              filter,
130986              sort,
130987              allowDots,
130988              serializeDate,
130989              formatter,
130990              encodeValuesOnly
130991          ));
130992      }
130993  
130994      var joined = keys.join(delimiter);
130995      var prefix = options.addQueryPrefix === true ? '?' : '';
130996  
130997      return joined.length > 0 ? prefix + joined : '';
130998  };
130999  
131000  
131001  /***/ }),
131002  /* 786 */
131003  /***/ (function(module, exports, __webpack_require__) {
131004  
131005  "use strict";
131006  
131007  var strictUriEncode = __webpack_require__(943);
131008  var objectAssign = __webpack_require__(303);
131009  var decodeComponent = __webpack_require__(598);
131010  
131011  function encoderForArrayFormat(opts) {
131012  	switch (opts.arrayFormat) {
131013  		case 'index':
131014  			return function (key, value, index) {
131015  				return value === null ? [
131016  					encode(key, opts),
131017  					'[',
131018  					index,
131019  					']'
131020  				].join('') : [
131021  					encode(key, opts),
131022  					'[',
131023  					encode(index, opts),
131024  					']=',
131025  					encode(value, opts)
131026  				].join('');
131027  			};
131028  
131029  		case 'bracket':
131030  			return function (key, value) {
131031  				return value === null ? encode(key, opts) : [
131032  					encode(key, opts),
131033  					'[]=',
131034  					encode(value, opts)
131035  				].join('');
131036  			};
131037  
131038  		default:
131039  			return function (key, value) {
131040  				return value === null ? encode(key, opts) : [
131041  					encode(key, opts),
131042  					'=',
131043  					encode(value, opts)
131044  				].join('');
131045  			};
131046  	}
131047  }
131048  
131049  function parserForArrayFormat(opts) {
131050  	var result;
131051  
131052  	switch (opts.arrayFormat) {
131053  		case 'index':
131054  			return function (key, value, accumulator) {
131055  				result = /\[(\d*)\]$/.exec(key);
131056  
131057  				key = key.replace(/\[\d*\]$/, '');
131058  
131059  				if (!result) {
131060  					accumulator[key] = value;
131061  					return;
131062  				}
131063  
131064  				if (accumulator[key] === undefined) {
131065  					accumulator[key] = {};
131066  				}
131067  
131068  				accumulator[key][result[1]] = value;
131069  			};
131070  
131071  		case 'bracket':
131072  			return function (key, value, accumulator) {
131073  				result = /(\[\])$/.exec(key);
131074  				key = key.replace(/\[\]$/, '');
131075  
131076  				if (!result) {
131077  					accumulator[key] = value;
131078  					return;
131079  				} else if (accumulator[key] === undefined) {
131080  					accumulator[key] = [value];
131081  					return;
131082  				}
131083  
131084  				accumulator[key] = [].concat(accumulator[key], value);
131085  			};
131086  
131087  		default:
131088  			return function (key, value, accumulator) {
131089  				if (accumulator[key] === undefined) {
131090  					accumulator[key] = value;
131091  					return;
131092  				}
131093  
131094  				accumulator[key] = [].concat(accumulator[key], value);
131095  			};
131096  	}
131097  }
131098  
131099  function encode(value, opts) {
131100  	if (opts.encode) {
131101  		return opts.strict ? strictUriEncode(value) : encodeURIComponent(value);
131102  	}
131103  
131104  	return value;
131105  }
131106  
131107  function keysSorter(input) {
131108  	if (Array.isArray(input)) {
131109  		return input.sort();
131110  	} else if (typeof input === 'object') {
131111  		return keysSorter(Object.keys(input)).sort(function (a, b) {
131112  			return Number(a) - Number(b);
131113  		}).map(function (key) {
131114  			return input[key];
131115  		});
131116  	}
131117  
131118  	return input;
131119  }
131120  
131121  function extract(str) {
131122  	var queryStart = str.indexOf('?');
131123  	if (queryStart === -1) {
131124  		return '';
131125  	}
131126  	return str.slice(queryStart + 1);
131127  }
131128  
131129  function parse(str, opts) {
131130  	opts = objectAssign({arrayFormat: 'none'}, opts);
131131  
131132  	var formatter = parserForArrayFormat(opts);
131133  
131134  	// Create an object with no prototype
131135  	// https://github.com/sindresorhus/query-string/issues/47
131136  	var ret = Object.create(null);
131137  
131138  	if (typeof str !== 'string') {
131139  		return ret;
131140  	}
131141  
131142  	str = str.trim().replace(/^[?#&]/, '');
131143  
131144  	if (!str) {
131145  		return ret;
131146  	}
131147  
131148  	str.split('&').forEach(function (param) {
131149  		var parts = param.replace(/\+/g, ' ').split('=');
131150  		// Firefox (pre 40) decodes `%3D` to `=`
131151  		// https://github.com/sindresorhus/query-string/pull/37
131152  		var key = parts.shift();
131153  		var val = parts.length > 0 ? parts.join('=') : undefined;
131154  
131155  		// missing `=` should be `null`:
131156  		// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
131157  		val = val === undefined ? null : decodeComponent(val);
131158  
131159  		formatter(decodeComponent(key), val, ret);
131160  	});
131161  
131162  	return Object.keys(ret).sort().reduce(function (result, key) {
131163  		var val = ret[key];
131164  		if (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {
131165  			// Sort object keys, not values
131166  			result[key] = keysSorter(val);
131167  		} else {
131168  			result[key] = val;
131169  		}
131170  
131171  		return result;
131172  	}, Object.create(null));
131173  }
131174  
131175  exports.extract = extract;
131176  exports.parse = parse;
131177  
131178  exports.stringify = function (obj, opts) {
131179  	var defaults = {
131180  		encode: true,
131181  		strict: true,
131182  		arrayFormat: 'none'
131183  	};
131184  
131185  	opts = objectAssign(defaults, opts);
131186  
131187  	if (opts.sort === false) {
131188  		opts.sort = function () {};
131189  	}
131190  
131191  	var formatter = encoderForArrayFormat(opts);
131192  
131193  	return obj ? Object.keys(obj).sort(opts.sort).map(function (key) {
131194  		var val = obj[key];
131195  
131196  		if (val === undefined) {
131197  			return '';
131198  		}
131199  
131200  		if (val === null) {
131201  			return encode(key, opts);
131202  		}
131203  
131204  		if (Array.isArray(val)) {
131205  			var result = [];
131206  
131207  			val.slice().forEach(function (val2) {
131208  				if (val2 === undefined) {
131209  					return;
131210  				}
131211  
131212  				result.push(formatter(key, val2, result.length));
131213  			});
131214  
131215  			return result.join('&');
131216  		}
131217  
131218  		return encode(key, opts) + '=' + encode(val, opts);
131219  	}).filter(function (x) {
131220  		return x.length > 0;
131221  	}).join('&') : '';
131222  };
131223  
131224  exports.parseUrl = function (str, opts) {
131225  	return {
131226  		url: str.split('?')[0] || '',
131227  		query: parse(extract(str), opts)
131228  	};
131229  };
131230  
131231  
131232  /***/ }),
131233  /* 787 */
131234  /***/ (function(module, exports, __webpack_require__) {
131235  
131236  "use strict";
131237  /*!
131238   * randomatic <https://github.com/jonschlinkert/randomatic>
131239   *
131240   * Copyright (c) 2014-2017, Jon Schlinkert.
131241   * Released under the MIT License.
131242   */
131243  
131244  
131245  
131246  var isNumber = __webpack_require__(788);
131247  var typeOf = __webpack_require__(789);
131248  var mathRandom = __webpack_require__(751);
131249  
131250  /**
131251   * Expose `randomatic`
131252   */
131253  
131254  module.exports = randomatic;
131255  module.exports.isCrypto = !!mathRandom.cryptographic;
131256  
131257  /**
131258   * Available mask characters
131259   */
131260  
131261  var type = {
131262    lower: 'abcdefghijklmnopqrstuvwxyz',
131263    upper: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
131264    number: '0123456789',
131265    special: '~!@#$%^&()_+-={}[];\',.'
131266  };
131267  
131268  type.all = type.lower + type.upper + type.number + type.special;
131269  
131270  /**
131271   * Generate random character sequences of a specified `length`,
131272   * based on the given `pattern`.
131273   *
131274   * @param {String} `pattern` The pattern to use for generating the random string.
131275   * @param {String} `length` The length of the string to generate.
131276   * @param {String} `options`
131277   * @return {String}
131278   * @api public
131279   */
131280  
131281  function randomatic(pattern, length, options) {
131282    if (typeof pattern === 'undefined') {
131283      throw new Error('randomatic expects a string or number.');
131284    }
131285  
131286    var custom = false;
131287    if (arguments.length === 1) {
131288      if (typeof pattern === 'string') {
131289        length = pattern.length;
131290  
131291      } else if (isNumber(pattern)) {
131292        options = {};
131293        length = pattern;
131294        pattern = '*';
131295      }
131296    }
131297  
131298    if (typeOf(length) === 'object' && length.hasOwnProperty('chars')) {
131299      options = length;
131300      pattern = options.chars;
131301      length = pattern.length;
131302      custom = true;
131303    }
131304  
131305    var opts = options || {};
131306    var mask = '';
131307    var res = '';
131308  
131309    // Characters to be used
131310    if (pattern.indexOf('?') !== -1) mask += opts.chars;
131311    if (pattern.indexOf('a') !== -1) mask += type.lower;
131312    if (pattern.indexOf('A') !== -1) mask += type.upper;
131313    if (pattern.indexOf('0') !== -1) mask += type.number;
131314    if (pattern.indexOf('!') !== -1) mask += type.special;
131315    if (pattern.indexOf('*') !== -1) mask += type.all;
131316    if (custom) mask += pattern;
131317  
131318    while (length--) {
131319      res += mask.charAt(parseInt(mathRandom() * mask.length, 10));
131320    }
131321    return res;
131322  };
131323  
131324  
131325  /***/ }),
131326  /* 788 */
131327  /***/ (function(module, exports, __webpack_require__) {
131328  
131329  "use strict";
131330  /*!
131331   * is-number <https://github.com/jonschlinkert/is-number>
131332   *
131333   * Copyright (c) 2014-2017, Jon Schlinkert.
131334   * Released under the MIT License.
131335   */
131336  
131337  
131338  
131339  module.exports = function isNumber(num) {
131340    var type = typeof num;
131341  
131342    if (type === 'string' || num instanceof String) {
131343      // an empty string would be coerced to true with the below logic
131344      if (!num.trim()) return false;
131345    } else if (type !== 'number' && !(num instanceof Number)) {
131346      return false;
131347    }
131348  
131349    return (num - num + 1) >= 0;
131350  };
131351  
131352  
131353  /***/ }),
131354  /* 789 */
131355  /***/ (function(module, exports) {
131356  
131357  var toString = Object.prototype.toString;
131358  
131359  module.exports = function kindOf(val) {
131360    if (val === void 0) return 'undefined';
131361    if (val === null) return 'null';
131362  
131363    var type = typeof val;
131364    if (type === 'boolean') return 'boolean';
131365    if (type === 'string') return 'string';
131366    if (type === 'number') return 'number';
131367    if (type === 'symbol') return 'symbol';
131368    if (type === 'function') {
131369      return isGeneratorFn(val) ? 'generatorfunction' : 'function';
131370    }
131371  
131372    if (isArray(val)) return 'array';
131373    if (isBuffer(val)) return 'buffer';
131374    if (isArguments(val)) return 'arguments';
131375    if (isDate(val)) return 'date';
131376    if (isError(val)) return 'error';
131377    if (isRegexp(val)) return 'regexp';
131378  
131379    switch (ctorName(val)) {
131380      case 'Symbol': return 'symbol';
131381      case 'Promise': return 'promise';
131382  
131383      // Set, Map, WeakSet, WeakMap
131384      case 'WeakMap': return 'weakmap';
131385      case 'WeakSet': return 'weakset';
131386      case 'Map': return 'map';
131387      case 'Set': return 'set';
131388  
131389      // 8-bit typed arrays
131390      case 'Int8Array': return 'int8array';
131391      case 'Uint8Array': return 'uint8array';
131392      case 'Uint8ClampedArray': return 'uint8clampedarray';
131393  
131394      // 16-bit typed arrays
131395      case 'Int16Array': return 'int16array';
131396      case 'Uint16Array': return 'uint16array';
131397  
131398      // 32-bit typed arrays
131399      case 'Int32Array': return 'int32array';
131400      case 'Uint32Array': return 'uint32array';
131401      case 'Float32Array': return 'float32array';
131402      case 'Float64Array': return 'float64array';
131403    }
131404  
131405    if (isGeneratorObj(val)) {
131406      return 'generator';
131407    }
131408  
131409    // Non-plain objects
131410    type = toString.call(val);
131411    switch (type) {
131412      case '[object Object]': return 'object';
131413      // iterators
131414      case '[object Map Iterator]': return 'mapiterator';
131415      case '[object Set Iterator]': return 'setiterator';
131416      case '[object String Iterator]': return 'stringiterator';
131417      case '[object Array Iterator]': return 'arrayiterator';
131418    }
131419  
131420    // other
131421    return type.slice(8, -1).toLowerCase().replace(/\s/g, '');
131422  };
131423  
131424  function ctorName(val) {
131425    return val.constructor ? val.constructor.name : null;
131426  }
131427  
131428  function isArray(val) {
131429    if (Array.isArray) return Array.isArray(val);
131430    return val instanceof Array;
131431  }
131432  
131433  function isError(val) {
131434    return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');
131435  }
131436  
131437  function isDate(val) {
131438    if (val instanceof Date) return true;
131439    return typeof val.toDateString === 'function'
131440      && typeof val.getDate === 'function'
131441      && typeof val.setDate === 'function';
131442  }
131443  
131444  function isRegexp(val) {
131445    if (val instanceof RegExp) return true;
131446    return typeof val.flags === 'string'
131447      && typeof val.ignoreCase === 'boolean'
131448      && typeof val.multiline === 'boolean'
131449      && typeof val.global === 'boolean';
131450  }
131451  
131452  function isGeneratorFn(name, val) {
131453    return ctorName(name) === 'GeneratorFunction';
131454  }
131455  
131456  function isGeneratorObj(val) {
131457    return typeof val.throw === 'function'
131458      && typeof val.return === 'function'
131459      && typeof val.next === 'function';
131460  }
131461  
131462  function isArguments(val) {
131463    try {
131464      if (typeof val.length === 'number' && typeof val.callee === 'function') {
131465        return true;
131466      }
131467    } catch (err) {
131468      if (err.message.indexOf('callee') !== -1) {
131469        return true;
131470      }
131471    }
131472    return false;
131473  }
131474  
131475  /**
131476   * If you need to support Safari 5-7 (8-10 yr-old browser),
131477   * take a look at https://github.com/feross/is-buffer
131478   */
131479  
131480  function isBuffer(val) {
131481    if (val.constructor && typeof val.constructor.isBuffer === 'function') {
131482      return val.constructor.isBuffer(val);
131483    }
131484    return false;
131485  }
131486  
131487  
131488  /***/ }),
131489  /* 790 */
131490  /***/ (function(module, exports, __webpack_require__) {
131491  
131492  
131493  module.exports = read
131494  
131495  var readline = __webpack_require__(198)
131496  var Mute = __webpack_require__(401)
131497  
131498  function read (opts, cb) {
131499    if (opts.num) {
131500      throw new Error('read() no longer accepts a char number limit')
131501    }
131502  
131503    if (typeof opts.default !== 'undefined' &&
131504        typeof opts.default !== 'string' &&
131505        typeof opts.default !== 'number') {
131506      throw new Error('default value must be string or number')
131507    }
131508  
131509    var input = opts.input || process.stdin
131510    var output = opts.output || process.stdout
131511    var prompt = (opts.prompt || '').trim() + ' '
131512    var silent = opts.silent
131513    var editDef = false
131514    var timeout = opts.timeout
131515  
131516    var def = opts.default || ''
131517    if (def) {
131518      if (silent) {
131519        prompt += '(<default hidden>) '
131520      } else if (opts.edit) {
131521        editDef = true
131522      } else {
131523        prompt += '(' + def + ') '
131524      }
131525    }
131526    var terminal = !!(opts.terminal || output.isTTY)
131527  
131528    var m = new Mute({ replace: opts.replace, prompt: prompt })
131529    m.pipe(output, {end: false})
131530    output = m
131531    var rlOpts = { input: input, output: output, terminal: terminal }
131532  
131533    if (process.version.match(/^v0\.6/)) {
131534      var rl = readline.createInterface(rlOpts.input, rlOpts.output)
131535    } else {
131536      var rl = readline.createInterface(rlOpts)
131537    }
131538  
131539  
131540    output.unmute()
131541    rl.setPrompt(prompt)
131542    rl.prompt()
131543    if (silent) {
131544      output.mute()
131545    } else if (editDef) {
131546      rl.line = def
131547      rl.cursor = def.length
131548      rl._refreshLine()
131549    }
131550  
131551    var called = false
131552    rl.on('line', onLine)
131553    rl.on('error', onError)
131554  
131555    rl.on('SIGINT', function () {
131556      rl.close()
131557      onError(new Error('canceled'))
131558    })
131559  
131560    var timer
131561    if (timeout) {
131562      timer = setTimeout(function () {
131563        onError(new Error('timed out'))
131564      }, timeout)
131565    }
131566  
131567    function done () {
131568      called = true
131569      rl.close()
131570  
131571      if (process.version.match(/^v0\.6/)) {
131572        rl.input.removeAllListeners('data')
131573        rl.input.removeAllListeners('keypress')
131574        rl.input.pause()
131575      }
131576  
131577      clearTimeout(timer)
131578      output.mute()
131579      output.end()
131580    }
131581  
131582    function onError (er) {
131583      if (called) return
131584      done()
131585      return cb(er)
131586    }
131587  
131588    function onLine (line) {
131589      if (called) return
131590      if (silent && terminal) {
131591        output.unmute()
131592        output.write('\r\n')
131593      }
131594      done()
131595      // truncate the \n at the end.
131596      line = line.replace(/\r?\n$/, '')
131597      var isDefault = !!(editDef && line === def)
131598      if (def && !line) {
131599        isDefault = true
131600        line = def
131601      }
131602      cb(null, line, isDefault)
131603    }
131604  }
131605  
131606  
131607  /***/ }),
131608  /* 791 */
131609  /***/ (function(module, exports, __webpack_require__) {
131610  
131611  module.exports = __webpack_require__(102).Duplex
131612  
131613  
131614  /***/ }),
131615  /* 792 */
131616  /***/ (function(module, exports, __webpack_require__) {
131617  
131618  "use strict";
131619  // Copyright Joyent, Inc. and other Node contributors.
131620  //
131621  // Permission is hereby granted, free of charge, to any person obtaining a
131622  // copy of this software and associated documentation files (the
131623  // "Software"), to deal in the Software without restriction, including
131624  // without limitation the rights to use, copy, modify, merge, publish,
131625  // distribute, sublicense, and/or sell copies of the Software, and to permit
131626  // persons to whom the Software is furnished to do so, subject to the
131627  // following conditions:
131628  //
131629  // The above copyright notice and this permission notice shall be included
131630  // in all copies or substantial portions of the Software.
131631  //
131632  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
131633  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
131634  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
131635  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
131636  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
131637  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
131638  // USE OR OTHER DEALINGS IN THE SOFTWARE.
131639  
131640  // a passthrough stream.
131641  // basically just the most minimal sort of Transform stream.
131642  // Every written chunk gets output as-is.
131643  
131644  
131645  
131646  module.exports = PassThrough;
131647  
131648  var Transform = __webpack_require__(407);
131649  
131650  /*<replacement>*/
131651  var util = __webpack_require__(113);
131652  util.inherits = __webpack_require__(61);
131653  /*</replacement>*/
131654  
131655  util.inherits(PassThrough, Transform);
131656  
131657  function PassThrough(options) {
131658    if (!(this instanceof PassThrough)) return new PassThrough(options);
131659  
131660    Transform.call(this, options);
131661  }
131662  
131663  PassThrough.prototype._transform = function (chunk, encoding, cb) {
131664    cb(null, chunk);
131665  };
131666  
131667  /***/ }),
131668  /* 793 */
131669  /***/ (function(module, exports, __webpack_require__) {
131670  
131671  "use strict";
131672  
131673  
131674  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
131675  
131676  var Buffer = __webpack_require__(45).Buffer;
131677  var util = __webpack_require__(3);
131678  
131679  function copyBuffer(src, target, offset) {
131680    src.copy(target, offset);
131681  }
131682  
131683  module.exports = function () {
131684    function BufferList() {
131685      _classCallCheck(this, BufferList);
131686  
131687      this.head = null;
131688      this.tail = null;
131689      this.length = 0;
131690    }
131691  
131692    BufferList.prototype.push = function push(v) {
131693      var entry = { data: v, next: null };
131694      if (this.length > 0) this.tail.next = entry;else this.head = entry;
131695      this.tail = entry;
131696      ++this.length;
131697    };
131698  
131699    BufferList.prototype.unshift = function unshift(v) {
131700      var entry = { data: v, next: this.head };
131701      if (this.length === 0) this.tail = entry;
131702      this.head = entry;
131703      ++this.length;
131704    };
131705  
131706    BufferList.prototype.shift = function shift() {
131707      if (this.length === 0) return;
131708      var ret = this.head.data;
131709      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
131710      --this.length;
131711      return ret;
131712    };
131713  
131714    BufferList.prototype.clear = function clear() {
131715      this.head = this.tail = null;
131716      this.length = 0;
131717    };
131718  
131719    BufferList.prototype.join = function join(s) {
131720      if (this.length === 0) return '';
131721      var p = this.head;
131722      var ret = '' + p.data;
131723      while (p = p.next) {
131724        ret += s + p.data;
131725      }return ret;
131726    };
131727  
131728    BufferList.prototype.concat = function concat(n) {
131729      if (this.length === 0) return Buffer.alloc(0);
131730      if (this.length === 1) return this.head.data;
131731      var ret = Buffer.allocUnsafe(n >>> 0);
131732      var p = this.head;
131733      var i = 0;
131734      while (p) {
131735        copyBuffer(p.data, ret, i);
131736        i += p.data.length;
131737        p = p.next;
131738      }
131739      return ret;
131740    };
131741  
131742    return BufferList;
131743  }();
131744  
131745  if (util && util.inspect && util.inspect.custom) {
131746    module.exports.prototype[util.inspect.custom] = function () {
131747      var obj = util.inspect({ length: this.length });
131748      return this.constructor.name + ' ' + obj;
131749    };
131750  }
131751  
131752  /***/ }),
131753  /* 794 */
131754  /***/ (function(module, exports, __webpack_require__) {
131755  
131756  module.exports = __webpack_require__(102).Transform
131757  
131758  
131759  /***/ }),
131760  /* 795 */
131761  /***/ (function(module, exports, __webpack_require__) {
131762  
131763  "use strict";
131764  /*!
131765   * regex-cache <https://github.com/jonschlinkert/regex-cache>
131766   *
131767   * Copyright (c) 2015-2017, Jon Schlinkert.
131768   * Released under the MIT License.
131769   */
131770  
131771  
131772  
131773  var equal = __webpack_require__(734);
131774  var basic = {};
131775  var cache = {};
131776  
131777  /**
131778   * Expose `regexCache`
131779   */
131780  
131781  module.exports = regexCache;
131782  
131783  /**
131784   * Memoize the results of a call to the new RegExp constructor.
131785   *
131786   * @param  {Function} fn [description]
131787   * @param  {String} str [description]
131788   * @param  {Options} options [description]
131789   * @param  {Boolean} nocompare [description]
131790   * @return {RegExp}
131791   */
131792  
131793  function regexCache(fn, str, opts) {
131794    var key = '_default_', regex, cached;
131795  
131796    if (!str && !opts) {
131797      if (typeof fn !== 'function') {
131798        return fn;
131799      }
131800      return basic[key] || (basic[key] = fn(str));
131801    }
131802  
131803    var isString = typeof str === 'string';
131804    if (isString) {
131805      if (!opts) {
131806        return basic[str] || (basic[str] = fn(str));
131807      }
131808      key = str;
131809    } else {
131810      opts = str;
131811    }
131812  
131813    cached = cache[key];
131814    if (cached && equal(cached.opts, opts)) {
131815      return cached.regex;
131816    }
131817  
131818    memo(key, opts, (regex = fn(str, opts)));
131819    return regex;
131820  }
131821  
131822  function memo(key, opts, regex) {
131823    cache[key] = {regex: regex, opts: opts};
131824  }
131825  
131826  /**
131827   * Expose `cache`
131828   */
131829  
131830  module.exports.cache = cache;
131831  module.exports.basic = basic;
131832  
131833  
131834  /***/ }),
131835  /* 796 */
131836  /***/ (function(module, exports) {
131837  
131838  var isWin = process.platform === 'win32';
131839  
131840  module.exports = function (str) {
131841  	var i = str.length - 1;
131842  	if (i < 2) {
131843  		return str;
131844  	}
131845  	while (isSeparator(str, i)) {
131846  		i--;
131847  	}
131848  	return str.substr(0, i + 1);
131849  };
131850  
131851  function isSeparator(str, i) {
131852  	var char = str[i];
131853  	return i > 0 && (char === '/' || (isWin && char === '\\'));
131854  }
131855  
131856  
131857  /***/ }),
131858  /* 797 */
131859  /***/ (function(module, exports, __webpack_require__) {
131860  
131861  "use strict";
131862  /*!
131863   * repeat-string <https://github.com/jonschlinkert/repeat-string>
131864   *
131865   * Copyright (c) 2014-2015, Jon Schlinkert.
131866   * Licensed under the MIT License.
131867   */
131868  
131869  
131870  
131871  /**
131872   * Results cache
131873   */
131874  
131875  var res = '';
131876  var cache;
131877  
131878  /**
131879   * Expose `repeat`
131880   */
131881  
131882  module.exports = repeat;
131883  
131884  /**
131885   * Repeat the given `string` the specified `number`
131886   * of times.
131887   *
131888   * **Example:**
131889   *
131890   * ```js
131891   * var repeat = require('repeat-string');
131892   * repeat('A', 5);
131893   * //=> AAAAA
131894   * ```
131895   *
131896   * @param {String} `string` The string to repeat
131897   * @param {Number} `number` The number of times to repeat the string
131898   * @return {String} Repeated string
131899   * @api public
131900   */
131901  
131902  function repeat(str, num) {
131903    if (typeof str !== 'string') {
131904      throw new TypeError('expected a string');
131905    }
131906  
131907    // cover common, quick use cases
131908    if (num === 1) return str;
131909    if (num === 2) return str + str;
131910  
131911    var max = str.length * num;
131912    if (cache !== str || typeof cache === 'undefined') {
131913      cache = str;
131914      res = '';
131915    } else if (res.length >= max) {
131916      return res.substr(0, max);
131917    }
131918  
131919    while (max > res.length && num > 1) {
131920      if (num & 1) {
131921        res += str;
131922      }
131923  
131924      num >>= 1;
131925      str += str;
131926    }
131927  
131928    res += str;
131929    res = res.substr(0, max);
131930    return res;
131931  }
131932  
131933  
131934  /***/ }),
131935  /* 798 */
131936  /***/ (function(module, exports) {
131937  
131938  module.exports = {"name":"request-capture-har","version":"1.2.2","description":"Wrapper for request module that saves all traffic as a HAR file, useful for auto mocking a client","main":"request-capture-har.js","scripts":{"test":"semistandard","travis":"npm test && node request-capture-har.js"},"repository":{"type":"git","url":"git+https://github.com/paulirish/node-request-capture-har.git"},"keywords":["http","request","har"],"author":"Lars Thorup <lars@zealake.com> (http://github.com/larsthorup)","license":"MIT","bugs":{"url":"https://github.com/paulirish/node-request-capture-har/issues"},"homepage":"https://github.com/paulirish/node-request-capture-har#readme","files":["request-capture-har.js"],"devDependencies":{"semistandard":"^8.0.0"}}
131939  
131940  /***/ }),
131941  /* 799 */
131942  /***/ (function(module, exports, __webpack_require__) {
131943  
131944  var fs = __webpack_require__(4);
131945  var pkg = __webpack_require__(798);
131946  
131947  function buildHarHeaders (headers) {
131948    return headers ? Object.keys(headers).map(function (key) {
131949      return {
131950        name: key,
131951        // header values are required to be strings
131952        value: headers[key].toString()
131953      };
131954    }) : [];
131955  }
131956  
131957  function appendPostData (entry, request) {
131958    if (!request.body) return;
131959  
131960    entry.request.postData = {
131961      mimeType: 'application/octet-stream',
131962      text: request.body
131963    };
131964  }
131965  
131966  function toMs (num) {
131967    return Math.round(num * 1000) / 1000;
131968  }
131969  
131970  function HarWrapper (requestModule) {
131971    this.requestModule = requestModule;
131972    this.clear();
131973  }
131974  
131975  HarWrapper.prototype.request = function (options) {
131976    // include detailed timing data in response object
131977    Object.assign(options, { time: true });
131978    var self = this;
131979    // make call to true request module
131980    return this.requestModule(options, function (err, incomingMessage, response) {
131981      // create new har entry with reponse timings
131982      if (!err) {
131983        self.entries.push(self.buildHarEntry(incomingMessage));
131984      }
131985  
131986      // fire any callback provided in options, as request has ignored it
131987      //     https://github.com/request/request/blob/v2.75.0/index.js#L40
131988      if (typeof options.callback === 'function') {
131989        options.callback.apply(null, arguments);
131990      }
131991    });
131992  };
131993  
131994  HarWrapper.prototype.clear = function () {
131995    this.entries = [];
131996    this.earliestTime = new Date(2099, 1, 1);
131997  };
131998  
131999  HarWrapper.prototype.saveHar = function (fileName) {
132000    var httpArchive = {
132001      log: {
132002        version: '1.2',
132003        creator: {name: 'request-capture-har', version: pkg.version},
132004        pages: [{
132005          startedDateTime: new Date(this.earliestTime).toISOString(),
132006          id: 'request-capture-har',
132007          title: 'request-capture-har',
132008          pageTimings: { }
132009        }],
132010        entries: this.entries
132011      }
132012    };
132013    fs.writeFileSync(fileName, JSON.stringify(httpArchive, null, 2));
132014  };
132015  
132016  HarWrapper.prototype.buildTimings = function (entry, response) {
132017    var startTs = response.request.startTime;
132018    var endTs = startTs + response.elapsedTime;
132019    var totalTime = endTs - startTs;
132020  
132021    if (new Date(startTs) < this.earliestTime) {
132022      this.earliestTime = new Date(startTs);
132023    }
132024    entry.startedDateTime = new Date(startTs).toISOString();
132025    entry.time = totalTime;
132026  
132027    // new timing data added in request 2.81.0
132028    if (response.timingPhases) {
132029      entry.timings = {
132030        'blocked': toMs(response.timingPhases.wait),
132031        'dns': toMs(response.timingPhases.dns),
132032        'connect': toMs(response.timingPhases.tcp),
132033        'send': 0,
132034        'wait': toMs(response.timingPhases.firstByte),
132035        'receive': toMs(response.timingPhases.download)
132036      };
132037      return;
132038    }
132039  
132040    var responseStartTs = response.request.response.responseStartTime;
132041  
132042    var waitingTime = responseStartTs - startTs;
132043    var receiveTime = endTs - responseStartTs;
132044    entry.timings = {
132045      send: 0,
132046      wait: waitingTime,
132047      receive: receiveTime
132048    };
132049  };
132050  
132051  HarWrapper.prototype.buildHarEntry = function (response) {
132052    var entry = {
132053      request: {
132054        method: response.request.method,
132055        url: response.request.uri.href,
132056        httpVersion: 'HTTP/' + response.httpVersion,
132057        cookies: [],
132058        headers: buildHarHeaders(response.request.headers),
132059        queryString: [],
132060        headersSize: -1,
132061        bodySize: -1
132062      },
132063      response: {
132064        status: response.statusCode,
132065        statusText: response.statusMessage,
132066        httpVersion: 'HTTP/' + response.httpVersion,
132067        cookies: [],
132068        headers: buildHarHeaders(response.headers),
132069        _transferSize: response.body.length,
132070        content: {
132071          size: response.body.length,
132072          mimeType: response.headers['content-type']
132073        },
132074        redirectURL: '',
132075        headersSize: -1,
132076        bodySize: -1
132077      },
132078      cache: {}
132079    };
132080    this.buildTimings(entry, response);
132081    appendPostData(entry, response.request);
132082    return entry;
132083  };
132084  
132085  module.exports = HarWrapper;
132086  
132087  
132088  /***/ }),
132089  /* 800 */
132090  /***/ (function(module, exports, __webpack_require__) {
132091  
132092  "use strict";
132093  // Copyright 2010-2012 Mikeal Rogers
132094  //
132095  //    Licensed under the Apache License, Version 2.0 (the "License");
132096  //    you may not use this file except in compliance with the License.
132097  //    You may obtain a copy of the License at
132098  //
132099  //        http://www.apache.org/licenses/LICENSE-2.0
132100  //
132101  //    Unless required by applicable law or agreed to in writing, software
132102  //    distributed under the License is distributed on an "AS IS" BASIS,
132103  //    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132104  //    See the License for the specific language governing permissions and
132105  //    limitations under the License.
132106  
132107  
132108  
132109  var extend = __webpack_require__(266)
132110  var cookies = __webpack_require__(412)
132111  var helpers = __webpack_require__(305)
132112  
132113  var paramsHaveRequestBody = helpers.paramsHaveRequestBody
132114  
132115  // organize params for patch, post, put, head, del
132116  function initParams (uri, options, callback) {
132117    if (typeof options === 'function') {
132118      callback = options
132119    }
132120  
132121    var params = {}
132122    if (typeof options === 'object') {
132123      extend(params, options, {uri: uri})
132124    } else if (typeof uri === 'string') {
132125      extend(params, {uri: uri})
132126    } else {
132127      extend(params, uri)
132128    }
132129  
132130    params.callback = callback || params.callback
132131    return params
132132  }
132133  
132134  function request (uri, options, callback) {
132135    if (typeof uri === 'undefined') {
132136      throw new Error('undefined is not a valid uri or options object.')
132137    }
132138  
132139    var params = initParams(uri, options, callback)
132140  
132141    if (params.method === 'HEAD' && paramsHaveRequestBody(params)) {
132142      throw new Error('HTTP HEAD requests MUST NOT include a request body.')
132143    }
132144  
132145    return new request.Request(params)
132146  }
132147  
132148  function verbFunc (verb) {
132149    var method = verb.toUpperCase()
132150    return function (uri, options, callback) {
132151      var params = initParams(uri, options, callback)
132152      params.method = method
132153      return request(params, params.callback)
132154    }
132155  }
132156  
132157  // define like this to please codeintel/intellisense IDEs
132158  request.get = verbFunc('get')
132159  request.head = verbFunc('head')
132160  request.options = verbFunc('options')
132161  request.post = verbFunc('post')
132162  request.put = verbFunc('put')
132163  request.patch = verbFunc('patch')
132164  request.del = verbFunc('delete')
132165  request['delete'] = verbFunc('delete')
132166  
132167  request.jar = function (store) {
132168    return cookies.jar(store)
132169  }
132170  
132171  request.cookie = function (str) {
132172    return cookies.parse(str)
132173  }
132174  
132175  function wrapRequestMethod (method, options, requester, verb) {
132176    return function (uri, opts, callback) {
132177      var params = initParams(uri, opts, callback)
132178  
132179      var target = {}
132180      extend(true, target, options, params)
132181  
132182      target.pool = params.pool || options.pool
132183  
132184      if (verb) {
132185        target.method = verb.toUpperCase()
132186      }
132187  
132188      if (typeof requester === 'function') {
132189        method = requester
132190      }
132191  
132192      return method(target, target.callback)
132193    }
132194  }
132195  
132196  request.defaults = function (options, requester) {
132197    var self = this
132198  
132199    options = options || {}
132200  
132201    if (typeof options === 'function') {
132202      requester = options
132203      options = {}
132204    }
132205  
132206    var defaults = wrapRequestMethod(self, options, requester)
132207  
132208    var verbs = ['get', 'head', 'post', 'put', 'patch', 'del', 'delete']
132209    verbs.forEach(function (verb) {
132210      defaults[verb] = wrapRequestMethod(self[verb], options, requester, verb)
132211    })
132212  
132213    defaults.cookie = wrapRequestMethod(self.cookie, options, requester)
132214    defaults.jar = self.jar
132215    defaults.defaults = self.defaults
132216    return defaults
132217  }
132218  
132219  request.forever = function (agentOptions, optionsArg) {
132220    var options = {}
132221    if (optionsArg) {
132222      extend(options, optionsArg)
132223    }
132224    if (agentOptions) {
132225      options.agentOptions = agentOptions
132226    }
132227  
132228    options.forever = true
132229    return request.defaults(options)
132230  }
132231  
132232  // Exports
132233  
132234  module.exports = request
132235  request.Request = __webpack_require__(813)
132236  request.initParams = initParams
132237  
132238  // Backwards compatibility for request.debug
132239  Object.defineProperty(request, 'debug', {
132240    enumerable: true,
132241    get: function () {
132242      return request.Request.debug
132243    },
132244    set: function (debug) {
132245      request.Request.debug = debug
132246    }
132247  })
132248  
132249  
132250  /***/ }),
132251  /* 801 */
132252  /***/ (function(module, exports, __webpack_require__) {
132253  
132254  "use strict";
132255  
132256  
132257  var caseless = __webpack_require__(228)
132258  var uuid = __webpack_require__(120)
132259  var helpers = __webpack_require__(305)
132260  
132261  var md5 = helpers.md5
132262  var toBase64 = helpers.toBase64
132263  
132264  function Auth (request) {
132265    // define all public properties here
132266    this.request = request
132267    this.hasAuth = false
132268    this.sentAuth = false
132269    this.bearerToken = null
132270    this.user = null
132271    this.pass = null
132272  }
132273  
132274  Auth.prototype.basic = function (user, pass, sendImmediately) {
132275    var self = this
132276    if (typeof user !== 'string' || (pass !== undefined && typeof pass !== 'string')) {
132277      self.request.emit('error', new Error('auth() received invalid user or password'))
132278    }
132279    self.user = user
132280    self.pass = pass
132281    self.hasAuth = true
132282    var header = user + ':' + (pass || '')
132283    if (sendImmediately || typeof sendImmediately === 'undefined') {
132284      var authHeader = 'Basic ' + toBase64(header)
132285      self.sentAuth = true
132286      return authHeader
132287    }
132288  }
132289  
132290  Auth.prototype.bearer = function (bearer, sendImmediately) {
132291    var self = this
132292    self.bearerToken = bearer
132293    self.hasAuth = true
132294    if (sendImmediately || typeof sendImmediately === 'undefined') {
132295      if (typeof bearer === 'function') {
132296        bearer = bearer()
132297      }
132298      var authHeader = 'Bearer ' + (bearer || '')
132299      self.sentAuth = true
132300      return authHeader
132301    }
132302  }
132303  
132304  Auth.prototype.digest = function (method, path, authHeader) {
132305    // TODO: More complete implementation of RFC 2617.
132306    //   - handle challenge.domain
132307    //   - support qop="auth-int" only
132308    //   - handle Authentication-Info (not necessarily?)
132309    //   - check challenge.stale (not necessarily?)
132310    //   - increase nc (not necessarily?)
132311    // For reference:
132312    // http://tools.ietf.org/html/rfc2617#section-3
132313    // https://github.com/bagder/curl/blob/master/lib/http_digest.c
132314  
132315    var self = this
132316  
132317    var challenge = {}
132318    var re = /([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi
132319    for (;;) {
132320      var match = re.exec(authHeader)
132321      if (!match) {
132322        break
132323      }
132324      challenge[match[1]] = match[2] || match[3]
132325    }
132326  
132327    /**
132328     * RFC 2617: handle both MD5 and MD5-sess algorithms.
132329     *
132330     * If the algorithm directive's value is "MD5" or unspecified, then HA1 is
132331     *   HA1=MD5(username:realm:password)
132332     * If the algorithm directive's value is "MD5-sess", then HA1 is
132333     *   HA1=MD5(MD5(username:realm:password):nonce:cnonce)
132334     */
132335    var ha1Compute = function (algorithm, user, realm, pass, nonce, cnonce) {
132336      var ha1 = md5(user + ':' + realm + ':' + pass)
132337      if (algorithm && algorithm.toLowerCase() === 'md5-sess') {
132338        return md5(ha1 + ':' + nonce + ':' + cnonce)
132339      } else {
132340        return ha1
132341      }
132342    }
132343  
132344    var qop = /(^|,)\s*auth\s*($|,)/.test(challenge.qop) && 'auth'
132345    var nc = qop && '00000001'
132346    var cnonce = qop && uuid().replace(/-/g, '')
132347    var ha1 = ha1Compute(challenge.algorithm, self.user, challenge.realm, self.pass, challenge.nonce, cnonce)
132348    var ha2 = md5(method + ':' + path)
132349    var digestResponse = qop
132350      ? md5(ha1 + ':' + challenge.nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + ha2)
132351      : md5(ha1 + ':' + challenge.nonce + ':' + ha2)
132352    var authValues = {
132353      username: self.user,
132354      realm: challenge.realm,
132355      nonce: challenge.nonce,
132356      uri: path,
132357      qop: qop,
132358      response: digestResponse,
132359      nc: nc,
132360      cnonce: cnonce,
132361      algorithm: challenge.algorithm,
132362      opaque: challenge.opaque
132363    }
132364  
132365    authHeader = []
132366    for (var k in authValues) {
132367      if (authValues[k]) {
132368        if (k === 'qop' || k === 'nc' || k === 'algorithm') {
132369          authHeader.push(k + '=' + authValues[k])
132370        } else {
132371          authHeader.push(k + '="' + authValues[k] + '"')
132372        }
132373      }
132374    }
132375    authHeader = 'Digest ' + authHeader.join(', ')
132376    self.sentAuth = true
132377    return authHeader
132378  }
132379  
132380  Auth.prototype.onRequest = function (user, pass, sendImmediately, bearer) {
132381    var self = this
132382    var request = self.request
132383  
132384    var authHeader
132385    if (bearer === undefined && user === undefined) {
132386      self.request.emit('error', new Error('no auth mechanism defined'))
132387    } else if (bearer !== undefined) {
132388      authHeader = self.bearer(bearer, sendImmediately)
132389    } else {
132390      authHeader = self.basic(user, pass, sendImmediately)
132391    }
132392    if (authHeader) {
132393      request.setHeader('authorization', authHeader)
132394    }
132395  }
132396  
132397  Auth.prototype.onResponse = function (response) {
132398    var self = this
132399    var request = self.request
132400  
132401    if (!self.hasAuth || self.sentAuth) { return null }
132402  
132403    var c = caseless(response.headers)
132404  
132405    var authHeader = c.get('www-authenticate')
132406    var authVerb = authHeader && authHeader.split(' ')[0].toLowerCase()
132407    request.debug('reauth', authVerb)
132408  
132409    switch (authVerb) {
132410      case 'basic':
132411        return self.basic(self.user, self.pass, true)
132412  
132413      case 'bearer':
132414        return self.bearer(self.bearerToken, true)
132415  
132416      case 'digest':
132417        return self.digest(request.method, request.path, authHeader)
132418    }
132419  }
132420  
132421  exports.Auth = Auth
132422  
132423  
132424  /***/ }),
132425  /* 802 */
132426  /***/ (function(module, exports, __webpack_require__) {
132427  
132428  "use strict";
132429  
132430  
132431  function formatHostname (hostname) {
132432    // canonicalize the hostname, so that 'oogle.com' won't match 'google.com'
132433    return hostname.replace(/^\.*/, '.').toLowerCase()
132434  }
132435  
132436  function parseNoProxyZone (zone) {
132437    zone = zone.trim().toLowerCase()
132438  
132439    var zoneParts = zone.split(':', 2)
132440    var zoneHost = formatHostname(zoneParts[0])
132441    var zonePort = zoneParts[1]
132442    var hasPort = zone.indexOf(':') > -1
132443  
132444    return {hostname: zoneHost, port: zonePort, hasPort: hasPort}
132445  }
132446  
132447  function uriInNoProxy (uri, noProxy) {
132448    var port = uri.port || (uri.protocol === 'https:' ? '443' : '80')
132449    var hostname = formatHostname(uri.hostname)
132450    var noProxyList = noProxy.split(',')
132451  
132452    // iterate through the noProxyList until it finds a match.
132453    return noProxyList.map(parseNoProxyZone).some(function (noProxyZone) {
132454      var isMatchedAt = hostname.indexOf(noProxyZone.hostname)
132455      var hostnameMatched = (
132456        isMatchedAt > -1 &&
132457          (isMatchedAt === hostname.length - noProxyZone.hostname.length)
132458      )
132459  
132460      if (noProxyZone.hasPort) {
132461        return (port === noProxyZone.port) && hostnameMatched
132462      }
132463  
132464      return hostnameMatched
132465    })
132466  }
132467  
132468  function getProxyFromURI (uri) {
132469    // Decide the proper request proxy to use based on the request URI object and the
132470    // environmental variables (NO_PROXY, HTTP_PROXY, etc.)
132471    // respect NO_PROXY environment variables (see: http://lynx.isc.org/current/breakout/lynx_help/keystrokes/environments.html)
132472  
132473    var noProxy = process.env.NO_PROXY || process.env.no_proxy || ''
132474  
132475    // if the noProxy is a wildcard then return null
132476  
132477    if (noProxy === '*') {
132478      return null
132479    }
132480  
132481    // if the noProxy is not empty and the uri is found return null
132482  
132483    if (noProxy !== '' && uriInNoProxy(uri, noProxy)) {
132484      return null
132485    }
132486  
132487    // Check for HTTP or HTTPS Proxy in environment Else default to null
132488  
132489    if (uri.protocol === 'http:') {
132490      return process.env.HTTP_PROXY ||
132491        process.env.http_proxy || null
132492    }
132493  
132494    if (uri.protocol === 'https:') {
132495      return process.env.HTTPS_PROXY ||
132496        process.env.https_proxy ||
132497        process.env.HTTP_PROXY ||
132498        process.env.http_proxy || null
132499    }
132500  
132501    // if none of that works, return null
132502    // (What uri protocol are you using then?)
132503  
132504    return null
132505  }
132506  
132507  module.exports = getProxyFromURI
132508  
132509  
132510  /***/ }),
132511  /* 803 */
132512  /***/ (function(module, exports, __webpack_require__) {
132513  
132514  "use strict";
132515  
132516  
132517  var fs = __webpack_require__(4)
132518  var qs = __webpack_require__(197)
132519  var validate = __webpack_require__(645)
132520  var extend = __webpack_require__(266)
132521  
132522  function Har (request) {
132523    this.request = request
132524  }
132525  
132526  Har.prototype.reducer = function (obj, pair) {
132527    // new property ?
132528    if (obj[pair.name] === undefined) {
132529      obj[pair.name] = pair.value
132530      return obj
132531    }
132532  
132533    // existing? convert to array
132534    var arr = [
132535      obj[pair.name],
132536      pair.value
132537    ]
132538  
132539    obj[pair.name] = arr
132540  
132541    return obj
132542  }
132543  
132544  Har.prototype.prep = function (data) {
132545    // construct utility properties
132546    data.queryObj = {}
132547    data.headersObj = {}
132548    data.postData.jsonObj = false
132549    data.postData.paramsObj = false
132550  
132551    // construct query objects
132552    if (data.queryString && data.queryString.length) {
132553      data.queryObj = data.queryString.reduce(this.reducer, {})
132554    }
132555  
132556    // construct headers objects
132557    if (data.headers && data.headers.length) {
132558      // loweCase header keys
132559      data.headersObj = data.headers.reduceRight(function (headers, header) {
132560        headers[header.name] = header.value
132561        return headers
132562      }, {})
132563    }
132564  
132565    // construct Cookie header
132566    if (data.cookies && data.cookies.length) {
132567      var cookies = data.cookies.map(function (cookie) {
132568        return cookie.name + '=' + cookie.value
132569      })
132570  
132571      if (cookies.length) {
132572        data.headersObj.cookie = cookies.join('; ')
132573      }
132574    }
132575  
132576    // prep body
132577    function some (arr) {
132578      return arr.some(function (type) {
132579        return data.postData.mimeType.indexOf(type) === 0
132580      })
132581    }
132582  
132583    if (some([
132584      'multipart/mixed',
132585      'multipart/related',
132586      'multipart/form-data',
132587      'multipart/alternative'])) {
132588      // reset values
132589      data.postData.mimeType = 'multipart/form-data'
132590    } else if (some([
132591      'application/x-www-form-urlencoded'])) {
132592      if (!data.postData.params) {
132593        data.postData.text = ''
132594      } else {
132595        data.postData.paramsObj = data.postData.params.reduce(this.reducer, {})
132596  
132597        // always overwrite
132598        data.postData.text = qs.stringify(data.postData.paramsObj)
132599      }
132600    } else if (some([
132601      'text/json',
132602      'text/x-json',
132603      'application/json',
132604      'application/x-json'])) {
132605      data.postData.mimeType = 'application/json'
132606  
132607      if (data.postData.text) {
132608        try {
132609          data.postData.jsonObj = JSON.parse(data.postData.text)
132610        } catch (e) {
132611          this.request.debug(e)
132612  
132613          // force back to text/plain
132614          data.postData.mimeType = 'text/plain'
132615        }
132616      }
132617    }
132618  
132619    return data
132620  }
132621  
132622  Har.prototype.options = function (options) {
132623    // skip if no har property defined
132624    if (!options.har) {
132625      return options
132626    }
132627  
132628    var har = {}
132629    extend(har, options.har)
132630  
132631    // only process the first entry
132632    if (har.log && har.log.entries) {
132633      har = har.log.entries[0]
132634    }
132635  
132636    // add optional properties to make validation successful
132637    har.url = har.url || options.url || options.uri || options.baseUrl || '/'
132638    har.httpVersion = har.httpVersion || 'HTTP/1.1'
132639    har.queryString = har.queryString || []
132640    har.headers = har.headers || []
132641    har.cookies = har.cookies || []
132642    har.postData = har.postData || {}
132643    har.postData.mimeType = har.postData.mimeType || 'application/octet-stream'
132644  
132645    har.bodySize = 0
132646    har.headersSize = 0
132647    har.postData.size = 0
132648  
132649    if (!validate.request(har)) {
132650      return options
132651    }
132652  
132653    // clean up and get some utility properties
132654    var req = this.prep(har)
132655  
132656    // construct new options
132657    if (req.url) {
132658      options.url = req.url
132659    }
132660  
132661    if (req.method) {
132662      options.method = req.method
132663    }
132664  
132665    if (Object.keys(req.queryObj).length) {
132666      options.qs = req.queryObj
132667    }
132668  
132669    if (Object.keys(req.headersObj).length) {
132670      options.headers = req.headersObj
132671    }
132672  
132673    function test (type) {
132674      return req.postData.mimeType.indexOf(type) === 0
132675    }
132676    if (test('application/x-www-form-urlencoded')) {
132677      options.form = req.postData.paramsObj
132678    } else if (test('application/json')) {
132679      if (req.postData.jsonObj) {
132680        options.body = req.postData.jsonObj
132681        options.json = true
132682      }
132683    } else if (test('multipart/form-data')) {
132684      options.formData = {}
132685  
132686      req.postData.params.forEach(function (param) {
132687        var attachment = {}
132688  
132689        if (!param.fileName && !param.fileName && !param.contentType) {
132690          options.formData[param.name] = param.value
132691          return
132692        }
132693  
132694        // attempt to read from disk!
132695        if (param.fileName && !param.value) {
132696          attachment.value = fs.createReadStream(param.fileName)
132697        } else if (param.value) {
132698          attachment.value = param.value
132699        }
132700  
132701        if (param.fileName) {
132702          attachment.options = {
132703            filename: param.fileName,
132704            contentType: param.contentType ? param.contentType : null
132705          }
132706        }
132707  
132708        options.formData[param.name] = attachment
132709      })
132710    } else {
132711      if (req.postData.text) {
132712        options.body = req.postData.text
132713      }
132714    }
132715  
132716    return options
132717  }
132718  
132719  exports.Har = Har
132720  
132721  
132722  /***/ }),
132723  /* 804 */
132724  /***/ (function(module, exports, __webpack_require__) {
132725  
132726  "use strict";
132727  
132728  
132729  var crypto = __webpack_require__(11)
132730  
132731  function randomString (size) {
132732    var bits = (size + 1) * 6
132733    var buffer = crypto.randomBytes(Math.ceil(bits / 8))
132734    var string = buffer.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '')
132735    return string.slice(0, size)
132736  }
132737  
132738  function calculatePayloadHash (payload, algorithm, contentType) {
132739    var hash = crypto.createHash(algorithm)
132740    hash.update('hawk.1.payload\n')
132741    hash.update((contentType ? contentType.split(';')[0].trim().toLowerCase() : '') + '\n')
132742    hash.update(payload || '')
132743    hash.update('\n')
132744    return hash.digest('base64')
132745  }
132746  
132747  exports.calculateMac = function (credentials, opts) {
132748    var normalized = 'hawk.1.header\n' +
132749      opts.ts + '\n' +
132750      opts.nonce + '\n' +
132751      (opts.method || '').toUpperCase() + '\n' +
132752      opts.resource + '\n' +
132753      opts.host.toLowerCase() + '\n' +
132754      opts.port + '\n' +
132755      (opts.hash || '') + '\n'
132756  
132757    if (opts.ext) {
132758      normalized = normalized + opts.ext.replace('\\', '\\\\').replace('\n', '\\n')
132759    }
132760  
132761    normalized = normalized + '\n'
132762  
132763    if (opts.app) {
132764      normalized = normalized + opts.app + '\n' + (opts.dlg || '') + '\n'
132765    }
132766  
132767    var hmac = crypto.createHmac(credentials.algorithm, credentials.key).update(normalized)
132768    var digest = hmac.digest('base64')
132769    return digest
132770  }
132771  
132772  exports.header = function (uri, method, opts) {
132773    var timestamp = opts.timestamp || Math.floor((Date.now() + (opts.localtimeOffsetMsec || 0)) / 1000)
132774    var credentials = opts.credentials
132775    if (!credentials || !credentials.id || !credentials.key || !credentials.algorithm) {
132776      return ''
132777    }
132778  
132779    if (['sha1', 'sha256'].indexOf(credentials.algorithm) === -1) {
132780      return ''
132781    }
132782  
132783    var artifacts = {
132784      ts: timestamp,
132785      nonce: opts.nonce || randomString(6),
132786      method: method,
132787      resource: uri.pathname + (uri.search || ''),
132788      host: uri.hostname,
132789      port: uri.port || (uri.protocol === 'http:' ? 80 : 443),
132790      hash: opts.hash,
132791      ext: opts.ext,
132792      app: opts.app,
132793      dlg: opts.dlg
132794    }
132795  
132796    if (!artifacts.hash && (opts.payload || opts.payload === '')) {
132797      artifacts.hash = calculatePayloadHash(opts.payload, credentials.algorithm, opts.contentType)
132798    }
132799  
132800    var mac = exports.calculateMac(credentials, artifacts)
132801  
132802    var hasExt = artifacts.ext !== null && artifacts.ext !== undefined && artifacts.ext !== ''
132803    var header = 'Hawk id="' + credentials.id +
132804      '", ts="' + artifacts.ts +
132805      '", nonce="' + artifacts.nonce +
132806      (artifacts.hash ? '", hash="' + artifacts.hash : '') +
132807      (hasExt ? '", ext="' + artifacts.ext.replace(/\\/g, '\\\\').replace(/"/g, '\\"') : '') +
132808      '", mac="' + mac + '"'
132809  
132810    if (artifacts.app) {
132811      header = header + ', app="' + artifacts.app + (artifacts.dlg ? '", dlg="' + artifacts.dlg : '') + '"'
132812    }
132813  
132814    return header
132815  }
132816  
132817  
132818  /***/ }),
132819  /* 805 */
132820  /***/ (function(module, exports, __webpack_require__) {
132821  
132822  "use strict";
132823  
132824  
132825  var uuid = __webpack_require__(120)
132826  var CombinedStream = __webpack_require__(379)
132827  var isstream = __webpack_require__(399)
132828  var Buffer = __webpack_require__(45).Buffer
132829  
132830  function Multipart (request) {
132831    this.request = request
132832    this.boundary = uuid()
132833    this.chunked = false
132834    this.body = null
132835  }
132836  
132837  Multipart.prototype.isChunked = function (options) {
132838    var self = this
132839    var chunked = false
132840    var parts = options.data || options
132841  
132842    if (!parts.forEach) {
132843      self.request.emit('error', new Error('Argument error, options.multipart.'))
132844    }
132845  
132846    if (options.chunked !== undefined) {
132847      chunked = options.chunked
132848    }
132849  
132850    if (self.request.getHeader('transfer-encoding') === 'chunked') {
132851      chunked = true
132852    }
132853  
132854    if (!chunked) {
132855      parts.forEach(function (part) {
132856        if (typeof part.body === 'undefined') {
132857          self.request.emit('error', new Error('Body attribute missing in multipart.'))
132858        }
132859        if (isstream(part.body)) {
132860          chunked = true
132861        }
132862      })
132863    }
132864  
132865    return chunked
132866  }
132867  
132868  Multipart.prototype.setHeaders = function (chunked) {
132869    var self = this
132870  
132871    if (chunked && !self.request.hasHeader('transfer-encoding')) {
132872      self.request.setHeader('transfer-encoding', 'chunked')
132873    }
132874  
132875    var header = self.request.getHeader('content-type')
132876  
132877    if (!header || header.indexOf('multipart') === -1) {
132878      self.request.setHeader('content-type', 'multipart/related; boundary=' + self.boundary)
132879    } else {
132880      if (header.indexOf('boundary') !== -1) {
132881        self.boundary = header.replace(/.*boundary=([^\s;]+).*/, '$1')
132882      } else {
132883        self.request.setHeader('content-type', header + '; boundary=' + self.boundary)
132884      }
132885    }
132886  }
132887  
132888  Multipart.prototype.build = function (parts, chunked) {
132889    var self = this
132890    var body = chunked ? new CombinedStream() : []
132891  
132892    function add (part) {
132893      if (typeof part === 'number') {
132894        part = part.toString()
132895      }
132896      return chunked ? body.append(part) : body.push(Buffer.from(part))
132897    }
132898  
132899    if (self.request.preambleCRLF) {
132900      add('\r\n')
132901    }
132902  
132903    parts.forEach(function (part) {
132904      var preamble = '--' + self.boundary + '\r\n'
132905      Object.keys(part).forEach(function (key) {
132906        if (key === 'body') { return }
132907        preamble += key + ': ' + part[key] + '\r\n'
132908      })
132909      preamble += '\r\n'
132910      add(preamble)
132911      add(part.body)
132912      add('\r\n')
132913    })
132914    add('--' + self.boundary + '--')
132915  
132916    if (self.request.postambleCRLF) {
132917      add('\r\n')
132918    }
132919  
132920    return body
132921  }
132922  
132923  Multipart.prototype.onRequest = function (options) {
132924    var self = this
132925  
132926    var chunked = self.isChunked(options)
132927    var parts = options.data || options
132928  
132929    self.setHeaders(chunked)
132930    self.chunked = chunked
132931    self.body = self.build(parts, chunked)
132932  }
132933  
132934  exports.Multipart = Multipart
132935  
132936  
132937  /***/ }),
132938  /* 806 */
132939  /***/ (function(module, exports, __webpack_require__) {
132940  
132941  "use strict";
132942  
132943  
132944  var url = __webpack_require__(24)
132945  var qs = __webpack_require__(404)
132946  var caseless = __webpack_require__(228)
132947  var uuid = __webpack_require__(120)
132948  var oauth = __webpack_require__(768)
132949  var crypto = __webpack_require__(11)
132950  var Buffer = __webpack_require__(45).Buffer
132951  
132952  function OAuth (request) {
132953    this.request = request
132954    this.params = null
132955  }
132956  
132957  OAuth.prototype.buildParams = function (_oauth, uri, method, query, form, qsLib) {
132958    var oa = {}
132959    for (var i in _oauth) {
132960      oa['oauth_' + i] = _oauth[i]
132961    }
132962    if (!oa.oauth_version) {
132963      oa.oauth_version = '1.0'
132964    }
132965    if (!oa.oauth_timestamp) {
132966      oa.oauth_timestamp = Math.floor(Date.now() / 1000).toString()
132967    }
132968    if (!oa.oauth_nonce) {
132969      oa.oauth_nonce = uuid().replace(/-/g, '')
132970    }
132971    if (!oa.oauth_signature_method) {
132972      oa.oauth_signature_method = 'HMAC-SHA1'
132973    }
132974  
132975    var consumer_secret_or_private_key = oa.oauth_consumer_secret || oa.oauth_private_key // eslint-disable-line camelcase
132976    delete oa.oauth_consumer_secret
132977    delete oa.oauth_private_key
132978  
132979    var token_secret = oa.oauth_token_secret // eslint-disable-line camelcase
132980    delete oa.oauth_token_secret
132981  
132982    var realm = oa.oauth_realm
132983    delete oa.oauth_realm
132984    delete oa.oauth_transport_method
132985  
132986    var baseurl = uri.protocol + '//' + uri.host + uri.pathname
132987    var params = qsLib.parse([].concat(query, form, qsLib.stringify(oa)).join('&'))
132988  
132989    oa.oauth_signature = oauth.sign(
132990      oa.oauth_signature_method,
132991      method,
132992      baseurl,
132993      params,
132994      consumer_secret_or_private_key, // eslint-disable-line camelcase
132995      token_secret // eslint-disable-line camelcase
132996    )
132997  
132998    if (realm) {
132999      oa.realm = realm
133000    }
133001  
133002    return oa
133003  }
133004  
133005  OAuth.prototype.buildBodyHash = function (_oauth, body) {
133006    if (['HMAC-SHA1', 'RSA-SHA1'].indexOf(_oauth.signature_method || 'HMAC-SHA1') < 0) {
133007      this.request.emit('error', new Error('oauth: ' + _oauth.signature_method +
133008        ' signature_method not supported with body_hash signing.'))
133009    }
133010  
133011    var shasum = crypto.createHash('sha1')
133012    shasum.update(body || '')
133013    var sha1 = shasum.digest('hex')
133014  
133015    return Buffer.from(sha1, 'hex').toString('base64')
133016  }
133017  
133018  OAuth.prototype.concatParams = function (oa, sep, wrap) {
133019    wrap = wrap || ''
133020  
133021    var params = Object.keys(oa).filter(function (i) {
133022      return i !== 'realm' && i !== 'oauth_signature'
133023    }).sort()
133024  
133025    if (oa.realm) {
133026      params.splice(0, 0, 'realm')
133027    }
133028    params.push('oauth_signature')
133029  
133030    return params.map(function (i) {
133031      return i + '=' + wrap + oauth.rfc3986(oa[i]) + wrap
133032    }).join(sep)
133033  }
133034  
133035  OAuth.prototype.onRequest = function (_oauth) {
133036    var self = this
133037    self.params = _oauth
133038  
133039    var uri = self.request.uri || {}
133040    var method = self.request.method || ''
133041    var headers = caseless(self.request.headers)
133042    var body = self.request.body || ''
133043    var qsLib = self.request.qsLib || qs
133044  
133045    var form
133046    var query
133047    var contentType = headers.get('content-type') || ''
133048    var formContentType = 'application/x-www-form-urlencoded'
133049    var transport = _oauth.transport_method || 'header'
133050  
133051    if (contentType.slice(0, formContentType.length) === formContentType) {
133052      contentType = formContentType
133053      form = body
133054    }
133055    if (uri.query) {
133056      query = uri.query
133057    }
133058    if (transport === 'body' && (method !== 'POST' || contentType !== formContentType)) {
133059      self.request.emit('error', new Error('oauth: transport_method of body requires POST ' +
133060        'and content-type ' + formContentType))
133061    }
133062  
133063    if (!form && typeof _oauth.body_hash === 'boolean') {
133064      _oauth.body_hash = self.buildBodyHash(_oauth, self.request.body.toString())
133065    }
133066  
133067    var oa = self.buildParams(_oauth, uri, method, query, form, qsLib)
133068  
133069    switch (transport) {
133070      case 'header':
133071        self.request.setHeader('Authorization', 'OAuth ' + self.concatParams(oa, ',', '"'))
133072        break
133073  
133074      case 'query':
133075        var href = self.request.uri.href += (query ? '&' : '?') + self.concatParams(oa, '&')
133076        self.request.uri = url.parse(href)
133077        self.request.path = self.request.uri.path
133078        break
133079  
133080      case 'body':
133081        self.request.body = (form ? form + '&' : '') + self.concatParams(oa, '&')
133082        break
133083  
133084      default:
133085        self.request.emit('error', new Error('oauth: transport_method invalid'))
133086    }
133087  }
133088  
133089  exports.OAuth = OAuth
133090  
133091  
133092  /***/ }),
133093  /* 807 */
133094  /***/ (function(module, exports, __webpack_require__) {
133095  
133096  "use strict";
133097  
133098  
133099  var qs = __webpack_require__(404)
133100  var querystring = __webpack_require__(197)
133101  
133102  function Querystring (request) {
133103    this.request = request
133104    this.lib = null
133105    this.useQuerystring = null
133106    this.parseOptions = null
133107    this.stringifyOptions = null
133108  }
133109  
133110  Querystring.prototype.init = function (options) {
133111    if (this.lib) { return }
133112  
133113    this.useQuerystring = options.useQuerystring
133114    this.lib = (this.useQuerystring ? querystring : qs)
133115  
133116    this.parseOptions = options.qsParseOptions || {}
133117    this.stringifyOptions = options.qsStringifyOptions || {}
133118  }
133119  
133120  Querystring.prototype.stringify = function (obj) {
133121    return (this.useQuerystring)
133122      ? this.rfc3986(this.lib.stringify(obj,
133123        this.stringifyOptions.sep || null,
133124        this.stringifyOptions.eq || null,
133125        this.stringifyOptions))
133126      : this.lib.stringify(obj, this.stringifyOptions)
133127  }
133128  
133129  Querystring.prototype.parse = function (str) {
133130    return (this.useQuerystring)
133131      ? this.lib.parse(str,
133132        this.parseOptions.sep || null,
133133        this.parseOptions.eq || null,
133134        this.parseOptions)
133135      : this.lib.parse(str, this.parseOptions)
133136  }
133137  
133138  Querystring.prototype.rfc3986 = function (str) {
133139    return str.replace(/[!'()*]/g, function (c) {
133140      return '%' + c.charCodeAt(0).toString(16).toUpperCase()
133141    })
133142  }
133143  
133144  Querystring.prototype.unescape = querystring.unescape
133145  
133146  exports.Querystring = Querystring
133147  
133148  
133149  /***/ }),
133150  /* 808 */
133151  /***/ (function(module, exports, __webpack_require__) {
133152  
133153  "use strict";
133154  
133155  
133156  var url = __webpack_require__(24)
133157  var isUrl = /^https?:/
133158  
133159  function Redirect (request) {
133160    this.request = request
133161    this.followRedirect = true
133162    this.followRedirects = true
133163    this.followAllRedirects = false
133164    this.followOriginalHttpMethod = false
133165    this.allowRedirect = function () { return true }
133166    this.maxRedirects = 10
133167    this.redirects = []
133168    this.redirectsFollowed = 0
133169    this.removeRefererHeader = false
133170  }
133171  
133172  Redirect.prototype.onRequest = function (options) {
133173    var self = this
133174  
133175    if (options.maxRedirects !== undefined) {
133176      self.maxRedirects = options.maxRedirects
133177    }
133178    if (typeof options.followRedirect === 'function') {
133179      self.allowRedirect = options.followRedirect
133180    }
133181    if (options.followRedirect !== undefined) {
133182      self.followRedirects = !!options.followRedirect
133183    }
133184    if (options.followAllRedirects !== undefined) {
133185      self.followAllRedirects = options.followAllRedirects
133186    }
133187    if (self.followRedirects || self.followAllRedirects) {
133188      self.redirects = self.redirects || []
133189    }
133190    if (options.removeRefererHeader !== undefined) {
133191      self.removeRefererHeader = options.removeRefererHeader
133192    }
133193    if (options.followOriginalHttpMethod !== undefined) {
133194      self.followOriginalHttpMethod = options.followOriginalHttpMethod
133195    }
133196  }
133197  
133198  Redirect.prototype.redirectTo = function (response) {
133199    var self = this
133200    var request = self.request
133201  
133202    var redirectTo = null
133203    if (response.statusCode >= 300 && response.statusCode < 400 && response.caseless.has('location')) {
133204      var location = response.caseless.get('location')
133205      request.debug('redirect', location)
133206  
133207      if (self.followAllRedirects) {
133208        redirectTo = location
133209      } else if (self.followRedirects) {
133210        switch (request.method) {
133211          case 'PATCH':
133212          case 'PUT':
133213          case 'POST':
133214          case 'DELETE':
133215            // Do not follow redirects
133216            break
133217          default:
133218            redirectTo = location
133219            break
133220        }
133221      }
133222    } else if (response.statusCode === 401) {
133223      var authHeader = request._auth.onResponse(response)
133224      if (authHeader) {
133225        request.setHeader('authorization', authHeader)
133226        redirectTo = request.uri
133227      }
133228    }
133229    return redirectTo
133230  }
133231  
133232  Redirect.prototype.onResponse = function (response) {
133233    var self = this
133234    var request = self.request
133235  
133236    var redirectTo = self.redirectTo(response)
133237    if (!redirectTo || !self.allowRedirect.call(request, response)) {
133238      return false
133239    }
133240  
133241    request.debug('redirect to', redirectTo)
133242  
133243    // ignore any potential response body.  it cannot possibly be useful
133244    // to us at this point.
133245    // response.resume should be defined, but check anyway before calling. Workaround for browserify.
133246    if (response.resume) {
133247      response.resume()
133248    }
133249  
133250    if (self.redirectsFollowed >= self.maxRedirects) {
133251      request.emit('error', new Error('Exceeded maxRedirects. Probably stuck in a redirect loop ' + request.uri.href))
133252      return false
133253    }
133254    self.redirectsFollowed += 1
133255  
133256    if (!isUrl.test(redirectTo)) {
133257      redirectTo = url.resolve(request.uri.href, redirectTo)
133258    }
133259  
133260    var uriPrev = request.uri
133261    request.uri = url.parse(redirectTo)
133262  
133263    // handle the case where we change protocol from https to http or vice versa
133264    if (request.uri.protocol !== uriPrev.protocol) {
133265      delete request.agent
133266    }
133267  
133268    self.redirects.push({ statusCode: response.statusCode, redirectUri: redirectTo })
133269  
133270    if (self.followAllRedirects && request.method !== 'HEAD' &&
133271      response.statusCode !== 401 && response.statusCode !== 307) {
133272      request.method = self.followOriginalHttpMethod ? request.method : 'GET'
133273    }
133274    // request.method = 'GET' // Force all redirects to use GET || commented out fixes #215
133275    delete request.src
133276    delete request.req
133277    delete request._started
133278    if (response.statusCode !== 401 && response.statusCode !== 307) {
133279      // Remove parameters from the previous response, unless this is the second request
133280      // for a server that requires digest authentication.
133281      delete request.body
133282      delete request._form
133283      if (request.headers) {
133284        request.removeHeader('host')
133285        request.removeHeader('content-type')
133286        request.removeHeader('content-length')
133287        if (request.uri.hostname !== request.originalHost.split(':')[0]) {
133288          // Remove authorization if changing hostnames (but not if just
133289          // changing ports or protocols).  This matches the behavior of curl:
133290          // https://github.com/bagder/curl/blob/6beb0eee/lib/http.c#L710
133291          request.removeHeader('authorization')
133292        }
133293      }
133294    }
133295  
133296    if (!self.removeRefererHeader) {
133297      request.setHeader('referer', uriPrev.href)
133298    }
133299  
133300    request.emit('redirect')
133301  
133302    request.init()
133303  
133304    return true
133305  }
133306  
133307  exports.Redirect = Redirect
133308  
133309  
133310  /***/ }),
133311  /* 809 */
133312  /***/ (function(module, exports, __webpack_require__) {
133313  
133314  "use strict";
133315  
133316  
133317  var url = __webpack_require__(24)
133318  var tunnel = __webpack_require__(955)
133319  
133320  var defaultProxyHeaderWhiteList = [
133321    'accept',
133322    'accept-charset',
133323    'accept-encoding',
133324    'accept-language',
133325    'accept-ranges',
133326    'cache-control',
133327    'content-encoding',
133328    'content-language',
133329    'content-location',
133330    'content-md5',
133331    'content-range',
133332    'content-type',
133333    'connection',
133334    'date',
133335    'expect',
133336    'max-forwards',
133337    'pragma',
133338    'referer',
133339    'te',
133340    'user-agent',
133341    'via'
133342  ]
133343  
133344  var defaultProxyHeaderExclusiveList = [
133345    'proxy-authorization'
133346  ]
133347  
133348  function constructProxyHost (uriObject) {
133349    var port = uriObject.port
133350    var protocol = uriObject.protocol
133351    var proxyHost = uriObject.hostname + ':'
133352  
133353    if (port) {
133354      proxyHost += port
133355    } else if (protocol === 'https:') {
133356      proxyHost += '443'
133357    } else {
133358      proxyHost += '80'
133359    }
133360  
133361    return proxyHost
133362  }
133363  
133364  function constructProxyHeaderWhiteList (headers, proxyHeaderWhiteList) {
133365    var whiteList = proxyHeaderWhiteList
133366      .reduce(function (set, header) {
133367        set[header.toLowerCase()] = true
133368        return set
133369      }, {})
133370  
133371    return Object.keys(headers)
133372      .filter(function (header) {
133373        return whiteList[header.toLowerCase()]
133374      })
133375      .reduce(function (set, header) {
133376        set[header] = headers[header]
133377        return set
133378      }, {})
133379  }
133380  
133381  function constructTunnelOptions (request, proxyHeaders) {
133382    var proxy = request.proxy
133383  
133384    var tunnelOptions = {
133385      proxy: {
133386        host: proxy.hostname,
133387        port: +proxy.port,
133388        proxyAuth: proxy.auth,
133389        headers: proxyHeaders
133390      },
133391      headers: request.headers,
133392      ca: request.ca,
133393      cert: request.cert,
133394      key: request.key,
133395      passphrase: request.passphrase,
133396      pfx: request.pfx,
133397      ciphers: request.ciphers,
133398      rejectUnauthorized: request.rejectUnauthorized,
133399      secureOptions: request.secureOptions,
133400      secureProtocol: request.secureProtocol
133401    }
133402  
133403    return tunnelOptions
133404  }
133405  
133406  function constructTunnelFnName (uri, proxy) {
133407    var uriProtocol = (uri.protocol === 'https:' ? 'https' : 'http')
133408    var proxyProtocol = (proxy.protocol === 'https:' ? 'Https' : 'Http')
133409    return [uriProtocol, proxyProtocol].join('Over')
133410  }
133411  
133412  function getTunnelFn (request) {
133413    var uri = request.uri
133414    var proxy = request.proxy
133415    var tunnelFnName = constructTunnelFnName(uri, proxy)
133416    return tunnel[tunnelFnName]
133417  }
133418  
133419  function Tunnel (request) {
133420    this.request = request
133421    this.proxyHeaderWhiteList = defaultProxyHeaderWhiteList
133422    this.proxyHeaderExclusiveList = []
133423    if (typeof request.tunnel !== 'undefined') {
133424      this.tunnelOverride = request.tunnel
133425    }
133426  }
133427  
133428  Tunnel.prototype.isEnabled = function () {
133429    var self = this
133430    var request = self.request
133431      // Tunnel HTTPS by default. Allow the user to override this setting.
133432  
133433    // If self.tunnelOverride is set (the user specified a value), use it.
133434    if (typeof self.tunnelOverride !== 'undefined') {
133435      return self.tunnelOverride
133436    }
133437  
133438    // If the destination is HTTPS, tunnel.
133439    if (request.uri.protocol === 'https:') {
133440      return true
133441    }
133442  
133443    // Otherwise, do not use tunnel.
133444    return false
133445  }
133446  
133447  Tunnel.prototype.setup = function (options) {
133448    var self = this
133449    var request = self.request
133450  
133451    options = options || {}
133452  
133453    if (typeof request.proxy === 'string') {
133454      request.proxy = url.parse(request.proxy)
133455    }
133456  
133457    if (!request.proxy || !request.tunnel) {
133458      return false
133459    }
133460  
133461    // Setup Proxy Header Exclusive List and White List
133462    if (options.proxyHeaderWhiteList) {
133463      self.proxyHeaderWhiteList = options.proxyHeaderWhiteList
133464    }
133465    if (options.proxyHeaderExclusiveList) {
133466      self.proxyHeaderExclusiveList = options.proxyHeaderExclusiveList
133467    }
133468  
133469    var proxyHeaderExclusiveList = self.proxyHeaderExclusiveList.concat(defaultProxyHeaderExclusiveList)
133470    var proxyHeaderWhiteList = self.proxyHeaderWhiteList.concat(proxyHeaderExclusiveList)
133471  
133472    // Setup Proxy Headers and Proxy Headers Host
133473    // Only send the Proxy White Listed Header names
133474    var proxyHeaders = constructProxyHeaderWhiteList(request.headers, proxyHeaderWhiteList)
133475    proxyHeaders.host = constructProxyHost(request.uri)
133476  
133477    proxyHeaderExclusiveList.forEach(request.removeHeader, request)
133478  
133479    // Set Agent from Tunnel Data
133480    var tunnelFn = getTunnelFn(request)
133481    var tunnelOptions = constructTunnelOptions(request, proxyHeaders)
133482    request.agent = tunnelFn(tunnelOptions)
133483  
133484    return true
133485  }
133486  
133487  Tunnel.defaultProxyHeaderWhiteList = defaultProxyHeaderWhiteList
133488  Tunnel.defaultProxyHeaderExclusiveList = defaultProxyHeaderExclusiveList
133489  exports.Tunnel = Tunnel
133490  
133491  
133492  /***/ }),
133493  /* 810 */
133494  /***/ (function(module, exports, __webpack_require__) {
133495  
133496  "use strict";
133497  /*!
133498   * Copyright (c) 2015, Salesforce.com, Inc.
133499   * All rights reserved.
133500   *
133501   * Redistribution and use in source and binary forms, with or without
133502   * modification, are permitted provided that the following conditions are met:
133503   *
133504   * 1. Redistributions of source code must retain the above copyright notice,
133505   * this list of conditions and the following disclaimer.
133506   *
133507   * 2. Redistributions in binary form must reproduce the above copyright notice,
133508   * this list of conditions and the following disclaimer in the documentation
133509   * and/or other materials provided with the distribution.
133510   *
133511   * 3. Neither the name of Salesforce.com nor the names of its contributors may
133512   * be used to endorse or promote products derived from this software without
133513   * specific prior written permission.
133514   *
133515   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
133516   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
133517   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
133518   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
133519   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
133520   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
133521   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
133522   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
133523   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
133524   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
133525   * POSSIBILITY OF SUCH DAMAGE.
133526   */
133527  
133528  var net = __webpack_require__(164);
133529  var urlParse = __webpack_require__(24).parse;
133530  var pubsuffix = __webpack_require__(415);
133531  var Store = __webpack_require__(416).Store;
133532  var MemoryCookieStore = __webpack_require__(811).MemoryCookieStore;
133533  var pathMatch = __webpack_require__(413).pathMatch;
133534  var VERSION = __webpack_require__(812).version;
133535  
133536  var punycode;
133537  try {
133538    punycode = __webpack_require__(332);
133539  } catch(e) {
133540    console.warn("cookie: can't load punycode; won't use punycode for domain normalization");
133541  }
133542  
133543  // From RFC6265 S4.1.1
133544  // note that it excludes \x3B ";"
133545  var COOKIE_OCTETS = /^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/;
133546  
133547  var CONTROL_CHARS = /[\x00-\x1F]/;
133548  
133549  // From Chromium // '\r', '\n' and '\0' should be treated as a terminator in
133550  // the "relaxed" mode, see:
133551  // https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L60
133552  var TERMINATORS = ['\n', '\r', '\0'];
133553  
133554  // RFC6265 S4.1.1 defines path value as 'any CHAR except CTLs or ";"'
133555  // Note ';' is \x3B
133556  var PATH_VALUE = /[\x20-\x3A\x3C-\x7E]+/;
133557  
133558  // date-time parsing constants (RFC6265 S5.1.1)
133559  
133560  var DATE_DELIM = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/;
133561  
133562  var MONTH_TO_NUM = {
133563    jan:0, feb:1, mar:2, apr:3, may:4, jun:5,
133564    jul:6, aug:7, sep:8, oct:9, nov:10, dec:11
133565  };
133566  var NUM_TO_MONTH = [
133567    'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'
133568  ];
133569  var NUM_TO_DAY = [
133570    'Sun','Mon','Tue','Wed','Thu','Fri','Sat'
133571  ];
133572  
133573  var MAX_TIME = 2147483647000; // 31-bit max
133574  var MIN_TIME = 0; // 31-bit min
133575  
133576  /*
133577   * Parses a Natural number (i.e., non-negative integer) with either the
133578   *    <min>*<max>DIGIT ( non-digit *OCTET )
133579   * or
133580   *    <min>*<max>DIGIT
133581   * grammar (RFC6265 S5.1.1).
133582   *
133583   * The "trailingOK" boolean controls if the grammar accepts a
133584   * "( non-digit *OCTET )" trailer.
133585   */
133586  function parseDigits(token, minDigits, maxDigits, trailingOK) {
133587    var count = 0;
133588    while (count < token.length) {
133589      var c = token.charCodeAt(count);
133590      // "non-digit = %x00-2F / %x3A-FF"
133591      if (c <= 0x2F || c >= 0x3A) {
133592        break;
133593      }
133594      count++;
133595    }
133596  
133597    // constrain to a minimum and maximum number of digits.
133598    if (count < minDigits || count > maxDigits) {
133599      return null;
133600    }
133601  
133602    if (!trailingOK && count != token.length) {
133603      return null;
133604    }
133605  
133606    return parseInt(token.substr(0,count), 10);
133607  }
133608  
133609  function parseTime(token) {
133610    var parts = token.split(':');
133611    var result = [0,0,0];
133612  
133613    /* RF6256 S5.1.1:
133614     *      time            = hms-time ( non-digit *OCTET )
133615     *      hms-time        = time-field ":" time-field ":" time-field
133616     *      time-field      = 1*2DIGIT
133617     */
133618  
133619    if (parts.length !== 3) {
133620      return null;
133621    }
133622  
133623    for (var i = 0; i < 3; i++) {
133624      // "time-field" must be strictly "1*2DIGIT", HOWEVER, "hms-time" can be
133625      // followed by "( non-digit *OCTET )" so therefore the last time-field can
133626      // have a trailer
133627      var trailingOK = (i == 2);
133628      var num = parseDigits(parts[i], 1, 2, trailingOK);
133629      if (num === null) {
133630        return null;
133631      }
133632      result[i] = num;
133633    }
133634  
133635    return result;
133636  }
133637  
133638  function parseMonth(token) {
133639    token = String(token).substr(0,3).toLowerCase();
133640    var num = MONTH_TO_NUM[token];
133641    return num >= 0 ? num : null;
133642  }
133643  
133644  /*
133645   * RFC6265 S5.1.1 date parser (see RFC for full grammar)
133646   */
133647  function parseDate(str) {
133648    if (!str) {
133649      return;
133650    }
133651  
133652    /* RFC6265 S5.1.1:
133653     * 2. Process each date-token sequentially in the order the date-tokens
133654     * appear in the cookie-date
133655     */
133656    var tokens = str.split(DATE_DELIM);
133657    if (!tokens) {
133658      return;
133659    }
133660  
133661    var hour = null;
133662    var minute = null;
133663    var second = null;
133664    var dayOfMonth = null;
133665    var month = null;
133666    var year = null;
133667  
133668    for (var i=0; i<tokens.length; i++) {
133669      var token = tokens[i].trim();
133670      if (!token.length) {
133671        continue;
133672      }
133673  
133674      var result;
133675  
133676      /* 2.1. If the found-time flag is not set and the token matches the time
133677       * production, set the found-time flag and set the hour- value,
133678       * minute-value, and second-value to the numbers denoted by the digits in
133679       * the date-token, respectively.  Skip the remaining sub-steps and continue
133680       * to the next date-token.
133681       */
133682      if (second === null) {
133683        result = parseTime(token);
133684        if (result) {
133685          hour = result[0];
133686          minute = result[1];
133687          second = result[2];
133688          continue;
133689        }
133690      }
133691  
133692      /* 2.2. If the found-day-of-month flag is not set and the date-token matches
133693       * the day-of-month production, set the found-day-of- month flag and set
133694       * the day-of-month-value to the number denoted by the date-token.  Skip
133695       * the remaining sub-steps and continue to the next date-token.
133696       */
133697      if (dayOfMonth === null) {
133698        // "day-of-month = 1*2DIGIT ( non-digit *OCTET )"
133699        result = parseDigits(token, 1, 2, true);
133700        if (result !== null) {
133701          dayOfMonth = result;
133702          continue;
133703        }
133704      }
133705  
133706      /* 2.3. If the found-month flag is not set and the date-token matches the
133707       * month production, set the found-month flag and set the month-value to
133708       * the month denoted by the date-token.  Skip the remaining sub-steps and
133709       * continue to the next date-token.
133710       */
133711      if (month === null) {
133712        result = parseMonth(token);
133713        if (result !== null) {
133714          month = result;
133715          continue;
133716        }
133717      }
133718  
133719      /* 2.4. If the found-year flag is not set and the date-token matches the
133720       * year production, set the found-year flag and set the year-value to the
133721       * number denoted by the date-token.  Skip the remaining sub-steps and
133722       * continue to the next date-token.
133723       */
133724      if (year === null) {
133725        // "year = 2*4DIGIT ( non-digit *OCTET )"
133726        result = parseDigits(token, 2, 4, true);
133727        if (result !== null) {
133728          year = result;
133729          /* From S5.1.1:
133730           * 3.  If the year-value is greater than or equal to 70 and less
133731           * than or equal to 99, increment the year-value by 1900.
133732           * 4.  If the year-value is greater than or equal to 0 and less
133733           * than or equal to 69, increment the year-value by 2000.
133734           */
133735          if (year >= 70 && year <= 99) {
133736            year += 1900;
133737          } else if (year >= 0 && year <= 69) {
133738            year += 2000;
133739          }
133740        }
133741      }
133742    }
133743  
133744    /* RFC 6265 S5.1.1
133745     * "5. Abort these steps and fail to parse the cookie-date if:
133746     *     *  at least one of the found-day-of-month, found-month, found-
133747     *        year, or found-time flags is not set,
133748     *     *  the day-of-month-value is less than 1 or greater than 31,
133749     *     *  the year-value is less than 1601,
133750     *     *  the hour-value is greater than 23,
133751     *     *  the minute-value is greater than 59, or
133752     *     *  the second-value is greater than 59.
133753     *     (Note that leap seconds cannot be represented in this syntax.)"
133754     *
133755     * So, in order as above:
133756     */
133757    if (
133758      dayOfMonth === null || month === null || year === null || second === null ||
133759      dayOfMonth < 1 || dayOfMonth > 31 ||
133760      year < 1601 ||
133761      hour > 23 ||
133762      minute > 59 ||
133763      second > 59
133764    ) {
133765      return;
133766    }
133767  
133768    return new Date(Date.UTC(year, month, dayOfMonth, hour, minute, second));
133769  }
133770  
133771  function formatDate(date) {
133772    var d = date.getUTCDate(); d = d >= 10 ? d : '0'+d;
133773    var h = date.getUTCHours(); h = h >= 10 ? h : '0'+h;
133774    var m = date.getUTCMinutes(); m = m >= 10 ? m : '0'+m;
133775    var s = date.getUTCSeconds(); s = s >= 10 ? s : '0'+s;
133776    return NUM_TO_DAY[date.getUTCDay()] + ', ' +
133777      d+' '+ NUM_TO_MONTH[date.getUTCMonth()] +' '+ date.getUTCFullYear() +' '+
133778      h+':'+m+':'+s+' GMT';
133779  }
133780  
133781  // S5.1.2 Canonicalized Host Names
133782  function canonicalDomain(str) {
133783    if (str == null) {
133784      return null;
133785    }
133786    str = str.trim().replace(/^\./,''); // S4.1.2.3 & S5.2.3: ignore leading .
133787  
133788    // convert to IDN if any non-ASCII characters
133789    if (punycode && /[^\u0001-\u007f]/.test(str)) {
133790      str = punycode.toASCII(str);
133791    }
133792  
133793    return str.toLowerCase();
133794  }
133795  
133796  // S5.1.3 Domain Matching
133797  function domainMatch(str, domStr, canonicalize) {
133798    if (str == null || domStr == null) {
133799      return null;
133800    }
133801    if (canonicalize !== false) {
133802      str = canonicalDomain(str);
133803      domStr = canonicalDomain(domStr);
133804    }
133805  
133806    /*
133807     * "The domain string and the string are identical. (Note that both the
133808     * domain string and the string will have been canonicalized to lower case at
133809     * this point)"
133810     */
133811    if (str == domStr) {
133812      return true;
133813    }
133814  
133815    /* "All of the following [three] conditions hold:" (order adjusted from the RFC) */
133816  
133817    /* "* The string is a host name (i.e., not an IP address)." */
133818    if (net.isIP(str)) {
133819      return false;
133820    }
133821  
133822    /* "* The domain string is a suffix of the string" */
133823    var idx = str.indexOf(domStr);
133824    if (idx <= 0) {
133825      return false; // it's a non-match (-1) or prefix (0)
133826    }
133827  
133828    // e.g "a.b.c".indexOf("b.c") === 2
133829    // 5 === 3+2
133830    if (str.length !== domStr.length + idx) { // it's not a suffix
133831      return false;
133832    }
133833  
133834    /* "* The last character of the string that is not included in the domain
133835    * string is a %x2E (".") character." */
133836    if (str.substr(idx-1,1) !== '.') {
133837      return false;
133838    }
133839  
133840    return true;
133841  }
133842  
133843  
133844  // RFC6265 S5.1.4 Paths and Path-Match
133845  
133846  /*
133847   * "The user agent MUST use an algorithm equivalent to the following algorithm
133848   * to compute the default-path of a cookie:"
133849   *
133850   * Assumption: the path (and not query part or absolute uri) is passed in.
133851   */
133852  function defaultPath(path) {
133853    // "2. If the uri-path is empty or if the first character of the uri-path is not
133854    // a %x2F ("/") character, output %x2F ("/") and skip the remaining steps.
133855    if (!path || path.substr(0,1) !== "/") {
133856      return "/";
133857    }
133858  
133859    // "3. If the uri-path contains no more than one %x2F ("/") character, output
133860    // %x2F ("/") and skip the remaining step."
133861    if (path === "/") {
133862      return path;
133863    }
133864  
133865    var rightSlash = path.lastIndexOf("/");
133866    if (rightSlash === 0) {
133867      return "/";
133868    }
133869  
133870    // "4. Output the characters of the uri-path from the first character up to,
133871    // but not including, the right-most %x2F ("/")."
133872    return path.slice(0, rightSlash);
133873  }
133874  
133875  function trimTerminator(str) {
133876    for (var t = 0; t < TERMINATORS.length; t++) {
133877      var terminatorIdx = str.indexOf(TERMINATORS[t]);
133878      if (terminatorIdx !== -1) {
133879        str = str.substr(0,terminatorIdx);
133880      }
133881    }
133882  
133883    return str;
133884  }
133885  
133886  function parseCookiePair(cookiePair, looseMode) {
133887    cookiePair = trimTerminator(cookiePair);
133888  
133889    var firstEq = cookiePair.indexOf('=');
133890    if (looseMode) {
133891      if (firstEq === 0) { // '=' is immediately at start
133892        cookiePair = cookiePair.substr(1);
133893        firstEq = cookiePair.indexOf('='); // might still need to split on '='
133894      }
133895    } else { // non-loose mode
133896      if (firstEq <= 0) { // no '=' or is at start
133897        return; // needs to have non-empty "cookie-name"
133898      }
133899    }
133900  
133901    var cookieName, cookieValue;
133902    if (firstEq <= 0) {
133903      cookieName = "";
133904      cookieValue = cookiePair.trim();
133905    } else {
133906      cookieName = cookiePair.substr(0, firstEq).trim();
133907      cookieValue = cookiePair.substr(firstEq+1).trim();
133908    }
133909  
133910    if (CONTROL_CHARS.test(cookieName) || CONTROL_CHARS.test(cookieValue)) {
133911      return;
133912    }
133913  
133914    var c = new Cookie();
133915    c.key = cookieName;
133916    c.value = cookieValue;
133917    return c;
133918  }
133919  
133920  function parse(str, options) {
133921    if (!options || typeof options !== 'object') {
133922      options = {};
133923    }
133924    str = str.trim();
133925  
133926    // We use a regex to parse the "name-value-pair" part of S5.2
133927    var firstSemi = str.indexOf(';'); // S5.2 step 1
133928    var cookiePair = (firstSemi === -1) ? str : str.substr(0, firstSemi);
133929    var c = parseCookiePair(cookiePair, !!options.loose);
133930    if (!c) {
133931      return;
133932    }
133933  
133934    if (firstSemi === -1) {
133935      return c;
133936    }
133937  
133938    // S5.2.3 "unparsed-attributes consist of the remainder of the set-cookie-string
133939    // (including the %x3B (";") in question)." plus later on in the same section
133940    // "discard the first ";" and trim".
133941    var unparsed = str.slice(firstSemi + 1).trim();
133942  
133943    // "If the unparsed-attributes string is empty, skip the rest of these
133944    // steps."
133945    if (unparsed.length === 0) {
133946      return c;
133947    }
133948  
133949    /*
133950     * S5.2 says that when looping over the items "[p]rocess the attribute-name
133951     * and attribute-value according to the requirements in the following
133952     * subsections" for every item.  Plus, for many of the individual attributes
133953     * in S5.3 it says to use the "attribute-value of the last attribute in the
133954     * cookie-attribute-list".  Therefore, in this implementation, we overwrite
133955     * the previous value.
133956     */
133957    var cookie_avs = unparsed.split(';');
133958    while (cookie_avs.length) {
133959      var av = cookie_avs.shift().trim();
133960      if (av.length === 0) { // happens if ";;" appears
133961        continue;
133962      }
133963      var av_sep = av.indexOf('=');
133964      var av_key, av_value;
133965  
133966      if (av_sep === -1) {
133967        av_key = av;
133968        av_value = null;
133969      } else {
133970        av_key = av.substr(0,av_sep);
133971        av_value = av.substr(av_sep+1);
133972      }
133973  
133974      av_key = av_key.trim().toLowerCase();
133975  
133976      if (av_value) {
133977        av_value = av_value.trim();
133978      }
133979  
133980      switch(av_key) {
133981      case 'expires': // S5.2.1
133982        if (av_value) {
133983          var exp = parseDate(av_value);
133984          // "If the attribute-value failed to parse as a cookie date, ignore the
133985          // cookie-av."
133986          if (exp) {
133987            // over and underflow not realistically a concern: V8's getTime() seems to
133988            // store something larger than a 32-bit time_t (even with 32-bit node)
133989            c.expires = exp;
133990          }
133991        }
133992        break;
133993  
133994      case 'max-age': // S5.2.2
133995        if (av_value) {
133996          // "If the first character of the attribute-value is not a DIGIT or a "-"
133997          // character ...[or]... If the remainder of attribute-value contains a
133998          // non-DIGIT character, ignore the cookie-av."
133999          if (/^-?[0-9]+$/.test(av_value)) {
134000            var delta = parseInt(av_value, 10);
134001            // "If delta-seconds is less than or equal to zero (0), let expiry-time
134002            // be the earliest representable date and time."
134003            c.setMaxAge(delta);
134004          }
134005        }
134006        break;
134007  
134008      case 'domain': // S5.2.3
134009        // "If the attribute-value is empty, the behavior is undefined.  However,
134010        // the user agent SHOULD ignore the cookie-av entirely."
134011        if (av_value) {
134012          // S5.2.3 "Let cookie-domain be the attribute-value without the leading %x2E
134013          // (".") character."
134014          var domain = av_value.trim().replace(/^\./, '');
134015          if (domain) {
134016            // "Convert the cookie-domain to lower case."
134017            c.domain = domain.toLowerCase();
134018          }
134019        }
134020        break;
134021  
134022      case 'path': // S5.2.4
134023        /*
134024         * "If the attribute-value is empty or if the first character of the
134025         * attribute-value is not %x2F ("/"):
134026         *   Let cookie-path be the default-path.
134027         * Otherwise:
134028         *   Let cookie-path be the attribute-value."
134029         *
134030         * We'll represent the default-path as null since it depends on the
134031         * context of the parsing.
134032         */
134033        c.path = av_value && av_value[0] === "/" ? av_value : null;
134034        break;
134035  
134036      case 'secure': // S5.2.5
134037        /*
134038         * "If the attribute-name case-insensitively matches the string "Secure",
134039         * the user agent MUST append an attribute to the cookie-attribute-list
134040         * with an attribute-name of Secure and an empty attribute-value."
134041         */
134042        c.secure = true;
134043        break;
134044  
134045      case 'httponly': // S5.2.6 -- effectively the same as 'secure'
134046        c.httpOnly = true;
134047        break;
134048  
134049      default:
134050        c.extensions = c.extensions || [];
134051        c.extensions.push(av);
134052        break;
134053      }
134054    }
134055  
134056    return c;
134057  }
134058  
134059  // avoid the V8 deoptimization monster!
134060  function jsonParse(str) {
134061    var obj;
134062    try {
134063      obj = JSON.parse(str);
134064    } catch (e) {
134065      return e;
134066    }
134067    return obj;
134068  }
134069  
134070  function fromJSON(str) {
134071    if (!str) {
134072      return null;
134073    }
134074  
134075    var obj;
134076    if (typeof str === 'string') {
134077      obj = jsonParse(str);
134078      if (obj instanceof Error) {
134079        return null;
134080      }
134081    } else {
134082      // assume it's an Object
134083      obj = str;
134084    }
134085  
134086    var c = new Cookie();
134087    for (var i=0; i<Cookie.serializableProperties.length; i++) {
134088      var prop = Cookie.serializableProperties[i];
134089      if (obj[prop] === undefined ||
134090          obj[prop] === Cookie.prototype[prop])
134091      {
134092        continue; // leave as prototype default
134093      }
134094  
134095      if (prop === 'expires' ||
134096          prop === 'creation' ||
134097          prop === 'lastAccessed')
134098      {
134099        if (obj[prop] === null) {
134100          c[prop] = null;
134101        } else {
134102          c[prop] = obj[prop] == "Infinity" ?
134103            "Infinity" : new Date(obj[prop]);
134104        }
134105      } else {
134106        c[prop] = obj[prop];
134107      }
134108    }
134109  
134110    return c;
134111  }
134112  
134113  /* Section 5.4 part 2:
134114   * "*  Cookies with longer paths are listed before cookies with
134115   *     shorter paths.
134116   *
134117   *  *  Among cookies that have equal-length path fields, cookies with
134118   *     earlier creation-times are listed before cookies with later
134119   *     creation-times."
134120   */
134121  
134122  function cookieCompare(a,b) {
134123    var cmp = 0;
134124  
134125    // descending for length: b CMP a
134126    var aPathLen = a.path ? a.path.length : 0;
134127    var bPathLen = b.path ? b.path.length : 0;
134128    cmp = bPathLen - aPathLen;
134129    if (cmp !== 0) {
134130      return cmp;
134131    }
134132  
134133    // ascending for time: a CMP b
134134    var aTime = a.creation ? a.creation.getTime() : MAX_TIME;
134135    var bTime = b.creation ? b.creation.getTime() : MAX_TIME;
134136    cmp = aTime - bTime;
134137    if (cmp !== 0) {
134138      return cmp;
134139    }
134140  
134141    // break ties for the same millisecond (precision of JavaScript's clock)
134142    cmp = a.creationIndex - b.creationIndex;
134143  
134144    return cmp;
134145  }
134146  
134147  // Gives the permutation of all possible pathMatch()es of a given path. The
134148  // array is in longest-to-shortest order.  Handy for indexing.
134149  function permutePath(path) {
134150    if (path === '/') {
134151      return ['/'];
134152    }
134153    if (path.lastIndexOf('/') === path.length-1) {
134154      path = path.substr(0,path.length-1);
134155    }
134156    var permutations = [path];
134157    while (path.length > 1) {
134158      var lindex = path.lastIndexOf('/');
134159      if (lindex === 0) {
134160        break;
134161      }
134162      path = path.substr(0,lindex);
134163      permutations.push(path);
134164    }
134165    permutations.push('/');
134166    return permutations;
134167  }
134168  
134169  function getCookieContext(url) {
134170    if (url instanceof Object) {
134171      return url;
134172    }
134173    // NOTE: decodeURI will throw on malformed URIs (see GH-32).
134174    // Therefore, we will just skip decoding for such URIs.
134175    try {
134176      url = decodeURI(url);
134177    }
134178    catch(err) {
134179      // Silently swallow error
134180    }
134181  
134182    return urlParse(url);
134183  }
134184  
134185  function Cookie(options) {
134186    options = options || {};
134187  
134188    Object.keys(options).forEach(function(prop) {
134189      if (Cookie.prototype.hasOwnProperty(prop) &&
134190          Cookie.prototype[prop] !== options[prop] &&
134191          prop.substr(0,1) !== '_')
134192      {
134193        this[prop] = options[prop];
134194      }
134195    }, this);
134196  
134197    this.creation = this.creation || new Date();
134198  
134199    // used to break creation ties in cookieCompare():
134200    Object.defineProperty(this, 'creationIndex', {
134201      configurable: false,
134202      enumerable: false, // important for assert.deepEqual checks
134203      writable: true,
134204      value: ++Cookie.cookiesCreated
134205    });
134206  }
134207  
134208  Cookie.cookiesCreated = 0; // incremented each time a cookie is created
134209  
134210  Cookie.parse = parse;
134211  Cookie.fromJSON = fromJSON;
134212  
134213  Cookie.prototype.key = "";
134214  Cookie.prototype.value = "";
134215  
134216  // the order in which the RFC has them:
134217  Cookie.prototype.expires = "Infinity"; // coerces to literal Infinity
134218  Cookie.prototype.maxAge = null; // takes precedence over expires for TTL
134219  Cookie.prototype.domain = null;
134220  Cookie.prototype.path = null;
134221  Cookie.prototype.secure = false;
134222  Cookie.prototype.httpOnly = false;
134223  Cookie.prototype.extensions = null;
134224  
134225  // set by the CookieJar:
134226  Cookie.prototype.hostOnly = null; // boolean when set
134227  Cookie.prototype.pathIsDefault = null; // boolean when set
134228  Cookie.prototype.creation = null; // Date when set; defaulted by Cookie.parse
134229  Cookie.prototype.lastAccessed = null; // Date when set
134230  Object.defineProperty(Cookie.prototype, 'creationIndex', {
134231    configurable: true,
134232    enumerable: false,
134233    writable: true,
134234    value: 0
134235  });
134236  
134237  Cookie.serializableProperties = Object.keys(Cookie.prototype)
134238    .filter(function(prop) {
134239      return !(
134240        Cookie.prototype[prop] instanceof Function ||
134241        prop === 'creationIndex' ||
134242        prop.substr(0,1) === '_'
134243      );
134244    });
134245  
134246  Cookie.prototype.inspect = function inspect() {
134247    var now = Date.now();
134248    return 'Cookie="'+this.toString() +
134249      '; hostOnly='+(this.hostOnly != null ? this.hostOnly : '?') +
134250      '; aAge='+(this.lastAccessed ? (now-this.lastAccessed.getTime())+'ms' : '?') +
134251      '; cAge='+(this.creation ? (now-this.creation.getTime())+'ms' : '?') +
134252      '"';
134253  };
134254  
134255  Cookie.prototype.toJSON = function() {
134256    var obj = {};
134257  
134258    var props = Cookie.serializableProperties;
134259    for (var i=0; i<props.length; i++) {
134260      var prop = props[i];
134261      if (this[prop] === Cookie.prototype[prop]) {
134262        continue; // leave as prototype default
134263      }
134264  
134265      if (prop === 'expires' ||
134266          prop === 'creation' ||
134267          prop === 'lastAccessed')
134268      {
134269        if (this[prop] === null) {
134270          obj[prop] = null;
134271        } else {
134272          obj[prop] = this[prop] == "Infinity" ? // intentionally not ===
134273            "Infinity" : this[prop].toISOString();
134274        }
134275      } else if (prop === 'maxAge') {
134276        if (this[prop] !== null) {
134277          // again, intentionally not ===
134278          obj[prop] = (this[prop] == Infinity || this[prop] == -Infinity) ?
134279            this[prop].toString() : this[prop];
134280        }
134281      } else {
134282        if (this[prop] !== Cookie.prototype[prop]) {
134283          obj[prop] = this[prop];
134284        }
134285      }
134286    }
134287  
134288    return obj;
134289  };
134290  
134291  Cookie.prototype.clone = function() {
134292    return fromJSON(this.toJSON());
134293  };
134294  
134295  Cookie.prototype.validate = function validate() {
134296    if (!COOKIE_OCTETS.test(this.value)) {
134297      return false;
134298    }
134299    if (this.expires != Infinity && !(this.expires instanceof Date) && !parseDate(this.expires)) {
134300      return false;
134301    }
134302    if (this.maxAge != null && this.maxAge <= 0) {
134303      return false; // "Max-Age=" non-zero-digit *DIGIT
134304    }
134305    if (this.path != null && !PATH_VALUE.test(this.path)) {
134306      return false;
134307    }
134308  
134309    var cdomain = this.cdomain();
134310    if (cdomain) {
134311      if (cdomain.match(/\.$/)) {
134312        return false; // S4.1.2.3 suggests that this is bad. domainMatch() tests confirm this
134313      }
134314      var suffix = pubsuffix.getPublicSuffix(cdomain);
134315      if (suffix == null) { // it's a public suffix
134316        return false;
134317      }
134318    }
134319    return true;
134320  };
134321  
134322  Cookie.prototype.setExpires = function setExpires(exp) {
134323    if (exp instanceof Date) {
134324      this.expires = exp;
134325    } else {
134326      this.expires = parseDate(exp) || "Infinity";
134327    }
134328  };
134329  
134330  Cookie.prototype.setMaxAge = function setMaxAge(age) {
134331    if (age === Infinity || age === -Infinity) {
134332      this.maxAge = age.toString(); // so JSON.stringify() works
134333    } else {
134334      this.maxAge = age;
134335    }
134336  };
134337  
134338  // gives Cookie header format
134339  Cookie.prototype.cookieString = function cookieString() {
134340    var val = this.value;
134341    if (val == null) {
134342      val = '';
134343    }
134344    if (this.key === '') {
134345      return val;
134346    }
134347    return this.key+'='+val;
134348  };
134349  
134350  // gives Set-Cookie header format
134351  Cookie.prototype.toString = function toString() {
134352    var str = this.cookieString();
134353  
134354    if (this.expires != Infinity) {
134355      if (this.expires instanceof Date) {
134356        str += '; Expires='+formatDate(this.expires);
134357      } else {
134358        str += '; Expires='+this.expires;
134359      }
134360    }
134361  
134362    if (this.maxAge != null && this.maxAge != Infinity) {
134363      str += '; Max-Age='+this.maxAge;
134364    }
134365  
134366    if (this.domain && !this.hostOnly) {
134367      str += '; Domain='+this.domain;
134368    }
134369    if (this.path) {
134370      str += '; Path='+this.path;
134371    }
134372  
134373    if (this.secure) {
134374      str += '; Secure';
134375    }
134376    if (this.httpOnly) {
134377      str += '; HttpOnly';
134378    }
134379    if (this.extensions) {
134380      this.extensions.forEach(function(ext) {
134381        str += '; '+ext;
134382      });
134383    }
134384  
134385    return str;
134386  };
134387  
134388  // TTL() partially replaces the "expiry-time" parts of S5.3 step 3 (setCookie()
134389  // elsewhere)
134390  // S5.3 says to give the "latest representable date" for which we use Infinity
134391  // For "expired" we use 0
134392  Cookie.prototype.TTL = function TTL(now) {
134393    /* RFC6265 S4.1.2.2 If a cookie has both the Max-Age and the Expires
134394     * attribute, the Max-Age attribute has precedence and controls the
134395     * expiration date of the cookie.
134396     * (Concurs with S5.3 step 3)
134397     */
134398    if (this.maxAge != null) {
134399      return this.maxAge<=0 ? 0 : this.maxAge*1000;
134400    }
134401  
134402    var expires = this.expires;
134403    if (expires != Infinity) {
134404      if (!(expires instanceof Date)) {
134405        expires = parseDate(expires) || Infinity;
134406      }
134407  
134408      if (expires == Infinity) {
134409        return Infinity;
134410      }
134411  
134412      return expires.getTime() - (now || Date.now());
134413    }
134414  
134415    return Infinity;
134416  };
134417  
134418  // expiryTime() replaces the "expiry-time" parts of S5.3 step 3 (setCookie()
134419  // elsewhere)
134420  Cookie.prototype.expiryTime = function expiryTime(now) {
134421    if (this.maxAge != null) {
134422      var relativeTo = now || this.creation || new Date();
134423      var age = (this.maxAge <= 0) ? -Infinity : this.maxAge*1000;
134424      return relativeTo.getTime() + age;
134425    }
134426  
134427    if (this.expires == Infinity) {
134428      return Infinity;
134429    }
134430    return this.expires.getTime();
134431  };
134432  
134433  // expiryDate() replaces the "expiry-time" parts of S5.3 step 3 (setCookie()
134434  // elsewhere), except it returns a Date
134435  Cookie.prototype.expiryDate = function expiryDate(now) {
134436    var millisec = this.expiryTime(now);
134437    if (millisec == Infinity) {
134438      return new Date(MAX_TIME);
134439    } else if (millisec == -Infinity) {
134440      return new Date(MIN_TIME);
134441    } else {
134442      return new Date(millisec);
134443    }
134444  };
134445  
134446  // This replaces the "persistent-flag" parts of S5.3 step 3
134447  Cookie.prototype.isPersistent = function isPersistent() {
134448    return (this.maxAge != null || this.expires != Infinity);
134449  };
134450  
134451  // Mostly S5.1.2 and S5.2.3:
134452  Cookie.prototype.cdomain =
134453  Cookie.prototype.canonicalizedDomain = function canonicalizedDomain() {
134454    if (this.domain == null) {
134455      return null;
134456    }
134457    return canonicalDomain(this.domain);
134458  };
134459  
134460  function CookieJar(store, options) {
134461    if (typeof options === "boolean") {
134462      options = {rejectPublicSuffixes: options};
134463    } else if (options == null) {
134464      options = {};
134465    }
134466    if (options.rejectPublicSuffixes != null) {
134467      this.rejectPublicSuffixes = options.rejectPublicSuffixes;
134468    }
134469    if (options.looseMode != null) {
134470      this.enableLooseMode = options.looseMode;
134471    }
134472  
134473    if (!store) {
134474      store = new MemoryCookieStore();
134475    }
134476    this.store = store;
134477  }
134478  CookieJar.prototype.store = null;
134479  CookieJar.prototype.rejectPublicSuffixes = true;
134480  CookieJar.prototype.enableLooseMode = false;
134481  var CAN_BE_SYNC = [];
134482  
134483  CAN_BE_SYNC.push('setCookie');
134484  CookieJar.prototype.setCookie = function(cookie, url, options, cb) {
134485    var err;
134486    var context = getCookieContext(url);
134487    if (options instanceof Function) {
134488      cb = options;
134489      options = {};
134490    }
134491  
134492    var host = canonicalDomain(context.hostname);
134493    var loose = this.enableLooseMode;
134494    if (options.loose != null) {
134495      loose = options.loose;
134496    }
134497  
134498    // S5.3 step 1
134499    if (!(cookie instanceof Cookie)) {
134500      cookie = Cookie.parse(cookie, { loose: loose });
134501    }
134502    if (!cookie) {
134503      err = new Error("Cookie failed to parse");
134504      return cb(options.ignoreError ? null : err);
134505    }
134506  
134507    // S5.3 step 2
134508    var now = options.now || new Date(); // will assign later to save effort in the face of errors
134509  
134510    // S5.3 step 3: NOOP; persistent-flag and expiry-time is handled by getCookie()
134511  
134512    // S5.3 step 4: NOOP; domain is null by default
134513  
134514    // S5.3 step 5: public suffixes
134515    if (this.rejectPublicSuffixes && cookie.domain) {
134516      var suffix = pubsuffix.getPublicSuffix(cookie.cdomain());
134517      if (suffix == null) { // e.g. "com"
134518        err = new Error("Cookie has domain set to a public suffix");
134519        return cb(options.ignoreError ? null : err);
134520      }
134521    }
134522  
134523    // S5.3 step 6:
134524    if (cookie.domain) {
134525      if (!domainMatch(host, cookie.cdomain(), false)) {
134526        err = new Error("Cookie not in this host's domain. Cookie:"+cookie.cdomain()+" Request:"+host);
134527        return cb(options.ignoreError ? null : err);
134528      }
134529  
134530      if (cookie.hostOnly == null) { // don't reset if already set
134531        cookie.hostOnly = false;
134532      }
134533  
134534    } else {
134535      cookie.hostOnly = true;
134536      cookie.domain = host;
134537    }
134538  
134539    //S5.2.4 If the attribute-value is empty or if the first character of the
134540    //attribute-value is not %x2F ("/"):
134541    //Let cookie-path be the default-path.
134542    if (!cookie.path || cookie.path[0] !== '/') {
134543      cookie.path = defaultPath(context.pathname);
134544      cookie.pathIsDefault = true;
134545    }
134546  
134547    // S5.3 step 8: NOOP; secure attribute
134548    // S5.3 step 9: NOOP; httpOnly attribute
134549  
134550    // S5.3 step 10
134551    if (options.http === false && cookie.httpOnly) {
134552      err = new Error("Cookie is HttpOnly and this isn't an HTTP API");
134553      return cb(options.ignoreError ? null : err);
134554    }
134555  
134556    var store = this.store;
134557  
134558    if (!store.updateCookie) {
134559      store.updateCookie = function(oldCookie, newCookie, cb) {
134560        this.putCookie(newCookie, cb);
134561      };
134562    }
134563  
134564    function withCookie(err, oldCookie) {
134565      if (err) {
134566        return cb(err);
134567      }
134568  
134569      var next = function(err) {
134570        if (err) {
134571          return cb(err);
134572        } else {
134573          cb(null, cookie);
134574        }
134575      };
134576  
134577      if (oldCookie) {
134578        // S5.3 step 11 - "If the cookie store contains a cookie with the same name,
134579        // domain, and path as the newly created cookie:"
134580        if (options.http === false && oldCookie.httpOnly) { // step 11.2
134581          err = new Error("old Cookie is HttpOnly and this isn't an HTTP API");
134582          return cb(options.ignoreError ? null : err);
134583        }
134584        cookie.creation = oldCookie.creation; // step 11.3
134585        cookie.creationIndex = oldCookie.creationIndex; // preserve tie-breaker
134586        cookie.lastAccessed = now;
134587        // Step 11.4 (delete cookie) is implied by just setting the new one:
134588        store.updateCookie(oldCookie, cookie, next); // step 12
134589  
134590      } else {
134591        cookie.creation = cookie.lastAccessed = now;
134592        store.putCookie(cookie, next); // step 12
134593      }
134594    }
134595  
134596    store.findCookie(cookie.domain, cookie.path, cookie.key, withCookie);
134597  };
134598  
134599  // RFC6365 S5.4
134600  CAN_BE_SYNC.push('getCookies');
134601  CookieJar.prototype.getCookies = function(url, options, cb) {
134602    var context = getCookieContext(url);
134603    if (options instanceof Function) {
134604      cb = options;
134605      options = {};
134606    }
134607  
134608    var host = canonicalDomain(context.hostname);
134609    var path = context.pathname || '/';
134610  
134611    var secure = options.secure;
134612    if (secure == null && context.protocol &&
134613        (context.protocol == 'https:' || context.protocol == 'wss:'))
134614    {
134615      secure = true;
134616    }
134617  
134618    var http = options.http;
134619    if (http == null) {
134620      http = true;
134621    }
134622  
134623    var now = options.now || Date.now();
134624    var expireCheck = options.expire !== false;
134625    var allPaths = !!options.allPaths;
134626    var store = this.store;
134627  
134628    function matchingCookie(c) {
134629      // "Either:
134630      //   The cookie's host-only-flag is true and the canonicalized
134631      //   request-host is identical to the cookie's domain.
134632      // Or:
134633      //   The cookie's host-only-flag is false and the canonicalized
134634      //   request-host domain-matches the cookie's domain."
134635      if (c.hostOnly) {
134636        if (c.domain != host) {
134637          return false;
134638        }
134639      } else {
134640        if (!domainMatch(host, c.domain, false)) {
134641          return false;
134642        }
134643      }
134644  
134645      // "The request-uri's path path-matches the cookie's path."
134646      if (!allPaths && !pathMatch(path, c.path)) {
134647        return false;
134648      }
134649  
134650      // "If the cookie's secure-only-flag is true, then the request-uri's
134651      // scheme must denote a "secure" protocol"
134652      if (c.secure && !secure) {
134653        return false;
134654      }
134655  
134656      // "If the cookie's http-only-flag is true, then exclude the cookie if the
134657      // cookie-string is being generated for a "non-HTTP" API"
134658      if (c.httpOnly && !http) {
134659        return false;
134660      }
134661  
134662      // deferred from S5.3
134663      // non-RFC: allow retention of expired cookies by choice
134664      if (expireCheck && c.expiryTime() <= now) {
134665        store.removeCookie(c.domain, c.path, c.key, function(){}); // result ignored
134666        return false;
134667      }
134668  
134669      return true;
134670    }
134671  
134672    store.findCookies(host, allPaths ? null : path, function(err,cookies) {
134673      if (err) {
134674        return cb(err);
134675      }
134676  
134677      cookies = cookies.filter(matchingCookie);
134678  
134679      // sorting of S5.4 part 2
134680      if (options.sort !== false) {
134681        cookies = cookies.sort(cookieCompare);
134682      }
134683  
134684      // S5.4 part 3
134685      var now = new Date();
134686      cookies.forEach(function(c) {
134687        c.lastAccessed = now;
134688      });
134689      // TODO persist lastAccessed
134690  
134691      cb(null,cookies);
134692    });
134693  };
134694  
134695  CAN_BE_SYNC.push('getCookieString');
134696  CookieJar.prototype.getCookieString = function(/*..., cb*/) {
134697    var args = Array.prototype.slice.call(arguments,0);
134698    var cb = args.pop();
134699    var next = function(err,cookies) {
134700      if (err) {
134701        cb(err);
134702      } else {
134703        cb(null, cookies
134704          .sort(cookieCompare)
134705          .map(function(c){
134706            return c.cookieString();
134707          })
134708          .join('; '));
134709      }
134710    };
134711    args.push(next);
134712    this.getCookies.apply(this,args);
134713  };
134714  
134715  CAN_BE_SYNC.push('getSetCookieStrings');
134716  CookieJar.prototype.getSetCookieStrings = function(/*..., cb*/) {
134717    var args = Array.prototype.slice.call(arguments,0);
134718    var cb = args.pop();
134719    var next = function(err,cookies) {
134720      if (err) {
134721        cb(err);
134722      } else {
134723        cb(null, cookies.map(function(c){
134724          return c.toString();
134725        }));
134726      }
134727    };
134728    args.push(next);
134729    this.getCookies.apply(this,args);
134730  };
134731  
134732  CAN_BE_SYNC.push('serialize');
134733  CookieJar.prototype.serialize = function(cb) {
134734    var type = this.store.constructor.name;
134735    if (type === 'Object') {
134736      type = null;
134737    }
134738  
134739    // update README.md "Serialization Format" if you change this, please!
134740    var serialized = {
134741      // The version of tough-cookie that serialized this jar. Generally a good
134742      // practice since future versions can make data import decisions based on
134743      // known past behavior. When/if this matters, use `semver`.
134744      version: 'tough-cookie@'+VERSION,
134745  
134746      // add the store type, to make humans happy:
134747      storeType: type,
134748  
134749      // CookieJar configuration:
134750      rejectPublicSuffixes: !!this.rejectPublicSuffixes,
134751  
134752      // this gets filled from getAllCookies:
134753      cookies: []
134754    };
134755  
134756    if (!(this.store.getAllCookies &&
134757          typeof this.store.getAllCookies === 'function'))
134758    {
134759      return cb(new Error('store does not support getAllCookies and cannot be serialized'));
134760    }
134761  
134762    this.store.getAllCookies(function(err,cookies) {
134763      if (err) {
134764        return cb(err);
134765      }
134766  
134767      serialized.cookies = cookies.map(function(cookie) {
134768        // convert to serialized 'raw' cookies
134769        cookie = (cookie instanceof Cookie) ? cookie.toJSON() : cookie;
134770  
134771        // Remove the index so new ones get assigned during deserialization
134772        delete cookie.creationIndex;
134773  
134774        return cookie;
134775      });
134776  
134777      return cb(null, serialized);
134778    });
134779  };
134780  
134781  // well-known name that JSON.stringify calls
134782  CookieJar.prototype.toJSON = function() {
134783    return this.serializeSync();
134784  };
134785  
134786  // use the class method CookieJar.deserialize instead of calling this directly
134787  CAN_BE_SYNC.push('_importCookies');
134788  CookieJar.prototype._importCookies = function(serialized, cb) {
134789    var jar = this;
134790    var cookies = serialized.cookies;
134791    if (!cookies || !Array.isArray(cookies)) {
134792      return cb(new Error('serialized jar has no cookies array'));
134793    }
134794    cookies = cookies.slice(); // do not modify the original
134795  
134796    function putNext(err) {
134797      if (err) {
134798        return cb(err);
134799      }
134800  
134801      if (!cookies.length) {
134802        return cb(err, jar);
134803      }
134804  
134805      var cookie;
134806      try {
134807        cookie = fromJSON(cookies.shift());
134808      } catch (e) {
134809        return cb(e);
134810      }
134811  
134812      if (cookie === null) {
134813        return putNext(null); // skip this cookie
134814      }
134815  
134816      jar.store.putCookie(cookie, putNext);
134817    }
134818  
134819    putNext();
134820  };
134821  
134822  CookieJar.deserialize = function(strOrObj, store, cb) {
134823    if (arguments.length !== 3) {
134824      // store is optional
134825      cb = store;
134826      store = null;
134827    }
134828  
134829    var serialized;
134830    if (typeof strOrObj === 'string') {
134831      serialized = jsonParse(strOrObj);
134832      if (serialized instanceof Error) {
134833        return cb(serialized);
134834      }
134835    } else {
134836      serialized = strOrObj;
134837    }
134838  
134839    var jar = new CookieJar(store, serialized.rejectPublicSuffixes);
134840    jar._importCookies(serialized, function(err) {
134841      if (err) {
134842        return cb(err);
134843      }
134844      cb(null, jar);
134845    });
134846  };
134847  
134848  CookieJar.deserializeSync = function(strOrObj, store) {
134849    var serialized = typeof strOrObj === 'string' ?
134850      JSON.parse(strOrObj) : strOrObj;
134851    var jar = new CookieJar(store, serialized.rejectPublicSuffixes);
134852  
134853    // catch this mistake early:
134854    if (!jar.store.synchronous) {
134855      throw new Error('CookieJar store is not synchronous; use async API instead.');
134856    }
134857  
134858    jar._importCookiesSync(serialized);
134859    return jar;
134860  };
134861  CookieJar.fromJSON = CookieJar.deserializeSync;
134862  
134863  CAN_BE_SYNC.push('clone');
134864  CookieJar.prototype.clone = function(newStore, cb) {
134865    if (arguments.length === 1) {
134866      cb = newStore;
134867      newStore = null;
134868    }
134869  
134870    this.serialize(function(err,serialized) {
134871      if (err) {
134872        return cb(err);
134873      }
134874      CookieJar.deserialize(newStore, serialized, cb);
134875    });
134876  };
134877  
134878  // Use a closure to provide a true imperative API for synchronous stores.
134879  function syncWrap(method) {
134880    return function() {
134881      if (!this.store.synchronous) {
134882        throw new Error('CookieJar store is not synchronous; use async API instead.');
134883      }
134884  
134885      var args = Array.prototype.slice.call(arguments);
134886      var syncErr, syncResult;
134887      args.push(function syncCb(err, result) {
134888        syncErr = err;
134889        syncResult = result;
134890      });
134891      this[method].apply(this, args);
134892  
134893      if (syncErr) {
134894        throw syncErr;
134895      }
134896      return syncResult;
134897    };
134898  }
134899  
134900  // wrap all declared CAN_BE_SYNC methods in the sync wrapper
134901  CAN_BE_SYNC.forEach(function(method) {
134902    CookieJar.prototype[method+'Sync'] = syncWrap(method);
134903  });
134904  
134905  module.exports = {
134906    CookieJar: CookieJar,
134907    Cookie: Cookie,
134908    Store: Store,
134909    MemoryCookieStore: MemoryCookieStore,
134910    parseDate: parseDate,
134911    formatDate: formatDate,
134912    parse: parse,
134913    fromJSON: fromJSON,
134914    domainMatch: domainMatch,
134915    defaultPath: defaultPath,
134916    pathMatch: pathMatch,
134917    getPublicSuffix: pubsuffix.getPublicSuffix,
134918    cookieCompare: cookieCompare,
134919    permuteDomain: __webpack_require__(414).permuteDomain,
134920    permutePath: permutePath,
134921    canonicalDomain: canonicalDomain
134922  };
134923  
134924  
134925  /***/ }),
134926  /* 811 */
134927  /***/ (function(module, exports, __webpack_require__) {
134928  
134929  "use strict";
134930  /*!
134931   * Copyright (c) 2015, Salesforce.com, Inc.
134932   * All rights reserved.
134933   *
134934   * Redistribution and use in source and binary forms, with or without
134935   * modification, are permitted provided that the following conditions are met:
134936   *
134937   * 1. Redistributions of source code must retain the above copyright notice,
134938   * this list of conditions and the following disclaimer.
134939   *
134940   * 2. Redistributions in binary form must reproduce the above copyright notice,
134941   * this list of conditions and the following disclaimer in the documentation
134942   * and/or other materials provided with the distribution.
134943   *
134944   * 3. Neither the name of Salesforce.com nor the names of its contributors may
134945   * be used to endorse or promote products derived from this software without
134946   * specific prior written permission.
134947   *
134948   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
134949   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
134950   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
134951   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
134952   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
134953   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
134954   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
134955   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
134956   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
134957   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
134958   * POSSIBILITY OF SUCH DAMAGE.
134959   */
134960  
134961  var Store = __webpack_require__(416).Store;
134962  var permuteDomain = __webpack_require__(414).permuteDomain;
134963  var pathMatch = __webpack_require__(413).pathMatch;
134964  var util = __webpack_require__(3);
134965  
134966  function MemoryCookieStore() {
134967    Store.call(this);
134968    this.idx = {};
134969  }
134970  util.inherits(MemoryCookieStore, Store);
134971  exports.MemoryCookieStore = MemoryCookieStore;
134972  MemoryCookieStore.prototype.idx = null;
134973  
134974  // Since it's just a struct in RAM, this Store is synchronous
134975  MemoryCookieStore.prototype.synchronous = true;
134976  
134977  // force a default depth:
134978  MemoryCookieStore.prototype.inspect = function() {
134979    return "{ idx: "+util.inspect(this.idx, false, 2)+' }';
134980  };
134981  
134982  MemoryCookieStore.prototype.findCookie = function(domain, path, key, cb) {
134983    if (!this.idx[domain]) {
134984      return cb(null,undefined);
134985    }
134986    if (!this.idx[domain][path]) {
134987      return cb(null,undefined);
134988    }
134989    return cb(null,this.idx[domain][path][key]||null);
134990  };
134991  
134992  MemoryCookieStore.prototype.findCookies = function(domain, path, cb) {
134993    var results = [];
134994    if (!domain) {
134995      return cb(null,[]);
134996    }
134997  
134998    var pathMatcher;
134999    if (!path) {
135000      // null means "all paths"
135001      pathMatcher = function matchAll(domainIndex) {
135002        for (var curPath in domainIndex) {
135003          var pathIndex = domainIndex[curPath];
135004          for (var key in pathIndex) {
135005            results.push(pathIndex[key]);
135006          }
135007        }
135008      };
135009  
135010    } else {
135011      pathMatcher = function matchRFC(domainIndex) {
135012         //NOTE: we should use path-match algorithm from S5.1.4 here
135013         //(see : https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/canonical_cookie.cc#L299)
135014         Object.keys(domainIndex).forEach(function (cookiePath) {
135015           if (pathMatch(path, cookiePath)) {
135016             var pathIndex = domainIndex[cookiePath];
135017  
135018             for (var key in pathIndex) {
135019               results.push(pathIndex[key]);
135020             }
135021           }
135022         });
135023       };
135024    }
135025  
135026    var domains = permuteDomain(domain) || [domain];
135027    var idx = this.idx;
135028    domains.forEach(function(curDomain) {
135029      var domainIndex = idx[curDomain];
135030      if (!domainIndex) {
135031        return;
135032      }
135033      pathMatcher(domainIndex);
135034    });
135035  
135036    cb(null,results);
135037  };
135038  
135039  MemoryCookieStore.prototype.putCookie = function(cookie, cb) {
135040    if (!this.idx[cookie.domain]) {
135041      this.idx[cookie.domain] = {};
135042    }
135043    if (!this.idx[cookie.domain][cookie.path]) {
135044      this.idx[cookie.domain][cookie.path] = {};
135045    }
135046    this.idx[cookie.domain][cookie.path][cookie.key] = cookie;
135047    cb(null);
135048  };
135049  
135050  MemoryCookieStore.prototype.updateCookie = function(oldCookie, newCookie, cb) {
135051    // updateCookie() may avoid updating cookies that are identical.  For example,
135052    // lastAccessed may not be important to some stores and an equality
135053    // comparison could exclude that field.
135054    this.putCookie(newCookie,cb);
135055  };
135056  
135057  MemoryCookieStore.prototype.removeCookie = function(domain, path, key, cb) {
135058    if (this.idx[domain] && this.idx[domain][path] && this.idx[domain][path][key]) {
135059      delete this.idx[domain][path][key];
135060    }
135061    cb(null);
135062  };
135063  
135064  MemoryCookieStore.prototype.removeCookies = function(domain, path, cb) {
135065    if (this.idx[domain]) {
135066      if (path) {
135067        delete this.idx[domain][path];
135068      } else {
135069        delete this.idx[domain];
135070      }
135071    }
135072    return cb(null);
135073  };
135074  
135075  MemoryCookieStore.prototype.getAllCookies = function(cb) {
135076    var cookies = [];
135077    var idx = this.idx;
135078  
135079    var domains = Object.keys(idx);
135080    domains.forEach(function(domain) {
135081      var paths = Object.keys(idx[domain]);
135082      paths.forEach(function(path) {
135083        var keys = Object.keys(idx[domain][path]);
135084        keys.forEach(function(key) {
135085          if (key !== null) {
135086            cookies.push(idx[domain][path][key]);
135087          }
135088        });
135089      });
135090    });
135091  
135092    // Sort by creationIndex so deserializing retains the creation order.
135093    // When implementing your own store, this SHOULD retain the order too
135094    cookies.sort(function(a,b) {
135095      return (a.creationIndex||0) - (b.creationIndex||0);
135096    });
135097  
135098    cb(null, cookies);
135099  };
135100  
135101  
135102  /***/ }),
135103  /* 812 */
135104  /***/ (function(module, exports) {
135105  
135106  module.exports = {"author":{"name":"Jeremy Stashewsky","email":"jstashewsky@salesforce.com","website":"https://github.com/stash"},"contributors":[{"name":"Alexander Savin","website":"https://github.com/apsavin"},{"name":"Ian Livingstone","website":"https://github.com/ianlivingstone"},{"name":"Ivan Nikulin","website":"https://github.com/inikulin"},{"name":"Lalit Kapoor","website":"https://github.com/lalitkapoor"},{"name":"Sam Thompson","website":"https://github.com/sambthompson"},{"name":"Sebastian Mayr","website":"https://github.com/Sebmaster"}],"license":"BSD-3-Clause","name":"tough-cookie","description":"RFC6265 Cookies and Cookie Jar for node.js","keywords":["HTTP","cookie","cookies","set-cookie","cookiejar","jar","RFC6265","RFC2965"],"version":"2.3.4","homepage":"https://github.com/salesforce/tough-cookie","repository":{"type":"git","url":"git://github.com/salesforce/tough-cookie.git"},"bugs":{"url":"https://github.com/salesforce/tough-cookie/issues"},"main":"./lib/cookie","files":["lib"],"scripts":{"suffixup":"curl -o public_suffix_list.dat https://publicsuffix.org/list/public_suffix_list.dat && ./generate-pubsuffix.js","test":"vows test/*_test.js"},"engines":{"node":">=0.8"},"devDependencies":{"async":"^1.4.2","string.prototype.repeat":"^0.2.0","vows":"^0.8.1"},"dependencies":{"punycode":"^1.4.1"}}
135107  
135108  /***/ }),
135109  /* 813 */
135110  /***/ (function(module, exports, __webpack_require__) {
135111  
135112  "use strict";
135113  
135114  
135115  var http = __webpack_require__(87)
135116  var https = __webpack_require__(196)
135117  var url = __webpack_require__(24)
135118  var util = __webpack_require__(3)
135119  var stream = __webpack_require__(23)
135120  var zlib = __webpack_require__(199)
135121  var aws2 = __webpack_require__(489)
135122  var aws4 = __webpack_require__(490)
135123  var httpSignature = __webpack_require__(680)
135124  var mime = __webpack_require__(400)
135125  var caseless = __webpack_require__(228)
135126  var ForeverAgent = __webpack_require__(616)
135127  var FormData = __webpack_require__(617)
135128  var extend = __webpack_require__(266)
135129  var isstream = __webpack_require__(399)
135130  var isTypedArray = __webpack_require__(742).strict
135131  var helpers = __webpack_require__(305)
135132  var cookies = __webpack_require__(412)
135133  var getProxyFromURI = __webpack_require__(802)
135134  var Querystring = __webpack_require__(807).Querystring
135135  var Har = __webpack_require__(803).Har
135136  var Auth = __webpack_require__(801).Auth
135137  var OAuth = __webpack_require__(806).OAuth
135138  var hawk = __webpack_require__(804)
135139  var Multipart = __webpack_require__(805).Multipart
135140  var Redirect = __webpack_require__(808).Redirect
135141  var Tunnel = __webpack_require__(809).Tunnel
135142  var now = __webpack_require__(776)
135143  var Buffer = __webpack_require__(45).Buffer
135144  
135145  var safeStringify = helpers.safeStringify
135146  var isReadStream = helpers.isReadStream
135147  var toBase64 = helpers.toBase64
135148  var defer = helpers.defer
135149  var copy = helpers.copy
135150  var version = helpers.version
135151  var globalCookieJar = cookies.jar()
135152  
135153  var globalPool = {}
135154  
135155  function filterForNonReserved (reserved, options) {
135156    // Filter out properties that are not reserved.
135157    // Reserved values are passed in at call site.
135158  
135159    var object = {}
135160    for (var i in options) {
135161      var notReserved = (reserved.indexOf(i) === -1)
135162      if (notReserved) {
135163        object[i] = options[i]
135164      }
135165    }
135166    return object
135167  }
135168  
135169  function filterOutReservedFunctions (reserved, options) {
135170    // Filter out properties that are functions and are reserved.
135171    // Reserved values are passed in at call site.
135172  
135173    var object = {}
135174    for (var i in options) {
135175      var isReserved = !(reserved.indexOf(i) === -1)
135176      var isFunction = (typeof options[i] === 'function')
135177      if (!(isReserved && isFunction)) {
135178        object[i] = options[i]
135179      }
135180    }
135181    return object
135182  }
135183  
135184  // Return a simpler request object to allow serialization
135185  function requestToJSON () {
135186    var self = this
135187    return {
135188      uri: self.uri,
135189      method: self.method,
135190      headers: self.headers
135191    }
135192  }
135193  
135194  // Return a simpler response object to allow serialization
135195  function responseToJSON () {
135196    var self = this
135197    return {
135198      statusCode: self.statusCode,
135199      body: self.body,
135200      headers: self.headers,
135201      request: requestToJSON.call(self.request)
135202    }
135203  }
135204  
135205  function Request (options) {
135206    // if given the method property in options, set property explicitMethod to true
135207  
135208    // extend the Request instance with any non-reserved properties
135209    // remove any reserved functions from the options object
135210    // set Request instance to be readable and writable
135211    // call init
135212  
135213    var self = this
135214  
135215    // start with HAR, then override with additional options
135216    if (options.har) {
135217      self._har = new Har(self)
135218      options = self._har.options(options)
135219    }
135220  
135221    stream.Stream.call(self)
135222    var reserved = Object.keys(Request.prototype)
135223    var nonReserved = filterForNonReserved(reserved, options)
135224  
135225    extend(self, nonReserved)
135226    options = filterOutReservedFunctions(reserved, options)
135227  
135228    self.readable = true
135229    self.writable = true
135230    if (options.method) {
135231      self.explicitMethod = true
135232    }
135233    self._qs = new Querystring(self)
135234    self._auth = new Auth(self)
135235    self._oauth = new OAuth(self)
135236    self._multipart = new Multipart(self)
135237    self._redirect = new Redirect(self)
135238    self._tunnel = new Tunnel(self)
135239    self.init(options)
135240  }
135241  
135242  util.inherits(Request, stream.Stream)
135243  
135244  // Debugging
135245  Request.debug = process.env.NODE_DEBUG && /\brequest\b/.test(process.env.NODE_DEBUG)
135246  function debug () {
135247    if (Request.debug) {
135248      console.error('REQUEST %s', util.format.apply(util, arguments))
135249    }
135250  }
135251  Request.prototype.debug = debug
135252  
135253  Request.prototype.init = function (options) {
135254    // init() contains all the code to setup the request object.
135255    // the actual outgoing request is not started until start() is called
135256    // this function is called from both the constructor and on redirect.
135257    var self = this
135258    if (!options) {
135259      options = {}
135260    }
135261    self.headers = self.headers ? copy(self.headers) : {}
135262  
135263    // Delete headers with value undefined since they break
135264    // ClientRequest.OutgoingMessage.setHeader in node 0.12
135265    for (var headerName in self.headers) {
135266      if (typeof self.headers[headerName] === 'undefined') {
135267        delete self.headers[headerName]
135268      }
135269    }
135270  
135271    caseless.httpify(self, self.headers)
135272  
135273    if (!self.method) {
135274      self.method = options.method || 'GET'
135275    }
135276    if (!self.localAddress) {
135277      self.localAddress = options.localAddress
135278    }
135279  
135280    self._qs.init(options)
135281  
135282    debug(options)
135283    if (!self.pool && self.pool !== false) {
135284      self.pool = globalPool
135285    }
135286    self.dests = self.dests || []
135287    self.__isRequestRequest = true
135288  
135289    // Protect against double callback
135290    if (!self._callback && self.callback) {
135291      self._callback = self.callback
135292      self.callback = function () {
135293        if (self._callbackCalled) {
135294          return // Print a warning maybe?
135295        }
135296        self._callbackCalled = true
135297        self._callback.apply(self, arguments)
135298      }
135299      self.on('error', self.callback.bind())
135300      self.on('complete', self.callback.bind(self, null))
135301    }
135302  
135303    // People use this property instead all the time, so support it
135304    if (!self.uri && self.url) {
135305      self.uri = self.url
135306      delete self.url
135307    }
135308  
135309    // If there's a baseUrl, then use it as the base URL (i.e. uri must be
135310    // specified as a relative path and is appended to baseUrl).
135311    if (self.baseUrl) {
135312      if (typeof self.baseUrl !== 'string') {
135313        return self.emit('error', new Error('options.baseUrl must be a string'))
135314      }
135315  
135316      if (typeof self.uri !== 'string') {
135317        return self.emit('error', new Error('options.uri must be a string when using options.baseUrl'))
135318      }
135319  
135320      if (self.uri.indexOf('//') === 0 || self.uri.indexOf('://') !== -1) {
135321        return self.emit('error', new Error('options.uri must be a path when using options.baseUrl'))
135322      }
135323  
135324      // Handle all cases to make sure that there's only one slash between
135325      // baseUrl and uri.
135326      var baseUrlEndsWithSlash = self.baseUrl.lastIndexOf('/') === self.baseUrl.length - 1
135327      var uriStartsWithSlash = self.uri.indexOf('/') === 0
135328  
135329      if (baseUrlEndsWithSlash && uriStartsWithSlash) {
135330        self.uri = self.baseUrl + self.uri.slice(1)
135331      } else if (baseUrlEndsWithSlash || uriStartsWithSlash) {
135332        self.uri = self.baseUrl + self.uri
135333      } else if (self.uri === '') {
135334        self.uri = self.baseUrl
135335      } else {
135336        self.uri = self.baseUrl + '/' + self.uri
135337      }
135338      delete self.baseUrl
135339    }
135340  
135341    // A URI is needed by this point, emit error if we haven't been able to get one
135342    if (!self.uri) {
135343      return self.emit('error', new Error('options.uri is a required argument'))
135344    }
135345  
135346    // If a string URI/URL was given, parse it into a URL object
135347    if (typeof self.uri === 'string') {
135348      self.uri = url.parse(self.uri)
135349    }
135350  
135351    // Some URL objects are not from a URL parsed string and need href added
135352    if (!self.uri.href) {
135353      self.uri.href = url.format(self.uri)
135354    }
135355  
135356    // DEPRECATED: Warning for users of the old Unix Sockets URL Scheme
135357    if (self.uri.protocol === 'unix:') {
135358      return self.emit('error', new Error('`unix://` URL scheme is no longer supported. Please use the format `http://unix:SOCKET:PATH`'))
135359    }
135360  
135361    // Support Unix Sockets
135362    if (self.uri.host === 'unix') {
135363      self.enableUnixSocket()
135364    }
135365  
135366    if (self.strictSSL === false) {
135367      self.rejectUnauthorized = false
135368    }
135369  
135370    if (!self.uri.pathname) { self.uri.pathname = '/' }
135371  
135372    if (!(self.uri.host || (self.uri.hostname && self.uri.port)) && !self.uri.isUnix) {
135373      // Invalid URI: it may generate lot of bad errors, like 'TypeError: Cannot call method `indexOf` of undefined' in CookieJar
135374      // Detect and reject it as soon as possible
135375      var faultyUri = url.format(self.uri)
135376      var message = 'Invalid URI "' + faultyUri + '"'
135377      if (Object.keys(options).length === 0) {
135378        // No option ? This can be the sign of a redirect
135379        // As this is a case where the user cannot do anything (they didn't call request directly with this URL)
135380        // they should be warned that it can be caused by a redirection (can save some hair)
135381        message += '. This can be caused by a crappy redirection.'
135382      }
135383      // This error was fatal
135384      self.abort()
135385      return self.emit('error', new Error(message))
135386    }
135387  
135388    if (!self.hasOwnProperty('proxy')) {
135389      self.proxy = getProxyFromURI(self.uri)
135390    }
135391  
135392    self.tunnel = self._tunnel.isEnabled()
135393    if (self.proxy) {
135394      self._tunnel.setup(options)
135395    }
135396  
135397    self._redirect.onRequest(options)
135398  
135399    self.setHost = false
135400    if (!self.hasHeader('host')) {
135401      var hostHeaderName = self.originalHostHeaderName || 'host'
135402      // When used with an IPv6 address, `host` will provide
135403      // the correct bracketed format, unlike using `hostname` and
135404      // optionally adding the `port` when necessary.
135405      self.setHeader(hostHeaderName, self.uri.host)
135406      self.setHost = true
135407    }
135408  
135409    self.jar(self._jar || options.jar)
135410  
135411    if (!self.uri.port) {
135412      if (self.uri.protocol === 'http:') { self.uri.port = 80 } else if (self.uri.protocol === 'https:') { self.uri.port = 443 }
135413    }
135414  
135415    if (self.proxy && !self.tunnel) {
135416      self.port = self.proxy.port
135417      self.host = self.proxy.hostname
135418    } else {
135419      self.port = self.uri.port
135420      self.host = self.uri.hostname
135421    }
135422  
135423    if (options.form) {
135424      self.form(options.form)
135425    }
135426  
135427    if (options.formData) {
135428      var formData = options.formData
135429      var requestForm = self.form()
135430      var appendFormValue = function (key, value) {
135431        if (value && value.hasOwnProperty('value') && value.hasOwnProperty('options')) {
135432          requestForm.append(key, value.value, value.options)
135433        } else {
135434          requestForm.append(key, value)
135435        }
135436      }
135437      for (var formKey in formData) {
135438        if (formData.hasOwnProperty(formKey)) {
135439          var formValue = formData[formKey]
135440          if (formValue instanceof Array) {
135441            for (var j = 0; j < formValue.length; j++) {
135442              appendFormValue(formKey, formValue[j])
135443            }
135444          } else {
135445            appendFormValue(formKey, formValue)
135446          }
135447        }
135448      }
135449    }
135450  
135451    if (options.qs) {
135452      self.qs(options.qs)
135453    }
135454  
135455    if (self.uri.path) {
135456      self.path = self.uri.path
135457    } else {
135458      self.path = self.uri.pathname + (self.uri.search || '')
135459    }
135460  
135461    if (self.path.length === 0) {
135462      self.path = '/'
135463    }
135464  
135465    // Auth must happen last in case signing is dependent on other headers
135466    if (options.aws) {
135467      self.aws(options.aws)
135468    }
135469  
135470    if (options.hawk) {
135471      self.hawk(options.hawk)
135472    }
135473  
135474    if (options.httpSignature) {
135475      self.httpSignature(options.httpSignature)
135476    }
135477  
135478    if (options.auth) {
135479      if (Object.prototype.hasOwnProperty.call(options.auth, 'username')) {
135480        options.auth.user = options.auth.username
135481      }
135482      if (Object.prototype.hasOwnProperty.call(options.auth, 'password')) {
135483        options.auth.pass = options.auth.password
135484      }
135485  
135486      self.auth(
135487        options.auth.user,
135488        options.auth.pass,
135489        options.auth.sendImmediately,
135490        options.auth.bearer
135491      )
135492    }
135493  
135494    if (self.gzip && !self.hasHeader('accept-encoding')) {
135495      self.setHeader('accept-encoding', 'gzip, deflate')
135496    }
135497  
135498    if (self.uri.auth && !self.hasHeader('authorization')) {
135499      var uriAuthPieces = self.uri.auth.split(':').map(function (item) { return self._qs.unescape(item) })
135500      self.auth(uriAuthPieces[0], uriAuthPieces.slice(1).join(':'), true)
135501    }
135502  
135503    if (!self.tunnel && self.proxy && self.proxy.auth && !self.hasHeader('proxy-authorization')) {
135504      var proxyAuthPieces = self.proxy.auth.split(':').map(function (item) { return self._qs.unescape(item) })
135505      var authHeader = 'Basic ' + toBase64(proxyAuthPieces.join(':'))
135506      self.setHeader('proxy-authorization', authHeader)
135507    }
135508  
135509    if (self.proxy && !self.tunnel) {
135510      self.path = (self.uri.protocol + '//' + self.uri.host + self.path)
135511    }
135512  
135513    if (options.json) {
135514      self.json(options.json)
135515    }
135516    if (options.multipart) {
135517      self.multipart(options.multipart)
135518    }
135519  
135520    if (options.time) {
135521      self.timing = true
135522  
135523      // NOTE: elapsedTime is deprecated in favor of .timings
135524      self.elapsedTime = self.elapsedTime || 0
135525    }
135526  
135527    function setContentLength () {
135528      if (isTypedArray(self.body)) {
135529        self.body = Buffer.from(self.body)
135530      }
135531  
135532      if (!self.hasHeader('content-length')) {
135533        var length
135534        if (typeof self.body === 'string') {
135535          length = Buffer.byteLength(self.body)
135536        } else if (Array.isArray(self.body)) {
135537          length = self.body.reduce(function (a, b) { return a + b.length }, 0)
135538        } else {
135539          length = self.body.length
135540        }
135541  
135542        if (length) {
135543          self.setHeader('content-length', length)
135544        } else {
135545          self.emit('error', new Error('Argument error, options.body.'))
135546        }
135547      }
135548    }
135549    if (self.body && !isstream(self.body)) {
135550      setContentLength()
135551    }
135552  
135553    if (options.oauth) {
135554      self.oauth(options.oauth)
135555    } else if (self._oauth.params && self.hasHeader('authorization')) {
135556      self.oauth(self._oauth.params)
135557    }
135558  
135559    var protocol = self.proxy && !self.tunnel ? self.proxy.protocol : self.uri.protocol
135560    var defaultModules = {'http:': http, 'https:': https}
135561    var httpModules = self.httpModules || {}
135562  
135563    self.httpModule = httpModules[protocol] || defaultModules[protocol]
135564  
135565    if (!self.httpModule) {
135566      return self.emit('error', new Error('Invalid protocol: ' + protocol))
135567    }
135568  
135569    if (options.ca) {
135570      self.ca = options.ca
135571    }
135572  
135573    if (!self.agent) {
135574      if (options.agentOptions) {
135575        self.agentOptions = options.agentOptions
135576      }
135577  
135578      if (options.agentClass) {
135579        self.agentClass = options.agentClass
135580      } else if (options.forever) {
135581        var v = version()
135582        // use ForeverAgent in node 0.10- only
135583        if (v.major === 0 && v.minor <= 10) {
135584          self.agentClass = protocol === 'http:' ? ForeverAgent : ForeverAgent.SSL
135585        } else {
135586          self.agentClass = self.httpModule.Agent
135587          self.agentOptions = self.agentOptions || {}
135588          self.agentOptions.keepAlive = true
135589        }
135590      } else {
135591        self.agentClass = self.httpModule.Agent
135592      }
135593    }
135594  
135595    if (self.pool === false) {
135596      self.agent = false
135597    } else {
135598      self.agent = self.agent || self.getNewAgent()
135599    }
135600  
135601    self.on('pipe', function (src) {
135602      if (self.ntick && self._started) {
135603        self.emit('error', new Error('You cannot pipe to this stream after the outbound request has started.'))
135604      }
135605      self.src = src
135606      if (isReadStream(src)) {
135607        if (!self.hasHeader('content-type')) {
135608          self.setHeader('content-type', mime.lookup(src.path))
135609        }
135610      } else {
135611        if (src.headers) {
135612          for (var i in src.headers) {
135613            if (!self.hasHeader(i)) {
135614              self.setHeader(i, src.headers[i])
135615            }
135616          }
135617        }
135618        if (self._json && !self.hasHeader('content-type')) {
135619          self.setHeader('content-type', 'application/json')
135620        }
135621        if (src.method && !self.explicitMethod) {
135622          self.method = src.method
135623        }
135624      }
135625  
135626    // self.on('pipe', function () {
135627    //   console.error('You have already piped to this stream. Pipeing twice is likely to break the request.')
135628    // })
135629    })
135630  
135631    defer(function () {
135632      if (self._aborted) {
135633        return
135634      }
135635  
135636      var end = function () {
135637        if (self._form) {
135638          if (!self._auth.hasAuth) {
135639            self._form.pipe(self)
135640          } else if (self._auth.hasAuth && self._auth.sentAuth) {
135641            self._form.pipe(self)
135642          }
135643        }
135644        if (self._multipart && self._multipart.chunked) {
135645          self._multipart.body.pipe(self)
135646        }
135647        if (self.body) {
135648          if (isstream(self.body)) {
135649            self.body.pipe(self)
135650          } else {
135651            setContentLength()
135652            if (Array.isArray(self.body)) {
135653              self.body.forEach(function (part) {
135654                self.write(part)
135655              })
135656            } else {
135657              self.write(self.body)
135658            }
135659            self.end()
135660          }
135661        } else if (self.requestBodyStream) {
135662          console.warn('options.requestBodyStream is deprecated, please pass the request object to stream.pipe.')
135663          self.requestBodyStream.pipe(self)
135664        } else if (!self.src) {
135665          if (self._auth.hasAuth && !self._auth.sentAuth) {
135666            self.end()
135667            return
135668          }
135669          if (self.method !== 'GET' && typeof self.method !== 'undefined') {
135670            self.setHeader('content-length', 0)
135671          }
135672          self.end()
135673        }
135674      }
135675  
135676      if (self._form && !self.hasHeader('content-length')) {
135677        // Before ending the request, we had to compute the length of the whole form, asyncly
135678        self.setHeader(self._form.getHeaders(), true)
135679        self._form.getLength(function (err, length) {
135680          if (!err && !isNaN(length)) {
135681            self.setHeader('content-length', length)
135682          }
135683          end()
135684        })
135685      } else {
135686        end()
135687      }
135688  
135689      self.ntick = true
135690    })
135691  }
135692  
135693  Request.prototype.getNewAgent = function () {
135694    var self = this
135695    var Agent = self.agentClass
135696    var options = {}
135697    if (self.agentOptions) {
135698      for (var i in self.agentOptions) {
135699        options[i] = self.agentOptions[i]
135700      }
135701    }
135702    if (self.ca) {
135703      options.ca = self.ca
135704    }
135705    if (self.ciphers) {
135706      options.ciphers = self.ciphers
135707    }
135708    if (self.secureProtocol) {
135709      options.secureProtocol = self.secureProtocol
135710    }
135711    if (self.secureOptions) {
135712      options.secureOptions = self.secureOptions
135713    }
135714    if (typeof self.rejectUnauthorized !== 'undefined') {
135715      options.rejectUnauthorized = self.rejectUnauthorized
135716    }
135717  
135718    if (self.cert && self.key) {
135719      options.key = self.key
135720      options.cert = self.cert
135721    }
135722  
135723    if (self.pfx) {
135724      options.pfx = self.pfx
135725    }
135726  
135727    if (self.passphrase) {
135728      options.passphrase = self.passphrase
135729    }
135730  
135731    var poolKey = ''
135732  
135733    // different types of agents are in different pools
135734    if (Agent !== self.httpModule.Agent) {
135735      poolKey += Agent.name
135736    }
135737  
135738    // ca option is only relevant if proxy or destination are https
135739    var proxy = self.proxy
135740    if (typeof proxy === 'string') {
135741      proxy = url.parse(proxy)
135742    }
135743    var isHttps = (proxy && proxy.protocol === 'https:') || this.uri.protocol === 'https:'
135744  
135745    if (isHttps) {
135746      if (options.ca) {
135747        if (poolKey) {
135748          poolKey += ':'
135749        }
135750        poolKey += options.ca
135751      }
135752  
135753      if (typeof options.rejectUnauthorized !== 'undefined') {
135754        if (poolKey) {
135755          poolKey += ':'
135756        }
135757        poolKey += options.rejectUnauthorized
135758      }
135759  
135760      if (options.cert) {
135761        if (poolKey) {
135762          poolKey += ':'
135763        }
135764        poolKey += options.cert.toString('ascii') + options.key.toString('ascii')
135765      }
135766  
135767      if (options.pfx) {
135768        if (poolKey) {
135769          poolKey += ':'
135770        }
135771        poolKey += options.pfx.toString('ascii')
135772      }
135773  
135774      if (options.ciphers) {
135775        if (poolKey) {
135776          poolKey += ':'
135777        }
135778        poolKey += options.ciphers
135779      }
135780  
135781      if (options.secureProtocol) {
135782        if (poolKey) {
135783          poolKey += ':'
135784        }
135785        poolKey += options.secureProtocol
135786      }
135787  
135788      if (options.secureOptions) {
135789        if (poolKey) {
135790          poolKey += ':'
135791        }
135792        poolKey += options.secureOptions
135793      }
135794    }
135795  
135796    if (self.pool === globalPool && !poolKey && Object.keys(options).length === 0 && self.httpModule.globalAgent) {
135797      // not doing anything special.  Use the globalAgent
135798      return self.httpModule.globalAgent
135799    }
135800  
135801    // we're using a stored agent.  Make sure it's protocol-specific
135802    poolKey = self.uri.protocol + poolKey
135803  
135804    // generate a new agent for this setting if none yet exists
135805    if (!self.pool[poolKey]) {
135806      self.pool[poolKey] = new Agent(options)
135807      // properly set maxSockets on new agents
135808      if (self.pool.maxSockets) {
135809        self.pool[poolKey].maxSockets = self.pool.maxSockets
135810      }
135811    }
135812  
135813    return self.pool[poolKey]
135814  }
135815  
135816  Request.prototype.start = function () {
135817    // start() is called once we are ready to send the outgoing HTTP request.
135818    // this is usually called on the first write(), end() or on nextTick()
135819    var self = this
135820  
135821    if (self.timing) {
135822      // All timings will be relative to this request's startTime.  In order to do this,
135823      // we need to capture the wall-clock start time (via Date), immediately followed
135824      // by the high-resolution timer (via now()).  While these two won't be set
135825      // at the _exact_ same time, they should be close enough to be able to calculate
135826      // high-resolution, monotonically non-decreasing timestamps relative to startTime.
135827      var startTime = new Date().getTime()
135828      var startTimeNow = now()
135829    }
135830  
135831    if (self._aborted) {
135832      return
135833    }
135834  
135835    self._started = true
135836    self.method = self.method || 'GET'
135837    self.href = self.uri.href
135838  
135839    if (self.src && self.src.stat && self.src.stat.size && !self.hasHeader('content-length')) {
135840      self.setHeader('content-length', self.src.stat.size)
135841    }
135842    if (self._aws) {
135843      self.aws(self._aws, true)
135844    }
135845  
135846    // We have a method named auth, which is completely different from the http.request
135847    // auth option.  If we don't remove it, we're gonna have a bad time.
135848    var reqOptions = copy(self)
135849    delete reqOptions.auth
135850  
135851    debug('make request', self.uri.href)
135852  
135853    // node v6.8.0 now supports a `timeout` value in `http.request()`, but we
135854    // should delete it for now since we handle timeouts manually for better
135855    // consistency with node versions before v6.8.0
135856    delete reqOptions.timeout
135857  
135858    try {
135859      self.req = self.httpModule.request(reqOptions)
135860    } catch (err) {
135861      self.emit('error', err)
135862      return
135863    }
135864  
135865    if (self.timing) {
135866      self.startTime = startTime
135867      self.startTimeNow = startTimeNow
135868  
135869      // Timing values will all be relative to startTime (by comparing to startTimeNow
135870      // so we have an accurate clock)
135871      self.timings = {}
135872    }
135873  
135874    var timeout
135875    if (self.timeout && !self.timeoutTimer) {
135876      if (self.timeout < 0) {
135877        timeout = 0
135878      } else if (typeof self.timeout === 'number' && isFinite(self.timeout)) {
135879        timeout = self.timeout
135880      }
135881    }
135882  
135883    self.req.on('response', self.onRequestResponse.bind(self))
135884    self.req.on('error', self.onRequestError.bind(self))
135885    self.req.on('drain', function () {
135886      self.emit('drain')
135887    })
135888  
135889    self.req.on('socket', function (socket) {
135890      // `._connecting` was the old property which was made public in node v6.1.0
135891      var isConnecting = socket._connecting || socket.connecting
135892      if (self.timing) {
135893        self.timings.socket = now() - self.startTimeNow
135894  
135895        if (isConnecting) {
135896          var onLookupTiming = function () {
135897            self.timings.lookup = now() - self.startTimeNow
135898          }
135899  
135900          var onConnectTiming = function () {
135901            self.timings.connect = now() - self.startTimeNow
135902          }
135903  
135904          socket.once('lookup', onLookupTiming)
135905          socket.once('connect', onConnectTiming)
135906  
135907          // clean up timing event listeners if needed on error
135908          self.req.once('error', function () {
135909            socket.removeListener('lookup', onLookupTiming)
135910            socket.removeListener('connect', onConnectTiming)
135911          })
135912        }
135913      }
135914  
135915      var setReqTimeout = function () {
135916        // This timeout sets the amount of time to wait *between* bytes sent
135917        // from the server once connected.
135918        //
135919        // In particular, it's useful for erroring if the server fails to send
135920        // data halfway through streaming a response.
135921        self.req.setTimeout(timeout, function () {
135922          if (self.req) {
135923            self.abort()
135924            var e = new Error('ESOCKETTIMEDOUT')
135925            e.code = 'ESOCKETTIMEDOUT'
135926            e.connect = false
135927            self.emit('error', e)
135928          }
135929        })
135930      }
135931      if (timeout !== undefined) {
135932        // Only start the connection timer if we're actually connecting a new
135933        // socket, otherwise if we're already connected (because this is a
135934        // keep-alive connection) do not bother. This is important since we won't
135935        // get a 'connect' event for an already connected socket.
135936        if (isConnecting) {
135937          var onReqSockConnect = function () {
135938            socket.removeListener('connect', onReqSockConnect)
135939            clearTimeout(self.timeoutTimer)
135940            self.timeoutTimer = null
135941            setReqTimeout()
135942          }
135943  
135944          socket.on('connect', onReqSockConnect)
135945  
135946          self.req.on('error', function (err) { // eslint-disable-line handle-callback-err
135947            socket.removeListener('connect', onReqSockConnect)
135948          })
135949  
135950          // Set a timeout in memory - this block will throw if the server takes more
135951          // than `timeout` to write the HTTP status and headers (corresponding to
135952          // the on('response') event on the client). NB: this measures wall-clock
135953          // time, not the time between bytes sent by the server.
135954          self.timeoutTimer = setTimeout(function () {
135955            socket.removeListener('connect', onReqSockConnect)
135956            self.abort()
135957            var e = new Error('ETIMEDOUT')
135958            e.code = 'ETIMEDOUT'
135959            e.connect = true
135960            self.emit('error', e)
135961          }, timeout)
135962        } else {
135963          // We're already connected
135964          setReqTimeout()
135965        }
135966      }
135967      self.emit('socket', socket)
135968    })
135969  
135970    self.emit('request', self.req)
135971  }
135972  
135973  Request.prototype.onRequestError = function (error) {
135974    var self = this
135975    if (self._aborted) {
135976      return
135977    }
135978    if (self.req && self.req._reusedSocket && error.code === 'ECONNRESET' &&
135979      self.agent.addRequestNoreuse) {
135980      self.agent = { addRequest: self.agent.addRequestNoreuse.bind(self.agent) }
135981      self.start()
135982      self.req.end()
135983      return
135984    }
135985    if (self.timeout && self.timeoutTimer) {
135986      clearTimeout(self.timeoutTimer)
135987      self.timeoutTimer = null
135988    }
135989    self.emit('error', error)
135990  }
135991  
135992  Request.prototype.onRequestResponse = function (response) {
135993    var self = this
135994  
135995    if (self.timing) {
135996      self.timings.response = now() - self.startTimeNow
135997    }
135998  
135999    debug('onRequestResponse', self.uri.href, response.statusCode, response.headers)
136000    response.on('end', function () {
136001      if (self.timing) {
136002        self.timings.end = now() - self.startTimeNow
136003        response.timingStart = self.startTime
136004  
136005        // fill in the blanks for any periods that didn't trigger, such as
136006        // no lookup or connect due to keep alive
136007        if (!self.timings.socket) {
136008          self.timings.socket = 0
136009        }
136010        if (!self.timings.lookup) {
136011          self.timings.lookup = self.timings.socket
136012        }
136013        if (!self.timings.connect) {
136014          self.timings.connect = self.timings.lookup
136015        }
136016        if (!self.timings.response) {
136017          self.timings.response = self.timings.connect
136018        }
136019  
136020        debug('elapsed time', self.timings.end)
136021  
136022        // elapsedTime includes all redirects
136023        self.elapsedTime += Math.round(self.timings.end)
136024  
136025        // NOTE: elapsedTime is deprecated in favor of .timings
136026        response.elapsedTime = self.elapsedTime
136027  
136028        // timings is just for the final fetch
136029        response.timings = self.timings
136030  
136031        // pre-calculate phase timings as well
136032        response.timingPhases = {
136033          wait: self.timings.socket,
136034          dns: self.timings.lookup - self.timings.socket,
136035          tcp: self.timings.connect - self.timings.lookup,
136036          firstByte: self.timings.response - self.timings.connect,
136037          download: self.timings.end - self.timings.response,
136038          total: self.timings.end
136039        }
136040      }
136041      debug('response end', self.uri.href, response.statusCode, response.headers)
136042    })
136043  
136044    if (self._aborted) {
136045      debug('aborted', self.uri.href)
136046      response.resume()
136047      return
136048    }
136049  
136050    self.response = response
136051    response.request = self
136052    response.toJSON = responseToJSON
136053  
136054    // XXX This is different on 0.10, because SSL is strict by default
136055    if (self.httpModule === https &&
136056      self.strictSSL && (!response.hasOwnProperty('socket') ||
136057      !response.socket.authorized)) {
136058      debug('strict ssl error', self.uri.href)
136059      var sslErr = response.hasOwnProperty('socket') ? response.socket.authorizationError : self.uri.href + ' does not support SSL'
136060      self.emit('error', new Error('SSL Error: ' + sslErr))
136061      return
136062    }
136063  
136064    // Save the original host before any redirect (if it changes, we need to
136065    // remove any authorization headers).  Also remember the case of the header
136066    // name because lots of broken servers expect Host instead of host and we
136067    // want the caller to be able to specify this.
136068    self.originalHost = self.getHeader('host')
136069    if (!self.originalHostHeaderName) {
136070      self.originalHostHeaderName = self.hasHeader('host')
136071    }
136072    if (self.setHost) {
136073      self.removeHeader('host')
136074    }
136075    if (self.timeout && self.timeoutTimer) {
136076      clearTimeout(self.timeoutTimer)
136077      self.timeoutTimer = null
136078    }
136079  
136080    var targetCookieJar = (self._jar && self._jar.setCookie) ? self._jar : globalCookieJar
136081    var addCookie = function (cookie) {
136082      // set the cookie if it's domain in the href's domain.
136083      try {
136084        targetCookieJar.setCookie(cookie, self.uri.href, {ignoreError: true})
136085      } catch (e) {
136086        self.emit('error', e)
136087      }
136088    }
136089  
136090    response.caseless = caseless(response.headers)
136091  
136092    if (response.caseless.has('set-cookie') && (!self._disableCookies)) {
136093      var headerName = response.caseless.has('set-cookie')
136094      if (Array.isArray(response.headers[headerName])) {
136095        response.headers[headerName].forEach(addCookie)
136096      } else {
136097        addCookie(response.headers[headerName])
136098      }
136099    }
136100  
136101    if (self._redirect.onResponse(response)) {
136102      return // Ignore the rest of the response
136103    } else {
136104      // Be a good stream and emit end when the response is finished.
136105      // Hack to emit end on close because of a core bug that never fires end
136106      response.on('close', function () {
136107        if (!self._ended) {
136108          self.response.emit('end')
136109        }
136110      })
136111  
136112      response.once('end', function () {
136113        self._ended = true
136114      })
136115  
136116      var noBody = function (code) {
136117        return (
136118          self.method === 'HEAD' ||
136119          // Informational
136120          (code >= 100 && code < 200) ||
136121          // No Content
136122          code === 204 ||
136123          // Not Modified
136124          code === 304
136125        )
136126      }
136127  
136128      var responseContent
136129      if (self.gzip && !noBody(response.statusCode)) {
136130        var contentEncoding = response.headers['content-encoding'] || 'identity'
136131        contentEncoding = contentEncoding.trim().toLowerCase()
136132  
136133        // Be more lenient with decoding compressed responses, since (very rarely)
136134        // servers send slightly invalid gzip responses that are still accepted
136135        // by common browsers.
136136        // Always using Z_SYNC_FLUSH is what cURL does.
136137        var zlibOptions = {
136138          flush: zlib.Z_SYNC_FLUSH,
136139          finishFlush: zlib.Z_SYNC_FLUSH
136140        }
136141  
136142        if (contentEncoding === 'gzip') {
136143          responseContent = zlib.createGunzip(zlibOptions)
136144          response.pipe(responseContent)
136145        } else if (contentEncoding === 'deflate') {
136146          responseContent = zlib.createInflate(zlibOptions)
136147          response.pipe(responseContent)
136148        } else {
136149          // Since previous versions didn't check for Content-Encoding header,
136150          // ignore any invalid values to preserve backwards-compatibility
136151          if (contentEncoding !== 'identity') {
136152            debug('ignoring unrecognized Content-Encoding ' + contentEncoding)
136153          }
136154          responseContent = response
136155        }
136156      } else {
136157        responseContent = response
136158      }
136159  
136160      if (self.encoding) {
136161        if (self.dests.length !== 0) {
136162          console.error('Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.')
136163        } else {
136164          responseContent.setEncoding(self.encoding)
136165        }
136166      }
136167  
136168      if (self._paused) {
136169        responseContent.pause()
136170      }
136171  
136172      self.responseContent = responseContent
136173  
136174      self.emit('response', response)
136175  
136176      self.dests.forEach(function (dest) {
136177        self.pipeDest(dest)
136178      })
136179  
136180      responseContent.on('data', function (chunk) {
136181        if (self.timing && !self.responseStarted) {
136182          self.responseStartTime = (new Date()).getTime()
136183  
136184          // NOTE: responseStartTime is deprecated in favor of .timings
136185          response.responseStartTime = self.responseStartTime
136186        }
136187        self._destdata = true
136188        self.emit('data', chunk)
136189      })
136190      responseContent.once('end', function (chunk) {
136191        self.emit('end', chunk)
136192      })
136193      responseContent.on('error', function (error) {
136194        self.emit('error', error)
136195      })
136196      responseContent.on('close', function () { self.emit('close') })
136197  
136198      if (self.callback) {
136199        self.readResponseBody(response)
136200      } else { // if no callback
136201        self.on('end', function () {
136202          if (self._aborted) {
136203            debug('aborted', self.uri.href)
136204            return
136205          }
136206          self.emit('complete', response)
136207        })
136208      }
136209    }
136210    debug('finish init function', self.uri.href)
136211  }
136212  
136213  Request.prototype.readResponseBody = function (response) {
136214    var self = this
136215    debug("reading response's body")
136216    var buffers = []
136217    var bufferLength = 0
136218    var strings = []
136219  
136220    self.on('data', function (chunk) {
136221      if (!Buffer.isBuffer(chunk)) {
136222        strings.push(chunk)
136223      } else if (chunk.length) {
136224        bufferLength += chunk.length
136225        buffers.push(chunk)
136226      }
136227    })
136228    self.on('end', function () {
136229      debug('end event', self.uri.href)
136230      if (self._aborted) {
136231        debug('aborted', self.uri.href)
136232        // `buffer` is defined in the parent scope and used in a closure it exists for the life of the request.
136233        // This can lead to leaky behavior if the user retains a reference to the request object.
136234        buffers = []
136235        bufferLength = 0
136236        return
136237      }
136238  
136239      if (bufferLength) {
136240        debug('has body', self.uri.href, bufferLength)
136241        response.body = Buffer.concat(buffers, bufferLength)
136242        if (self.encoding !== null) {
136243          response.body = response.body.toString(self.encoding)
136244        }
136245        // `buffer` is defined in the parent scope and used in a closure it exists for the life of the Request.
136246        // This can lead to leaky behavior if the user retains a reference to the request object.
136247        buffers = []
136248        bufferLength = 0
136249      } else if (strings.length) {
136250        // The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation.
136251        // Strip this value out when the encoding is set to 'utf8', as upstream consumers won't expect it and it breaks JSON.parse().
136252        if (self.encoding === 'utf8' && strings[0].length > 0 && strings[0][0] === '\uFEFF') {
136253          strings[0] = strings[0].substring(1)
136254        }
136255        response.body = strings.join('')
136256      }
136257  
136258      if (self._json) {
136259        try {
136260          response.body = JSON.parse(response.body, self._jsonReviver)
136261        } catch (e) {
136262          debug('invalid JSON received', self.uri.href)
136263        }
136264      }
136265      debug('emitting complete', self.uri.href)
136266      if (typeof response.body === 'undefined' && !self._json) {
136267        response.body = self.encoding === null ? Buffer.alloc(0) : ''
136268      }
136269      self.emit('complete', response, response.body)
136270    })
136271  }
136272  
136273  Request.prototype.abort = function () {
136274    var self = this
136275    self._aborted = true
136276  
136277    if (self.req) {
136278      self.req.abort()
136279    } else if (self.response) {
136280      self.response.destroy()
136281    }
136282  
136283    self.emit('abort')
136284  }
136285  
136286  Request.prototype.pipeDest = function (dest) {
136287    var self = this
136288    var response = self.response
136289    // Called after the response is received
136290    if (dest.headers && !dest.headersSent) {
136291      if (response.caseless.has('content-type')) {
136292        var ctname = response.caseless.has('content-type')
136293        if (dest.setHeader) {
136294          dest.setHeader(ctname, response.headers[ctname])
136295        } else {
136296          dest.headers[ctname] = response.headers[ctname]
136297        }
136298      }
136299  
136300      if (response.caseless.has('content-length')) {
136301        var clname = response.caseless.has('content-length')
136302        if (dest.setHeader) {
136303          dest.setHeader(clname, response.headers[clname])
136304        } else {
136305          dest.headers[clname] = response.headers[clname]
136306        }
136307      }
136308    }
136309    if (dest.setHeader && !dest.headersSent) {
136310      for (var i in response.headers) {
136311        // If the response content is being decoded, the Content-Encoding header
136312        // of the response doesn't represent the piped content, so don't pass it.
136313        if (!self.gzip || i !== 'content-encoding') {
136314          dest.setHeader(i, response.headers[i])
136315        }
136316      }
136317      dest.statusCode = response.statusCode
136318    }
136319    if (self.pipefilter) {
136320      self.pipefilter(response, dest)
136321    }
136322  }
136323  
136324  Request.prototype.qs = function (q, clobber) {
136325    var self = this
136326    var base
136327    if (!clobber && self.uri.query) {
136328      base = self._qs.parse(self.uri.query)
136329    } else {
136330      base = {}
136331    }
136332  
136333    for (var i in q) {
136334      base[i] = q[i]
136335    }
136336  
136337    var qs = self._qs.stringify(base)
136338  
136339    if (qs === '') {
136340      return self
136341    }
136342  
136343    self.uri = url.parse(self.uri.href.split('?')[0] + '?' + qs)
136344    self.url = self.uri
136345    self.path = self.uri.path
136346  
136347    if (self.uri.host === 'unix') {
136348      self.enableUnixSocket()
136349    }
136350  
136351    return self
136352  }
136353  Request.prototype.form = function (form) {
136354    var self = this
136355    if (form) {
136356      if (!/^application\/x-www-form-urlencoded\b/.test(self.getHeader('content-type'))) {
136357        self.setHeader('content-type', 'application/x-www-form-urlencoded')
136358      }
136359      self.body = (typeof form === 'string')
136360        ? self._qs.rfc3986(form.toString('utf8'))
136361        : self._qs.stringify(form).toString('utf8')
136362      return self
136363    }
136364    // create form-data object
136365    self._form = new FormData()
136366    self._form.on('error', function (err) {
136367      err.message = 'form-data: ' + err.message
136368      self.emit('error', err)
136369      self.abort()
136370    })
136371    return self._form
136372  }
136373  Request.prototype.multipart = function (multipart) {
136374    var self = this
136375  
136376    self._multipart.onRequest(multipart)
136377  
136378    if (!self._multipart.chunked) {
136379      self.body = self._multipart.body
136380    }
136381  
136382    return self
136383  }
136384  Request.prototype.json = function (val) {
136385    var self = this
136386  
136387    if (!self.hasHeader('accept')) {
136388      self.setHeader('accept', 'application/json')
136389    }
136390  
136391    if (typeof self.jsonReplacer === 'function') {
136392      self._jsonReplacer = self.jsonReplacer
136393    }
136394  
136395    self._json = true
136396    if (typeof val === 'boolean') {
136397      if (self.body !== undefined) {
136398        if (!/^application\/x-www-form-urlencoded\b/.test(self.getHeader('content-type'))) {
136399          self.body = safeStringify(self.body, self._jsonReplacer)
136400        } else {
136401          self.body = self._qs.rfc3986(self.body)
136402        }
136403        if (!self.hasHeader('content-type')) {
136404          self.setHeader('content-type', 'application/json')
136405        }
136406      }
136407    } else {
136408      self.body = safeStringify(val, self._jsonReplacer)
136409      if (!self.hasHeader('content-type')) {
136410        self.setHeader('content-type', 'application/json')
136411      }
136412    }
136413  
136414    if (typeof self.jsonReviver === 'function') {
136415      self._jsonReviver = self.jsonReviver
136416    }
136417  
136418    return self
136419  }
136420  Request.prototype.getHeader = function (name, headers) {
136421    var self = this
136422    var result, re, match
136423    if (!headers) {
136424      headers = self.headers
136425    }
136426    Object.keys(headers).forEach(function (key) {
136427      if (key.length !== name.length) {
136428        return
136429      }
136430      re = new RegExp(name, 'i')
136431      match = key.match(re)
136432      if (match) {
136433        result = headers[key]
136434      }
136435    })
136436    return result
136437  }
136438  Request.prototype.enableUnixSocket = function () {
136439    // Get the socket & request paths from the URL
136440    var unixParts = this.uri.path.split(':')
136441    var host = unixParts[0]
136442    var path = unixParts[1]
136443    // Apply unix properties to request
136444    this.socketPath = host
136445    this.uri.pathname = path
136446    this.uri.path = path
136447    this.uri.host = host
136448    this.uri.hostname = host
136449    this.uri.isUnix = true
136450  }
136451  
136452  Request.prototype.auth = function (user, pass, sendImmediately, bearer) {
136453    var self = this
136454  
136455    self._auth.onRequest(user, pass, sendImmediately, bearer)
136456  
136457    return self
136458  }
136459  Request.prototype.aws = function (opts, now) {
136460    var self = this
136461  
136462    if (!now) {
136463      self._aws = opts
136464      return self
136465    }
136466  
136467    if (opts.sign_version === 4 || opts.sign_version === '4') {
136468      // use aws4
136469      var options = {
136470        host: self.uri.host,
136471        path: self.uri.path,
136472        method: self.method,
136473        headers: {
136474          'content-type': self.getHeader('content-type') || ''
136475        },
136476        body: self.body
136477      }
136478      var signRes = aws4.sign(options, {
136479        accessKeyId: opts.key,
136480        secretAccessKey: opts.secret,
136481        sessionToken: opts.session
136482      })
136483      self.setHeader('authorization', signRes.headers.Authorization)
136484      self.setHeader('x-amz-date', signRes.headers['X-Amz-Date'])
136485      if (signRes.headers['X-Amz-Security-Token']) {
136486        self.setHeader('x-amz-security-token', signRes.headers['X-Amz-Security-Token'])
136487      }
136488    } else {
136489      // default: use aws-sign2
136490      var date = new Date()
136491      self.setHeader('date', date.toUTCString())
136492      var auth = {
136493        key: opts.key,
136494        secret: opts.secret,
136495        verb: self.method.toUpperCase(),
136496        date: date,
136497        contentType: self.getHeader('content-type') || '',
136498        md5: self.getHeader('content-md5') || '',
136499        amazonHeaders: aws2.canonicalizeHeaders(self.headers)
136500      }
136501      var path = self.uri.path
136502      if (opts.bucket && path) {
136503        auth.resource = '/' + opts.bucket + path
136504      } else if (opts.bucket && !path) {
136505        auth.resource = '/' + opts.bucket
136506      } else if (!opts.bucket && path) {
136507        auth.resource = path
136508      } else if (!opts.bucket && !path) {
136509        auth.resource = '/'
136510      }
136511      auth.resource = aws2.canonicalizeResource(auth.resource)
136512      self.setHeader('authorization', aws2.authorization(auth))
136513    }
136514  
136515    return self
136516  }
136517  Request.prototype.httpSignature = function (opts) {
136518    var self = this
136519    httpSignature.signRequest({
136520      getHeader: function (header) {
136521        return self.getHeader(header, self.headers)
136522      },
136523      setHeader: function (header, value) {
136524        self.setHeader(header, value)
136525      },
136526      method: self.method,
136527      path: self.path
136528    }, opts)
136529    debug('httpSignature authorization', self.getHeader('authorization'))
136530  
136531    return self
136532  }
136533  Request.prototype.hawk = function (opts) {
136534    var self = this
136535    self.setHeader('Authorization', hawk.header(self.uri, self.method, opts))
136536  }
136537  Request.prototype.oauth = function (_oauth) {
136538    var self = this
136539  
136540    self._oauth.onRequest(_oauth)
136541  
136542    return self
136543  }
136544  
136545  Request.prototype.jar = function (jar) {
136546    var self = this
136547    var cookies
136548  
136549    if (self._redirect.redirectsFollowed === 0) {
136550      self.originalCookieHeader = self.getHeader('cookie')
136551    }
136552  
136553    if (!jar) {
136554      // disable cookies
136555      cookies = false
136556      self._disableCookies = true
136557    } else {
136558      var targetCookieJar = (jar && jar.getCookieString) ? jar : globalCookieJar
136559      var urihref = self.uri.href
136560      // fetch cookie in the Specified host
136561      if (targetCookieJar) {
136562        cookies = targetCookieJar.getCookieString(urihref)
136563      }
136564    }
136565  
136566    // if need cookie and cookie is not empty
136567    if (cookies && cookies.length) {
136568      if (self.originalCookieHeader) {
136569        // Don't overwrite existing Cookie header
136570        self.setHeader('cookie', self.originalCookieHeader + '; ' + cookies)
136571      } else {
136572        self.setHeader('cookie', cookies)
136573      }
136574    }
136575    self._jar = jar
136576    return self
136577  }
136578  
136579  // Stream API
136580  Request.prototype.pipe = function (dest, opts) {
136581    var self = this
136582  
136583    if (self.response) {
136584      if (self._destdata) {
136585        self.emit('error', new Error('You cannot pipe after data has been emitted from the response.'))
136586      } else if (self._ended) {
136587        self.emit('error', new Error('You cannot pipe after the response has been ended.'))
136588      } else {
136589        stream.Stream.prototype.pipe.call(self, dest, opts)
136590        self.pipeDest(dest)
136591        return dest
136592      }
136593    } else {
136594      self.dests.push(dest)
136595      stream.Stream.prototype.pipe.call(self, dest, opts)
136596      return dest
136597    }
136598  }
136599  Request.prototype.write = function () {
136600    var self = this
136601    if (self._aborted) { return }
136602  
136603    if (!self._started) {
136604      self.start()
136605    }
136606    if (self.req) {
136607      return self.req.write.apply(self.req, arguments)
136608    }
136609  }
136610  Request.prototype.end = function (chunk) {
136611    var self = this
136612    if (self._aborted) { return }
136613  
136614    if (chunk) {
136615      self.write(chunk)
136616    }
136617    if (!self._started) {
136618      self.start()
136619    }
136620    if (self.req) {
136621      self.req.end()
136622    }
136623  }
136624  Request.prototype.pause = function () {
136625    var self = this
136626    if (!self.responseContent) {
136627      self._paused = true
136628    } else {
136629      self.responseContent.pause.apply(self.responseContent, arguments)
136630    }
136631  }
136632  Request.prototype.resume = function () {
136633    var self = this
136634    if (!self.responseContent) {
136635      self._paused = false
136636    } else {
136637      self.responseContent.resume.apply(self.responseContent, arguments)
136638    }
136639  }
136640  Request.prototype.destroy = function () {
136641    var self = this
136642    if (!self._ended) {
136643      self.end()
136644    } else if (self.response) {
136645      self.response.destroy()
136646    }
136647  }
136648  
136649  Request.defaultProxyHeaderWhiteList =
136650    Tunnel.defaultProxyHeaderWhiteList.slice()
136651  
136652  Request.defaultProxyHeaderExclusiveList =
136653    Tunnel.defaultProxyHeaderExclusiveList.slice()
136654  
136655  // Exports
136656  
136657  Request.prototype.toJSON = requestToJSON
136658  module.exports = Request
136659  
136660  
136661  /***/ }),
136662  /* 814 */
136663  /***/ (function(module, exports, __webpack_require__) {
136664  
136665  var core = __webpack_require__(306);
136666  var async = __webpack_require__(815);
136667  async.core = core;
136668  async.isCore = function isCore(x) { return core[x]; };
136669  async.sync = __webpack_require__(817);
136670  
136671  exports = async;
136672  module.exports = async;
136673  
136674  
136675  /***/ }),
136676  /* 815 */
136677  /***/ (function(module, exports, __webpack_require__) {
136678  
136679  var core = __webpack_require__(306);
136680  var fs = __webpack_require__(4);
136681  var path = __webpack_require__(0);
136682  var caller = __webpack_require__(417);
136683  var nodeModulesPaths = __webpack_require__(418);
136684  
136685  var defaultIsFile = function isFile(file, cb) {
136686      fs.stat(file, function (err, stat) {
136687          if (!err) {
136688              return cb(null, stat.isFile() || stat.isFIFO());
136689          }
136690          if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
136691          return cb(err);
136692      });
136693  };
136694  
136695  module.exports = function resolve(x, options, callback) {
136696      var cb = callback;
136697      var opts = options || {};
136698      if (typeof opts === 'function') {
136699          cb = opts;
136700          opts = {};
136701      }
136702      if (typeof x !== 'string') {
136703          var err = new TypeError('Path must be a string.');
136704          return process.nextTick(function () {
136705              cb(err);
136706          });
136707      }
136708  
136709      var isFile = opts.isFile || defaultIsFile;
136710      var readFile = opts.readFile || fs.readFile;
136711  
136712      var extensions = opts.extensions || ['.js'];
136713      var basedir = opts.basedir || path.dirname(caller());
136714      var parent = opts.filename || basedir;
136715  
136716      opts.paths = opts.paths || [];
136717  
136718      if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(x)) {
136719          var res = path.resolve(basedir, x);
136720          if (x === '..' || x.slice(-1) === '/') res += '/';
136721          if (/\/$/.test(x) && res === basedir) {
136722              loadAsDirectory(res, opts.package, onfile);
136723          } else loadAsFile(res, opts.package, onfile);
136724      } else loadNodeModules(x, basedir, function (err, n, pkg) {
136725          if (err) cb(err);
136726          else if (n) cb(null, n, pkg);
136727          else if (core[x]) return cb(null, x);
136728          else {
136729              var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'");
136730              moduleError.code = 'MODULE_NOT_FOUND';
136731              cb(moduleError);
136732          }
136733      });
136734  
136735      function onfile(err, m, pkg) {
136736          if (err) cb(err);
136737          else if (m) cb(null, m, pkg);
136738          else loadAsDirectory(res, function (err, d, pkg) {
136739              if (err) cb(err);
136740              else if (d) cb(null, d, pkg);
136741              else {
136742                  var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'");
136743                  moduleError.code = 'MODULE_NOT_FOUND';
136744                  cb(moduleError);
136745              }
136746          });
136747      }
136748  
136749      function loadAsFile(x, thePackage, callback) {
136750          var loadAsFilePackage = thePackage;
136751          var cb = callback;
136752          if (typeof loadAsFilePackage === 'function') {
136753              cb = loadAsFilePackage;
136754              loadAsFilePackage = undefined;
136755          }
136756  
136757          var exts = [''].concat(extensions);
136758          load(exts, x, loadAsFilePackage);
136759  
136760          function load(exts, x, loadPackage) {
136761              if (exts.length === 0) return cb(null, undefined, loadPackage);
136762              var file = x + exts[0];
136763  
136764              var pkg = loadPackage;
136765              if (pkg) onpkg(null, pkg);
136766              else loadpkg(path.dirname(file), onpkg);
136767  
136768              function onpkg(err, pkg_, dir) {
136769                  pkg = pkg_;
136770                  if (err) return cb(err);
136771                  if (dir && pkg && opts.pathFilter) {
136772                      var rfile = path.relative(dir, file);
136773                      var rel = rfile.slice(0, rfile.length - exts[0].length);
136774                      var r = opts.pathFilter(pkg, x, rel);
136775                      if (r) return load(
136776                          [''].concat(extensions.slice()),
136777                          path.resolve(dir, r),
136778                          pkg
136779                      );
136780                  }
136781                  isFile(file, onex);
136782              }
136783              function onex(err, ex) {
136784                  if (err) return cb(err);
136785                  if (ex) return cb(null, file, pkg);
136786                  load(exts.slice(1), x, pkg);
136787              }
136788          }
136789      }
136790  
136791      function loadpkg(dir, cb) {
136792          if (dir === '' || dir === '/') return cb(null);
136793          if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) {
136794              return cb(null);
136795          }
136796          if (/[/\\]node_modules[/\\]*$/.test(dir)) return cb(null);
136797  
136798          var pkgfile = path.join(dir, 'package.json');
136799          isFile(pkgfile, function (err, ex) {
136800              // on err, ex is false
136801              if (!ex) return loadpkg(path.dirname(dir), cb);
136802  
136803              readFile(pkgfile, function (err, body) {
136804                  if (err) cb(err);
136805                  try { var pkg = JSON.parse(body); } catch (jsonErr) {}
136806  
136807                  if (pkg && opts.packageFilter) {
136808                      pkg = opts.packageFilter(pkg, pkgfile);
136809                  }
136810                  cb(null, pkg, dir);
136811              });
136812          });
136813      }
136814  
136815      function loadAsDirectory(x, loadAsDirectoryPackage, callback) {
136816          var cb = callback;
136817          var fpkg = loadAsDirectoryPackage;
136818          if (typeof fpkg === 'function') {
136819              cb = fpkg;
136820              fpkg = opts.package;
136821          }
136822  
136823          var pkgfile = path.join(x, 'package.json');
136824          isFile(pkgfile, function (err, ex) {
136825              if (err) return cb(err);
136826              if (!ex) return loadAsFile(path.join(x, 'index'), fpkg, cb);
136827  
136828              readFile(pkgfile, function (err, body) {
136829                  if (err) return cb(err);
136830                  try {
136831                      var pkg = JSON.parse(body);
136832                  } catch (jsonErr) {}
136833  
136834                  if (opts.packageFilter) {
136835                      pkg = opts.packageFilter(pkg, pkgfile);
136836                  }
136837  
136838                  if (pkg.main) {
136839                      if (pkg.main === '.' || pkg.main === './') {
136840                          pkg.main = 'index';
136841                      }
136842                      loadAsFile(path.resolve(x, pkg.main), pkg, function (err, m, pkg) {
136843                          if (err) return cb(err);
136844                          if (m) return cb(null, m, pkg);
136845                          if (!pkg) return loadAsFile(path.join(x, 'index'), pkg, cb);
136846  
136847                          var dir = path.resolve(x, pkg.main);
136848                          loadAsDirectory(dir, pkg, function (err, n, pkg) {
136849                              if (err) return cb(err);
136850                              if (n) return cb(null, n, pkg);
136851                              loadAsFile(path.join(x, 'index'), pkg, cb);
136852                          });
136853                      });
136854                      return;
136855                  }
136856  
136857                  loadAsFile(path.join(x, '/index'), pkg, cb);
136858              });
136859          });
136860      }
136861  
136862      function processDirs(cb, dirs) {
136863          if (dirs.length === 0) return cb(null, undefined);
136864          var dir = dirs[0];
136865  
136866          var file = path.join(dir, x);
136867          loadAsFile(file, opts.package, onfile);
136868  
136869          function onfile(err, m, pkg) {
136870              if (err) return cb(err);
136871              if (m) return cb(null, m, pkg);
136872              loadAsDirectory(path.join(dir, x), opts.package, ondir);
136873          }
136874  
136875          function ondir(err, n, pkg) {
136876              if (err) return cb(err);
136877              if (n) return cb(null, n, pkg);
136878              processDirs(cb, dirs.slice(1));
136879          }
136880      }
136881      function loadNodeModules(x, start, cb) {
136882          processDirs(cb, nodeModulesPaths(start, opts));
136883      }
136884  };
136885  
136886  
136887  /***/ }),
136888  /* 816 */
136889  /***/ (function(module, exports) {
136890  
136891  module.exports = {"assert":true,"async_hooks":">= 8","buffer_ieee754":"< 0.9.7","buffer":true,"child_process":true,"cluster":true,"console":true,"constants":true,"crypto":true,"_debugger":"< 8","dgram":true,"dns":true,"domain":true,"events":true,"freelist":"< 6","fs":true,"fs/promises":">= 10 && < 10.1","_http_agent":">= 0.11.1","_http_client":">= 0.11.1","_http_common":">= 0.11.1","_http_incoming":">= 0.11.1","_http_outgoing":">= 0.11.1","_http_server":">= 0.11.1","http":true,"http2":">= 8.8","https":true,"inspector":">= 8.0.0","_linklist":"< 8","module":true,"net":true,"node-inspect/lib/_inspect":">= 7.6.0","node-inspect/lib/internal/inspect_client":">= 7.6.0","node-inspect/lib/internal/inspect_repl":">= 7.6.0","os":true,"path":true,"perf_hooks":">= 8.5","process":">= 1","punycode":true,"querystring":true,"readline":true,"repl":true,"smalloc":">= 0.11.5 && < 3","_stream_duplex":">= 0.9.4","_stream_transform":">= 0.9.4","_stream_wrap":">= 1.4.1","_stream_passthrough":">= 0.9.4","_stream_readable":">= 0.9.4","_stream_writable":">= 0.9.4","stream":true,"string_decoder":true,"sys":true,"timers":true,"_tls_common":">= 0.11.13","_tls_legacy":">= 0.11.3 && < 10","_tls_wrap":">= 0.11.3","tls":true,"trace_events":">= 10","tty":true,"url":true,"util":true,"v8/tools/arguments":">= 10","v8/tools/codemap":[">= 4.4.0 && < 5",">= 5.2.0"],"v8/tools/consarray":[">= 4.4.0 && < 5",">= 5.2.0"],"v8/tools/csvparser":[">= 4.4.0 && < 5",">= 5.2.0"],"v8/tools/logreader":[">= 4.4.0 && < 5",">= 5.2.0"],"v8/tools/profile_view":[">= 4.4.0 && < 5",">= 5.2.0"],"v8/tools/splaytree":[">= 4.4.0 && < 5",">= 5.2.0"],"v8":">= 1","vm":true,"zlib":true}
136892  
136893  /***/ }),
136894  /* 817 */
136895  /***/ (function(module, exports, __webpack_require__) {
136896  
136897  var core = __webpack_require__(306);
136898  var fs = __webpack_require__(4);
136899  var path = __webpack_require__(0);
136900  var caller = __webpack_require__(417);
136901  var nodeModulesPaths = __webpack_require__(418);
136902  
136903  var defaultIsFile = function isFile(file) {
136904      try {
136905          var stat = fs.statSync(file);
136906      } catch (e) {
136907          if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;
136908          throw e;
136909      }
136910      return stat.isFile() || stat.isFIFO();
136911  };
136912  
136913  module.exports = function (x, options) {
136914      if (typeof x !== 'string') {
136915          throw new TypeError('Path must be a string.');
136916      }
136917      var opts = options || {};
136918      var isFile = opts.isFile || defaultIsFile;
136919      var readFileSync = opts.readFileSync || fs.readFileSync;
136920  
136921      var extensions = opts.extensions || ['.js'];
136922      var basedir = opts.basedir || path.dirname(caller());
136923      var parent = opts.filename || basedir;
136924  
136925      opts.paths = opts.paths || [];
136926  
136927      if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(x)) {
136928          var res = path.resolve(basedir, x);
136929          if (x === '..' || x.slice(-1) === '/') res += '/';
136930          var m = loadAsFileSync(res) || loadAsDirectorySync(res);
136931          if (m) return m;
136932      } else {
136933          var n = loadNodeModulesSync(x, basedir);
136934          if (n) return n;
136935      }
136936  
136937      if (core[x]) return x;
136938  
136939      var err = new Error("Cannot find module '" + x + "' from '" + parent + "'");
136940      err.code = 'MODULE_NOT_FOUND';
136941      throw err;
136942  
136943      function loadAsFileSync(x) {
136944          var pkg = loadpkg(path.dirname(x));
136945  
136946          if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) {
136947              var rfile = path.relative(pkg.dir, x);
136948              var r = opts.pathFilter(pkg.pkg, x, rfile);
136949              if (r) {
136950                  x = path.resolve(pkg.dir, r); // eslint-disable-line no-param-reassign
136951              }
136952          }
136953  
136954          if (isFile(x)) {
136955              return x;
136956          }
136957  
136958          for (var i = 0; i < extensions.length; i++) {
136959              var file = x + extensions[i];
136960              if (isFile(file)) {
136961                  return file;
136962              }
136963          }
136964      }
136965  
136966      function loadpkg(dir) {
136967          if (dir === '' || dir === '/') return;
136968          if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) {
136969              return;
136970          }
136971          if (/[/\\]node_modules[/\\]*$/.test(dir)) return;
136972  
136973          var pkgfile = path.join(dir, 'package.json');
136974  
136975          if (!isFile(pkgfile)) {
136976              return loadpkg(path.dirname(dir));
136977          }
136978  
136979          var body = readFileSync(pkgfile);
136980  
136981          try {
136982              var pkg = JSON.parse(body);
136983          } catch (jsonErr) {}
136984  
136985          if (pkg && opts.packageFilter) {
136986              pkg = opts.packageFilter(pkg, dir);
136987          }
136988  
136989          return { pkg: pkg, dir: dir };
136990      }
136991  
136992      function loadAsDirectorySync(x) {
136993          var pkgfile = path.join(x, '/package.json');
136994          if (isFile(pkgfile)) {
136995              try {
136996                  var body = readFileSync(pkgfile, 'UTF8');
136997                  var pkg = JSON.parse(body);
136998  
136999                  if (opts.packageFilter) {
137000                      pkg = opts.packageFilter(pkg, x);
137001                  }
137002  
137003                  if (pkg.main) {
137004                      if (pkg.main === '.' || pkg.main === './') {
137005                          pkg.main = 'index';
137006                      }
137007                      var m = loadAsFileSync(path.resolve(x, pkg.main));
137008                      if (m) return m;
137009                      var n = loadAsDirectorySync(path.resolve(x, pkg.main));
137010                      if (n) return n;
137011                  }
137012              } catch (e) {}
137013          }
137014  
137015          return loadAsFileSync(path.join(x, '/index'));
137016      }
137017  
137018      function loadNodeModulesSync(x, start) {
137019          var dirs = nodeModulesPaths(start, opts);
137020          for (var i = 0; i < dirs.length; i++) {
137021              var dir = dirs[i];
137022              var m = loadAsFileSync(path.join(dir, '/', x));
137023              if (m) return m;
137024              var n = loadAsDirectorySync(path.join(dir, '/', x));
137025              if (n) return n;
137026          }
137027      }
137028  };
137029  
137030  
137031  /***/ }),
137032  /* 818 */
137033  /***/ (function(module, exports, __webpack_require__) {
137034  
137035  "use strict";
137036  
137037  const onetime = __webpack_require__(771);
137038  const signalExit = __webpack_require__(451);
137039  
137040  module.exports = onetime(() => {
137041  	signalExit(() => {
137042  		process.stderr.write('\u001b[?25h');
137043  	}, {alwaysLast: true});
137044  });
137045  
137046  
137047  /***/ }),
137048  /* 819 */
137049  /***/ (function(module, exports, __webpack_require__) {
137050  
137051  module.exports = __webpack_require__(820);
137052  
137053  /***/ }),
137054  /* 820 */
137055  /***/ (function(module, exports, __webpack_require__) {
137056  
137057  var RetryOperation = __webpack_require__(821);
137058  
137059  exports.operation = function(options) {
137060    var timeouts = exports.timeouts(options);
137061    return new RetryOperation(timeouts, {
137062        forever: options && options.forever,
137063        unref: options && options.unref
137064    });
137065  };
137066  
137067  exports.timeouts = function(options) {
137068    if (options instanceof Array) {
137069      return [].concat(options);
137070    }
137071  
137072    var opts = {
137073      retries: 10,
137074      factor: 2,
137075      minTimeout: 1 * 1000,
137076      maxTimeout: Infinity,
137077      randomize: false
137078    };
137079    for (var key in options) {
137080      opts[key] = options[key];
137081    }
137082  
137083    if (opts.minTimeout > opts.maxTimeout) {
137084      throw new Error('minTimeout is greater than maxTimeout');
137085    }
137086  
137087    var timeouts = [];
137088    for (var i = 0; i < opts.retries; i++) {
137089      timeouts.push(this.createTimeout(i, opts));
137090    }
137091  
137092    if (options && options.forever && !timeouts.length) {
137093      timeouts.push(this.createTimeout(i, opts));
137094    }
137095  
137096    // sort the array numerically ascending
137097    timeouts.sort(function(a,b) {
137098      return a - b;
137099    });
137100  
137101    return timeouts;
137102  };
137103  
137104  exports.createTimeout = function(attempt, opts) {
137105    var random = (opts.randomize)
137106      ? (Math.random() + 1)
137107      : 1;
137108  
137109    var timeout = Math.round(random * opts.minTimeout * Math.pow(opts.factor, attempt));
137110    timeout = Math.min(timeout, opts.maxTimeout);
137111  
137112    return timeout;
137113  };
137114  
137115  exports.wrap = function(obj, options, methods) {
137116    if (options instanceof Array) {
137117      methods = options;
137118      options = null;
137119    }
137120  
137121    if (!methods) {
137122      methods = [];
137123      for (var key in obj) {
137124        if (typeof obj[key] === 'function') {
137125          methods.push(key);
137126        }
137127      }
137128    }
137129  
137130    for (var i = 0; i < methods.length; i++) {
137131      var method   = methods[i];
137132      var original = obj[method];
137133  
137134      obj[method] = function retryWrapper() {
137135        var op       = exports.operation(options);
137136        var args     = Array.prototype.slice.call(arguments);
137137        var callback = args.pop();
137138  
137139        args.push(function(err) {
137140          if (op.retry(err)) {
137141            return;
137142          }
137143          if (err) {
137144            arguments[0] = op.mainError();
137145          }
137146          callback.apply(this, arguments);
137147        });
137148  
137149        op.attempt(function() {
137150          original.apply(obj, args);
137151        });
137152      };
137153      obj[method].options = options;
137154    }
137155  };
137156  
137157  
137158  /***/ }),
137159  /* 821 */
137160  /***/ (function(module, exports) {
137161  
137162  function RetryOperation(timeouts, options) {
137163    // Compatibility for the old (timeouts, retryForever) signature
137164    if (typeof options === 'boolean') {
137165      options = { forever: options };
137166    }
137167  
137168    this._timeouts = timeouts;
137169    this._options = options || {};
137170    this._fn = null;
137171    this._errors = [];
137172    this._attempts = 1;
137173    this._operationTimeout = null;
137174    this._operationTimeoutCb = null;
137175    this._timeout = null;
137176  
137177    if (this._options.forever) {
137178      this._cachedTimeouts = this._timeouts.slice(0);
137179    }
137180  }
137181  module.exports = RetryOperation;
137182  
137183  RetryOperation.prototype.stop = function() {
137184    if (this._timeout) {
137185      clearTimeout(this._timeout);
137186    }
137187  
137188    this._timeouts       = [];
137189    this._cachedTimeouts = null;
137190  };
137191  
137192  RetryOperation.prototype.retry = function(err) {
137193    if (this._timeout) {
137194      clearTimeout(this._timeout);
137195    }
137196  
137197    if (!err) {
137198      return false;
137199    }
137200  
137201    this._errors.push(err);
137202  
137203    var timeout = this._timeouts.shift();
137204    if (timeout === undefined) {
137205      if (this._cachedTimeouts) {
137206        // retry forever, only keep last error
137207        this._errors.splice(this._errors.length - 1, this._errors.length);
137208        this._timeouts = this._cachedTimeouts.slice(0);
137209        timeout = this._timeouts.shift();
137210      } else {
137211        return false;
137212      }
137213    }
137214  
137215    var self = this;
137216    var timer = setTimeout(function() {
137217      self._attempts++;
137218  
137219      if (self._operationTimeoutCb) {
137220        self._timeout = setTimeout(function() {
137221          self._operationTimeoutCb(self._attempts);
137222        }, self._operationTimeout);
137223  
137224        if (this._options.unref) {
137225            self._timeout.unref();
137226        }
137227      }
137228  
137229      self._fn(self._attempts);
137230    }, timeout);
137231  
137232    if (this._options.unref) {
137233        timer.unref();
137234    }
137235  
137236    return true;
137237  };
137238  
137239  RetryOperation.prototype.attempt = function(fn, timeoutOps) {
137240    this._fn = fn;
137241  
137242    if (timeoutOps) {
137243      if (timeoutOps.timeout) {
137244        this._operationTimeout = timeoutOps.timeout;
137245      }
137246      if (timeoutOps.cb) {
137247        this._operationTimeoutCb = timeoutOps.cb;
137248      }
137249    }
137250  
137251    var self = this;
137252    if (this._operationTimeoutCb) {
137253      this._timeout = setTimeout(function() {
137254        self._operationTimeoutCb();
137255      }, self._operationTimeout);
137256    }
137257  
137258    this._fn(this._attempts);
137259  };
137260  
137261  RetryOperation.prototype.try = function(fn) {
137262    console.log('Using RetryOperation.try() is deprecated');
137263    this.attempt(fn);
137264  };
137265  
137266  RetryOperation.prototype.start = function(fn) {
137267    console.log('Using RetryOperation.start() is deprecated');
137268    this.attempt(fn);
137269  };
137270  
137271  RetryOperation.prototype.start = RetryOperation.prototype.try;
137272  
137273  RetryOperation.prototype.errors = function() {
137274    return this._errors;
137275  };
137276  
137277  RetryOperation.prototype.attempts = function() {
137278    return this._attempts;
137279  };
137280  
137281  RetryOperation.prototype.mainError = function() {
137282    if (this._errors.length === 0) {
137283      return null;
137284    }
137285  
137286    var counts = {};
137287    var mainError = null;
137288    var mainErrorCount = 0;
137289  
137290    for (var i = 0; i < this._errors.length; i++) {
137291      var error = this._errors[i];
137292      var message = error.message;
137293      var count = (counts[message] || 0) + 1;
137294  
137295      counts[message] = count;
137296  
137297      if (count >= mainErrorCount) {
137298        mainError = error;
137299        mainErrorCount = count;
137300      }
137301    }
137302  
137303    return mainError;
137304  };
137305  
137306  
137307  /***/ }),
137308  /* 822 */
137309  /***/ (function(module, __webpack_exports__, __webpack_require__) {
137310  
137311  "use strict";
137312  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SubscribeOnObservable; });
137313  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
137314  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Observable__ = __webpack_require__(12);
137315  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__scheduler_asap__ = __webpack_require__(438);
137316  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_isNumeric__ = __webpack_require__(191);
137317  /** PURE_IMPORTS_START tslib,_Observable,_scheduler_asap,_util_isNumeric PURE_IMPORTS_END */
137318  
137319  
137320  
137321  
137322  var SubscribeOnObservable = /*@__PURE__*/ (function (_super) {
137323      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SubscribeOnObservable, _super);
137324      function SubscribeOnObservable(source, delayTime, scheduler) {
137325          if (delayTime === void 0) {
137326              delayTime = 0;
137327          }
137328          if (scheduler === void 0) {
137329              scheduler = __WEBPACK_IMPORTED_MODULE_2__scheduler_asap__["a" /* asap */];
137330          }
137331          var _this = _super.call(this) || this;
137332          _this.source = source;
137333          _this.delayTime = delayTime;
137334          _this.scheduler = scheduler;
137335          if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_isNumeric__["a" /* isNumeric */])(delayTime) || delayTime < 0) {
137336              _this.delayTime = 0;
137337          }
137338          if (!scheduler || typeof scheduler.schedule !== 'function') {
137339              _this.scheduler = __WEBPACK_IMPORTED_MODULE_2__scheduler_asap__["a" /* asap */];
137340          }
137341          return _this;
137342      }
137343      SubscribeOnObservable.create = function (source, delay, scheduler) {
137344          if (delay === void 0) {
137345              delay = 0;
137346          }
137347          if (scheduler === void 0) {
137348              scheduler = __WEBPACK_IMPORTED_MODULE_2__scheduler_asap__["a" /* asap */];
137349          }
137350          return new SubscribeOnObservable(source, delay, scheduler);
137351      };
137352      SubscribeOnObservable.dispatch = function (arg) {
137353          var source = arg.source, subscriber = arg.subscriber;
137354          return this.add(source.subscribe(subscriber));
137355      };
137356      SubscribeOnObservable.prototype._subscribe = function (subscriber) {
137357          var delay = this.delayTime;
137358          var source = this.source;
137359          var scheduler = this.scheduler;
137360          return scheduler.schedule(SubscribeOnObservable.dispatch, delay, {
137361              source: source, subscriber: subscriber
137362          });
137363      };
137364      return SubscribeOnObservable;
137365  }(__WEBPACK_IMPORTED_MODULE_1__Observable__["a" /* Observable */]));
137366  
137367  //# sourceMappingURL=SubscribeOnObservable.js.map
137368  
137369  
137370  /***/ }),
137371  /* 823 */
137372  /***/ (function(module, __webpack_exports__, __webpack_require__) {
137373  
137374  "use strict";
137375  /* harmony export (immutable) */ __webpack_exports__["a"] = bindCallback;
137376  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
137377  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__AsyncSubject__ = __webpack_require__(184);
137378  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__operators_map__ = __webpack_require__(47);
137379  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_canReportError__ = __webpack_require__(322);
137380  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_isArray__ = __webpack_require__(41);
137381  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_isScheduler__ = __webpack_require__(49);
137382  /** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isArray,_util_isScheduler PURE_IMPORTS_END */
137383  
137384  
137385  
137386  
137387  
137388  
137389  function bindCallback(callbackFunc, resultSelector, scheduler) {
137390      if (resultSelector) {
137391          if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__util_isScheduler__["a" /* isScheduler */])(resultSelector)) {
137392              scheduler = resultSelector;
137393          }
137394          else {
137395              return function () {
137396                  var args = [];
137397                  for (var _i = 0; _i < arguments.length; _i++) {
137398                      args[_i] = arguments[_i];
137399                  }
137400                  return bindCallback(callbackFunc, scheduler).apply(void 0, args).pipe(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__operators_map__["a" /* map */])(function (args) { return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util_isArray__["a" /* isArray */])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));
137401              };
137402          }
137403      }
137404      return function () {
137405          var args = [];
137406          for (var _i = 0; _i < arguments.length; _i++) {
137407              args[_i] = arguments[_i];
137408          }
137409          var context = this;
137410          var subject;
137411          var params = {
137412              context: context,
137413              subject: subject,
137414              callbackFunc: callbackFunc,
137415              scheduler: scheduler,
137416          };
137417          return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) {
137418              if (!scheduler) {
137419                  if (!subject) {
137420                      subject = new __WEBPACK_IMPORTED_MODULE_1__AsyncSubject__["a" /* AsyncSubject */]();
137421                      var handler = function () {
137422                          var innerArgs = [];
137423                          for (var _i = 0; _i < arguments.length; _i++) {
137424                              innerArgs[_i] = arguments[_i];
137425                          }
137426                          subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);
137427                          subject.complete();
137428                      };
137429                      try {
137430                          callbackFunc.apply(context, args.concat([handler]));
137431                      }
137432                      catch (err) {
137433                          if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_canReportError__["a" /* canReportError */])(subject)) {
137434                              subject.error(err);
137435                          }
137436                          else {
137437                              console.warn(err);
137438                          }
137439                      }
137440                  }
137441                  return subject.subscribe(subscriber);
137442              }
137443              else {
137444                  var state = {
137445                      args: args, subscriber: subscriber, params: params,
137446                  };
137447                  return scheduler.schedule(dispatch, 0, state);
137448              }
137449          });
137450      };
137451  }
137452  function dispatch(state) {
137453      var _this = this;
137454      var self = this;
137455      var args = state.args, subscriber = state.subscriber, params = state.params;
137456      var callbackFunc = params.callbackFunc, context = params.context, scheduler = params.scheduler;
137457      var subject = params.subject;
137458      if (!subject) {
137459          subject = params.subject = new __WEBPACK_IMPORTED_MODULE_1__AsyncSubject__["a" /* AsyncSubject */]();
137460          var handler = function () {
137461              var innerArgs = [];
137462              for (var _i = 0; _i < arguments.length; _i++) {
137463                  innerArgs[_i] = arguments[_i];
137464              }
137465              var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;
137466              _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));
137467          };
137468          try {
137469              callbackFunc.apply(context, args.concat([handler]));
137470          }
137471          catch (err) {
137472              subject.error(err);
137473          }
137474      }
137475      this.add(subject.subscribe(subscriber));
137476  }
137477  function dispatchNext(state) {
137478      var value = state.value, subject = state.subject;
137479      subject.next(value);
137480      subject.complete();
137481  }
137482  function dispatchError(state) {
137483      var err = state.err, subject = state.subject;
137484      subject.error(err);
137485  }
137486  //# sourceMappingURL=bindCallback.js.map
137487  
137488  
137489  /***/ }),
137490  /* 824 */
137491  /***/ (function(module, __webpack_exports__, __webpack_require__) {
137492  
137493  "use strict";
137494  /* harmony export (immutable) */ __webpack_exports__["a"] = bindNodeCallback;
137495  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
137496  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__AsyncSubject__ = __webpack_require__(184);
137497  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__operators_map__ = __webpack_require__(47);
137498  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_canReportError__ = __webpack_require__(322);
137499  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_isScheduler__ = __webpack_require__(49);
137500  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_isArray__ = __webpack_require__(41);
137501  /** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isScheduler,_util_isArray PURE_IMPORTS_END */
137502  
137503  
137504  
137505  
137506  
137507  
137508  function bindNodeCallback(callbackFunc, resultSelector, scheduler) {
137509      if (resultSelector) {
137510          if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util_isScheduler__["a" /* isScheduler */])(resultSelector)) {
137511              scheduler = resultSelector;
137512          }
137513          else {
137514              return function () {
137515                  var args = [];
137516                  for (var _i = 0; _i < arguments.length; _i++) {
137517                      args[_i] = arguments[_i];
137518                  }
137519                  return bindNodeCallback(callbackFunc, scheduler).apply(void 0, args).pipe(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__operators_map__["a" /* map */])(function (args) { return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__util_isArray__["a" /* isArray */])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));
137520              };
137521          }
137522      }
137523      return function () {
137524          var args = [];
137525          for (var _i = 0; _i < arguments.length; _i++) {
137526              args[_i] = arguments[_i];
137527          }
137528          var params = {
137529              subject: undefined,
137530              args: args,
137531              callbackFunc: callbackFunc,
137532              scheduler: scheduler,
137533              context: this,
137534          };
137535          return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) {
137536              var context = params.context;
137537              var subject = params.subject;
137538              if (!scheduler) {
137539                  if (!subject) {
137540                      subject = params.subject = new __WEBPACK_IMPORTED_MODULE_1__AsyncSubject__["a" /* AsyncSubject */]();
137541                      var handler = function () {
137542                          var innerArgs = [];
137543                          for (var _i = 0; _i < arguments.length; _i++) {
137544                              innerArgs[_i] = arguments[_i];
137545                          }
137546                          var err = innerArgs.shift();
137547                          if (err) {
137548                              subject.error(err);
137549                              return;
137550                          }
137551                          subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);
137552                          subject.complete();
137553                      };
137554                      try {
137555                          callbackFunc.apply(context, args.concat([handler]));
137556                      }
137557                      catch (err) {
137558                          if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_canReportError__["a" /* canReportError */])(subject)) {
137559                              subject.error(err);
137560                          }
137561                          else {
137562                              console.warn(err);
137563                          }
137564                      }
137565                  }
137566                  return subject.subscribe(subscriber);
137567              }
137568              else {
137569                  return scheduler.schedule(dispatch, 0, { params: params, subscriber: subscriber, context: context });
137570              }
137571          });
137572      };
137573  }
137574  function dispatch(state) {
137575      var _this = this;
137576      var params = state.params, subscriber = state.subscriber, context = state.context;
137577      var callbackFunc = params.callbackFunc, args = params.args, scheduler = params.scheduler;
137578      var subject = params.subject;
137579      if (!subject) {
137580          subject = params.subject = new __WEBPACK_IMPORTED_MODULE_1__AsyncSubject__["a" /* AsyncSubject */]();
137581          var handler = function () {
137582              var innerArgs = [];
137583              for (var _i = 0; _i < arguments.length; _i++) {
137584                  innerArgs[_i] = arguments[_i];
137585              }
137586              var err = innerArgs.shift();
137587              if (err) {
137588                  _this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject }));
137589              }
137590              else {
137591                  var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;
137592                  _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));
137593              }
137594          };
137595          try {
137596              callbackFunc.apply(context, args.concat([handler]));
137597          }
137598          catch (err) {
137599              this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject }));
137600          }
137601      }
137602      this.add(subject.subscribe(subscriber));
137603  }
137604  function dispatchNext(arg) {
137605      var value = arg.value, subject = arg.subject;
137606      subject.next(value);
137607      subject.complete();
137608  }
137609  function dispatchError(arg) {
137610      var err = arg.err, subject = arg.subject;
137611      subject.error(err);
137612  }
137613  //# sourceMappingURL=bindNodeCallback.js.map
137614  
137615  
137616  /***/ }),
137617  /* 825 */
137618  /***/ (function(module, __webpack_exports__, __webpack_require__) {
137619  
137620  "use strict";
137621  /* harmony export (immutable) */ __webpack_exports__["a"] = forkJoin;
137622  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
137623  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Observable__ = __webpack_require__(12);
137624  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isArray__ = __webpack_require__(41);
137625  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__empty__ = __webpack_require__(39);
137626  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_subscribeToResult__ = __webpack_require__(14);
137627  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__OuterSubscriber__ = __webpack_require__(13);
137628  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__operators_map__ = __webpack_require__(47);
137629  /** PURE_IMPORTS_START tslib,_Observable,_util_isArray,_empty,_util_subscribeToResult,_OuterSubscriber,_operators_map PURE_IMPORTS_END */
137630  
137631  
137632  
137633  
137634  
137635  
137636  
137637  function forkJoin() {
137638      var sources = [];
137639      for (var _i = 0; _i < arguments.length; _i++) {
137640          sources[_i] = arguments[_i];
137641      }
137642      var resultSelector;
137643      if (typeof sources[sources.length - 1] === 'function') {
137644          resultSelector = sources.pop();
137645      }
137646      if (sources.length === 1 && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_isArray__["a" /* isArray */])(sources[0])) {
137647          sources = sources[0];
137648      }
137649      if (sources.length === 0) {
137650          return __WEBPACK_IMPORTED_MODULE_3__empty__["b" /* EMPTY */];
137651      }
137652      if (resultSelector) {
137653          return forkJoin(sources).pipe(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__operators_map__["a" /* map */])(function (args) { return resultSelector.apply(void 0, args); }));
137654      }
137655      return new __WEBPACK_IMPORTED_MODULE_1__Observable__["a" /* Observable */](function (subscriber) {
137656          return new ForkJoinSubscriber(subscriber, sources);
137657      });
137658  }
137659  var ForkJoinSubscriber = /*@__PURE__*/ (function (_super) {
137660      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](ForkJoinSubscriber, _super);
137661      function ForkJoinSubscriber(destination, sources) {
137662          var _this = _super.call(this, destination) || this;
137663          _this.sources = sources;
137664          _this.completed = 0;
137665          _this.haveValues = 0;
137666          var len = sources.length;
137667          _this.values = new Array(len);
137668          for (var i = 0; i < len; i++) {
137669              var source = sources[i];
137670              var innerSubscription = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util_subscribeToResult__["a" /* subscribeToResult */])(_this, source, null, i);
137671              if (innerSubscription) {
137672                  _this.add(innerSubscription);
137673              }
137674          }
137675          return _this;
137676      }
137677      ForkJoinSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
137678          this.values[outerIndex] = innerValue;
137679          if (!innerSub._hasValue) {
137680              innerSub._hasValue = true;
137681              this.haveValues++;
137682          }
137683      };
137684      ForkJoinSubscriber.prototype.notifyComplete = function (innerSub) {
137685          var _a = this, destination = _a.destination, haveValues = _a.haveValues, values = _a.values;
137686          var len = values.length;
137687          if (!innerSub._hasValue) {
137688              destination.complete();
137689              return;
137690          }
137691          this.completed++;
137692          if (this.completed !== len) {
137693              return;
137694          }
137695          if (haveValues === len) {
137696              destination.next(values);
137697          }
137698          destination.complete();
137699      };
137700      return ForkJoinSubscriber;
137701  }(__WEBPACK_IMPORTED_MODULE_5__OuterSubscriber__["a" /* OuterSubscriber */]));
137702  //# sourceMappingURL=forkJoin.js.map
137703  
137704  
137705  /***/ }),
137706  /* 826 */
137707  /***/ (function(module, __webpack_exports__, __webpack_require__) {
137708  
137709  "use strict";
137710  /* harmony export (immutable) */ __webpack_exports__["a"] = fromEvent;
137711  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
137712  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isArray__ = __webpack_require__(41);
137713  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isFunction__ = __webpack_require__(154);
137714  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__operators_map__ = __webpack_require__(47);
137715  /** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */
137716  
137717  
137718  
137719  
137720  var toString = Object.prototype.toString;
137721  function fromEvent(target, eventName, options, resultSelector) {
137722      if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_isFunction__["a" /* isFunction */])(options)) {
137723          resultSelector = options;
137724          options = undefined;
137725      }
137726      if (resultSelector) {
137727          return fromEvent(target, eventName, options).pipe(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__operators_map__["a" /* map */])(function (args) { return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_isArray__["a" /* isArray */])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));
137728      }
137729      return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) {
137730          function handler(e) {
137731              if (arguments.length > 1) {
137732                  subscriber.next(Array.prototype.slice.call(arguments));
137733              }
137734              else {
137735                  subscriber.next(e);
137736              }
137737          }
137738          setupSubscription(target, eventName, handler, subscriber, options);
137739      });
137740  }
137741  function setupSubscription(sourceObj, eventName, handler, subscriber, options) {
137742      var unsubscribe;
137743      if (isEventTarget(sourceObj)) {
137744          var source_1 = sourceObj;
137745          sourceObj.addEventListener(eventName, handler, options);
137746          unsubscribe = function () { return source_1.removeEventListener(eventName, handler, options); };
137747      }
137748      else if (isJQueryStyleEventEmitter(sourceObj)) {
137749          var source_2 = sourceObj;
137750          sourceObj.on(eventName, handler);
137751          unsubscribe = function () { return source_2.off(eventName, handler); };
137752      }
137753      else if (isNodeStyleEventEmitter(sourceObj)) {
137754          var source_3 = sourceObj;
137755          sourceObj.addListener(eventName, handler);
137756          unsubscribe = function () { return source_3.removeListener(eventName, handler); };
137757      }
137758      else if (sourceObj && sourceObj.length) {
137759          for (var i = 0, len = sourceObj.length; i < len; i++) {
137760              setupSubscription(sourceObj[i], eventName, handler, subscriber, options);
137761          }
137762      }
137763      else {
137764          throw new TypeError('Invalid event target');
137765      }
137766      subscriber.add(unsubscribe);
137767  }
137768  function isNodeStyleEventEmitter(sourceObj) {
137769      return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';
137770  }
137771  function isJQueryStyleEventEmitter(sourceObj) {
137772      return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';
137773  }
137774  function isEventTarget(sourceObj) {
137775      return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';
137776  }
137777  //# sourceMappingURL=fromEvent.js.map
137778  
137779  
137780  /***/ }),
137781  /* 827 */
137782  /***/ (function(module, __webpack_exports__, __webpack_require__) {
137783  
137784  "use strict";
137785  /* harmony export (immutable) */ __webpack_exports__["a"] = fromEventPattern;
137786  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
137787  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isArray__ = __webpack_require__(41);
137788  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isFunction__ = __webpack_require__(154);
137789  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__operators_map__ = __webpack_require__(47);
137790  /** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */
137791  
137792  
137793  
137794  
137795  function fromEventPattern(addHandler, removeHandler, resultSelector) {
137796      if (resultSelector) {
137797          return fromEventPattern(addHandler, removeHandler).pipe(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__operators_map__["a" /* map */])(function (args) { return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_isArray__["a" /* isArray */])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));
137798      }
137799      return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) {
137800          var handler = function () {
137801              var e = [];
137802              for (var _i = 0; _i < arguments.length; _i++) {
137803                  e[_i] = arguments[_i];
137804              }
137805              return subscriber.next(e.length === 1 ? e[0] : e);
137806          };
137807          var retValue;
137808          try {
137809              retValue = addHandler(handler);
137810          }
137811          catch (err) {
137812              subscriber.error(err);
137813              return undefined;
137814          }
137815          if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_isFunction__["a" /* isFunction */])(removeHandler)) {
137816              return undefined;
137817          }
137818          return function () { return removeHandler(handler, retValue); };
137819      });
137820  }
137821  //# sourceMappingURL=fromEventPattern.js.map
137822  
137823  
137824  /***/ }),
137825  /* 828 */
137826  /***/ (function(module, __webpack_exports__, __webpack_require__) {
137827  
137828  "use strict";
137829  /* harmony export (immutable) */ __webpack_exports__["a"] = fromIterable;
137830  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
137831  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscription__ = __webpack_require__(25);
137832  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__symbol_iterator__ = __webpack_require__(151);
137833  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_subscribeToIterable__ = __webpack_require__(448);
137834  /** PURE_IMPORTS_START _Observable,_Subscription,_symbol_iterator,_util_subscribeToIterable PURE_IMPORTS_END */
137835  
137836  
137837  
137838  
137839  function fromIterable(input, scheduler) {
137840      if (!input) {
137841          throw new Error('Iterable cannot be null');
137842      }
137843      if (!scheduler) {
137844          return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_subscribeToIterable__["a" /* subscribeToIterable */])(input));
137845      }
137846      else {
137847          return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) {
137848              var sub = new __WEBPACK_IMPORTED_MODULE_1__Subscription__["a" /* Subscription */]();
137849              var iterator;
137850              sub.add(function () {
137851                  if (iterator && typeof iterator.return === 'function') {
137852                      iterator.return();
137853                  }
137854              });
137855              sub.add(scheduler.schedule(function () {
137856                  iterator = input[__WEBPACK_IMPORTED_MODULE_2__symbol_iterator__["a" /* iterator */]]();
137857                  sub.add(scheduler.schedule(function () {
137858                      if (subscriber.closed) {
137859                          return;
137860                      }
137861                      var value;
137862                      var done;
137863                      try {
137864                          var result = iterator.next();
137865                          value = result.value;
137866                          done = result.done;
137867                      }
137868                      catch (err) {
137869                          subscriber.error(err);
137870                          return;
137871                      }
137872                      if (done) {
137873                          subscriber.complete();
137874                      }
137875                      else {
137876                          subscriber.next(value);
137877                          this.schedule();
137878                      }
137879                  }));
137880              }));
137881              return sub;
137882          });
137883      }
137884  }
137885  //# sourceMappingURL=fromIterable.js.map
137886  
137887  
137888  /***/ }),
137889  /* 829 */
137890  /***/ (function(module, __webpack_exports__, __webpack_require__) {
137891  
137892  "use strict";
137893  /* harmony export (immutable) */ __webpack_exports__["a"] = fromObservable;
137894  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
137895  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscription__ = __webpack_require__(25);
137896  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__symbol_observable__ = __webpack_require__(118);
137897  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_subscribeToObservable__ = __webpack_require__(449);
137898  /** PURE_IMPORTS_START _Observable,_Subscription,_symbol_observable,_util_subscribeToObservable PURE_IMPORTS_END */
137899  
137900  
137901  
137902  
137903  function fromObservable(input, scheduler) {
137904      if (!scheduler) {
137905          return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_subscribeToObservable__["a" /* subscribeToObservable */])(input));
137906      }
137907      else {
137908          return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) {
137909              var sub = new __WEBPACK_IMPORTED_MODULE_1__Subscription__["a" /* Subscription */]();
137910              sub.add(scheduler.schedule(function () {
137911                  var observable = input[__WEBPACK_IMPORTED_MODULE_2__symbol_observable__["a" /* observable */]]();
137912                  sub.add(observable.subscribe({
137913                      next: function (value) { sub.add(scheduler.schedule(function () { return subscriber.next(value); })); },
137914                      error: function (err) { sub.add(scheduler.schedule(function () { return subscriber.error(err); })); },
137915                      complete: function () { sub.add(scheduler.schedule(function () { return subscriber.complete(); })); },
137916                  }));
137917              }));
137918              return sub;
137919          });
137920      }
137921  }
137922  //# sourceMappingURL=fromObservable.js.map
137923  
137924  
137925  /***/ }),
137926  /* 830 */
137927  /***/ (function(module, __webpack_exports__, __webpack_require__) {
137928  
137929  "use strict";
137930  /* harmony export (immutable) */ __webpack_exports__["a"] = fromPromise;
137931  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
137932  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscription__ = __webpack_require__(25);
137933  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_subscribeToPromise__ = __webpack_require__(450);
137934  /** PURE_IMPORTS_START _Observable,_Subscription,_util_subscribeToPromise PURE_IMPORTS_END */
137935  
137936  
137937  
137938  function fromPromise(input, scheduler) {
137939      if (!scheduler) {
137940          return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_subscribeToPromise__["a" /* subscribeToPromise */])(input));
137941      }
137942      else {
137943          return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) {
137944              var sub = new __WEBPACK_IMPORTED_MODULE_1__Subscription__["a" /* Subscription */]();
137945              sub.add(scheduler.schedule(function () {
137946                  return input.then(function (value) {
137947                      sub.add(scheduler.schedule(function () {
137948                          subscriber.next(value);
137949                          sub.add(scheduler.schedule(function () { return subscriber.complete(); }));
137950                      }));
137951                  }, function (err) {
137952                      sub.add(scheduler.schedule(function () { return subscriber.error(err); }));
137953                  });
137954              }));
137955              return sub;
137956          });
137957      }
137958  }
137959  //# sourceMappingURL=fromPromise.js.map
137960  
137961  
137962  /***/ }),
137963  /* 831 */
137964  /***/ (function(module, __webpack_exports__, __webpack_require__) {
137965  
137966  "use strict";
137967  /* harmony export (immutable) */ __webpack_exports__["a"] = generate;
137968  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
137969  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_identity__ = __webpack_require__(119);
137970  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isScheduler__ = __webpack_require__(49);
137971  /** PURE_IMPORTS_START _Observable,_util_identity,_util_isScheduler PURE_IMPORTS_END */
137972  
137973  
137974  
137975  function generate(initialStateOrOptions, condition, iterate, resultSelectorOrObservable, scheduler) {
137976      var resultSelector;
137977      var initialState;
137978      if (arguments.length == 1) {
137979          var options = initialStateOrOptions;
137980          initialState = options.initialState;
137981          condition = options.condition;
137982          iterate = options.iterate;
137983          resultSelector = options.resultSelector || __WEBPACK_IMPORTED_MODULE_1__util_identity__["a" /* identity */];
137984          scheduler = options.scheduler;
137985      }
137986      else if (resultSelectorOrObservable === undefined || __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_isScheduler__["a" /* isScheduler */])(resultSelectorOrObservable)) {
137987          initialState = initialStateOrOptions;
137988          resultSelector = __WEBPACK_IMPORTED_MODULE_1__util_identity__["a" /* identity */];
137989          scheduler = resultSelectorOrObservable;
137990      }
137991      else {
137992          initialState = initialStateOrOptions;
137993          resultSelector = resultSelectorOrObservable;
137994      }
137995      return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) {
137996          var state = initialState;
137997          if (scheduler) {
137998              return scheduler.schedule(dispatch, 0, {
137999                  subscriber: subscriber,
138000                  iterate: iterate,
138001                  condition: condition,
138002                  resultSelector: resultSelector,
138003                  state: state
138004              });
138005          }
138006          do {
138007              if (condition) {
138008                  var conditionResult = void 0;
138009                  try {
138010                      conditionResult = condition(state);
138011                  }
138012                  catch (err) {
138013                      subscriber.error(err);
138014                      return undefined;
138015                  }
138016                  if (!conditionResult) {
138017                      subscriber.complete();
138018                      break;
138019                  }
138020              }
138021              var value = void 0;
138022              try {
138023                  value = resultSelector(state);
138024              }
138025              catch (err) {
138026                  subscriber.error(err);
138027                  return undefined;
138028              }
138029              subscriber.next(value);
138030              if (subscriber.closed) {
138031                  break;
138032              }
138033              try {
138034                  state = iterate(state);
138035              }
138036              catch (err) {
138037                  subscriber.error(err);
138038                  return undefined;
138039              }
138040          } while (true);
138041          return undefined;
138042      });
138043  }
138044  function dispatch(state) {
138045      var subscriber = state.subscriber, condition = state.condition;
138046      if (subscriber.closed) {
138047          return undefined;
138048      }
138049      if (state.needIterate) {
138050          try {
138051              state.state = state.iterate(state.state);
138052          }
138053          catch (err) {
138054              subscriber.error(err);
138055              return undefined;
138056          }
138057      }
138058      else {
138059          state.needIterate = true;
138060      }
138061      if (condition) {
138062          var conditionResult = void 0;
138063          try {
138064              conditionResult = condition(state.state);
138065          }
138066          catch (err) {
138067              subscriber.error(err);
138068              return undefined;
138069          }
138070          if (!conditionResult) {
138071              subscriber.complete();
138072              return undefined;
138073          }
138074          if (subscriber.closed) {
138075              return undefined;
138076          }
138077      }
138078      var value;
138079      try {
138080          value = state.resultSelector(state.state);
138081      }
138082      catch (err) {
138083          subscriber.error(err);
138084          return undefined;
138085      }
138086      if (subscriber.closed) {
138087          return undefined;
138088      }
138089      subscriber.next(value);
138090      if (subscriber.closed) {
138091          return undefined;
138092      }
138093      return this.schedule(state);
138094  }
138095  //# sourceMappingURL=generate.js.map
138096  
138097  
138098  /***/ }),
138099  /* 832 */
138100  /***/ (function(module, __webpack_exports__, __webpack_require__) {
138101  
138102  "use strict";
138103  /* harmony export (immutable) */ __webpack_exports__["a"] = iif;
138104  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defer__ = __webpack_require__(310);
138105  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__empty__ = __webpack_require__(39);
138106  /** PURE_IMPORTS_START _defer,_empty PURE_IMPORTS_END */
138107  
138108  
138109  function iif(condition, trueResult, falseResult) {
138110      if (trueResult === void 0) {
138111          trueResult = __WEBPACK_IMPORTED_MODULE_1__empty__["b" /* EMPTY */];
138112      }
138113      if (falseResult === void 0) {
138114          falseResult = __WEBPACK_IMPORTED_MODULE_1__empty__["b" /* EMPTY */];
138115      }
138116      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__defer__["a" /* defer */])(function () { return condition() ? trueResult : falseResult; });
138117  }
138118  //# sourceMappingURL=iif.js.map
138119  
138120  
138121  /***/ }),
138122  /* 833 */
138123  /***/ (function(module, __webpack_exports__, __webpack_require__) {
138124  
138125  "use strict";
138126  /* harmony export (immutable) */ __webpack_exports__["a"] = interval;
138127  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
138128  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__scheduler_async__ = __webpack_require__(40);
138129  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isNumeric__ = __webpack_require__(191);
138130  /** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric PURE_IMPORTS_END */
138131  
138132  
138133  
138134  function interval(period, scheduler) {
138135      if (period === void 0) {
138136          period = 0;
138137      }
138138      if (scheduler === void 0) {
138139          scheduler = __WEBPACK_IMPORTED_MODULE_1__scheduler_async__["a" /* async */];
138140      }
138141      if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_isNumeric__["a" /* isNumeric */])(period) || period < 0) {
138142          period = 0;
138143      }
138144      if (!scheduler || typeof scheduler.schedule !== 'function') {
138145          scheduler = __WEBPACK_IMPORTED_MODULE_1__scheduler_async__["a" /* async */];
138146      }
138147      return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) {
138148          subscriber.add(scheduler.schedule(dispatch, period, { subscriber: subscriber, counter: 0, period: period }));
138149          return subscriber;
138150      });
138151  }
138152  function dispatch(state) {
138153      var subscriber = state.subscriber, counter = state.counter, period = state.period;
138154      subscriber.next(counter);
138155      this.schedule({ subscriber: subscriber, counter: counter + 1, period: period }, period);
138156  }
138157  //# sourceMappingURL=interval.js.map
138158  
138159  
138160  /***/ }),
138161  /* 834 */
138162  /***/ (function(module, __webpack_exports__, __webpack_require__) {
138163  
138164  "use strict";
138165  /* harmony export (immutable) */ __webpack_exports__["a"] = onErrorResumeNext;
138166  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
138167  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__from__ = __webpack_require__(62);
138168  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isArray__ = __webpack_require__(41);
138169  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__empty__ = __webpack_require__(39);
138170  /** PURE_IMPORTS_START _Observable,_from,_util_isArray,_empty PURE_IMPORTS_END */
138171  
138172  
138173  
138174  
138175  function onErrorResumeNext() {
138176      var sources = [];
138177      for (var _i = 0; _i < arguments.length; _i++) {
138178          sources[_i] = arguments[_i];
138179      }
138180      if (sources.length === 0) {
138181          return __WEBPACK_IMPORTED_MODULE_3__empty__["b" /* EMPTY */];
138182      }
138183      var first = sources[0], remainder = sources.slice(1);
138184      if (sources.length === 1 && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_isArray__["a" /* isArray */])(first)) {
138185          return onErrorResumeNext.apply(void 0, first);
138186      }
138187      return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) {
138188          var subNext = function () { return subscriber.add(onErrorResumeNext.apply(void 0, remainder).subscribe(subscriber)); };
138189          return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__from__["a" /* from */])(first).subscribe({
138190              next: function (value) { subscriber.next(value); },
138191              error: subNext,
138192              complete: subNext,
138193          });
138194      });
138195  }
138196  //# sourceMappingURL=onErrorResumeNext.js.map
138197  
138198  
138199  /***/ }),
138200  /* 835 */
138201  /***/ (function(module, __webpack_exports__, __webpack_require__) {
138202  
138203  "use strict";
138204  /* harmony export (immutable) */ __webpack_exports__["a"] = pairs;
138205  /* unused harmony export dispatch */
138206  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
138207  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscription__ = __webpack_require__(25);
138208  /** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */
138209  
138210  
138211  function pairs(obj, scheduler) {
138212      if (!scheduler) {
138213          return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) {
138214              var keys = Object.keys(obj);
138215              for (var i = 0; i < keys.length && !subscriber.closed; i++) {
138216                  var key = keys[i];
138217                  if (obj.hasOwnProperty(key)) {
138218                      subscriber.next([key, obj[key]]);
138219                  }
138220              }
138221              subscriber.complete();
138222          });
138223      }
138224      else {
138225          return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) {
138226              var keys = Object.keys(obj);
138227              var subscription = new __WEBPACK_IMPORTED_MODULE_1__Subscription__["a" /* Subscription */]();
138228              subscription.add(scheduler.schedule(dispatch, 0, { keys: keys, index: 0, subscriber: subscriber, subscription: subscription, obj: obj }));
138229              return subscription;
138230          });
138231      }
138232  }
138233  function dispatch(state) {
138234      var keys = state.keys, index = state.index, subscriber = state.subscriber, subscription = state.subscription, obj = state.obj;
138235      if (!subscriber.closed) {
138236          if (index < keys.length) {
138237              var key = keys[index];
138238              subscriber.next([key, obj[key]]);
138239              subscription.add(this.schedule({ keys: keys, index: index + 1, subscriber: subscriber, subscription: subscription, obj: obj }));
138240          }
138241          else {
138242              subscriber.complete();
138243          }
138244      }
138245  }
138246  //# sourceMappingURL=pairs.js.map
138247  
138248  
138249  /***/ }),
138250  /* 836 */
138251  /***/ (function(module, __webpack_exports__, __webpack_require__) {
138252  
138253  "use strict";
138254  /* harmony export (immutable) */ __webpack_exports__["a"] = range;
138255  /* unused harmony export dispatch */
138256  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
138257  /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */
138258  
138259  function range(start, count, scheduler) {
138260      if (start === void 0) {
138261          start = 0;
138262      }
138263      if (count === void 0) {
138264          count = 0;
138265      }
138266      return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) {
138267          var index = 0;
138268          var current = start;
138269          if (scheduler) {
138270              return scheduler.schedule(dispatch, 0, {
138271                  index: index, count: count, start: start, subscriber: subscriber
138272              });
138273          }
138274          else {
138275              do {
138276                  if (index++ >= count) {
138277                      subscriber.complete();
138278                      break;
138279                  }
138280                  subscriber.next(current++);
138281                  if (subscriber.closed) {
138282                      break;
138283                  }
138284              } while (true);
138285          }
138286          return undefined;
138287      });
138288  }
138289  function dispatch(state) {
138290      var start = state.start, index = state.index, count = state.count, subscriber = state.subscriber;
138291      if (index >= count) {
138292          subscriber.complete();
138293          return;
138294      }
138295      subscriber.next(start);
138296      if (subscriber.closed) {
138297          return;
138298      }
138299      state.index = index + 1;
138300      state.start = start + 1;
138301      this.schedule(state);
138302  }
138303  //# sourceMappingURL=range.js.map
138304  
138305  
138306  /***/ }),
138307  /* 837 */
138308  /***/ (function(module, __webpack_exports__, __webpack_require__) {
138309  
138310  "use strict";
138311  /* harmony export (immutable) */ __webpack_exports__["a"] = using;
138312  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
138313  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__from__ = __webpack_require__(62);
138314  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__empty__ = __webpack_require__(39);
138315  /** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */
138316  
138317  
138318  
138319  function using(resourceFactory, observableFactory) {
138320      return new __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */](function (subscriber) {
138321          var resource;
138322          try {
138323              resource = resourceFactory();
138324          }
138325          catch (err) {
138326              subscriber.error(err);
138327              return undefined;
138328          }
138329          var result;
138330          try {
138331              result = observableFactory(resource);
138332          }
138333          catch (err) {
138334              subscriber.error(err);
138335              return undefined;
138336          }
138337          var source = result ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__from__["a" /* from */])(result) : __WEBPACK_IMPORTED_MODULE_2__empty__["b" /* EMPTY */];
138338          var subscription = source.subscribe(subscriber);
138339          return function () {
138340              subscription.unsubscribe();
138341              if (resource) {
138342                  resource.unsubscribe();
138343              }
138344          };
138345      });
138346  }
138347  //# sourceMappingURL=using.js.map
138348  
138349  
138350  /***/ }),
138351  /* 838 */
138352  /***/ (function(module, __webpack_exports__, __webpack_require__) {
138353  
138354  "use strict";
138355  /* harmony export (immutable) */ __webpack_exports__["a"] = auditTime;
138356  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__scheduler_async__ = __webpack_require__(40);
138357  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__audit__ = __webpack_require__(428);
138358  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__observable_timer__ = __webpack_require__(427);
138359  /** PURE_IMPORTS_START _scheduler_async,_audit,_observable_timer PURE_IMPORTS_END */
138360  
138361  
138362  
138363  function auditTime(duration, scheduler) {
138364      if (scheduler === void 0) {
138365          scheduler = __WEBPACK_IMPORTED_MODULE_0__scheduler_async__["a" /* async */];
138366      }
138367      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__audit__["a" /* audit */])(function () { return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__observable_timer__["a" /* timer */])(duration, scheduler); });
138368  }
138369  //# sourceMappingURL=auditTime.js.map
138370  
138371  
138372  /***/ }),
138373  /* 839 */
138374  /***/ (function(module, __webpack_exports__, __webpack_require__) {
138375  
138376  "use strict";
138377  /* harmony export (immutable) */ __webpack_exports__["a"] = buffer;
138378  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
138379  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__ = __webpack_require__(13);
138380  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__ = __webpack_require__(14);
138381  /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
138382  
138383  
138384  
138385  function buffer(closingNotifier) {
138386      return function bufferOperatorFunction(source) {
138387          return source.lift(new BufferOperator(closingNotifier));
138388      };
138389  }
138390  var BufferOperator = /*@__PURE__*/ (function () {
138391      function BufferOperator(closingNotifier) {
138392          this.closingNotifier = closingNotifier;
138393      }
138394      BufferOperator.prototype.call = function (subscriber, source) {
138395          return source.subscribe(new BufferSubscriber(subscriber, this.closingNotifier));
138396      };
138397      return BufferOperator;
138398  }());
138399  var BufferSubscriber = /*@__PURE__*/ (function (_super) {
138400      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](BufferSubscriber, _super);
138401      function BufferSubscriber(destination, closingNotifier) {
138402          var _this = _super.call(this, destination) || this;
138403          _this.buffer = [];
138404          _this.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__["a" /* subscribeToResult */])(_this, closingNotifier));
138405          return _this;
138406      }
138407      BufferSubscriber.prototype._next = function (value) {
138408          this.buffer.push(value);
138409      };
138410      BufferSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
138411          var buffer = this.buffer;
138412          this.buffer = [];
138413          this.destination.next(buffer);
138414      };
138415      return BufferSubscriber;
138416  }(__WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__["a" /* OuterSubscriber */]));
138417  //# sourceMappingURL=buffer.js.map
138418  
138419  
138420  /***/ }),
138421  /* 840 */
138422  /***/ (function(module, __webpack_exports__, __webpack_require__) {
138423  
138424  "use strict";
138425  /* harmony export (immutable) */ __webpack_exports__["a"] = bufferCount;
138426  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
138427  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
138428  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
138429  
138430  
138431  function bufferCount(bufferSize, startBufferEvery) {
138432      if (startBufferEvery === void 0) {
138433          startBufferEvery = null;
138434      }
138435      return function bufferCountOperatorFunction(source) {
138436          return source.lift(new BufferCountOperator(bufferSize, startBufferEvery));
138437      };
138438  }
138439  var BufferCountOperator = /*@__PURE__*/ (function () {
138440      function BufferCountOperator(bufferSize, startBufferEvery) {
138441          this.bufferSize = bufferSize;
138442          this.startBufferEvery = startBufferEvery;
138443          if (!startBufferEvery || bufferSize === startBufferEvery) {
138444              this.subscriberClass = BufferCountSubscriber;
138445          }
138446          else {
138447              this.subscriberClass = BufferSkipCountSubscriber;
138448          }
138449      }
138450      BufferCountOperator.prototype.call = function (subscriber, source) {
138451          return source.subscribe(new this.subscriberClass(subscriber, this.bufferSize, this.startBufferEvery));
138452      };
138453      return BufferCountOperator;
138454  }());
138455  var BufferCountSubscriber = /*@__PURE__*/ (function (_super) {
138456      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](BufferCountSubscriber, _super);
138457      function BufferCountSubscriber(destination, bufferSize) {
138458          var _this = _super.call(this, destination) || this;
138459          _this.bufferSize = bufferSize;
138460          _this.buffer = [];
138461          return _this;
138462      }
138463      BufferCountSubscriber.prototype._next = function (value) {
138464          var buffer = this.buffer;
138465          buffer.push(value);
138466          if (buffer.length == this.bufferSize) {
138467              this.destination.next(buffer);
138468              this.buffer = [];
138469          }
138470      };
138471      BufferCountSubscriber.prototype._complete = function () {
138472          var buffer = this.buffer;
138473          if (buffer.length > 0) {
138474              this.destination.next(buffer);
138475          }
138476          _super.prototype._complete.call(this);
138477      };
138478      return BufferCountSubscriber;
138479  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
138480  var BufferSkipCountSubscriber = /*@__PURE__*/ (function (_super) {
138481      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](BufferSkipCountSubscriber, _super);
138482      function BufferSkipCountSubscriber(destination, bufferSize, startBufferEvery) {
138483          var _this = _super.call(this, destination) || this;
138484          _this.bufferSize = bufferSize;
138485          _this.startBufferEvery = startBufferEvery;
138486          _this.buffers = [];
138487          _this.count = 0;
138488          return _this;
138489      }
138490      BufferSkipCountSubscriber.prototype._next = function (value) {
138491          var _a = this, bufferSize = _a.bufferSize, startBufferEvery = _a.startBufferEvery, buffers = _a.buffers, count = _a.count;
138492          this.count++;
138493          if (count % startBufferEvery === 0) {
138494              buffers.push([]);
138495          }
138496          for (var i = buffers.length; i--;) {
138497              var buffer = buffers[i];
138498              buffer.push(value);
138499              if (buffer.length === bufferSize) {
138500                  buffers.splice(i, 1);
138501                  this.destination.next(buffer);
138502              }
138503          }
138504      };
138505      BufferSkipCountSubscriber.prototype._complete = function () {
138506          var _a = this, buffers = _a.buffers, destination = _a.destination;
138507          while (buffers.length > 0) {
138508              var buffer = buffers.shift();
138509              if (buffer.length > 0) {
138510                  destination.next(buffer);
138511              }
138512          }
138513          _super.prototype._complete.call(this);
138514      };
138515      return BufferSkipCountSubscriber;
138516  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
138517  //# sourceMappingURL=bufferCount.js.map
138518  
138519  
138520  /***/ }),
138521  /* 841 */
138522  /***/ (function(module, __webpack_exports__, __webpack_require__) {
138523  
138524  "use strict";
138525  /* harmony export (immutable) */ __webpack_exports__["a"] = bufferTime;
138526  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
138527  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__scheduler_async__ = __webpack_require__(40);
138528  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Subscriber__ = __webpack_require__(7);
138529  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_isScheduler__ = __webpack_require__(49);
138530  /** PURE_IMPORTS_START tslib,_scheduler_async,_Subscriber,_util_isScheduler PURE_IMPORTS_END */
138531  
138532  
138533  
138534  
138535  function bufferTime(bufferTimeSpan) {
138536      var length = arguments.length;
138537      var scheduler = __WEBPACK_IMPORTED_MODULE_1__scheduler_async__["a" /* async */];
138538      if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_isScheduler__["a" /* isScheduler */])(arguments[arguments.length - 1])) {
138539          scheduler = arguments[arguments.length - 1];
138540          length--;
138541      }
138542      var bufferCreationInterval = null;
138543      if (length >= 2) {
138544          bufferCreationInterval = arguments[1];
138545      }
138546      var maxBufferSize = Number.POSITIVE_INFINITY;
138547      if (length >= 3) {
138548          maxBufferSize = arguments[2];
138549      }
138550      return function bufferTimeOperatorFunction(source) {
138551          return source.lift(new BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler));
138552      };
138553  }
138554  var BufferTimeOperator = /*@__PURE__*/ (function () {
138555      function BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) {
138556          this.bufferTimeSpan = bufferTimeSpan;
138557          this.bufferCreationInterval = bufferCreationInterval;
138558          this.maxBufferSize = maxBufferSize;
138559          this.scheduler = scheduler;
138560      }
138561      BufferTimeOperator.prototype.call = function (subscriber, source) {
138562          return source.subscribe(new BufferTimeSubscriber(subscriber, this.bufferTimeSpan, this.bufferCreationInterval, this.maxBufferSize, this.scheduler));
138563      };
138564      return BufferTimeOperator;
138565  }());
138566  var Context = /*@__PURE__*/ (function () {
138567      function Context() {
138568          this.buffer = [];
138569      }
138570      return Context;
138571  }());
138572  var BufferTimeSubscriber = /*@__PURE__*/ (function (_super) {
138573      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](BufferTimeSubscriber, _super);
138574      function BufferTimeSubscriber(destination, bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) {
138575          var _this = _super.call(this, destination) || this;
138576          _this.bufferTimeSpan = bufferTimeSpan;
138577          _this.bufferCreationInterval = bufferCreationInterval;
138578          _this.maxBufferSize = maxBufferSize;
138579          _this.scheduler = scheduler;
138580          _this.contexts = [];
138581          var context = _this.openContext();
138582          _this.timespanOnly = bufferCreationInterval == null || bufferCreationInterval < 0;
138583          if (_this.timespanOnly) {
138584              var timeSpanOnlyState = { subscriber: _this, context: context, bufferTimeSpan: bufferTimeSpan };
138585              _this.add(context.closeAction = scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));
138586          }
138587          else {
138588              var closeState = { subscriber: _this, context: context };
138589              var creationState = { bufferTimeSpan: bufferTimeSpan, bufferCreationInterval: bufferCreationInterval, subscriber: _this, scheduler: scheduler };
138590              _this.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, closeState));
138591              _this.add(scheduler.schedule(dispatchBufferCreation, bufferCreationInterval, creationState));
138592          }
138593          return _this;
138594      }
138595      BufferTimeSubscriber.prototype._next = function (value) {
138596          var contexts = this.contexts;
138597          var len = contexts.length;
138598          var filledBufferContext;
138599          for (var i = 0; i < len; i++) {
138600              var context_1 = contexts[i];
138601              var buffer = context_1.buffer;
138602              buffer.push(value);
138603              if (buffer.length == this.maxBufferSize) {
138604                  filledBufferContext = context_1;
138605              }
138606          }
138607          if (filledBufferContext) {
138608              this.onBufferFull(filledBufferContext);
138609          }
138610      };
138611      BufferTimeSubscriber.prototype._error = function (err) {
138612          this.contexts.length = 0;
138613          _super.prototype._error.call(this, err);
138614      };
138615      BufferTimeSubscriber.prototype._complete = function () {
138616          var _a = this, contexts = _a.contexts, destination = _a.destination;
138617          while (contexts.length > 0) {
138618              var context_2 = contexts.shift();
138619              destination.next(context_2.buffer);
138620          }
138621          _super.prototype._complete.call(this);
138622      };
138623      BufferTimeSubscriber.prototype._unsubscribe = function () {
138624          this.contexts = null;
138625      };
138626      BufferTimeSubscriber.prototype.onBufferFull = function (context) {
138627          this.closeContext(context);
138628          var closeAction = context.closeAction;
138629          closeAction.unsubscribe();
138630          this.remove(closeAction);
138631          if (!this.closed && this.timespanOnly) {
138632              context = this.openContext();
138633              var bufferTimeSpan = this.bufferTimeSpan;
138634              var timeSpanOnlyState = { subscriber: this, context: context, bufferTimeSpan: bufferTimeSpan };
138635              this.add(context.closeAction = this.scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));
138636          }
138637      };
138638      BufferTimeSubscriber.prototype.openContext = function () {
138639          var context = new Context();
138640          this.contexts.push(context);
138641          return context;
138642      };
138643      BufferTimeSubscriber.prototype.closeContext = function (context) {
138644          this.destination.next(context.buffer);
138645          var contexts = this.contexts;
138646          var spliceIndex = contexts ? contexts.indexOf(context) : -1;
138647          if (spliceIndex >= 0) {
138648              contexts.splice(contexts.indexOf(context), 1);
138649          }
138650      };
138651      return BufferTimeSubscriber;
138652  }(__WEBPACK_IMPORTED_MODULE_2__Subscriber__["a" /* Subscriber */]));
138653  function dispatchBufferTimeSpanOnly(state) {
138654      var subscriber = state.subscriber;
138655      var prevContext = state.context;
138656      if (prevContext) {
138657          subscriber.closeContext(prevContext);
138658      }
138659      if (!subscriber.closed) {
138660          state.context = subscriber.openContext();
138661          state.context.closeAction = this.schedule(state, state.bufferTimeSpan);
138662      }
138663  }
138664  function dispatchBufferCreation(state) {
138665      var bufferCreationInterval = state.bufferCreationInterval, bufferTimeSpan = state.bufferTimeSpan, subscriber = state.subscriber, scheduler = state.scheduler;
138666      var context = subscriber.openContext();
138667      var action = this;
138668      if (!subscriber.closed) {
138669          subscriber.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, { subscriber: subscriber, context: context }));
138670          action.schedule(state, bufferCreationInterval);
138671      }
138672  }
138673  function dispatchBufferClose(arg) {
138674      var subscriber = arg.subscriber, context = arg.context;
138675      subscriber.closeContext(context);
138676  }
138677  //# sourceMappingURL=bufferTime.js.map
138678  
138679  
138680  /***/ }),
138681  /* 842 */
138682  /***/ (function(module, __webpack_exports__, __webpack_require__) {
138683  
138684  "use strict";
138685  /* harmony export (immutable) */ __webpack_exports__["a"] = bufferToggle;
138686  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
138687  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscription__ = __webpack_require__(25);
138688  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__ = __webpack_require__(14);
138689  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__OuterSubscriber__ = __webpack_require__(13);
138690  /** PURE_IMPORTS_START tslib,_Subscription,_util_subscribeToResult,_OuterSubscriber PURE_IMPORTS_END */
138691  
138692  
138693  
138694  
138695  function bufferToggle(openings, closingSelector) {
138696      return function bufferToggleOperatorFunction(source) {
138697          return source.lift(new BufferToggleOperator(openings, closingSelector));
138698      };
138699  }
138700  var BufferToggleOperator = /*@__PURE__*/ (function () {
138701      function BufferToggleOperator(openings, closingSelector) {
138702          this.openings = openings;
138703          this.closingSelector = closingSelector;
138704      }
138705      BufferToggleOperator.prototype.call = function (subscriber, source) {
138706          return source.subscribe(new BufferToggleSubscriber(subscriber, this.openings, this.closingSelector));
138707      };
138708      return BufferToggleOperator;
138709  }());
138710  var BufferToggleSubscriber = /*@__PURE__*/ (function (_super) {
138711      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](BufferToggleSubscriber, _super);
138712      function BufferToggleSubscriber(destination, openings, closingSelector) {
138713          var _this = _super.call(this, destination) || this;
138714          _this.openings = openings;
138715          _this.closingSelector = closingSelector;
138716          _this.contexts = [];
138717          _this.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__["a" /* subscribeToResult */])(_this, openings));
138718          return _this;
138719      }
138720      BufferToggleSubscriber.prototype._next = function (value) {
138721          var contexts = this.contexts;
138722          var len = contexts.length;
138723          for (var i = 0; i < len; i++) {
138724              contexts[i].buffer.push(value);
138725          }
138726      };
138727      BufferToggleSubscriber.prototype._error = function (err) {
138728          var contexts = this.contexts;
138729          while (contexts.length > 0) {
138730              var context_1 = contexts.shift();
138731              context_1.subscription.unsubscribe();
138732              context_1.buffer = null;
138733              context_1.subscription = null;
138734          }
138735          this.contexts = null;
138736          _super.prototype._error.call(this, err);
138737      };
138738      BufferToggleSubscriber.prototype._complete = function () {
138739          var contexts = this.contexts;
138740          while (contexts.length > 0) {
138741              var context_2 = contexts.shift();
138742              this.destination.next(context_2.buffer);
138743              context_2.subscription.unsubscribe();
138744              context_2.buffer = null;
138745              context_2.subscription = null;
138746          }
138747          this.contexts = null;
138748          _super.prototype._complete.call(this);
138749      };
138750      BufferToggleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
138751          outerValue ? this.closeBuffer(outerValue) : this.openBuffer(innerValue);
138752      };
138753      BufferToggleSubscriber.prototype.notifyComplete = function (innerSub) {
138754          this.closeBuffer(innerSub.context);
138755      };
138756      BufferToggleSubscriber.prototype.openBuffer = function (value) {
138757          try {
138758              var closingSelector = this.closingSelector;
138759              var closingNotifier = closingSelector.call(this, value);
138760              if (closingNotifier) {
138761                  this.trySubscribe(closingNotifier);
138762              }
138763          }
138764          catch (err) {
138765              this._error(err);
138766          }
138767      };
138768      BufferToggleSubscriber.prototype.closeBuffer = function (context) {
138769          var contexts = this.contexts;
138770          if (contexts && context) {
138771              var buffer = context.buffer, subscription = context.subscription;
138772              this.destination.next(buffer);
138773              contexts.splice(contexts.indexOf(context), 1);
138774              this.remove(subscription);
138775              subscription.unsubscribe();
138776          }
138777      };
138778      BufferToggleSubscriber.prototype.trySubscribe = function (closingNotifier) {
138779          var contexts = this.contexts;
138780          var buffer = [];
138781          var subscription = new __WEBPACK_IMPORTED_MODULE_1__Subscription__["a" /* Subscription */]();
138782          var context = { buffer: buffer, subscription: subscription };
138783          contexts.push(context);
138784          var innerSubscription = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__["a" /* subscribeToResult */])(this, closingNotifier, context);
138785          if (!innerSubscription || innerSubscription.closed) {
138786              this.closeBuffer(context);
138787          }
138788          else {
138789              innerSubscription.context = context;
138790              this.add(innerSubscription);
138791              subscription.add(innerSubscription);
138792          }
138793      };
138794      return BufferToggleSubscriber;
138795  }(__WEBPACK_IMPORTED_MODULE_3__OuterSubscriber__["a" /* OuterSubscriber */]));
138796  //# sourceMappingURL=bufferToggle.js.map
138797  
138798  
138799  /***/ }),
138800  /* 843 */
138801  /***/ (function(module, __webpack_exports__, __webpack_require__) {
138802  
138803  "use strict";
138804  /* harmony export (immutable) */ __webpack_exports__["a"] = bufferWhen;
138805  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
138806  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscription__ = __webpack_require__(25);
138807  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_tryCatch__ = __webpack_require__(57);
138808  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_errorObject__ = __webpack_require__(48);
138809  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__OuterSubscriber__ = __webpack_require__(13);
138810  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_subscribeToResult__ = __webpack_require__(14);
138811  /** PURE_IMPORTS_START tslib,_Subscription,_util_tryCatch,_util_errorObject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
138812  
138813  
138814  
138815  
138816  
138817  
138818  function bufferWhen(closingSelector) {
138819      return function (source) {
138820          return source.lift(new BufferWhenOperator(closingSelector));
138821      };
138822  }
138823  var BufferWhenOperator = /*@__PURE__*/ (function () {
138824      function BufferWhenOperator(closingSelector) {
138825          this.closingSelector = closingSelector;
138826      }
138827      BufferWhenOperator.prototype.call = function (subscriber, source) {
138828          return source.subscribe(new BufferWhenSubscriber(subscriber, this.closingSelector));
138829      };
138830      return BufferWhenOperator;
138831  }());
138832  var BufferWhenSubscriber = /*@__PURE__*/ (function (_super) {
138833      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](BufferWhenSubscriber, _super);
138834      function BufferWhenSubscriber(destination, closingSelector) {
138835          var _this = _super.call(this, destination) || this;
138836          _this.closingSelector = closingSelector;
138837          _this.subscribing = false;
138838          _this.openBuffer();
138839          return _this;
138840      }
138841      BufferWhenSubscriber.prototype._next = function (value) {
138842          this.buffer.push(value);
138843      };
138844      BufferWhenSubscriber.prototype._complete = function () {
138845          var buffer = this.buffer;
138846          if (buffer) {
138847              this.destination.next(buffer);
138848          }
138849          _super.prototype._complete.call(this);
138850      };
138851      BufferWhenSubscriber.prototype._unsubscribe = function () {
138852          this.buffer = null;
138853          this.subscribing = false;
138854      };
138855      BufferWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
138856          this.openBuffer();
138857      };
138858      BufferWhenSubscriber.prototype.notifyComplete = function () {
138859          if (this.subscribing) {
138860              this.complete();
138861          }
138862          else {
138863              this.openBuffer();
138864          }
138865      };
138866      BufferWhenSubscriber.prototype.openBuffer = function () {
138867          var closingSubscription = this.closingSubscription;
138868          if (closingSubscription) {
138869              this.remove(closingSubscription);
138870              closingSubscription.unsubscribe();
138871          }
138872          var buffer = this.buffer;
138873          if (this.buffer) {
138874              this.destination.next(buffer);
138875          }
138876          this.buffer = [];
138877          var closingNotifier = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_tryCatch__["a" /* tryCatch */])(this.closingSelector)();
138878          if (closingNotifier === __WEBPACK_IMPORTED_MODULE_3__util_errorObject__["a" /* errorObject */]) {
138879              this.error(__WEBPACK_IMPORTED_MODULE_3__util_errorObject__["a" /* errorObject */].e);
138880          }
138881          else {
138882              closingSubscription = new __WEBPACK_IMPORTED_MODULE_1__Subscription__["a" /* Subscription */]();
138883              this.closingSubscription = closingSubscription;
138884              this.add(closingSubscription);
138885              this.subscribing = true;
138886              closingSubscription.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__util_subscribeToResult__["a" /* subscribeToResult */])(this, closingNotifier));
138887              this.subscribing = false;
138888          }
138889      };
138890      return BufferWhenSubscriber;
138891  }(__WEBPACK_IMPORTED_MODULE_4__OuterSubscriber__["a" /* OuterSubscriber */]));
138892  //# sourceMappingURL=bufferWhen.js.map
138893  
138894  
138895  /***/ }),
138896  /* 844 */
138897  /***/ (function(module, __webpack_exports__, __webpack_require__) {
138898  
138899  "use strict";
138900  /* harmony export (immutable) */ __webpack_exports__["a"] = catchError;
138901  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
138902  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__ = __webpack_require__(13);
138903  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__InnerSubscriber__ = __webpack_require__(84);
138904  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_subscribeToResult__ = __webpack_require__(14);
138905  /** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
138906  
138907  
138908  
138909  
138910  function catchError(selector) {
138911      return function catchErrorOperatorFunction(source) {
138912          var operator = new CatchOperator(selector);
138913          var caught = source.lift(operator);
138914          return (operator.caught = caught);
138915      };
138916  }
138917  var CatchOperator = /*@__PURE__*/ (function () {
138918      function CatchOperator(selector) {
138919          this.selector = selector;
138920      }
138921      CatchOperator.prototype.call = function (subscriber, source) {
138922          return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));
138923      };
138924      return CatchOperator;
138925  }());
138926  var CatchSubscriber = /*@__PURE__*/ (function (_super) {
138927      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](CatchSubscriber, _super);
138928      function CatchSubscriber(destination, selector, caught) {
138929          var _this = _super.call(this, destination) || this;
138930          _this.selector = selector;
138931          _this.caught = caught;
138932          return _this;
138933      }
138934      CatchSubscriber.prototype.error = function (err) {
138935          if (!this.isStopped) {
138936              var result = void 0;
138937              try {
138938                  result = this.selector(err, this.caught);
138939              }
138940              catch (err2) {
138941                  _super.prototype.error.call(this, err2);
138942                  return;
138943              }
138944              this._unsubscribeAndRecycle();
138945              var innerSubscriber = new __WEBPACK_IMPORTED_MODULE_2__InnerSubscriber__["a" /* InnerSubscriber */](this, undefined, undefined);
138946              this.add(innerSubscriber);
138947              __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_subscribeToResult__["a" /* subscribeToResult */])(this, result, undefined, undefined, innerSubscriber);
138948          }
138949      };
138950      return CatchSubscriber;
138951  }(__WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__["a" /* OuterSubscriber */]));
138952  //# sourceMappingURL=catchError.js.map
138953  
138954  
138955  /***/ }),
138956  /* 845 */
138957  /***/ (function(module, __webpack_exports__, __webpack_require__) {
138958  
138959  "use strict";
138960  /* harmony export (immutable) */ __webpack_exports__["a"] = combineAll;
138961  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable_combineLatest__ = __webpack_require__(309);
138962  /** PURE_IMPORTS_START _observable_combineLatest PURE_IMPORTS_END */
138963  
138964  function combineAll(project) {
138965      return function (source) { return source.lift(new __WEBPACK_IMPORTED_MODULE_0__observable_combineLatest__["b" /* CombineLatestOperator */](project)); };
138966  }
138967  //# sourceMappingURL=combineAll.js.map
138968  
138969  
138970  /***/ }),
138971  /* 846 */
138972  /***/ (function(module, __webpack_exports__, __webpack_require__) {
138973  
138974  "use strict";
138975  /* harmony export (immutable) */ __webpack_exports__["a"] = combineLatest;
138976  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_isArray__ = __webpack_require__(41);
138977  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__observable_combineLatest__ = __webpack_require__(309);
138978  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__observable_from__ = __webpack_require__(62);
138979  /** PURE_IMPORTS_START _util_isArray,_observable_combineLatest,_observable_from PURE_IMPORTS_END */
138980  
138981  
138982  
138983  var none = {};
138984  function combineLatest() {
138985      var observables = [];
138986      for (var _i = 0; _i < arguments.length; _i++) {
138987          observables[_i] = arguments[_i];
138988      }
138989      var project = null;
138990      if (typeof observables[observables.length - 1] === 'function') {
138991          project = observables.pop();
138992      }
138993      if (observables.length === 1 && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util_isArray__["a" /* isArray */])(observables[0])) {
138994          observables = observables[0].slice();
138995      }
138996      return function (source) { return source.lift.call(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__observable_from__["a" /* from */])([source].concat(observables)), new __WEBPACK_IMPORTED_MODULE_1__observable_combineLatest__["b" /* CombineLatestOperator */](project)); };
138997  }
138998  //# sourceMappingURL=combineLatest.js.map
138999  
139000  
139001  /***/ }),
139002  /* 847 */
139003  /***/ (function(module, __webpack_exports__, __webpack_require__) {
139004  
139005  "use strict";
139006  /* harmony export (immutable) */ __webpack_exports__["a"] = concat;
139007  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable_concat__ = __webpack_require__(187);
139008  /** PURE_IMPORTS_START _observable_concat PURE_IMPORTS_END */
139009  
139010  function concat() {
139011      var observables = [];
139012      for (var _i = 0; _i < arguments.length; _i++) {
139013          observables[_i] = arguments[_i];
139014      }
139015      return function (source) { return source.lift.call(__WEBPACK_IMPORTED_MODULE_0__observable_concat__["a" /* concat */].apply(void 0, [source].concat(observables))); };
139016  }
139017  //# sourceMappingURL=concat.js.map
139018  
139019  
139020  /***/ }),
139021  /* 848 */
139022  /***/ (function(module, __webpack_exports__, __webpack_require__) {
139023  
139024  "use strict";
139025  /* harmony export (immutable) */ __webpack_exports__["a"] = concatMapTo;
139026  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__concatMap__ = __webpack_require__(430);
139027  /** PURE_IMPORTS_START _concatMap PURE_IMPORTS_END */
139028  
139029  function concatMapTo(innerObservable, resultSelector) {
139030      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__concatMap__["a" /* concatMap */])(function () { return innerObservable; }, resultSelector);
139031  }
139032  //# sourceMappingURL=concatMapTo.js.map
139033  
139034  
139035  /***/ }),
139036  /* 849 */
139037  /***/ (function(module, __webpack_exports__, __webpack_require__) {
139038  
139039  "use strict";
139040  /* harmony export (immutable) */ __webpack_exports__["a"] = count;
139041  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
139042  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
139043  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
139044  
139045  
139046  function count(predicate) {
139047      return function (source) { return source.lift(new CountOperator(predicate, source)); };
139048  }
139049  var CountOperator = /*@__PURE__*/ (function () {
139050      function CountOperator(predicate, source) {
139051          this.predicate = predicate;
139052          this.source = source;
139053      }
139054      CountOperator.prototype.call = function (subscriber, source) {
139055          return source.subscribe(new CountSubscriber(subscriber, this.predicate, this.source));
139056      };
139057      return CountOperator;
139058  }());
139059  var CountSubscriber = /*@__PURE__*/ (function (_super) {
139060      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](CountSubscriber, _super);
139061      function CountSubscriber(destination, predicate, source) {
139062          var _this = _super.call(this, destination) || this;
139063          _this.predicate = predicate;
139064          _this.source = source;
139065          _this.count = 0;
139066          _this.index = 0;
139067          return _this;
139068      }
139069      CountSubscriber.prototype._next = function (value) {
139070          if (this.predicate) {
139071              this._tryPredicate(value);
139072          }
139073          else {
139074              this.count++;
139075          }
139076      };
139077      CountSubscriber.prototype._tryPredicate = function (value) {
139078          var result;
139079          try {
139080              result = this.predicate(value, this.index++, this.source);
139081          }
139082          catch (err) {
139083              this.destination.error(err);
139084              return;
139085          }
139086          if (result) {
139087              this.count++;
139088          }
139089      };
139090      CountSubscriber.prototype._complete = function () {
139091          this.destination.next(this.count);
139092          this.destination.complete();
139093      };
139094      return CountSubscriber;
139095  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
139096  //# sourceMappingURL=count.js.map
139097  
139098  
139099  /***/ }),
139100  /* 850 */
139101  /***/ (function(module, __webpack_exports__, __webpack_require__) {
139102  
139103  "use strict";
139104  /* harmony export (immutable) */ __webpack_exports__["a"] = debounce;
139105  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
139106  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__ = __webpack_require__(13);
139107  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__ = __webpack_require__(14);
139108  /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
139109  
139110  
139111  
139112  function debounce(durationSelector) {
139113      return function (source) { return source.lift(new DebounceOperator(durationSelector)); };
139114  }
139115  var DebounceOperator = /*@__PURE__*/ (function () {
139116      function DebounceOperator(durationSelector) {
139117          this.durationSelector = durationSelector;
139118      }
139119      DebounceOperator.prototype.call = function (subscriber, source) {
139120          return source.subscribe(new DebounceSubscriber(subscriber, this.durationSelector));
139121      };
139122      return DebounceOperator;
139123  }());
139124  var DebounceSubscriber = /*@__PURE__*/ (function (_super) {
139125      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](DebounceSubscriber, _super);
139126      function DebounceSubscriber(destination, durationSelector) {
139127          var _this = _super.call(this, destination) || this;
139128          _this.durationSelector = durationSelector;
139129          _this.hasValue = false;
139130          _this.durationSubscription = null;
139131          return _this;
139132      }
139133      DebounceSubscriber.prototype._next = function (value) {
139134          try {
139135              var result = this.durationSelector.call(this, value);
139136              if (result) {
139137                  this._tryNext(value, result);
139138              }
139139          }
139140          catch (err) {
139141              this.destination.error(err);
139142          }
139143      };
139144      DebounceSubscriber.prototype._complete = function () {
139145          this.emitValue();
139146          this.destination.complete();
139147      };
139148      DebounceSubscriber.prototype._tryNext = function (value, duration) {
139149          var subscription = this.durationSubscription;
139150          this.value = value;
139151          this.hasValue = true;
139152          if (subscription) {
139153              subscription.unsubscribe();
139154              this.remove(subscription);
139155          }
139156          subscription = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__["a" /* subscribeToResult */])(this, duration);
139157          if (subscription && !subscription.closed) {
139158              this.add(this.durationSubscription = subscription);
139159          }
139160      };
139161      DebounceSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
139162          this.emitValue();
139163      };
139164      DebounceSubscriber.prototype.notifyComplete = function () {
139165          this.emitValue();
139166      };
139167      DebounceSubscriber.prototype.emitValue = function () {
139168          if (this.hasValue) {
139169              var value = this.value;
139170              var subscription = this.durationSubscription;
139171              if (subscription) {
139172                  this.durationSubscription = null;
139173                  subscription.unsubscribe();
139174                  this.remove(subscription);
139175              }
139176              this.value = null;
139177              this.hasValue = false;
139178              _super.prototype._next.call(this, value);
139179          }
139180      };
139181      return DebounceSubscriber;
139182  }(__WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__["a" /* OuterSubscriber */]));
139183  //# sourceMappingURL=debounce.js.map
139184  
139185  
139186  /***/ }),
139187  /* 851 */
139188  /***/ (function(module, __webpack_exports__, __webpack_require__) {
139189  
139190  "use strict";
139191  /* harmony export (immutable) */ __webpack_exports__["a"] = debounceTime;
139192  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
139193  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
139194  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__scheduler_async__ = __webpack_require__(40);
139195  /** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */
139196  
139197  
139198  
139199  function debounceTime(dueTime, scheduler) {
139200      if (scheduler === void 0) {
139201          scheduler = __WEBPACK_IMPORTED_MODULE_2__scheduler_async__["a" /* async */];
139202      }
139203      return function (source) { return source.lift(new DebounceTimeOperator(dueTime, scheduler)); };
139204  }
139205  var DebounceTimeOperator = /*@__PURE__*/ (function () {
139206      function DebounceTimeOperator(dueTime, scheduler) {
139207          this.dueTime = dueTime;
139208          this.scheduler = scheduler;
139209      }
139210      DebounceTimeOperator.prototype.call = function (subscriber, source) {
139211          return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));
139212      };
139213      return DebounceTimeOperator;
139214  }());
139215  var DebounceTimeSubscriber = /*@__PURE__*/ (function (_super) {
139216      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](DebounceTimeSubscriber, _super);
139217      function DebounceTimeSubscriber(destination, dueTime, scheduler) {
139218          var _this = _super.call(this, destination) || this;
139219          _this.dueTime = dueTime;
139220          _this.scheduler = scheduler;
139221          _this.debouncedSubscription = null;
139222          _this.lastValue = null;
139223          _this.hasValue = false;
139224          return _this;
139225      }
139226      DebounceTimeSubscriber.prototype._next = function (value) {
139227          this.clearDebounce();
139228          this.lastValue = value;
139229          this.hasValue = true;
139230          this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));
139231      };
139232      DebounceTimeSubscriber.prototype._complete = function () {
139233          this.debouncedNext();
139234          this.destination.complete();
139235      };
139236      DebounceTimeSubscriber.prototype.debouncedNext = function () {
139237          this.clearDebounce();
139238          if (this.hasValue) {
139239              var lastValue = this.lastValue;
139240              this.lastValue = null;
139241              this.hasValue = false;
139242              this.destination.next(lastValue);
139243          }
139244      };
139245      DebounceTimeSubscriber.prototype.clearDebounce = function () {
139246          var debouncedSubscription = this.debouncedSubscription;
139247          if (debouncedSubscription !== null) {
139248              this.remove(debouncedSubscription);
139249              debouncedSubscription.unsubscribe();
139250              this.debouncedSubscription = null;
139251          }
139252      };
139253      return DebounceTimeSubscriber;
139254  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
139255  function dispatchNext(subscriber) {
139256      subscriber.debouncedNext();
139257  }
139258  //# sourceMappingURL=debounceTime.js.map
139259  
139260  
139261  /***/ }),
139262  /* 852 */
139263  /***/ (function(module, __webpack_exports__, __webpack_require__) {
139264  
139265  "use strict";
139266  /* harmony export (immutable) */ __webpack_exports__["a"] = delay;
139267  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
139268  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__scheduler_async__ = __webpack_require__(40);
139269  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isDate__ = __webpack_require__(443);
139270  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscriber__ = __webpack_require__(7);
139271  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__Notification__ = __webpack_require__(185);
139272  /** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_Subscriber,_Notification PURE_IMPORTS_END */
139273  
139274  
139275  
139276  
139277  
139278  function delay(delay, scheduler) {
139279      if (scheduler === void 0) {
139280          scheduler = __WEBPACK_IMPORTED_MODULE_1__scheduler_async__["a" /* async */];
139281      }
139282      var absoluteDelay = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_isDate__["a" /* isDate */])(delay);
139283      var delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);
139284      return function (source) { return source.lift(new DelayOperator(delayFor, scheduler)); };
139285  }
139286  var DelayOperator = /*@__PURE__*/ (function () {
139287      function DelayOperator(delay, scheduler) {
139288          this.delay = delay;
139289          this.scheduler = scheduler;
139290      }
139291      DelayOperator.prototype.call = function (subscriber, source) {
139292          return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));
139293      };
139294      return DelayOperator;
139295  }());
139296  var DelaySubscriber = /*@__PURE__*/ (function (_super) {
139297      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](DelaySubscriber, _super);
139298      function DelaySubscriber(destination, delay, scheduler) {
139299          var _this = _super.call(this, destination) || this;
139300          _this.delay = delay;
139301          _this.scheduler = scheduler;
139302          _this.queue = [];
139303          _this.active = false;
139304          _this.errored = false;
139305          return _this;
139306      }
139307      DelaySubscriber.dispatch = function (state) {
139308          var source = state.source;
139309          var queue = source.queue;
139310          var scheduler = state.scheduler;
139311          var destination = state.destination;
139312          while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {
139313              queue.shift().notification.observe(destination);
139314          }
139315          if (queue.length > 0) {
139316              var delay_1 = Math.max(0, queue[0].time - scheduler.now());
139317              this.schedule(state, delay_1);
139318          }
139319          else {
139320              this.unsubscribe();
139321              source.active = false;
139322          }
139323      };
139324      DelaySubscriber.prototype._schedule = function (scheduler) {
139325          this.active = true;
139326          var destination = this.destination;
139327          destination.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, {
139328              source: this, destination: this.destination, scheduler: scheduler
139329          }));
139330      };
139331      DelaySubscriber.prototype.scheduleNotification = function (notification) {
139332          if (this.errored === true) {
139333              return;
139334          }
139335          var scheduler = this.scheduler;
139336          var message = new DelayMessage(scheduler.now() + this.delay, notification);
139337          this.queue.push(message);
139338          if (this.active === false) {
139339              this._schedule(scheduler);
139340          }
139341      };
139342      DelaySubscriber.prototype._next = function (value) {
139343          this.scheduleNotification(__WEBPACK_IMPORTED_MODULE_4__Notification__["a" /* Notification */].createNext(value));
139344      };
139345      DelaySubscriber.prototype._error = function (err) {
139346          this.errored = true;
139347          this.queue = [];
139348          this.destination.error(err);
139349          this.unsubscribe();
139350      };
139351      DelaySubscriber.prototype._complete = function () {
139352          this.scheduleNotification(__WEBPACK_IMPORTED_MODULE_4__Notification__["a" /* Notification */].createComplete());
139353          this.unsubscribe();
139354      };
139355      return DelaySubscriber;
139356  }(__WEBPACK_IMPORTED_MODULE_3__Subscriber__["a" /* Subscriber */]));
139357  var DelayMessage = /*@__PURE__*/ (function () {
139358      function DelayMessage(time, notification) {
139359          this.time = time;
139360          this.notification = notification;
139361      }
139362      return DelayMessage;
139363  }());
139364  //# sourceMappingURL=delay.js.map
139365  
139366  
139367  /***/ }),
139368  /* 853 */
139369  /***/ (function(module, __webpack_exports__, __webpack_require__) {
139370  
139371  "use strict";
139372  /* harmony export (immutable) */ __webpack_exports__["a"] = delayWhen;
139373  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
139374  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
139375  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Observable__ = __webpack_require__(12);
139376  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__OuterSubscriber__ = __webpack_require__(13);
139377  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_subscribeToResult__ = __webpack_require__(14);
139378  /** PURE_IMPORTS_START tslib,_Subscriber,_Observable,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
139379  
139380  
139381  
139382  
139383  
139384  function delayWhen(delayDurationSelector, subscriptionDelay) {
139385      if (subscriptionDelay) {
139386          return function (source) {
139387              return new SubscriptionDelayObservable(source, subscriptionDelay)
139388                  .lift(new DelayWhenOperator(delayDurationSelector));
139389          };
139390      }
139391      return function (source) { return source.lift(new DelayWhenOperator(delayDurationSelector)); };
139392  }
139393  var DelayWhenOperator = /*@__PURE__*/ (function () {
139394      function DelayWhenOperator(delayDurationSelector) {
139395          this.delayDurationSelector = delayDurationSelector;
139396      }
139397      DelayWhenOperator.prototype.call = function (subscriber, source) {
139398          return source.subscribe(new DelayWhenSubscriber(subscriber, this.delayDurationSelector));
139399      };
139400      return DelayWhenOperator;
139401  }());
139402  var DelayWhenSubscriber = /*@__PURE__*/ (function (_super) {
139403      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](DelayWhenSubscriber, _super);
139404      function DelayWhenSubscriber(destination, delayDurationSelector) {
139405          var _this = _super.call(this, destination) || this;
139406          _this.delayDurationSelector = delayDurationSelector;
139407          _this.completed = false;
139408          _this.delayNotifierSubscriptions = [];
139409          _this.index = 0;
139410          return _this;
139411      }
139412      DelayWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
139413          this.destination.next(outerValue);
139414          this.removeSubscription(innerSub);
139415          this.tryComplete();
139416      };
139417      DelayWhenSubscriber.prototype.notifyError = function (error, innerSub) {
139418          this._error(error);
139419      };
139420      DelayWhenSubscriber.prototype.notifyComplete = function (innerSub) {
139421          var value = this.removeSubscription(innerSub);
139422          if (value) {
139423              this.destination.next(value);
139424          }
139425          this.tryComplete();
139426      };
139427      DelayWhenSubscriber.prototype._next = function (value) {
139428          var index = this.index++;
139429          try {
139430              var delayNotifier = this.delayDurationSelector(value, index);
139431              if (delayNotifier) {
139432                  this.tryDelay(delayNotifier, value);
139433              }
139434          }
139435          catch (err) {
139436              this.destination.error(err);
139437          }
139438      };
139439      DelayWhenSubscriber.prototype._complete = function () {
139440          this.completed = true;
139441          this.tryComplete();
139442          this.unsubscribe();
139443      };
139444      DelayWhenSubscriber.prototype.removeSubscription = function (subscription) {
139445          subscription.unsubscribe();
139446          var subscriptionIdx = this.delayNotifierSubscriptions.indexOf(subscription);
139447          if (subscriptionIdx !== -1) {
139448              this.delayNotifierSubscriptions.splice(subscriptionIdx, 1);
139449          }
139450          return subscription.outerValue;
139451      };
139452      DelayWhenSubscriber.prototype.tryDelay = function (delayNotifier, value) {
139453          var notifierSubscription = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util_subscribeToResult__["a" /* subscribeToResult */])(this, delayNotifier, value);
139454          if (notifierSubscription && !notifierSubscription.closed) {
139455              var destination = this.destination;
139456              destination.add(notifierSubscription);
139457              this.delayNotifierSubscriptions.push(notifierSubscription);
139458          }
139459      };
139460      DelayWhenSubscriber.prototype.tryComplete = function () {
139461          if (this.completed && this.delayNotifierSubscriptions.length === 0) {
139462              this.destination.complete();
139463          }
139464      };
139465      return DelayWhenSubscriber;
139466  }(__WEBPACK_IMPORTED_MODULE_3__OuterSubscriber__["a" /* OuterSubscriber */]));
139467  var SubscriptionDelayObservable = /*@__PURE__*/ (function (_super) {
139468      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SubscriptionDelayObservable, _super);
139469      function SubscriptionDelayObservable(source, subscriptionDelay) {
139470          var _this = _super.call(this) || this;
139471          _this.source = source;
139472          _this.subscriptionDelay = subscriptionDelay;
139473          return _this;
139474      }
139475      SubscriptionDelayObservable.prototype._subscribe = function (subscriber) {
139476          this.subscriptionDelay.subscribe(new SubscriptionDelaySubscriber(subscriber, this.source));
139477      };
139478      return SubscriptionDelayObservable;
139479  }(__WEBPACK_IMPORTED_MODULE_2__Observable__["a" /* Observable */]));
139480  var SubscriptionDelaySubscriber = /*@__PURE__*/ (function (_super) {
139481      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SubscriptionDelaySubscriber, _super);
139482      function SubscriptionDelaySubscriber(parent, source) {
139483          var _this = _super.call(this) || this;
139484          _this.parent = parent;
139485          _this.source = source;
139486          _this.sourceSubscribed = false;
139487          return _this;
139488      }
139489      SubscriptionDelaySubscriber.prototype._next = function (unused) {
139490          this.subscribeToSource();
139491      };
139492      SubscriptionDelaySubscriber.prototype._error = function (err) {
139493          this.unsubscribe();
139494          this.parent.error(err);
139495      };
139496      SubscriptionDelaySubscriber.prototype._complete = function () {
139497          this.unsubscribe();
139498          this.subscribeToSource();
139499      };
139500      SubscriptionDelaySubscriber.prototype.subscribeToSource = function () {
139501          if (!this.sourceSubscribed) {
139502              this.sourceSubscribed = true;
139503              this.unsubscribe();
139504              this.source.subscribe(this.parent);
139505          }
139506      };
139507      return SubscriptionDelaySubscriber;
139508  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
139509  //# sourceMappingURL=delayWhen.js.map
139510  
139511  
139512  /***/ }),
139513  /* 854 */
139514  /***/ (function(module, __webpack_exports__, __webpack_require__) {
139515  
139516  "use strict";
139517  /* harmony export (immutable) */ __webpack_exports__["a"] = dematerialize;
139518  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
139519  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
139520  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
139521  
139522  
139523  function dematerialize() {
139524      return function dematerializeOperatorFunction(source) {
139525          return source.lift(new DeMaterializeOperator());
139526      };
139527  }
139528  var DeMaterializeOperator = /*@__PURE__*/ (function () {
139529      function DeMaterializeOperator() {
139530      }
139531      DeMaterializeOperator.prototype.call = function (subscriber, source) {
139532          return source.subscribe(new DeMaterializeSubscriber(subscriber));
139533      };
139534      return DeMaterializeOperator;
139535  }());
139536  var DeMaterializeSubscriber = /*@__PURE__*/ (function (_super) {
139537      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](DeMaterializeSubscriber, _super);
139538      function DeMaterializeSubscriber(destination) {
139539          return _super.call(this, destination) || this;
139540      }
139541      DeMaterializeSubscriber.prototype._next = function (value) {
139542          value.observe(this.destination);
139543      };
139544      return DeMaterializeSubscriber;
139545  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
139546  //# sourceMappingURL=dematerialize.js.map
139547  
139548  
139549  /***/ }),
139550  /* 855 */
139551  /***/ (function(module, __webpack_exports__, __webpack_require__) {
139552  
139553  "use strict";
139554  /* harmony export (immutable) */ __webpack_exports__["a"] = distinct;
139555  /* unused harmony export DistinctSubscriber */
139556  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
139557  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__ = __webpack_require__(13);
139558  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__ = __webpack_require__(14);
139559  /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
139560  
139561  
139562  
139563  function distinct(keySelector, flushes) {
139564      return function (source) { return source.lift(new DistinctOperator(keySelector, flushes)); };
139565  }
139566  var DistinctOperator = /*@__PURE__*/ (function () {
139567      function DistinctOperator(keySelector, flushes) {
139568          this.keySelector = keySelector;
139569          this.flushes = flushes;
139570      }
139571      DistinctOperator.prototype.call = function (subscriber, source) {
139572          return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes));
139573      };
139574      return DistinctOperator;
139575  }());
139576  var DistinctSubscriber = /*@__PURE__*/ (function (_super) {
139577      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](DistinctSubscriber, _super);
139578      function DistinctSubscriber(destination, keySelector, flushes) {
139579          var _this = _super.call(this, destination) || this;
139580          _this.keySelector = keySelector;
139581          _this.values = new Set();
139582          if (flushes) {
139583              _this.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__["a" /* subscribeToResult */])(_this, flushes));
139584          }
139585          return _this;
139586      }
139587      DistinctSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
139588          this.values.clear();
139589      };
139590      DistinctSubscriber.prototype.notifyError = function (error, innerSub) {
139591          this._error(error);
139592      };
139593      DistinctSubscriber.prototype._next = function (value) {
139594          if (this.keySelector) {
139595              this._useKeySelector(value);
139596          }
139597          else {
139598              this._finalizeNext(value, value);
139599          }
139600      };
139601      DistinctSubscriber.prototype._useKeySelector = function (value) {
139602          var key;
139603          var destination = this.destination;
139604          try {
139605              key = this.keySelector(value);
139606          }
139607          catch (err) {
139608              destination.error(err);
139609              return;
139610          }
139611          this._finalizeNext(key, value);
139612      };
139613      DistinctSubscriber.prototype._finalizeNext = function (key, value) {
139614          var values = this.values;
139615          if (!values.has(key)) {
139616              values.add(key);
139617              this.destination.next(value);
139618          }
139619      };
139620      return DistinctSubscriber;
139621  }(__WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__["a" /* OuterSubscriber */]));
139622  
139623  //# sourceMappingURL=distinct.js.map
139624  
139625  
139626  /***/ }),
139627  /* 856 */
139628  /***/ (function(module, __webpack_exports__, __webpack_require__) {
139629  
139630  "use strict";
139631  /* harmony export (immutable) */ __webpack_exports__["a"] = distinctUntilKeyChanged;
139632  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__distinctUntilChanged__ = __webpack_require__(431);
139633  /** PURE_IMPORTS_START _distinctUntilChanged PURE_IMPORTS_END */
139634  
139635  function distinctUntilKeyChanged(key, compare) {
139636      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__distinctUntilChanged__["a" /* distinctUntilChanged */])(function (x, y) { return compare ? compare(x[key], y[key]) : x[key] === y[key]; });
139637  }
139638  //# sourceMappingURL=distinctUntilKeyChanged.js.map
139639  
139640  
139641  /***/ }),
139642  /* 857 */
139643  /***/ (function(module, __webpack_exports__, __webpack_require__) {
139644  
139645  "use strict";
139646  /* harmony export (immutable) */ __webpack_exports__["a"] = elementAt;
139647  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_ArgumentOutOfRangeError__ = __webpack_require__(152);
139648  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__filter__ = __webpack_require__(147);
139649  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__throwIfEmpty__ = __webpack_require__(189);
139650  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__defaultIfEmpty__ = __webpack_require__(146);
139651  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__take__ = __webpack_require__(319);
139652  /** PURE_IMPORTS_START _util_ArgumentOutOfRangeError,_filter,_throwIfEmpty,_defaultIfEmpty,_take PURE_IMPORTS_END */
139653  
139654  
139655  
139656  
139657  
139658  function elementAt(index, defaultValue) {
139659      if (index < 0) {
139660          throw new __WEBPACK_IMPORTED_MODULE_0__util_ArgumentOutOfRangeError__["a" /* ArgumentOutOfRangeError */]();
139661      }
139662      var hasDefaultValue = arguments.length >= 2;
139663      return function (source) {
139664          return source.pipe(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__filter__["a" /* filter */])(function (v, i) { return i === index; }), __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__take__["a" /* take */])(1), hasDefaultValue
139665              ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__defaultIfEmpty__["a" /* defaultIfEmpty */])(defaultValue)
139666              : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__throwIfEmpty__["a" /* throwIfEmpty */])(function () { return new __WEBPACK_IMPORTED_MODULE_0__util_ArgumentOutOfRangeError__["a" /* ArgumentOutOfRangeError */](); }));
139667      };
139668  }
139669  //# sourceMappingURL=elementAt.js.map
139670  
139671  
139672  /***/ }),
139673  /* 858 */
139674  /***/ (function(module, __webpack_exports__, __webpack_require__) {
139675  
139676  "use strict";
139677  /* harmony export (immutable) */ __webpack_exports__["a"] = endWith;
139678  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable_fromArray__ = __webpack_require__(85);
139679  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__observable_scalar__ = __webpack_require__(312);
139680  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__observable_empty__ = __webpack_require__(39);
139681  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__observable_concat__ = __webpack_require__(187);
139682  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_isScheduler__ = __webpack_require__(49);
139683  /** PURE_IMPORTS_START _observable_fromArray,_observable_scalar,_observable_empty,_observable_concat,_util_isScheduler PURE_IMPORTS_END */
139684  
139685  
139686  
139687  
139688  
139689  function endWith() {
139690      var array = [];
139691      for (var _i = 0; _i < arguments.length; _i++) {
139692          array[_i] = arguments[_i];
139693      }
139694      return function (source) {
139695          var scheduler = array[array.length - 1];
139696          if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util_isScheduler__["a" /* isScheduler */])(scheduler)) {
139697              array.pop();
139698          }
139699          else {
139700              scheduler = null;
139701          }
139702          var len = array.length;
139703          if (len === 1 && !scheduler) {
139704              return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__observable_concat__["a" /* concat */])(source, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__observable_scalar__["a" /* scalar */])(array[0]));
139705          }
139706          else if (len > 0) {
139707              return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__observable_concat__["a" /* concat */])(source, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__observable_fromArray__["a" /* fromArray */])(array, scheduler));
139708          }
139709          else {
139710              return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__observable_concat__["a" /* concat */])(source, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__observable_empty__["a" /* empty */])(scheduler));
139711          }
139712      };
139713  }
139714  //# sourceMappingURL=endWith.js.map
139715  
139716  
139717  /***/ }),
139718  /* 859 */
139719  /***/ (function(module, __webpack_exports__, __webpack_require__) {
139720  
139721  "use strict";
139722  /* harmony export (immutable) */ __webpack_exports__["a"] = every;
139723  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
139724  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
139725  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
139726  
139727  
139728  function every(predicate, thisArg) {
139729      return function (source) { return source.lift(new EveryOperator(predicate, thisArg, source)); };
139730  }
139731  var EveryOperator = /*@__PURE__*/ (function () {
139732      function EveryOperator(predicate, thisArg, source) {
139733          this.predicate = predicate;
139734          this.thisArg = thisArg;
139735          this.source = source;
139736      }
139737      EveryOperator.prototype.call = function (observer, source) {
139738          return source.subscribe(new EverySubscriber(observer, this.predicate, this.thisArg, this.source));
139739      };
139740      return EveryOperator;
139741  }());
139742  var EverySubscriber = /*@__PURE__*/ (function (_super) {
139743      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](EverySubscriber, _super);
139744      function EverySubscriber(destination, predicate, thisArg, source) {
139745          var _this = _super.call(this, destination) || this;
139746          _this.predicate = predicate;
139747          _this.thisArg = thisArg;
139748          _this.source = source;
139749          _this.index = 0;
139750          _this.thisArg = thisArg || _this;
139751          return _this;
139752      }
139753      EverySubscriber.prototype.notifyComplete = function (everyValueMatch) {
139754          this.destination.next(everyValueMatch);
139755          this.destination.complete();
139756      };
139757      EverySubscriber.prototype._next = function (value) {
139758          var result = false;
139759          try {
139760              result = this.predicate.call(this.thisArg, value, this.index++, this.source);
139761          }
139762          catch (err) {
139763              this.destination.error(err);
139764              return;
139765          }
139766          if (!result) {
139767              this.notifyComplete(false);
139768          }
139769      };
139770      EverySubscriber.prototype._complete = function () {
139771          this.notifyComplete(true);
139772      };
139773      return EverySubscriber;
139774  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
139775  //# sourceMappingURL=every.js.map
139776  
139777  
139778  /***/ }),
139779  /* 860 */
139780  /***/ (function(module, __webpack_exports__, __webpack_require__) {
139781  
139782  "use strict";
139783  /* harmony export (immutable) */ __webpack_exports__["a"] = exhaust;
139784  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
139785  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__ = __webpack_require__(13);
139786  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__ = __webpack_require__(14);
139787  /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
139788  
139789  
139790  
139791  function exhaust() {
139792      return function (source) { return source.lift(new SwitchFirstOperator()); };
139793  }
139794  var SwitchFirstOperator = /*@__PURE__*/ (function () {
139795      function SwitchFirstOperator() {
139796      }
139797      SwitchFirstOperator.prototype.call = function (subscriber, source) {
139798          return source.subscribe(new SwitchFirstSubscriber(subscriber));
139799      };
139800      return SwitchFirstOperator;
139801  }());
139802  var SwitchFirstSubscriber = /*@__PURE__*/ (function (_super) {
139803      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SwitchFirstSubscriber, _super);
139804      function SwitchFirstSubscriber(destination) {
139805          var _this = _super.call(this, destination) || this;
139806          _this.hasCompleted = false;
139807          _this.hasSubscription = false;
139808          return _this;
139809      }
139810      SwitchFirstSubscriber.prototype._next = function (value) {
139811          if (!this.hasSubscription) {
139812              this.hasSubscription = true;
139813              this.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__["a" /* subscribeToResult */])(this, value));
139814          }
139815      };
139816      SwitchFirstSubscriber.prototype._complete = function () {
139817          this.hasCompleted = true;
139818          if (!this.hasSubscription) {
139819              this.destination.complete();
139820          }
139821      };
139822      SwitchFirstSubscriber.prototype.notifyComplete = function (innerSub) {
139823          this.remove(innerSub);
139824          this.hasSubscription = false;
139825          if (this.hasCompleted) {
139826              this.destination.complete();
139827          }
139828      };
139829      return SwitchFirstSubscriber;
139830  }(__WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__["a" /* OuterSubscriber */]));
139831  //# sourceMappingURL=exhaust.js.map
139832  
139833  
139834  /***/ }),
139835  /* 861 */
139836  /***/ (function(module, __webpack_exports__, __webpack_require__) {
139837  
139838  "use strict";
139839  /* harmony export (immutable) */ __webpack_exports__["a"] = exhaustMap;
139840  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
139841  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__ = __webpack_require__(13);
139842  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__InnerSubscriber__ = __webpack_require__(84);
139843  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_subscribeToResult__ = __webpack_require__(14);
139844  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__map__ = __webpack_require__(47);
139845  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__observable_from__ = __webpack_require__(62);
139846  /** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult,_map,_observable_from PURE_IMPORTS_END */
139847  
139848  
139849  
139850  
139851  
139852  
139853  function exhaustMap(project, resultSelector) {
139854      if (resultSelector) {
139855          return function (source) { return source.pipe(exhaustMap(function (a, i) { return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__observable_from__["a" /* from */])(project(a, i)).pipe(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__map__["a" /* map */])(function (b, ii) { return resultSelector(a, b, i, ii); })); })); };
139856      }
139857      return function (source) {
139858          return source.lift(new ExhauseMapOperator(project));
139859      };
139860  }
139861  var ExhauseMapOperator = /*@__PURE__*/ (function () {
139862      function ExhauseMapOperator(project) {
139863          this.project = project;
139864      }
139865      ExhauseMapOperator.prototype.call = function (subscriber, source) {
139866          return source.subscribe(new ExhaustMapSubscriber(subscriber, this.project));
139867      };
139868      return ExhauseMapOperator;
139869  }());
139870  var ExhaustMapSubscriber = /*@__PURE__*/ (function (_super) {
139871      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](ExhaustMapSubscriber, _super);
139872      function ExhaustMapSubscriber(destination, project) {
139873          var _this = _super.call(this, destination) || this;
139874          _this.project = project;
139875          _this.hasSubscription = false;
139876          _this.hasCompleted = false;
139877          _this.index = 0;
139878          return _this;
139879      }
139880      ExhaustMapSubscriber.prototype._next = function (value) {
139881          if (!this.hasSubscription) {
139882              this.tryNext(value);
139883          }
139884      };
139885      ExhaustMapSubscriber.prototype.tryNext = function (value) {
139886          var result;
139887          var index = this.index++;
139888          try {
139889              result = this.project(value, index);
139890          }
139891          catch (err) {
139892              this.destination.error(err);
139893              return;
139894          }
139895          this.hasSubscription = true;
139896          this._innerSub(result, value, index);
139897      };
139898      ExhaustMapSubscriber.prototype._innerSub = function (result, value, index) {
139899          var innerSubscriber = new __WEBPACK_IMPORTED_MODULE_2__InnerSubscriber__["a" /* InnerSubscriber */](this, undefined, undefined);
139900          var destination = this.destination;
139901          destination.add(innerSubscriber);
139902          __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_subscribeToResult__["a" /* subscribeToResult */])(this, result, value, index, innerSubscriber);
139903      };
139904      ExhaustMapSubscriber.prototype._complete = function () {
139905          this.hasCompleted = true;
139906          if (!this.hasSubscription) {
139907              this.destination.complete();
139908          }
139909          this.unsubscribe();
139910      };
139911      ExhaustMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
139912          this.destination.next(innerValue);
139913      };
139914      ExhaustMapSubscriber.prototype.notifyError = function (err) {
139915          this.destination.error(err);
139916      };
139917      ExhaustMapSubscriber.prototype.notifyComplete = function (innerSub) {
139918          var destination = this.destination;
139919          destination.remove(innerSub);
139920          this.hasSubscription = false;
139921          if (this.hasCompleted) {
139922              this.destination.complete();
139923          }
139924      };
139925      return ExhaustMapSubscriber;
139926  }(__WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__["a" /* OuterSubscriber */]));
139927  //# sourceMappingURL=exhaustMap.js.map
139928  
139929  
139930  /***/ }),
139931  /* 862 */
139932  /***/ (function(module, __webpack_exports__, __webpack_require__) {
139933  
139934  "use strict";
139935  /* harmony export (immutable) */ __webpack_exports__["a"] = expand;
139936  /* unused harmony export ExpandOperator */
139937  /* unused harmony export ExpandSubscriber */
139938  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
139939  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_tryCatch__ = __webpack_require__(57);
139940  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_errorObject__ = __webpack_require__(48);
139941  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__OuterSubscriber__ = __webpack_require__(13);
139942  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_subscribeToResult__ = __webpack_require__(14);
139943  /** PURE_IMPORTS_START tslib,_util_tryCatch,_util_errorObject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
139944  
139945  
139946  
139947  
139948  
139949  function expand(project, concurrent, scheduler) {
139950      if (concurrent === void 0) {
139951          concurrent = Number.POSITIVE_INFINITY;
139952      }
139953      if (scheduler === void 0) {
139954          scheduler = undefined;
139955      }
139956      concurrent = (concurrent || 0) < 1 ? Number.POSITIVE_INFINITY : concurrent;
139957      return function (source) { return source.lift(new ExpandOperator(project, concurrent, scheduler)); };
139958  }
139959  var ExpandOperator = /*@__PURE__*/ (function () {
139960      function ExpandOperator(project, concurrent, scheduler) {
139961          this.project = project;
139962          this.concurrent = concurrent;
139963          this.scheduler = scheduler;
139964      }
139965      ExpandOperator.prototype.call = function (subscriber, source) {
139966          return source.subscribe(new ExpandSubscriber(subscriber, this.project, this.concurrent, this.scheduler));
139967      };
139968      return ExpandOperator;
139969  }());
139970  
139971  var ExpandSubscriber = /*@__PURE__*/ (function (_super) {
139972      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](ExpandSubscriber, _super);
139973      function ExpandSubscriber(destination, project, concurrent, scheduler) {
139974          var _this = _super.call(this, destination) || this;
139975          _this.project = project;
139976          _this.concurrent = concurrent;
139977          _this.scheduler = scheduler;
139978          _this.index = 0;
139979          _this.active = 0;
139980          _this.hasCompleted = false;
139981          if (concurrent < Number.POSITIVE_INFINITY) {
139982              _this.buffer = [];
139983          }
139984          return _this;
139985      }
139986      ExpandSubscriber.dispatch = function (arg) {
139987          var subscriber = arg.subscriber, result = arg.result, value = arg.value, index = arg.index;
139988          subscriber.subscribeToProjection(result, value, index);
139989      };
139990      ExpandSubscriber.prototype._next = function (value) {
139991          var destination = this.destination;
139992          if (destination.closed) {
139993              this._complete();
139994              return;
139995          }
139996          var index = this.index++;
139997          if (this.active < this.concurrent) {
139998              destination.next(value);
139999              var result = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_tryCatch__["a" /* tryCatch */])(this.project)(value, index);
140000              if (result === __WEBPACK_IMPORTED_MODULE_2__util_errorObject__["a" /* errorObject */]) {
140001                  destination.error(__WEBPACK_IMPORTED_MODULE_2__util_errorObject__["a" /* errorObject */].e);
140002              }
140003              else if (!this.scheduler) {
140004                  this.subscribeToProjection(result, value, index);
140005              }
140006              else {
140007                  var state = { subscriber: this, result: result, value: value, index: index };
140008                  var destination_1 = this.destination;
140009                  destination_1.add(this.scheduler.schedule(ExpandSubscriber.dispatch, 0, state));
140010              }
140011          }
140012          else {
140013              this.buffer.push(value);
140014          }
140015      };
140016      ExpandSubscriber.prototype.subscribeToProjection = function (result, value, index) {
140017          this.active++;
140018          var destination = this.destination;
140019          destination.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util_subscribeToResult__["a" /* subscribeToResult */])(this, result, value, index));
140020      };
140021      ExpandSubscriber.prototype._complete = function () {
140022          this.hasCompleted = true;
140023          if (this.hasCompleted && this.active === 0) {
140024              this.destination.complete();
140025          }
140026          this.unsubscribe();
140027      };
140028      ExpandSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
140029          this._next(innerValue);
140030      };
140031      ExpandSubscriber.prototype.notifyComplete = function (innerSub) {
140032          var buffer = this.buffer;
140033          var destination = this.destination;
140034          destination.remove(innerSub);
140035          this.active--;
140036          if (buffer && buffer.length > 0) {
140037              this._next(buffer.shift());
140038          }
140039          if (this.hasCompleted && this.active === 0) {
140040              this.destination.complete();
140041          }
140042      };
140043      return ExpandSubscriber;
140044  }(__WEBPACK_IMPORTED_MODULE_3__OuterSubscriber__["a" /* OuterSubscriber */]));
140045  
140046  //# sourceMappingURL=expand.js.map
140047  
140048  
140049  /***/ }),
140050  /* 863 */
140051  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140052  
140053  "use strict";
140054  /* harmony export (immutable) */ __webpack_exports__["a"] = finalize;
140055  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
140056  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
140057  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Subscription__ = __webpack_require__(25);
140058  /** PURE_IMPORTS_START tslib,_Subscriber,_Subscription PURE_IMPORTS_END */
140059  
140060  
140061  
140062  function finalize(callback) {
140063      return function (source) { return source.lift(new FinallyOperator(callback)); };
140064  }
140065  var FinallyOperator = /*@__PURE__*/ (function () {
140066      function FinallyOperator(callback) {
140067          this.callback = callback;
140068      }
140069      FinallyOperator.prototype.call = function (subscriber, source) {
140070          return source.subscribe(new FinallySubscriber(subscriber, this.callback));
140071      };
140072      return FinallyOperator;
140073  }());
140074  var FinallySubscriber = /*@__PURE__*/ (function (_super) {
140075      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](FinallySubscriber, _super);
140076      function FinallySubscriber(destination, callback) {
140077          var _this = _super.call(this, destination) || this;
140078          _this.add(new __WEBPACK_IMPORTED_MODULE_2__Subscription__["a" /* Subscription */](callback));
140079          return _this;
140080      }
140081      return FinallySubscriber;
140082  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
140083  //# sourceMappingURL=finalize.js.map
140084  
140085  
140086  /***/ }),
140087  /* 864 */
140088  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140089  
140090  "use strict";
140091  /* harmony export (immutable) */ __webpack_exports__["a"] = findIndex;
140092  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__operators_find__ = __webpack_require__(432);
140093  /** PURE_IMPORTS_START _operators_find PURE_IMPORTS_END */
140094  
140095  function findIndex(predicate, thisArg) {
140096      return function (source) { return source.lift(new __WEBPACK_IMPORTED_MODULE_0__operators_find__["b" /* FindValueOperator */](predicate, source, true, thisArg)); };
140097  }
140098  //# sourceMappingURL=findIndex.js.map
140099  
140100  
140101  /***/ }),
140102  /* 865 */
140103  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140104  
140105  "use strict";
140106  /* harmony export (immutable) */ __webpack_exports__["a"] = first;
140107  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_EmptyError__ = __webpack_require__(153);
140108  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__filter__ = __webpack_require__(147);
140109  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__take__ = __webpack_require__(319);
140110  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__defaultIfEmpty__ = __webpack_require__(146);
140111  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__throwIfEmpty__ = __webpack_require__(189);
140112  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_identity__ = __webpack_require__(119);
140113  /** PURE_IMPORTS_START _util_EmptyError,_filter,_take,_defaultIfEmpty,_throwIfEmpty,_util_identity PURE_IMPORTS_END */
140114  
140115  
140116  
140117  
140118  
140119  
140120  function first(predicate, defaultValue) {
140121      var hasDefaultValue = arguments.length >= 2;
140122      return function (source) { return source.pipe(predicate ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__filter__["a" /* filter */])(function (v, i) { return predicate(v, i, source); }) : __WEBPACK_IMPORTED_MODULE_5__util_identity__["a" /* identity */], __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__take__["a" /* take */])(1), hasDefaultValue ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__defaultIfEmpty__["a" /* defaultIfEmpty */])(defaultValue) : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__throwIfEmpty__["a" /* throwIfEmpty */])(function () { return new __WEBPACK_IMPORTED_MODULE_0__util_EmptyError__["a" /* EmptyError */](); })); };
140123  }
140124  //# sourceMappingURL=first.js.map
140125  
140126  
140127  /***/ }),
140128  /* 866 */
140129  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140130  
140131  "use strict";
140132  /* harmony export (immutable) */ __webpack_exports__["a"] = ignoreElements;
140133  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
140134  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
140135  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
140136  
140137  
140138  function ignoreElements() {
140139      return function ignoreElementsOperatorFunction(source) {
140140          return source.lift(new IgnoreElementsOperator());
140141      };
140142  }
140143  var IgnoreElementsOperator = /*@__PURE__*/ (function () {
140144      function IgnoreElementsOperator() {
140145      }
140146      IgnoreElementsOperator.prototype.call = function (subscriber, source) {
140147          return source.subscribe(new IgnoreElementsSubscriber(subscriber));
140148      };
140149      return IgnoreElementsOperator;
140150  }());
140151  var IgnoreElementsSubscriber = /*@__PURE__*/ (function (_super) {
140152      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](IgnoreElementsSubscriber, _super);
140153      function IgnoreElementsSubscriber() {
140154          return _super !== null && _super.apply(this, arguments) || this;
140155      }
140156      IgnoreElementsSubscriber.prototype._next = function (unused) {
140157      };
140158      return IgnoreElementsSubscriber;
140159  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
140160  //# sourceMappingURL=ignoreElements.js.map
140161  
140162  
140163  /***/ }),
140164  /* 867 */
140165  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140166  
140167  "use strict";
140168  /* harmony export (immutable) */ __webpack_exports__["a"] = isEmpty;
140169  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
140170  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
140171  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
140172  
140173  
140174  function isEmpty() {
140175      return function (source) { return source.lift(new IsEmptyOperator()); };
140176  }
140177  var IsEmptyOperator = /*@__PURE__*/ (function () {
140178      function IsEmptyOperator() {
140179      }
140180      IsEmptyOperator.prototype.call = function (observer, source) {
140181          return source.subscribe(new IsEmptySubscriber(observer));
140182      };
140183      return IsEmptyOperator;
140184  }());
140185  var IsEmptySubscriber = /*@__PURE__*/ (function (_super) {
140186      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](IsEmptySubscriber, _super);
140187      function IsEmptySubscriber(destination) {
140188          return _super.call(this, destination) || this;
140189      }
140190      IsEmptySubscriber.prototype.notifyComplete = function (isEmpty) {
140191          var destination = this.destination;
140192          destination.next(isEmpty);
140193          destination.complete();
140194      };
140195      IsEmptySubscriber.prototype._next = function (value) {
140196          this.notifyComplete(false);
140197      };
140198      IsEmptySubscriber.prototype._complete = function () {
140199          this.notifyComplete(true);
140200      };
140201      return IsEmptySubscriber;
140202  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
140203  //# sourceMappingURL=isEmpty.js.map
140204  
140205  
140206  /***/ }),
140207  /* 868 */
140208  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140209  
140210  "use strict";
140211  /* harmony export (immutable) */ __webpack_exports__["a"] = last;
140212  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_EmptyError__ = __webpack_require__(153);
140213  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__filter__ = __webpack_require__(147);
140214  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__takeLast__ = __webpack_require__(320);
140215  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__throwIfEmpty__ = __webpack_require__(189);
140216  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__defaultIfEmpty__ = __webpack_require__(146);
140217  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_identity__ = __webpack_require__(119);
140218  /** PURE_IMPORTS_START _util_EmptyError,_filter,_takeLast,_throwIfEmpty,_defaultIfEmpty,_util_identity PURE_IMPORTS_END */
140219  
140220  
140221  
140222  
140223  
140224  
140225  function last(predicate, defaultValue) {
140226      var hasDefaultValue = arguments.length >= 2;
140227      return function (source) { return source.pipe(predicate ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__filter__["a" /* filter */])(function (v, i) { return predicate(v, i, source); }) : __WEBPACK_IMPORTED_MODULE_5__util_identity__["a" /* identity */], __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__takeLast__["a" /* takeLast */])(1), hasDefaultValue ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__defaultIfEmpty__["a" /* defaultIfEmpty */])(defaultValue) : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__throwIfEmpty__["a" /* throwIfEmpty */])(function () { return new __WEBPACK_IMPORTED_MODULE_0__util_EmptyError__["a" /* EmptyError */](); })); };
140228  }
140229  //# sourceMappingURL=last.js.map
140230  
140231  
140232  /***/ }),
140233  /* 869 */
140234  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140235  
140236  "use strict";
140237  /* harmony export (immutable) */ __webpack_exports__["a"] = mapTo;
140238  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
140239  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
140240  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
140241  
140242  
140243  function mapTo(value) {
140244      return function (source) { return source.lift(new MapToOperator(value)); };
140245  }
140246  var MapToOperator = /*@__PURE__*/ (function () {
140247      function MapToOperator(value) {
140248          this.value = value;
140249      }
140250      MapToOperator.prototype.call = function (subscriber, source) {
140251          return source.subscribe(new MapToSubscriber(subscriber, this.value));
140252      };
140253      return MapToOperator;
140254  }());
140255  var MapToSubscriber = /*@__PURE__*/ (function (_super) {
140256      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](MapToSubscriber, _super);
140257      function MapToSubscriber(destination, value) {
140258          var _this = _super.call(this, destination) || this;
140259          _this.value = value;
140260          return _this;
140261      }
140262      MapToSubscriber.prototype._next = function (x) {
140263          this.destination.next(this.value);
140264      };
140265      return MapToSubscriber;
140266  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
140267  //# sourceMappingURL=mapTo.js.map
140268  
140269  
140270  /***/ }),
140271  /* 870 */
140272  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140273  
140274  "use strict";
140275  /* harmony export (immutable) */ __webpack_exports__["a"] = materialize;
140276  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
140277  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
140278  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Notification__ = __webpack_require__(185);
140279  /** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */
140280  
140281  
140282  
140283  function materialize() {
140284      return function materializeOperatorFunction(source) {
140285          return source.lift(new MaterializeOperator());
140286      };
140287  }
140288  var MaterializeOperator = /*@__PURE__*/ (function () {
140289      function MaterializeOperator() {
140290      }
140291      MaterializeOperator.prototype.call = function (subscriber, source) {
140292          return source.subscribe(new MaterializeSubscriber(subscriber));
140293      };
140294      return MaterializeOperator;
140295  }());
140296  var MaterializeSubscriber = /*@__PURE__*/ (function (_super) {
140297      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](MaterializeSubscriber, _super);
140298      function MaterializeSubscriber(destination) {
140299          return _super.call(this, destination) || this;
140300      }
140301      MaterializeSubscriber.prototype._next = function (value) {
140302          this.destination.next(__WEBPACK_IMPORTED_MODULE_2__Notification__["a" /* Notification */].createNext(value));
140303      };
140304      MaterializeSubscriber.prototype._error = function (err) {
140305          var destination = this.destination;
140306          destination.next(__WEBPACK_IMPORTED_MODULE_2__Notification__["a" /* Notification */].createError(err));
140307          destination.complete();
140308      };
140309      MaterializeSubscriber.prototype._complete = function () {
140310          var destination = this.destination;
140311          destination.next(__WEBPACK_IMPORTED_MODULE_2__Notification__["a" /* Notification */].createComplete());
140312          destination.complete();
140313      };
140314      return MaterializeSubscriber;
140315  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
140316  //# sourceMappingURL=materialize.js.map
140317  
140318  
140319  /***/ }),
140320  /* 871 */
140321  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140322  
140323  "use strict";
140324  /* harmony export (immutable) */ __webpack_exports__["a"] = max;
140325  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__reduce__ = __webpack_require__(188);
140326  /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */
140327  
140328  function max(comparer) {
140329      var max = (typeof comparer === 'function')
140330          ? function (x, y) { return comparer(x, y) > 0 ? x : y; }
140331          : function (x, y) { return x > y ? x : y; };
140332      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__reduce__["a" /* reduce */])(max);
140333  }
140334  //# sourceMappingURL=max.js.map
140335  
140336  
140337  /***/ }),
140338  /* 872 */
140339  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140340  
140341  "use strict";
140342  /* harmony export (immutable) */ __webpack_exports__["a"] = merge;
140343  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable_merge__ = __webpack_require__(424);
140344  /** PURE_IMPORTS_START _observable_merge PURE_IMPORTS_END */
140345  
140346  function merge() {
140347      var observables = [];
140348      for (var _i = 0; _i < arguments.length; _i++) {
140349          observables[_i] = arguments[_i];
140350      }
140351      return function (source) { return source.lift.call(__WEBPACK_IMPORTED_MODULE_0__observable_merge__["a" /* merge */].apply(void 0, [source].concat(observables))); };
140352  }
140353  //# sourceMappingURL=merge.js.map
140354  
140355  
140356  /***/ }),
140357  /* 873 */
140358  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140359  
140360  "use strict";
140361  /* harmony export (immutable) */ __webpack_exports__["a"] = mergeMapTo;
140362  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__mergeMap__ = __webpack_require__(148);
140363  /** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */
140364  
140365  function mergeMapTo(innerObservable, resultSelector, concurrent) {
140366      if (concurrent === void 0) {
140367          concurrent = Number.POSITIVE_INFINITY;
140368      }
140369      if (typeof resultSelector === 'function') {
140370          return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__mergeMap__["a" /* mergeMap */])(function () { return innerObservable; }, resultSelector, concurrent);
140371      }
140372      if (typeof resultSelector === 'number') {
140373          concurrent = resultSelector;
140374      }
140375      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__mergeMap__["a" /* mergeMap */])(function () { return innerObservable; }, concurrent);
140376  }
140377  //# sourceMappingURL=mergeMapTo.js.map
140378  
140379  
140380  /***/ }),
140381  /* 874 */
140382  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140383  
140384  "use strict";
140385  /* harmony export (immutable) */ __webpack_exports__["a"] = mergeScan;
140386  /* unused harmony export MergeScanOperator */
140387  /* unused harmony export MergeScanSubscriber */
140388  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
140389  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_tryCatch__ = __webpack_require__(57);
140390  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_errorObject__ = __webpack_require__(48);
140391  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_subscribeToResult__ = __webpack_require__(14);
140392  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__OuterSubscriber__ = __webpack_require__(13);
140393  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__InnerSubscriber__ = __webpack_require__(84);
140394  /** PURE_IMPORTS_START tslib,_util_tryCatch,_util_errorObject,_util_subscribeToResult,_OuterSubscriber,_InnerSubscriber PURE_IMPORTS_END */
140395  
140396  
140397  
140398  
140399  
140400  
140401  function mergeScan(accumulator, seed, concurrent) {
140402      if (concurrent === void 0) {
140403          concurrent = Number.POSITIVE_INFINITY;
140404      }
140405      return function (source) { return source.lift(new MergeScanOperator(accumulator, seed, concurrent)); };
140406  }
140407  var MergeScanOperator = /*@__PURE__*/ (function () {
140408      function MergeScanOperator(accumulator, seed, concurrent) {
140409          this.accumulator = accumulator;
140410          this.seed = seed;
140411          this.concurrent = concurrent;
140412      }
140413      MergeScanOperator.prototype.call = function (subscriber, source) {
140414          return source.subscribe(new MergeScanSubscriber(subscriber, this.accumulator, this.seed, this.concurrent));
140415      };
140416      return MergeScanOperator;
140417  }());
140418  
140419  var MergeScanSubscriber = /*@__PURE__*/ (function (_super) {
140420      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](MergeScanSubscriber, _super);
140421      function MergeScanSubscriber(destination, accumulator, acc, concurrent) {
140422          var _this = _super.call(this, destination) || this;
140423          _this.accumulator = accumulator;
140424          _this.acc = acc;
140425          _this.concurrent = concurrent;
140426          _this.hasValue = false;
140427          _this.hasCompleted = false;
140428          _this.buffer = [];
140429          _this.active = 0;
140430          _this.index = 0;
140431          return _this;
140432      }
140433      MergeScanSubscriber.prototype._next = function (value) {
140434          if (this.active < this.concurrent) {
140435              var index = this.index++;
140436              var ish = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_tryCatch__["a" /* tryCatch */])(this.accumulator)(this.acc, value);
140437              var destination = this.destination;
140438              if (ish === __WEBPACK_IMPORTED_MODULE_2__util_errorObject__["a" /* errorObject */]) {
140439                  destination.error(__WEBPACK_IMPORTED_MODULE_2__util_errorObject__["a" /* errorObject */].e);
140440              }
140441              else {
140442                  this.active++;
140443                  this._innerSub(ish, value, index);
140444              }
140445          }
140446          else {
140447              this.buffer.push(value);
140448          }
140449      };
140450      MergeScanSubscriber.prototype._innerSub = function (ish, value, index) {
140451          var innerSubscriber = new __WEBPACK_IMPORTED_MODULE_5__InnerSubscriber__["a" /* InnerSubscriber */](this, undefined, undefined);
140452          var destination = this.destination;
140453          destination.add(innerSubscriber);
140454          __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_subscribeToResult__["a" /* subscribeToResult */])(this, ish, value, index, innerSubscriber);
140455      };
140456      MergeScanSubscriber.prototype._complete = function () {
140457          this.hasCompleted = true;
140458          if (this.active === 0 && this.buffer.length === 0) {
140459              if (this.hasValue === false) {
140460                  this.destination.next(this.acc);
140461              }
140462              this.destination.complete();
140463          }
140464          this.unsubscribe();
140465      };
140466      MergeScanSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
140467          var destination = this.destination;
140468          this.acc = innerValue;
140469          this.hasValue = true;
140470          destination.next(innerValue);
140471      };
140472      MergeScanSubscriber.prototype.notifyComplete = function (innerSub) {
140473          var buffer = this.buffer;
140474          var destination = this.destination;
140475          destination.remove(innerSub);
140476          this.active--;
140477          if (buffer.length > 0) {
140478              this._next(buffer.shift());
140479          }
140480          else if (this.active === 0 && this.hasCompleted) {
140481              if (this.hasValue === false) {
140482                  this.destination.next(this.acc);
140483              }
140484              this.destination.complete();
140485          }
140486      };
140487      return MergeScanSubscriber;
140488  }(__WEBPACK_IMPORTED_MODULE_4__OuterSubscriber__["a" /* OuterSubscriber */]));
140489  
140490  //# sourceMappingURL=mergeScan.js.map
140491  
140492  
140493  /***/ }),
140494  /* 875 */
140495  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140496  
140497  "use strict";
140498  /* harmony export (immutable) */ __webpack_exports__["a"] = min;
140499  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__reduce__ = __webpack_require__(188);
140500  /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */
140501  
140502  function min(comparer) {
140503      var min = (typeof comparer === 'function')
140504          ? function (x, y) { return comparer(x, y) < 0 ? x : y; }
140505          : function (x, y) { return x < y ? x : y; };
140506      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__reduce__["a" /* reduce */])(min);
140507  }
140508  //# sourceMappingURL=min.js.map
140509  
140510  
140511  /***/ }),
140512  /* 876 */
140513  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140514  
140515  "use strict";
140516  /* harmony export (immutable) */ __webpack_exports__["a"] = onErrorResumeNext;
140517  /* unused harmony export onErrorResumeNextStatic */
140518  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
140519  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__observable_from__ = __webpack_require__(62);
140520  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isArray__ = __webpack_require__(41);
140521  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__OuterSubscriber__ = __webpack_require__(13);
140522  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__InnerSubscriber__ = __webpack_require__(84);
140523  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_subscribeToResult__ = __webpack_require__(14);
140524  /** PURE_IMPORTS_START tslib,_observable_from,_util_isArray,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
140525  
140526  
140527  
140528  
140529  
140530  
140531  function onErrorResumeNext() {
140532      var nextSources = [];
140533      for (var _i = 0; _i < arguments.length; _i++) {
140534          nextSources[_i] = arguments[_i];
140535      }
140536      if (nextSources.length === 1 && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_isArray__["a" /* isArray */])(nextSources[0])) {
140537          nextSources = nextSources[0];
140538      }
140539      return function (source) { return source.lift(new OnErrorResumeNextOperator(nextSources)); };
140540  }
140541  function onErrorResumeNextStatic() {
140542      var nextSources = [];
140543      for (var _i = 0; _i < arguments.length; _i++) {
140544          nextSources[_i] = arguments[_i];
140545      }
140546      var source = null;
140547      if (nextSources.length === 1 && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_isArray__["a" /* isArray */])(nextSources[0])) {
140548          nextSources = nextSources[0];
140549      }
140550      source = nextSources.shift();
140551      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__observable_from__["a" /* from */])(source, null).lift(new OnErrorResumeNextOperator(nextSources));
140552  }
140553  var OnErrorResumeNextOperator = /*@__PURE__*/ (function () {
140554      function OnErrorResumeNextOperator(nextSources) {
140555          this.nextSources = nextSources;
140556      }
140557      OnErrorResumeNextOperator.prototype.call = function (subscriber, source) {
140558          return source.subscribe(new OnErrorResumeNextSubscriber(subscriber, this.nextSources));
140559      };
140560      return OnErrorResumeNextOperator;
140561  }());
140562  var OnErrorResumeNextSubscriber = /*@__PURE__*/ (function (_super) {
140563      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](OnErrorResumeNextSubscriber, _super);
140564      function OnErrorResumeNextSubscriber(destination, nextSources) {
140565          var _this = _super.call(this, destination) || this;
140566          _this.destination = destination;
140567          _this.nextSources = nextSources;
140568          return _this;
140569      }
140570      OnErrorResumeNextSubscriber.prototype.notifyError = function (error, innerSub) {
140571          this.subscribeToNextSource();
140572      };
140573      OnErrorResumeNextSubscriber.prototype.notifyComplete = function (innerSub) {
140574          this.subscribeToNextSource();
140575      };
140576      OnErrorResumeNextSubscriber.prototype._error = function (err) {
140577          this.subscribeToNextSource();
140578          this.unsubscribe();
140579      };
140580      OnErrorResumeNextSubscriber.prototype._complete = function () {
140581          this.subscribeToNextSource();
140582          this.unsubscribe();
140583      };
140584      OnErrorResumeNextSubscriber.prototype.subscribeToNextSource = function () {
140585          var next = this.nextSources.shift();
140586          if (next) {
140587              var innerSubscriber = new __WEBPACK_IMPORTED_MODULE_4__InnerSubscriber__["a" /* InnerSubscriber */](this, undefined, undefined);
140588              var destination = this.destination;
140589              destination.add(innerSubscriber);
140590              __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__util_subscribeToResult__["a" /* subscribeToResult */])(this, next, undefined, undefined, innerSubscriber);
140591          }
140592          else {
140593              this.destination.complete();
140594          }
140595      };
140596      return OnErrorResumeNextSubscriber;
140597  }(__WEBPACK_IMPORTED_MODULE_3__OuterSubscriber__["a" /* OuterSubscriber */]));
140598  //# sourceMappingURL=onErrorResumeNext.js.map
140599  
140600  
140601  /***/ }),
140602  /* 877 */
140603  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140604  
140605  "use strict";
140606  /* harmony export (immutable) */ __webpack_exports__["a"] = pairwise;
140607  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
140608  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
140609  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
140610  
140611  
140612  function pairwise() {
140613      return function (source) { return source.lift(new PairwiseOperator()); };
140614  }
140615  var PairwiseOperator = /*@__PURE__*/ (function () {
140616      function PairwiseOperator() {
140617      }
140618      PairwiseOperator.prototype.call = function (subscriber, source) {
140619          return source.subscribe(new PairwiseSubscriber(subscriber));
140620      };
140621      return PairwiseOperator;
140622  }());
140623  var PairwiseSubscriber = /*@__PURE__*/ (function (_super) {
140624      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](PairwiseSubscriber, _super);
140625      function PairwiseSubscriber(destination) {
140626          var _this = _super.call(this, destination) || this;
140627          _this.hasPrev = false;
140628          return _this;
140629      }
140630      PairwiseSubscriber.prototype._next = function (value) {
140631          if (this.hasPrev) {
140632              this.destination.next([this.prev, value]);
140633          }
140634          else {
140635              this.hasPrev = true;
140636          }
140637          this.prev = value;
140638      };
140639      return PairwiseSubscriber;
140640  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
140641  //# sourceMappingURL=pairwise.js.map
140642  
140643  
140644  /***/ }),
140645  /* 878 */
140646  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140647  
140648  "use strict";
140649  /* harmony export (immutable) */ __webpack_exports__["a"] = partition;
140650  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_not__ = __webpack_require__(931);
140651  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__filter__ = __webpack_require__(147);
140652  /** PURE_IMPORTS_START _util_not,_filter PURE_IMPORTS_END */
140653  
140654  
140655  function partition(predicate, thisArg) {
140656      return function (source) {
140657          return [
140658              __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__filter__["a" /* filter */])(predicate, thisArg)(source),
140659              __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__filter__["a" /* filter */])(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util_not__["a" /* not */])(predicate, thisArg))(source)
140660          ];
140661      };
140662  }
140663  //# sourceMappingURL=partition.js.map
140664  
140665  
140666  /***/ }),
140667  /* 879 */
140668  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140669  
140670  "use strict";
140671  /* harmony export (immutable) */ __webpack_exports__["a"] = pluck;
140672  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__map__ = __webpack_require__(47);
140673  /** PURE_IMPORTS_START _map PURE_IMPORTS_END */
140674  
140675  function pluck() {
140676      var properties = [];
140677      for (var _i = 0; _i < arguments.length; _i++) {
140678          properties[_i] = arguments[_i];
140679      }
140680      var length = properties.length;
140681      if (length === 0) {
140682          throw new Error('list of properties cannot be empty.');
140683      }
140684      return function (source) { return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__map__["a" /* map */])(plucker(properties, length))(source); };
140685  }
140686  function plucker(props, length) {
140687      var mapper = function (x) {
140688          var currentProp = x;
140689          for (var i = 0; i < length; i++) {
140690              var p = currentProp[props[i]];
140691              if (typeof p !== 'undefined') {
140692                  currentProp = p;
140693              }
140694              else {
140695                  return undefined;
140696              }
140697          }
140698          return currentProp;
140699      };
140700      return mapper;
140701  }
140702  //# sourceMappingURL=pluck.js.map
140703  
140704  
140705  /***/ }),
140706  /* 880 */
140707  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140708  
140709  "use strict";
140710  /* harmony export (immutable) */ __webpack_exports__["a"] = publish;
140711  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Subject__ = __webpack_require__(36);
140712  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__multicast__ = __webpack_require__(117);
140713  /** PURE_IMPORTS_START _Subject,_multicast PURE_IMPORTS_END */
140714  
140715  
140716  function publish(selector) {
140717      return selector ?
140718          __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__multicast__["a" /* multicast */])(function () { return new __WEBPACK_IMPORTED_MODULE_0__Subject__["a" /* Subject */](); }, selector) :
140719          __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__multicast__["a" /* multicast */])(new __WEBPACK_IMPORTED_MODULE_0__Subject__["a" /* Subject */]());
140720  }
140721  //# sourceMappingURL=publish.js.map
140722  
140723  
140724  /***/ }),
140725  /* 881 */
140726  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140727  
140728  "use strict";
140729  /* harmony export (immutable) */ __webpack_exports__["a"] = publishBehavior;
140730  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__BehaviorSubject__ = __webpack_require__(419);
140731  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__multicast__ = __webpack_require__(117);
140732  /** PURE_IMPORTS_START _BehaviorSubject,_multicast PURE_IMPORTS_END */
140733  
140734  
140735  function publishBehavior(value) {
140736      return function (source) { return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__multicast__["a" /* multicast */])(new __WEBPACK_IMPORTED_MODULE_0__BehaviorSubject__["a" /* BehaviorSubject */](value))(source); };
140737  }
140738  //# sourceMappingURL=publishBehavior.js.map
140739  
140740  
140741  /***/ }),
140742  /* 882 */
140743  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140744  
140745  "use strict";
140746  /* harmony export (immutable) */ __webpack_exports__["a"] = publishLast;
140747  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__AsyncSubject__ = __webpack_require__(184);
140748  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__multicast__ = __webpack_require__(117);
140749  /** PURE_IMPORTS_START _AsyncSubject,_multicast PURE_IMPORTS_END */
140750  
140751  
140752  function publishLast() {
140753      return function (source) { return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__multicast__["a" /* multicast */])(new __WEBPACK_IMPORTED_MODULE_0__AsyncSubject__["a" /* AsyncSubject */]())(source); };
140754  }
140755  //# sourceMappingURL=publishLast.js.map
140756  
140757  
140758  /***/ }),
140759  /* 883 */
140760  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140761  
140762  "use strict";
140763  /* harmony export (immutable) */ __webpack_exports__["a"] = publishReplay;
140764  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ReplaySubject__ = __webpack_require__(308);
140765  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__multicast__ = __webpack_require__(117);
140766  /** PURE_IMPORTS_START _ReplaySubject,_multicast PURE_IMPORTS_END */
140767  
140768  
140769  function publishReplay(bufferSize, windowTime, selectorOrScheduler, scheduler) {
140770      if (selectorOrScheduler && typeof selectorOrScheduler !== 'function') {
140771          scheduler = selectorOrScheduler;
140772      }
140773      var selector = typeof selectorOrScheduler === 'function' ? selectorOrScheduler : undefined;
140774      var subject = new __WEBPACK_IMPORTED_MODULE_0__ReplaySubject__["a" /* ReplaySubject */](bufferSize, windowTime, scheduler);
140775      return function (source) { return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__multicast__["a" /* multicast */])(function () { return subject; }, selector)(source); };
140776  }
140777  //# sourceMappingURL=publishReplay.js.map
140778  
140779  
140780  /***/ }),
140781  /* 884 */
140782  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140783  
140784  "use strict";
140785  /* harmony export (immutable) */ __webpack_exports__["a"] = race;
140786  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_isArray__ = __webpack_require__(41);
140787  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__observable_race__ = __webpack_require__(426);
140788  /** PURE_IMPORTS_START _util_isArray,_observable_race PURE_IMPORTS_END */
140789  
140790  
140791  function race() {
140792      var observables = [];
140793      for (var _i = 0; _i < arguments.length; _i++) {
140794          observables[_i] = arguments[_i];
140795      }
140796      return function raceOperatorFunction(source) {
140797          if (observables.length === 1 && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util_isArray__["a" /* isArray */])(observables[0])) {
140798              observables = observables[0];
140799          }
140800          return source.lift.call(__WEBPACK_IMPORTED_MODULE_1__observable_race__["a" /* race */].apply(void 0, [source].concat(observables)));
140801      };
140802  }
140803  //# sourceMappingURL=race.js.map
140804  
140805  
140806  /***/ }),
140807  /* 885 */
140808  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140809  
140810  "use strict";
140811  /* harmony export (immutable) */ __webpack_exports__["a"] = repeat;
140812  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
140813  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
140814  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__observable_empty__ = __webpack_require__(39);
140815  /** PURE_IMPORTS_START tslib,_Subscriber,_observable_empty PURE_IMPORTS_END */
140816  
140817  
140818  
140819  function repeat(count) {
140820      if (count === void 0) {
140821          count = -1;
140822      }
140823      return function (source) {
140824          if (count === 0) {
140825              return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__observable_empty__["a" /* empty */])();
140826          }
140827          else if (count < 0) {
140828              return source.lift(new RepeatOperator(-1, source));
140829          }
140830          else {
140831              return source.lift(new RepeatOperator(count - 1, source));
140832          }
140833      };
140834  }
140835  var RepeatOperator = /*@__PURE__*/ (function () {
140836      function RepeatOperator(count, source) {
140837          this.count = count;
140838          this.source = source;
140839      }
140840      RepeatOperator.prototype.call = function (subscriber, source) {
140841          return source.subscribe(new RepeatSubscriber(subscriber, this.count, this.source));
140842      };
140843      return RepeatOperator;
140844  }());
140845  var RepeatSubscriber = /*@__PURE__*/ (function (_super) {
140846      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](RepeatSubscriber, _super);
140847      function RepeatSubscriber(destination, count, source) {
140848          var _this = _super.call(this, destination) || this;
140849          _this.count = count;
140850          _this.source = source;
140851          return _this;
140852      }
140853      RepeatSubscriber.prototype.complete = function () {
140854          if (!this.isStopped) {
140855              var _a = this, source = _a.source, count = _a.count;
140856              if (count === 0) {
140857                  return _super.prototype.complete.call(this);
140858              }
140859              else if (count > -1) {
140860                  this.count = count - 1;
140861              }
140862              source.subscribe(this._unsubscribeAndRecycle());
140863          }
140864      };
140865      return RepeatSubscriber;
140866  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
140867  //# sourceMappingURL=repeat.js.map
140868  
140869  
140870  /***/ }),
140871  /* 886 */
140872  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140873  
140874  "use strict";
140875  /* harmony export (immutable) */ __webpack_exports__["a"] = repeatWhen;
140876  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
140877  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subject__ = __webpack_require__(36);
140878  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_tryCatch__ = __webpack_require__(57);
140879  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_errorObject__ = __webpack_require__(48);
140880  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__OuterSubscriber__ = __webpack_require__(13);
140881  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_subscribeToResult__ = __webpack_require__(14);
140882  /** PURE_IMPORTS_START tslib,_Subject,_util_tryCatch,_util_errorObject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
140883  
140884  
140885  
140886  
140887  
140888  
140889  function repeatWhen(notifier) {
140890      return function (source) { return source.lift(new RepeatWhenOperator(notifier)); };
140891  }
140892  var RepeatWhenOperator = /*@__PURE__*/ (function () {
140893      function RepeatWhenOperator(notifier) {
140894          this.notifier = notifier;
140895      }
140896      RepeatWhenOperator.prototype.call = function (subscriber, source) {
140897          return source.subscribe(new RepeatWhenSubscriber(subscriber, this.notifier, source));
140898      };
140899      return RepeatWhenOperator;
140900  }());
140901  var RepeatWhenSubscriber = /*@__PURE__*/ (function (_super) {
140902      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](RepeatWhenSubscriber, _super);
140903      function RepeatWhenSubscriber(destination, notifier, source) {
140904          var _this = _super.call(this, destination) || this;
140905          _this.notifier = notifier;
140906          _this.source = source;
140907          _this.sourceIsBeingSubscribedTo = true;
140908          return _this;
140909      }
140910      RepeatWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
140911          this.sourceIsBeingSubscribedTo = true;
140912          this.source.subscribe(this);
140913      };
140914      RepeatWhenSubscriber.prototype.notifyComplete = function (innerSub) {
140915          if (this.sourceIsBeingSubscribedTo === false) {
140916              return _super.prototype.complete.call(this);
140917          }
140918      };
140919      RepeatWhenSubscriber.prototype.complete = function () {
140920          this.sourceIsBeingSubscribedTo = false;
140921          if (!this.isStopped) {
140922              if (!this.retries) {
140923                  this.subscribeToRetries();
140924              }
140925              if (!this.retriesSubscription || this.retriesSubscription.closed) {
140926                  return _super.prototype.complete.call(this);
140927              }
140928              this._unsubscribeAndRecycle();
140929              this.notifications.next();
140930          }
140931      };
140932      RepeatWhenSubscriber.prototype._unsubscribe = function () {
140933          var _a = this, notifications = _a.notifications, retriesSubscription = _a.retriesSubscription;
140934          if (notifications) {
140935              notifications.unsubscribe();
140936              this.notifications = null;
140937          }
140938          if (retriesSubscription) {
140939              retriesSubscription.unsubscribe();
140940              this.retriesSubscription = null;
140941          }
140942          this.retries = null;
140943      };
140944      RepeatWhenSubscriber.prototype._unsubscribeAndRecycle = function () {
140945          var _unsubscribe = this._unsubscribe;
140946          this._unsubscribe = null;
140947          _super.prototype._unsubscribeAndRecycle.call(this);
140948          this._unsubscribe = _unsubscribe;
140949          return this;
140950      };
140951      RepeatWhenSubscriber.prototype.subscribeToRetries = function () {
140952          this.notifications = new __WEBPACK_IMPORTED_MODULE_1__Subject__["a" /* Subject */]();
140953          var retries = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_tryCatch__["a" /* tryCatch */])(this.notifier)(this.notifications);
140954          if (retries === __WEBPACK_IMPORTED_MODULE_3__util_errorObject__["a" /* errorObject */]) {
140955              return _super.prototype.complete.call(this);
140956          }
140957          this.retries = retries;
140958          this.retriesSubscription = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__util_subscribeToResult__["a" /* subscribeToResult */])(this, retries);
140959      };
140960      return RepeatWhenSubscriber;
140961  }(__WEBPACK_IMPORTED_MODULE_4__OuterSubscriber__["a" /* OuterSubscriber */]));
140962  //# sourceMappingURL=repeatWhen.js.map
140963  
140964  
140965  /***/ }),
140966  /* 887 */
140967  /***/ (function(module, __webpack_exports__, __webpack_require__) {
140968  
140969  "use strict";
140970  /* harmony export (immutable) */ __webpack_exports__["a"] = retry;
140971  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
140972  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
140973  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
140974  
140975  
140976  function retry(count) {
140977      if (count === void 0) {
140978          count = -1;
140979      }
140980      return function (source) { return source.lift(new RetryOperator(count, source)); };
140981  }
140982  var RetryOperator = /*@__PURE__*/ (function () {
140983      function RetryOperator(count, source) {
140984          this.count = count;
140985          this.source = source;
140986      }
140987      RetryOperator.prototype.call = function (subscriber, source) {
140988          return source.subscribe(new RetrySubscriber(subscriber, this.count, this.source));
140989      };
140990      return RetryOperator;
140991  }());
140992  var RetrySubscriber = /*@__PURE__*/ (function (_super) {
140993      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](RetrySubscriber, _super);
140994      function RetrySubscriber(destination, count, source) {
140995          var _this = _super.call(this, destination) || this;
140996          _this.count = count;
140997          _this.source = source;
140998          return _this;
140999      }
141000      RetrySubscriber.prototype.error = function (err) {
141001          if (!this.isStopped) {
141002              var _a = this, source = _a.source, count = _a.count;
141003              if (count === 0) {
141004                  return _super.prototype.error.call(this, err);
141005              }
141006              else if (count > -1) {
141007                  this.count = count - 1;
141008              }
141009              source.subscribe(this._unsubscribeAndRecycle());
141010          }
141011      };
141012      return RetrySubscriber;
141013  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
141014  //# sourceMappingURL=retry.js.map
141015  
141016  
141017  /***/ }),
141018  /* 888 */
141019  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141020  
141021  "use strict";
141022  /* harmony export (immutable) */ __webpack_exports__["a"] = retryWhen;
141023  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
141024  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subject__ = __webpack_require__(36);
141025  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_tryCatch__ = __webpack_require__(57);
141026  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_errorObject__ = __webpack_require__(48);
141027  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__OuterSubscriber__ = __webpack_require__(13);
141028  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_subscribeToResult__ = __webpack_require__(14);
141029  /** PURE_IMPORTS_START tslib,_Subject,_util_tryCatch,_util_errorObject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
141030  
141031  
141032  
141033  
141034  
141035  
141036  function retryWhen(notifier) {
141037      return function (source) { return source.lift(new RetryWhenOperator(notifier, source)); };
141038  }
141039  var RetryWhenOperator = /*@__PURE__*/ (function () {
141040      function RetryWhenOperator(notifier, source) {
141041          this.notifier = notifier;
141042          this.source = source;
141043      }
141044      RetryWhenOperator.prototype.call = function (subscriber, source) {
141045          return source.subscribe(new RetryWhenSubscriber(subscriber, this.notifier, this.source));
141046      };
141047      return RetryWhenOperator;
141048  }());
141049  var RetryWhenSubscriber = /*@__PURE__*/ (function (_super) {
141050      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](RetryWhenSubscriber, _super);
141051      function RetryWhenSubscriber(destination, notifier, source) {
141052          var _this = _super.call(this, destination) || this;
141053          _this.notifier = notifier;
141054          _this.source = source;
141055          return _this;
141056      }
141057      RetryWhenSubscriber.prototype.error = function (err) {
141058          if (!this.isStopped) {
141059              var errors = this.errors;
141060              var retries = this.retries;
141061              var retriesSubscription = this.retriesSubscription;
141062              if (!retries) {
141063                  errors = new __WEBPACK_IMPORTED_MODULE_1__Subject__["a" /* Subject */]();
141064                  retries = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_tryCatch__["a" /* tryCatch */])(this.notifier)(errors);
141065                  if (retries === __WEBPACK_IMPORTED_MODULE_3__util_errorObject__["a" /* errorObject */]) {
141066                      return _super.prototype.error.call(this, __WEBPACK_IMPORTED_MODULE_3__util_errorObject__["a" /* errorObject */].e);
141067                  }
141068                  retriesSubscription = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__util_subscribeToResult__["a" /* subscribeToResult */])(this, retries);
141069              }
141070              else {
141071                  this.errors = null;
141072                  this.retriesSubscription = null;
141073              }
141074              this._unsubscribeAndRecycle();
141075              this.errors = errors;
141076              this.retries = retries;
141077              this.retriesSubscription = retriesSubscription;
141078              errors.next(err);
141079          }
141080      };
141081      RetryWhenSubscriber.prototype._unsubscribe = function () {
141082          var _a = this, errors = _a.errors, retriesSubscription = _a.retriesSubscription;
141083          if (errors) {
141084              errors.unsubscribe();
141085              this.errors = null;
141086          }
141087          if (retriesSubscription) {
141088              retriesSubscription.unsubscribe();
141089              this.retriesSubscription = null;
141090          }
141091          this.retries = null;
141092      };
141093      RetryWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
141094          var _unsubscribe = this._unsubscribe;
141095          this._unsubscribe = null;
141096          this._unsubscribeAndRecycle();
141097          this._unsubscribe = _unsubscribe;
141098          this.source.subscribe(this);
141099      };
141100      return RetryWhenSubscriber;
141101  }(__WEBPACK_IMPORTED_MODULE_4__OuterSubscriber__["a" /* OuterSubscriber */]));
141102  //# sourceMappingURL=retryWhen.js.map
141103  
141104  
141105  /***/ }),
141106  /* 889 */
141107  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141108  
141109  "use strict";
141110  /* harmony export (immutable) */ __webpack_exports__["a"] = sample;
141111  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
141112  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__ = __webpack_require__(13);
141113  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__ = __webpack_require__(14);
141114  /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
141115  
141116  
141117  
141118  function sample(notifier) {
141119      return function (source) { return source.lift(new SampleOperator(notifier)); };
141120  }
141121  var SampleOperator = /*@__PURE__*/ (function () {
141122      function SampleOperator(notifier) {
141123          this.notifier = notifier;
141124      }
141125      SampleOperator.prototype.call = function (subscriber, source) {
141126          var sampleSubscriber = new SampleSubscriber(subscriber);
141127          var subscription = source.subscribe(sampleSubscriber);
141128          subscription.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__["a" /* subscribeToResult */])(sampleSubscriber, this.notifier));
141129          return subscription;
141130      };
141131      return SampleOperator;
141132  }());
141133  var SampleSubscriber = /*@__PURE__*/ (function (_super) {
141134      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SampleSubscriber, _super);
141135      function SampleSubscriber() {
141136          var _this = _super !== null && _super.apply(this, arguments) || this;
141137          _this.hasValue = false;
141138          return _this;
141139      }
141140      SampleSubscriber.prototype._next = function (value) {
141141          this.value = value;
141142          this.hasValue = true;
141143      };
141144      SampleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
141145          this.emitValue();
141146      };
141147      SampleSubscriber.prototype.notifyComplete = function () {
141148          this.emitValue();
141149      };
141150      SampleSubscriber.prototype.emitValue = function () {
141151          if (this.hasValue) {
141152              this.hasValue = false;
141153              this.destination.next(this.value);
141154          }
141155      };
141156      return SampleSubscriber;
141157  }(__WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__["a" /* OuterSubscriber */]));
141158  //# sourceMappingURL=sample.js.map
141159  
141160  
141161  /***/ }),
141162  /* 890 */
141163  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141164  
141165  "use strict";
141166  /* harmony export (immutable) */ __webpack_exports__["a"] = sampleTime;
141167  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
141168  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
141169  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__scheduler_async__ = __webpack_require__(40);
141170  /** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */
141171  
141172  
141173  
141174  function sampleTime(period, scheduler) {
141175      if (scheduler === void 0) {
141176          scheduler = __WEBPACK_IMPORTED_MODULE_2__scheduler_async__["a" /* async */];
141177      }
141178      return function (source) { return source.lift(new SampleTimeOperator(period, scheduler)); };
141179  }
141180  var SampleTimeOperator = /*@__PURE__*/ (function () {
141181      function SampleTimeOperator(period, scheduler) {
141182          this.period = period;
141183          this.scheduler = scheduler;
141184      }
141185      SampleTimeOperator.prototype.call = function (subscriber, source) {
141186          return source.subscribe(new SampleTimeSubscriber(subscriber, this.period, this.scheduler));
141187      };
141188      return SampleTimeOperator;
141189  }());
141190  var SampleTimeSubscriber = /*@__PURE__*/ (function (_super) {
141191      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SampleTimeSubscriber, _super);
141192      function SampleTimeSubscriber(destination, period, scheduler) {
141193          var _this = _super.call(this, destination) || this;
141194          _this.period = period;
141195          _this.scheduler = scheduler;
141196          _this.hasValue = false;
141197          _this.add(scheduler.schedule(dispatchNotification, period, { subscriber: _this, period: period }));
141198          return _this;
141199      }
141200      SampleTimeSubscriber.prototype._next = function (value) {
141201          this.lastValue = value;
141202          this.hasValue = true;
141203      };
141204      SampleTimeSubscriber.prototype.notifyNext = function () {
141205          if (this.hasValue) {
141206              this.hasValue = false;
141207              this.destination.next(this.lastValue);
141208          }
141209      };
141210      return SampleTimeSubscriber;
141211  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
141212  function dispatchNotification(state) {
141213      var subscriber = state.subscriber, period = state.period;
141214      subscriber.notifyNext();
141215      this.schedule(state, period);
141216  }
141217  //# sourceMappingURL=sampleTime.js.map
141218  
141219  
141220  /***/ }),
141221  /* 891 */
141222  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141223  
141224  "use strict";
141225  /* harmony export (immutable) */ __webpack_exports__["a"] = sequenceEqual;
141226  /* unused harmony export SequenceEqualOperator */
141227  /* unused harmony export SequenceEqualSubscriber */
141228  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
141229  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
141230  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_tryCatch__ = __webpack_require__(57);
141231  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_errorObject__ = __webpack_require__(48);
141232  /** PURE_IMPORTS_START tslib,_Subscriber,_util_tryCatch,_util_errorObject PURE_IMPORTS_END */
141233  
141234  
141235  
141236  
141237  function sequenceEqual(compareTo, comparor) {
141238      return function (source) { return source.lift(new SequenceEqualOperator(compareTo, comparor)); };
141239  }
141240  var SequenceEqualOperator = /*@__PURE__*/ (function () {
141241      function SequenceEqualOperator(compareTo, comparor) {
141242          this.compareTo = compareTo;
141243          this.comparor = comparor;
141244      }
141245      SequenceEqualOperator.prototype.call = function (subscriber, source) {
141246          return source.subscribe(new SequenceEqualSubscriber(subscriber, this.compareTo, this.comparor));
141247      };
141248      return SequenceEqualOperator;
141249  }());
141250  
141251  var SequenceEqualSubscriber = /*@__PURE__*/ (function (_super) {
141252      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SequenceEqualSubscriber, _super);
141253      function SequenceEqualSubscriber(destination, compareTo, comparor) {
141254          var _this = _super.call(this, destination) || this;
141255          _this.compareTo = compareTo;
141256          _this.comparor = comparor;
141257          _this._a = [];
141258          _this._b = [];
141259          _this._oneComplete = false;
141260          _this.destination.add(compareTo.subscribe(new SequenceEqualCompareToSubscriber(destination, _this)));
141261          return _this;
141262      }
141263      SequenceEqualSubscriber.prototype._next = function (value) {
141264          if (this._oneComplete && this._b.length === 0) {
141265              this.emit(false);
141266          }
141267          else {
141268              this._a.push(value);
141269              this.checkValues();
141270          }
141271      };
141272      SequenceEqualSubscriber.prototype._complete = function () {
141273          if (this._oneComplete) {
141274              this.emit(this._a.length === 0 && this._b.length === 0);
141275          }
141276          else {
141277              this._oneComplete = true;
141278          }
141279          this.unsubscribe();
141280      };
141281      SequenceEqualSubscriber.prototype.checkValues = function () {
141282          var _c = this, _a = _c._a, _b = _c._b, comparor = _c.comparor;
141283          while (_a.length > 0 && _b.length > 0) {
141284              var a = _a.shift();
141285              var b = _b.shift();
141286              var areEqual = false;
141287              if (comparor) {
141288                  areEqual = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_tryCatch__["a" /* tryCatch */])(comparor)(a, b);
141289                  if (areEqual === __WEBPACK_IMPORTED_MODULE_3__util_errorObject__["a" /* errorObject */]) {
141290                      this.destination.error(__WEBPACK_IMPORTED_MODULE_3__util_errorObject__["a" /* errorObject */].e);
141291                  }
141292              }
141293              else {
141294                  areEqual = a === b;
141295              }
141296              if (!areEqual) {
141297                  this.emit(false);
141298              }
141299          }
141300      };
141301      SequenceEqualSubscriber.prototype.emit = function (value) {
141302          var destination = this.destination;
141303          destination.next(value);
141304          destination.complete();
141305      };
141306      SequenceEqualSubscriber.prototype.nextB = function (value) {
141307          if (this._oneComplete && this._a.length === 0) {
141308              this.emit(false);
141309          }
141310          else {
141311              this._b.push(value);
141312              this.checkValues();
141313          }
141314      };
141315      SequenceEqualSubscriber.prototype.completeB = function () {
141316          if (this._oneComplete) {
141317              this.emit(this._a.length === 0 && this._b.length === 0);
141318          }
141319          else {
141320              this._oneComplete = true;
141321          }
141322      };
141323      return SequenceEqualSubscriber;
141324  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
141325  
141326  var SequenceEqualCompareToSubscriber = /*@__PURE__*/ (function (_super) {
141327      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SequenceEqualCompareToSubscriber, _super);
141328      function SequenceEqualCompareToSubscriber(destination, parent) {
141329          var _this = _super.call(this, destination) || this;
141330          _this.parent = parent;
141331          return _this;
141332      }
141333      SequenceEqualCompareToSubscriber.prototype._next = function (value) {
141334          this.parent.nextB(value);
141335      };
141336      SequenceEqualCompareToSubscriber.prototype._error = function (err) {
141337          this.parent.error(err);
141338          this.unsubscribe();
141339      };
141340      SequenceEqualCompareToSubscriber.prototype._complete = function () {
141341          this.parent.completeB();
141342          this.unsubscribe();
141343      };
141344      return SequenceEqualCompareToSubscriber;
141345  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
141346  //# sourceMappingURL=sequenceEqual.js.map
141347  
141348  
141349  /***/ }),
141350  /* 892 */
141351  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141352  
141353  "use strict";
141354  /* harmony export (immutable) */ __webpack_exports__["a"] = share;
141355  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__multicast__ = __webpack_require__(117);
141356  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__refCount__ = __webpack_require__(316);
141357  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Subject__ = __webpack_require__(36);
141358  /** PURE_IMPORTS_START _multicast,_refCount,_Subject PURE_IMPORTS_END */
141359  
141360  
141361  
141362  function shareSubjectFactory() {
141363      return new __WEBPACK_IMPORTED_MODULE_2__Subject__["a" /* Subject */]();
141364  }
141365  function share() {
141366      return function (source) { return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__refCount__["a" /* refCount */])()(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__multicast__["a" /* multicast */])(shareSubjectFactory)(source)); };
141367  }
141368  //# sourceMappingURL=share.js.map
141369  
141370  
141371  /***/ }),
141372  /* 893 */
141373  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141374  
141375  "use strict";
141376  /* harmony export (immutable) */ __webpack_exports__["a"] = shareReplay;
141377  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ReplaySubject__ = __webpack_require__(308);
141378  /** PURE_IMPORTS_START _ReplaySubject PURE_IMPORTS_END */
141379  
141380  function shareReplay(bufferSize, windowTime, scheduler) {
141381      if (bufferSize === void 0) {
141382          bufferSize = Number.POSITIVE_INFINITY;
141383      }
141384      if (windowTime === void 0) {
141385          windowTime = Number.POSITIVE_INFINITY;
141386      }
141387      return function (source) { return source.lift(shareReplayOperator(bufferSize, windowTime, scheduler)); };
141388  }
141389  function shareReplayOperator(bufferSize, windowTime, scheduler) {
141390      var subject;
141391      var refCount = 0;
141392      var subscription;
141393      var hasError = false;
141394      var isComplete = false;
141395      return function shareReplayOperation(source) {
141396          refCount++;
141397          if (!subject || hasError) {
141398              hasError = false;
141399              subject = new __WEBPACK_IMPORTED_MODULE_0__ReplaySubject__["a" /* ReplaySubject */](bufferSize, windowTime, scheduler);
141400              subscription = source.subscribe({
141401                  next: function (value) { subject.next(value); },
141402                  error: function (err) {
141403                      hasError = true;
141404                      subject.error(err);
141405                  },
141406                  complete: function () {
141407                      isComplete = true;
141408                      subject.complete();
141409                  },
141410              });
141411          }
141412          var innerSub = subject.subscribe(this);
141413          return function () {
141414              refCount--;
141415              innerSub.unsubscribe();
141416              if (subscription && refCount === 0 && isComplete) {
141417                  subscription.unsubscribe();
141418              }
141419          };
141420      };
141421  }
141422  //# sourceMappingURL=shareReplay.js.map
141423  
141424  
141425  /***/ }),
141426  /* 894 */
141427  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141428  
141429  "use strict";
141430  /* harmony export (immutable) */ __webpack_exports__["a"] = single;
141431  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
141432  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
141433  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_EmptyError__ = __webpack_require__(153);
141434  /** PURE_IMPORTS_START tslib,_Subscriber,_util_EmptyError PURE_IMPORTS_END */
141435  
141436  
141437  
141438  function single(predicate) {
141439      return function (source) { return source.lift(new SingleOperator(predicate, source)); };
141440  }
141441  var SingleOperator = /*@__PURE__*/ (function () {
141442      function SingleOperator(predicate, source) {
141443          this.predicate = predicate;
141444          this.source = source;
141445      }
141446      SingleOperator.prototype.call = function (subscriber, source) {
141447          return source.subscribe(new SingleSubscriber(subscriber, this.predicate, this.source));
141448      };
141449      return SingleOperator;
141450  }());
141451  var SingleSubscriber = /*@__PURE__*/ (function (_super) {
141452      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SingleSubscriber, _super);
141453      function SingleSubscriber(destination, predicate, source) {
141454          var _this = _super.call(this, destination) || this;
141455          _this.predicate = predicate;
141456          _this.source = source;
141457          _this.seenValue = false;
141458          _this.index = 0;
141459          return _this;
141460      }
141461      SingleSubscriber.prototype.applySingleValue = function (value) {
141462          if (this.seenValue) {
141463              this.destination.error('Sequence contains more than one element');
141464          }
141465          else {
141466              this.seenValue = true;
141467              this.singleValue = value;
141468          }
141469      };
141470      SingleSubscriber.prototype._next = function (value) {
141471          var index = this.index++;
141472          if (this.predicate) {
141473              this.tryNext(value, index);
141474          }
141475          else {
141476              this.applySingleValue(value);
141477          }
141478      };
141479      SingleSubscriber.prototype.tryNext = function (value, index) {
141480          try {
141481              if (this.predicate(value, index, this.source)) {
141482                  this.applySingleValue(value);
141483              }
141484          }
141485          catch (err) {
141486              this.destination.error(err);
141487          }
141488      };
141489      SingleSubscriber.prototype._complete = function () {
141490          var destination = this.destination;
141491          if (this.index > 0) {
141492              destination.next(this.seenValue ? this.singleValue : undefined);
141493              destination.complete();
141494          }
141495          else {
141496              destination.error(new __WEBPACK_IMPORTED_MODULE_2__util_EmptyError__["a" /* EmptyError */]);
141497          }
141498      };
141499      return SingleSubscriber;
141500  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
141501  //# sourceMappingURL=single.js.map
141502  
141503  
141504  /***/ }),
141505  /* 895 */
141506  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141507  
141508  "use strict";
141509  /* harmony export (immutable) */ __webpack_exports__["a"] = skip;
141510  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
141511  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
141512  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
141513  
141514  
141515  function skip(count) {
141516      return function (source) { return source.lift(new SkipOperator(count)); };
141517  }
141518  var SkipOperator = /*@__PURE__*/ (function () {
141519      function SkipOperator(total) {
141520          this.total = total;
141521      }
141522      SkipOperator.prototype.call = function (subscriber, source) {
141523          return source.subscribe(new SkipSubscriber(subscriber, this.total));
141524      };
141525      return SkipOperator;
141526  }());
141527  var SkipSubscriber = /*@__PURE__*/ (function (_super) {
141528      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SkipSubscriber, _super);
141529      function SkipSubscriber(destination, total) {
141530          var _this = _super.call(this, destination) || this;
141531          _this.total = total;
141532          _this.count = 0;
141533          return _this;
141534      }
141535      SkipSubscriber.prototype._next = function (x) {
141536          if (++this.count > this.total) {
141537              this.destination.next(x);
141538          }
141539      };
141540      return SkipSubscriber;
141541  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
141542  //# sourceMappingURL=skip.js.map
141543  
141544  
141545  /***/ }),
141546  /* 896 */
141547  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141548  
141549  "use strict";
141550  /* harmony export (immutable) */ __webpack_exports__["a"] = skipLast;
141551  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
141552  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
141553  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_ArgumentOutOfRangeError__ = __webpack_require__(152);
141554  /** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError PURE_IMPORTS_END */
141555  
141556  
141557  
141558  function skipLast(count) {
141559      return function (source) { return source.lift(new SkipLastOperator(count)); };
141560  }
141561  var SkipLastOperator = /*@__PURE__*/ (function () {
141562      function SkipLastOperator(_skipCount) {
141563          this._skipCount = _skipCount;
141564          if (this._skipCount < 0) {
141565              throw new __WEBPACK_IMPORTED_MODULE_2__util_ArgumentOutOfRangeError__["a" /* ArgumentOutOfRangeError */];
141566          }
141567      }
141568      SkipLastOperator.prototype.call = function (subscriber, source) {
141569          if (this._skipCount === 0) {
141570              return source.subscribe(new __WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */](subscriber));
141571          }
141572          else {
141573              return source.subscribe(new SkipLastSubscriber(subscriber, this._skipCount));
141574          }
141575      };
141576      return SkipLastOperator;
141577  }());
141578  var SkipLastSubscriber = /*@__PURE__*/ (function (_super) {
141579      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SkipLastSubscriber, _super);
141580      function SkipLastSubscriber(destination, _skipCount) {
141581          var _this = _super.call(this, destination) || this;
141582          _this._skipCount = _skipCount;
141583          _this._count = 0;
141584          _this._ring = new Array(_skipCount);
141585          return _this;
141586      }
141587      SkipLastSubscriber.prototype._next = function (value) {
141588          var skipCount = this._skipCount;
141589          var count = this._count++;
141590          if (count < skipCount) {
141591              this._ring[count] = value;
141592          }
141593          else {
141594              var currentIndex = count % skipCount;
141595              var ring = this._ring;
141596              var oldValue = ring[currentIndex];
141597              ring[currentIndex] = value;
141598              this.destination.next(oldValue);
141599          }
141600      };
141601      return SkipLastSubscriber;
141602  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
141603  //# sourceMappingURL=skipLast.js.map
141604  
141605  
141606  /***/ }),
141607  /* 897 */
141608  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141609  
141610  "use strict";
141611  /* harmony export (immutable) */ __webpack_exports__["a"] = skipUntil;
141612  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
141613  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__ = __webpack_require__(13);
141614  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__InnerSubscriber__ = __webpack_require__(84);
141615  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_subscribeToResult__ = __webpack_require__(14);
141616  /** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
141617  
141618  
141619  
141620  
141621  function skipUntil(notifier) {
141622      return function (source) { return source.lift(new SkipUntilOperator(notifier)); };
141623  }
141624  var SkipUntilOperator = /*@__PURE__*/ (function () {
141625      function SkipUntilOperator(notifier) {
141626          this.notifier = notifier;
141627      }
141628      SkipUntilOperator.prototype.call = function (destination, source) {
141629          return source.subscribe(new SkipUntilSubscriber(destination, this.notifier));
141630      };
141631      return SkipUntilOperator;
141632  }());
141633  var SkipUntilSubscriber = /*@__PURE__*/ (function (_super) {
141634      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SkipUntilSubscriber, _super);
141635      function SkipUntilSubscriber(destination, notifier) {
141636          var _this = _super.call(this, destination) || this;
141637          _this.hasValue = false;
141638          var innerSubscriber = new __WEBPACK_IMPORTED_MODULE_2__InnerSubscriber__["a" /* InnerSubscriber */](_this, undefined, undefined);
141639          _this.add(innerSubscriber);
141640          _this.innerSubscription = innerSubscriber;
141641          __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_subscribeToResult__["a" /* subscribeToResult */])(_this, notifier, undefined, undefined, innerSubscriber);
141642          return _this;
141643      }
141644      SkipUntilSubscriber.prototype._next = function (value) {
141645          if (this.hasValue) {
141646              _super.prototype._next.call(this, value);
141647          }
141648      };
141649      SkipUntilSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
141650          this.hasValue = true;
141651          if (this.innerSubscription) {
141652              this.innerSubscription.unsubscribe();
141653          }
141654      };
141655      SkipUntilSubscriber.prototype.notifyComplete = function () {
141656      };
141657      return SkipUntilSubscriber;
141658  }(__WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__["a" /* OuterSubscriber */]));
141659  //# sourceMappingURL=skipUntil.js.map
141660  
141661  
141662  /***/ }),
141663  /* 898 */
141664  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141665  
141666  "use strict";
141667  /* harmony export (immutable) */ __webpack_exports__["a"] = skipWhile;
141668  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
141669  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
141670  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
141671  
141672  
141673  function skipWhile(predicate) {
141674      return function (source) { return source.lift(new SkipWhileOperator(predicate)); };
141675  }
141676  var SkipWhileOperator = /*@__PURE__*/ (function () {
141677      function SkipWhileOperator(predicate) {
141678          this.predicate = predicate;
141679      }
141680      SkipWhileOperator.prototype.call = function (subscriber, source) {
141681          return source.subscribe(new SkipWhileSubscriber(subscriber, this.predicate));
141682      };
141683      return SkipWhileOperator;
141684  }());
141685  var SkipWhileSubscriber = /*@__PURE__*/ (function (_super) {
141686      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SkipWhileSubscriber, _super);
141687      function SkipWhileSubscriber(destination, predicate) {
141688          var _this = _super.call(this, destination) || this;
141689          _this.predicate = predicate;
141690          _this.skipping = true;
141691          _this.index = 0;
141692          return _this;
141693      }
141694      SkipWhileSubscriber.prototype._next = function (value) {
141695          var destination = this.destination;
141696          if (this.skipping) {
141697              this.tryCallPredicate(value);
141698          }
141699          if (!this.skipping) {
141700              destination.next(value);
141701          }
141702      };
141703      SkipWhileSubscriber.prototype.tryCallPredicate = function (value) {
141704          try {
141705              var result = this.predicate(value, this.index++);
141706              this.skipping = Boolean(result);
141707          }
141708          catch (err) {
141709              this.destination.error(err);
141710          }
141711      };
141712      return SkipWhileSubscriber;
141713  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
141714  //# sourceMappingURL=skipWhile.js.map
141715  
141716  
141717  /***/ }),
141718  /* 899 */
141719  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141720  
141721  "use strict";
141722  /* harmony export (immutable) */ __webpack_exports__["a"] = startWith;
141723  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable_fromArray__ = __webpack_require__(85);
141724  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__observable_scalar__ = __webpack_require__(312);
141725  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__observable_empty__ = __webpack_require__(39);
141726  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__observable_concat__ = __webpack_require__(187);
141727  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_isScheduler__ = __webpack_require__(49);
141728  /** PURE_IMPORTS_START _observable_fromArray,_observable_scalar,_observable_empty,_observable_concat,_util_isScheduler PURE_IMPORTS_END */
141729  
141730  
141731  
141732  
141733  
141734  function startWith() {
141735      var array = [];
141736      for (var _i = 0; _i < arguments.length; _i++) {
141737          array[_i] = arguments[_i];
141738      }
141739      return function (source) {
141740          var scheduler = array[array.length - 1];
141741          if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util_isScheduler__["a" /* isScheduler */])(scheduler)) {
141742              array.pop();
141743          }
141744          else {
141745              scheduler = null;
141746          }
141747          var len = array.length;
141748          if (len === 1 && !scheduler) {
141749              return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__observable_concat__["a" /* concat */])(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__observable_scalar__["a" /* scalar */])(array[0]), source);
141750          }
141751          else if (len > 0) {
141752              return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__observable_concat__["a" /* concat */])(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__observable_fromArray__["a" /* fromArray */])(array, scheduler), source);
141753          }
141754          else {
141755              return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__observable_concat__["a" /* concat */])(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__observable_empty__["a" /* empty */])(scheduler), source);
141756          }
141757      };
141758  }
141759  //# sourceMappingURL=startWith.js.map
141760  
141761  
141762  /***/ }),
141763  /* 900 */
141764  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141765  
141766  "use strict";
141767  /* harmony export (immutable) */ __webpack_exports__["a"] = subscribeOn;
141768  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable_SubscribeOnObservable__ = __webpack_require__(822);
141769  /** PURE_IMPORTS_START _observable_SubscribeOnObservable PURE_IMPORTS_END */
141770  
141771  function subscribeOn(scheduler, delay) {
141772      if (delay === void 0) {
141773          delay = 0;
141774      }
141775      return function subscribeOnOperatorFunction(source) {
141776          return source.lift(new SubscribeOnOperator(scheduler, delay));
141777      };
141778  }
141779  var SubscribeOnOperator = /*@__PURE__*/ (function () {
141780      function SubscribeOnOperator(scheduler, delay) {
141781          this.scheduler = scheduler;
141782          this.delay = delay;
141783      }
141784      SubscribeOnOperator.prototype.call = function (subscriber, source) {
141785          return new __WEBPACK_IMPORTED_MODULE_0__observable_SubscribeOnObservable__["a" /* SubscribeOnObservable */](source, this.delay, this.scheduler).subscribe(subscriber);
141786      };
141787      return SubscribeOnOperator;
141788  }());
141789  //# sourceMappingURL=subscribeOn.js.map
141790  
141791  
141792  /***/ }),
141793  /* 901 */
141794  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141795  
141796  "use strict";
141797  /* harmony export (immutable) */ __webpack_exports__["a"] = switchAll;
141798  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__switchMap__ = __webpack_require__(318);
141799  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_identity__ = __webpack_require__(119);
141800  /** PURE_IMPORTS_START _switchMap,_util_identity PURE_IMPORTS_END */
141801  
141802  
141803  function switchAll() {
141804      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__switchMap__["a" /* switchMap */])(__WEBPACK_IMPORTED_MODULE_1__util_identity__["a" /* identity */]);
141805  }
141806  //# sourceMappingURL=switchAll.js.map
141807  
141808  
141809  /***/ }),
141810  /* 902 */
141811  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141812  
141813  "use strict";
141814  /* harmony export (immutable) */ __webpack_exports__["a"] = switchMapTo;
141815  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__switchMap__ = __webpack_require__(318);
141816  /** PURE_IMPORTS_START _switchMap PURE_IMPORTS_END */
141817  
141818  function switchMapTo(innerObservable, resultSelector) {
141819      return resultSelector ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__switchMap__["a" /* switchMap */])(function () { return innerObservable; }, resultSelector) : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__switchMap__["a" /* switchMap */])(function () { return innerObservable; });
141820  }
141821  //# sourceMappingURL=switchMapTo.js.map
141822  
141823  
141824  /***/ }),
141825  /* 903 */
141826  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141827  
141828  "use strict";
141829  /* harmony export (immutable) */ __webpack_exports__["a"] = takeUntil;
141830  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
141831  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__ = __webpack_require__(13);
141832  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__ = __webpack_require__(14);
141833  /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
141834  
141835  
141836  
141837  function takeUntil(notifier) {
141838      return function (source) { return source.lift(new TakeUntilOperator(notifier)); };
141839  }
141840  var TakeUntilOperator = /*@__PURE__*/ (function () {
141841      function TakeUntilOperator(notifier) {
141842          this.notifier = notifier;
141843      }
141844      TakeUntilOperator.prototype.call = function (subscriber, source) {
141845          var takeUntilSubscriber = new TakeUntilSubscriber(subscriber);
141846          var notifierSubscription = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__["a" /* subscribeToResult */])(takeUntilSubscriber, this.notifier);
141847          if (notifierSubscription && !takeUntilSubscriber.seenValue) {
141848              takeUntilSubscriber.add(notifierSubscription);
141849              return source.subscribe(takeUntilSubscriber);
141850          }
141851          return takeUntilSubscriber;
141852      };
141853      return TakeUntilOperator;
141854  }());
141855  var TakeUntilSubscriber = /*@__PURE__*/ (function (_super) {
141856      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](TakeUntilSubscriber, _super);
141857      function TakeUntilSubscriber(destination) {
141858          var _this = _super.call(this, destination) || this;
141859          _this.seenValue = false;
141860          return _this;
141861      }
141862      TakeUntilSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
141863          this.seenValue = true;
141864          this.complete();
141865      };
141866      TakeUntilSubscriber.prototype.notifyComplete = function () {
141867      };
141868      return TakeUntilSubscriber;
141869  }(__WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__["a" /* OuterSubscriber */]));
141870  //# sourceMappingURL=takeUntil.js.map
141871  
141872  
141873  /***/ }),
141874  /* 904 */
141875  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141876  
141877  "use strict";
141878  /* harmony export (immutable) */ __webpack_exports__["a"] = takeWhile;
141879  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
141880  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
141881  /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */
141882  
141883  
141884  function takeWhile(predicate) {
141885      return function (source) { return source.lift(new TakeWhileOperator(predicate)); };
141886  }
141887  var TakeWhileOperator = /*@__PURE__*/ (function () {
141888      function TakeWhileOperator(predicate) {
141889          this.predicate = predicate;
141890      }
141891      TakeWhileOperator.prototype.call = function (subscriber, source) {
141892          return source.subscribe(new TakeWhileSubscriber(subscriber, this.predicate));
141893      };
141894      return TakeWhileOperator;
141895  }());
141896  var TakeWhileSubscriber = /*@__PURE__*/ (function (_super) {
141897      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](TakeWhileSubscriber, _super);
141898      function TakeWhileSubscriber(destination, predicate) {
141899          var _this = _super.call(this, destination) || this;
141900          _this.predicate = predicate;
141901          _this.index = 0;
141902          return _this;
141903      }
141904      TakeWhileSubscriber.prototype._next = function (value) {
141905          var destination = this.destination;
141906          var result;
141907          try {
141908              result = this.predicate(value, this.index++);
141909          }
141910          catch (err) {
141911              destination.error(err);
141912              return;
141913          }
141914          this.nextOrComplete(value, result);
141915      };
141916      TakeWhileSubscriber.prototype.nextOrComplete = function (value, predicateResult) {
141917          var destination = this.destination;
141918          if (Boolean(predicateResult)) {
141919              destination.next(value);
141920          }
141921          else {
141922              destination.complete();
141923          }
141924      };
141925      return TakeWhileSubscriber;
141926  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
141927  //# sourceMappingURL=takeWhile.js.map
141928  
141929  
141930  /***/ }),
141931  /* 905 */
141932  /***/ (function(module, __webpack_exports__, __webpack_require__) {
141933  
141934  "use strict";
141935  /* harmony export (immutable) */ __webpack_exports__["a"] = throttleTime;
141936  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
141937  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
141938  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__scheduler_async__ = __webpack_require__(40);
141939  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__throttle__ = __webpack_require__(436);
141940  /** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async,_throttle PURE_IMPORTS_END */
141941  
141942  
141943  
141944  
141945  function throttleTime(duration, scheduler, config) {
141946      if (scheduler === void 0) {
141947          scheduler = __WEBPACK_IMPORTED_MODULE_2__scheduler_async__["a" /* async */];
141948      }
141949      if (config === void 0) {
141950          config = __WEBPACK_IMPORTED_MODULE_3__throttle__["b" /* defaultThrottleConfig */];
141951      }
141952      return function (source) { return source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing)); };
141953  }
141954  var ThrottleTimeOperator = /*@__PURE__*/ (function () {
141955      function ThrottleTimeOperator(duration, scheduler, leading, trailing) {
141956          this.duration = duration;
141957          this.scheduler = scheduler;
141958          this.leading = leading;
141959          this.trailing = trailing;
141960      }
141961      ThrottleTimeOperator.prototype.call = function (subscriber, source) {
141962          return source.subscribe(new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing));
141963      };
141964      return ThrottleTimeOperator;
141965  }());
141966  var ThrottleTimeSubscriber = /*@__PURE__*/ (function (_super) {
141967      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](ThrottleTimeSubscriber, _super);
141968      function ThrottleTimeSubscriber(destination, duration, scheduler, leading, trailing) {
141969          var _this = _super.call(this, destination) || this;
141970          _this.duration = duration;
141971          _this.scheduler = scheduler;
141972          _this.leading = leading;
141973          _this.trailing = trailing;
141974          _this._hasTrailingValue = false;
141975          _this._trailingValue = null;
141976          return _this;
141977      }
141978      ThrottleTimeSubscriber.prototype._next = function (value) {
141979          if (this.throttled) {
141980              if (this.trailing) {
141981                  this._trailingValue = value;
141982                  this._hasTrailingValue = true;
141983              }
141984          }
141985          else {
141986              this.add(this.throttled = this.scheduler.schedule(dispatchNext, this.duration, { subscriber: this }));
141987              if (this.leading) {
141988                  this.destination.next(value);
141989              }
141990          }
141991      };
141992      ThrottleTimeSubscriber.prototype._complete = function () {
141993          if (this._hasTrailingValue) {
141994              this.destination.next(this._trailingValue);
141995              this.destination.complete();
141996          }
141997          else {
141998              this.destination.complete();
141999          }
142000      };
142001      ThrottleTimeSubscriber.prototype.clearThrottle = function () {
142002          var throttled = this.throttled;
142003          if (throttled) {
142004              if (this.trailing && this._hasTrailingValue) {
142005                  this.destination.next(this._trailingValue);
142006                  this._trailingValue = null;
142007                  this._hasTrailingValue = false;
142008              }
142009              throttled.unsubscribe();
142010              this.remove(throttled);
142011              this.throttled = null;
142012          }
142013      };
142014      return ThrottleTimeSubscriber;
142015  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
142016  function dispatchNext(arg) {
142017      var subscriber = arg.subscriber;
142018      subscriber.clearThrottle();
142019  }
142020  //# sourceMappingURL=throttleTime.js.map
142021  
142022  
142023  /***/ }),
142024  /* 906 */
142025  /***/ (function(module, __webpack_exports__, __webpack_require__) {
142026  
142027  "use strict";
142028  /* harmony export (immutable) */ __webpack_exports__["a"] = timeInterval;
142029  /* unused harmony export TimeInterval */
142030  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__scheduler_async__ = __webpack_require__(40);
142031  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__scan__ = __webpack_require__(317);
142032  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__observable_defer__ = __webpack_require__(310);
142033  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__map__ = __webpack_require__(47);
142034  /** PURE_IMPORTS_START _scheduler_async,_scan,_observable_defer,_map PURE_IMPORTS_END */
142035  
142036  
142037  
142038  
142039  function timeInterval(scheduler) {
142040      if (scheduler === void 0) {
142041          scheduler = __WEBPACK_IMPORTED_MODULE_0__scheduler_async__["a" /* async */];
142042      }
142043      return function (source) {
142044          return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__observable_defer__["a" /* defer */])(function () {
142045              return source.pipe(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__scan__["a" /* scan */])(function (_a, value) {
142046                  var current = _a.current;
142047                  return ({ value: value, current: scheduler.now(), last: current });
142048              }, { current: scheduler.now(), value: undefined, last: undefined }), __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__map__["a" /* map */])(function (_a) {
142049                  var current = _a.current, last = _a.last, value = _a.value;
142050                  return new TimeInterval(value, current - last);
142051              }));
142052          });
142053      };
142054  }
142055  var TimeInterval = /*@__PURE__*/ (function () {
142056      function TimeInterval(value, interval) {
142057          this.value = value;
142058          this.interval = interval;
142059      }
142060      return TimeInterval;
142061  }());
142062  
142063  //# sourceMappingURL=timeInterval.js.map
142064  
142065  
142066  /***/ }),
142067  /* 907 */
142068  /***/ (function(module, __webpack_exports__, __webpack_require__) {
142069  
142070  "use strict";
142071  /* harmony export (immutable) */ __webpack_exports__["a"] = timeout;
142072  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__scheduler_async__ = __webpack_require__(40);
142073  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_TimeoutError__ = __webpack_require__(440);
142074  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__timeoutWith__ = __webpack_require__(437);
142075  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__observable_throwError__ = __webpack_require__(313);
142076  /** PURE_IMPORTS_START _scheduler_async,_util_TimeoutError,_timeoutWith,_observable_throwError PURE_IMPORTS_END */
142077  
142078  
142079  
142080  
142081  function timeout(due, scheduler) {
142082      if (scheduler === void 0) {
142083          scheduler = __WEBPACK_IMPORTED_MODULE_0__scheduler_async__["a" /* async */];
142084      }
142085      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__timeoutWith__["a" /* timeoutWith */])(due, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__observable_throwError__["a" /* throwError */])(new __WEBPACK_IMPORTED_MODULE_1__util_TimeoutError__["a" /* TimeoutError */]()), scheduler);
142086  }
142087  //# sourceMappingURL=timeout.js.map
142088  
142089  
142090  /***/ }),
142091  /* 908 */
142092  /***/ (function(module, __webpack_exports__, __webpack_require__) {
142093  
142094  "use strict";
142095  /* harmony export (immutable) */ __webpack_exports__["a"] = timestamp;
142096  /* unused harmony export Timestamp */
142097  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__scheduler_async__ = __webpack_require__(40);
142098  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__map__ = __webpack_require__(47);
142099  /** PURE_IMPORTS_START _scheduler_async,_map PURE_IMPORTS_END */
142100  
142101  
142102  function timestamp(scheduler) {
142103      if (scheduler === void 0) {
142104          scheduler = __WEBPACK_IMPORTED_MODULE_0__scheduler_async__["a" /* async */];
142105      }
142106      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__map__["a" /* map */])(function (value) { return new Timestamp(value, scheduler.now()); });
142107  }
142108  var Timestamp = /*@__PURE__*/ (function () {
142109      function Timestamp(value, timestamp) {
142110          this.value = value;
142111          this.timestamp = timestamp;
142112      }
142113      return Timestamp;
142114  }());
142115  
142116  //# sourceMappingURL=timestamp.js.map
142117  
142118  
142119  /***/ }),
142120  /* 909 */
142121  /***/ (function(module, __webpack_exports__, __webpack_require__) {
142122  
142123  "use strict";
142124  /* harmony export (immutable) */ __webpack_exports__["a"] = toArray;
142125  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__reduce__ = __webpack_require__(188);
142126  /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */
142127  
142128  function toArrayReducer(arr, item, index) {
142129      if (index === 0) {
142130          return [item];
142131      }
142132      arr.push(item);
142133      return arr;
142134  }
142135  function toArray() {
142136      return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__reduce__["a" /* reduce */])(toArrayReducer, []);
142137  }
142138  //# sourceMappingURL=toArray.js.map
142139  
142140  
142141  /***/ }),
142142  /* 910 */
142143  /***/ (function(module, __webpack_exports__, __webpack_require__) {
142144  
142145  "use strict";
142146  /* harmony export (immutable) */ __webpack_exports__["a"] = window;
142147  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
142148  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subject__ = __webpack_require__(36);
142149  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__OuterSubscriber__ = __webpack_require__(13);
142150  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_subscribeToResult__ = __webpack_require__(14);
142151  /** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
142152  
142153  
142154  
142155  
142156  function window(windowBoundaries) {
142157      return function windowOperatorFunction(source) {
142158          return source.lift(new WindowOperator(windowBoundaries));
142159      };
142160  }
142161  var WindowOperator = /*@__PURE__*/ (function () {
142162      function WindowOperator(windowBoundaries) {
142163          this.windowBoundaries = windowBoundaries;
142164      }
142165      WindowOperator.prototype.call = function (subscriber, source) {
142166          var windowSubscriber = new WindowSubscriber(subscriber);
142167          var sourceSubscription = source.subscribe(windowSubscriber);
142168          if (!sourceSubscription.closed) {
142169              windowSubscriber.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_subscribeToResult__["a" /* subscribeToResult */])(windowSubscriber, this.windowBoundaries));
142170          }
142171          return sourceSubscription;
142172      };
142173      return WindowOperator;
142174  }());
142175  var WindowSubscriber = /*@__PURE__*/ (function (_super) {
142176      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](WindowSubscriber, _super);
142177      function WindowSubscriber(destination) {
142178          var _this = _super.call(this, destination) || this;
142179          _this.window = new __WEBPACK_IMPORTED_MODULE_1__Subject__["a" /* Subject */]();
142180          destination.next(_this.window);
142181          return _this;
142182      }
142183      WindowSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
142184          this.openWindow();
142185      };
142186      WindowSubscriber.prototype.notifyError = function (error, innerSub) {
142187          this._error(error);
142188      };
142189      WindowSubscriber.prototype.notifyComplete = function (innerSub) {
142190          this._complete();
142191      };
142192      WindowSubscriber.prototype._next = function (value) {
142193          this.window.next(value);
142194      };
142195      WindowSubscriber.prototype._error = function (err) {
142196          this.window.error(err);
142197          this.destination.error(err);
142198      };
142199      WindowSubscriber.prototype._complete = function () {
142200          this.window.complete();
142201          this.destination.complete();
142202      };
142203      WindowSubscriber.prototype._unsubscribe = function () {
142204          this.window = null;
142205      };
142206      WindowSubscriber.prototype.openWindow = function () {
142207          var prevWindow = this.window;
142208          if (prevWindow) {
142209              prevWindow.complete();
142210          }
142211          var destination = this.destination;
142212          var newWindow = this.window = new __WEBPACK_IMPORTED_MODULE_1__Subject__["a" /* Subject */]();
142213          destination.next(newWindow);
142214      };
142215      return WindowSubscriber;
142216  }(__WEBPACK_IMPORTED_MODULE_2__OuterSubscriber__["a" /* OuterSubscriber */]));
142217  //# sourceMappingURL=window.js.map
142218  
142219  
142220  /***/ }),
142221  /* 911 */
142222  /***/ (function(module, __webpack_exports__, __webpack_require__) {
142223  
142224  "use strict";
142225  /* harmony export (immutable) */ __webpack_exports__["a"] = windowCount;
142226  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
142227  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7);
142228  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Subject__ = __webpack_require__(36);
142229  /** PURE_IMPORTS_START tslib,_Subscriber,_Subject PURE_IMPORTS_END */
142230  
142231  
142232  
142233  function windowCount(windowSize, startWindowEvery) {
142234      if (startWindowEvery === void 0) {
142235          startWindowEvery = 0;
142236      }
142237      return function windowCountOperatorFunction(source) {
142238          return source.lift(new WindowCountOperator(windowSize, startWindowEvery));
142239      };
142240  }
142241  var WindowCountOperator = /*@__PURE__*/ (function () {
142242      function WindowCountOperator(windowSize, startWindowEvery) {
142243          this.windowSize = windowSize;
142244          this.startWindowEvery = startWindowEvery;
142245      }
142246      WindowCountOperator.prototype.call = function (subscriber, source) {
142247          return source.subscribe(new WindowCountSubscriber(subscriber, this.windowSize, this.startWindowEvery));
142248      };
142249      return WindowCountOperator;
142250  }());
142251  var WindowCountSubscriber = /*@__PURE__*/ (function (_super) {
142252      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](WindowCountSubscriber, _super);
142253      function WindowCountSubscriber(destination, windowSize, startWindowEvery) {
142254          var _this = _super.call(this, destination) || this;
142255          _this.destination = destination;
142256          _this.windowSize = windowSize;
142257          _this.startWindowEvery = startWindowEvery;
142258          _this.windows = [new __WEBPACK_IMPORTED_MODULE_2__Subject__["a" /* Subject */]()];
142259          _this.count = 0;
142260          destination.next(_this.windows[0]);
142261          return _this;
142262      }
142263      WindowCountSubscriber.prototype._next = function (value) {
142264          var startWindowEvery = (this.startWindowEvery > 0) ? this.startWindowEvery : this.windowSize;
142265          var destination = this.destination;
142266          var windowSize = this.windowSize;
142267          var windows = this.windows;
142268          var len = windows.length;
142269          for (var i = 0; i < len && !this.closed; i++) {
142270              windows[i].next(value);
142271          }
142272          var c = this.count - windowSize + 1;
142273          if (c >= 0 && c % startWindowEvery === 0 && !this.closed) {
142274              windows.shift().complete();
142275          }
142276          if (++this.count % startWindowEvery === 0 && !this.closed) {
142277              var window_1 = new __WEBPACK_IMPORTED_MODULE_2__Subject__["a" /* Subject */]();
142278              windows.push(window_1);
142279              destination.next(window_1);
142280          }
142281      };
142282      WindowCountSubscriber.prototype._error = function (err) {
142283          var windows = this.windows;
142284          if (windows) {
142285              while (windows.length > 0 && !this.closed) {
142286                  windows.shift().error(err);
142287              }
142288          }
142289          this.destination.error(err);
142290      };
142291      WindowCountSubscriber.prototype._complete = function () {
142292          var windows = this.windows;
142293          if (windows) {
142294              while (windows.length > 0 && !this.closed) {
142295                  windows.shift().complete();
142296              }
142297          }
142298          this.destination.complete();
142299      };
142300      WindowCountSubscriber.prototype._unsubscribe = function () {
142301          this.count = 0;
142302          this.windows = null;
142303      };
142304      return WindowCountSubscriber;
142305  }(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */]));
142306  //# sourceMappingURL=windowCount.js.map
142307  
142308  
142309  /***/ }),
142310  /* 912 */
142311  /***/ (function(module, __webpack_exports__, __webpack_require__) {
142312  
142313  "use strict";
142314  /* harmony export (immutable) */ __webpack_exports__["a"] = windowTime;
142315  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
142316  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subject__ = __webpack_require__(36);
142317  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__scheduler_async__ = __webpack_require__(40);
142318  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscriber__ = __webpack_require__(7);
142319  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_isNumeric__ = __webpack_require__(191);
142320  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_isScheduler__ = __webpack_require__(49);
142321  /** PURE_IMPORTS_START tslib,_Subject,_scheduler_async,_Subscriber,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */
142322  
142323  
142324  
142325  
142326  
142327  
142328  function windowTime(windowTimeSpan) {
142329      var scheduler = __WEBPACK_IMPORTED_MODULE_2__scheduler_async__["a" /* async */];
142330      var windowCreationInterval = null;
142331      var maxWindowSize = Number.POSITIVE_INFINITY;
142332      if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__util_isScheduler__["a" /* isScheduler */])(arguments[3])) {
142333          scheduler = arguments[3];
142334      }
142335      if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__util_isScheduler__["a" /* isScheduler */])(arguments[2])) {
142336          scheduler = arguments[2];
142337      }
142338      else if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util_isNumeric__["a" /* isNumeric */])(arguments[2])) {
142339          maxWindowSize = arguments[2];
142340      }
142341      if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__util_isScheduler__["a" /* isScheduler */])(arguments[1])) {
142342          scheduler = arguments[1];
142343      }
142344      else if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util_isNumeric__["a" /* isNumeric */])(arguments[1])) {
142345          windowCreationInterval = arguments[1];
142346      }
142347      return function windowTimeOperatorFunction(source) {
142348          return source.lift(new WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler));
142349      };
142350  }
142351  var WindowTimeOperator = /*@__PURE__*/ (function () {
142352      function WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler) {
142353          this.windowTimeSpan = windowTimeSpan;
142354          this.windowCreationInterval = windowCreationInterval;
142355          this.maxWindowSize = maxWindowSize;
142356          this.scheduler = scheduler;
142357      }
142358      WindowTimeOperator.prototype.call = function (subscriber, source) {
142359          return source.subscribe(new WindowTimeSubscriber(subscriber, this.windowTimeSpan, this.windowCreationInterval, this.maxWindowSize, this.scheduler));
142360      };
142361      return WindowTimeOperator;
142362  }());
142363  var CountedSubject = /*@__PURE__*/ (function (_super) {
142364      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](CountedSubject, _super);
142365      function CountedSubject() {
142366          var _this = _super !== null && _super.apply(this, arguments) || this;
142367          _this._numberOfNextedValues = 0;
142368          return _this;
142369      }
142370      CountedSubject.prototype.next = function (value) {
142371          this._numberOfNextedValues++;
142372          _super.prototype.next.call(this, value);
142373      };
142374      Object.defineProperty(CountedSubject.prototype, "numberOfNextedValues", {
142375          get: function () {
142376              return this._numberOfNextedValues;
142377          },
142378          enumerable: true,
142379          configurable: true
142380      });
142381      return CountedSubject;
142382  }(__WEBPACK_IMPORTED_MODULE_1__Subject__["a" /* Subject */]));
142383  var WindowTimeSubscriber = /*@__PURE__*/ (function (_super) {
142384      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](WindowTimeSubscriber, _super);
142385      function WindowTimeSubscriber(destination, windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler) {
142386          var _this = _super.call(this, destination) || this;
142387          _this.destination = destination;
142388          _this.windowTimeSpan = windowTimeSpan;
142389          _this.windowCreationInterval = windowCreationInterval;
142390          _this.maxWindowSize = maxWindowSize;
142391          _this.scheduler = scheduler;
142392          _this.windows = [];
142393          var window = _this.openWindow();
142394          if (windowCreationInterval !== null && windowCreationInterval >= 0) {
142395              var closeState = { subscriber: _this, window: window, context: null };
142396              var creationState = { windowTimeSpan: windowTimeSpan, windowCreationInterval: windowCreationInterval, subscriber: _this, scheduler: scheduler };
142397              _this.add(scheduler.schedule(dispatchWindowClose, windowTimeSpan, closeState));
142398              _this.add(scheduler.schedule(dispatchWindowCreation, windowCreationInterval, creationState));
142399          }
142400          else {
142401              var timeSpanOnlyState = { subscriber: _this, window: window, windowTimeSpan: windowTimeSpan };
142402              _this.add(scheduler.schedule(dispatchWindowTimeSpanOnly, windowTimeSpan, timeSpanOnlyState));
142403          }
142404          return _this;
142405      }
142406      WindowTimeSubscriber.prototype._next = function (value) {
142407          var windows = this.windows;
142408          var len = windows.length;
142409          for (var i = 0; i < len; i++) {
142410              var window_1 = windows[i];
142411              if (!window_1.closed) {
142412                  window_1.next(value);
142413                  if (window_1.numberOfNextedValues >= this.maxWindowSize) {
142414                      this.closeWindow(window_1);
142415                  }
142416              }
142417          }
142418      };
142419      WindowTimeSubscriber.prototype._error = function (err) {
142420          var windows = this.windows;
142421          while (windows.length > 0) {
142422              windows.shift().error(err);
142423          }
142424          this.destination.error(err);
142425      };
142426      WindowTimeSubscriber.prototype._complete = function () {
142427          var windows = this.windows;
142428          while (windows.length > 0) {
142429              var window_2 = windows.shift();
142430              if (!window_2.closed) {
142431                  window_2.complete();
142432              }
142433          }
142434          this.destination.complete();
142435      };
142436      WindowTimeSubscriber.prototype.openWindow = function () {
142437          var window = new CountedSubject();
142438          this.windows.push(window);
142439          var destination = this.destination;
142440          destination.next(window);
142441          return window;
142442      };
142443      WindowTimeSubscriber.prototype.closeWindow = function (window) {
142444          window.complete();
142445          var windows = this.windows;
142446          windows.splice(windows.indexOf(window), 1);
142447      };
142448      return WindowTimeSubscriber;
142449  }(__WEBPACK_IMPORTED_MODULE_3__Subscriber__["a" /* Subscriber */]));
142450  function dispatchWindowTimeSpanOnly(state) {
142451      var subscriber = state.subscriber, windowTimeSpan = state.windowTimeSpan, window = state.window;
142452      if (window) {
142453          subscriber.closeWindow(window);
142454      }
142455      state.window = subscriber.openWindow();
142456      this.schedule(state, windowTimeSpan);
142457  }
142458  function dispatchWindowCreation(state) {
142459      var windowTimeSpan = state.windowTimeSpan, subscriber = state.subscriber, scheduler = state.scheduler, windowCreationInterval = state.windowCreationInterval;
142460      var window = subscriber.openWindow();
142461      var action = this;
142462      var context = { action: action, subscription: null };
142463      var timeSpanState = { subscriber: subscriber, window: window, context: context };
142464      context.subscription = scheduler.schedule(dispatchWindowClose, windowTimeSpan, timeSpanState);
142465      action.add(context.subscription);
142466      action.schedule(state, windowCreationInterval);
142467  }
142468  function dispatchWindowClose(state) {
142469      var subscriber = state.subscriber, window = state.window, context = state.context;
142470      if (context && context.action && context.subscription) {
142471          context.action.remove(context.subscription);
142472      }
142473      subscriber.closeWindow(window);
142474  }
142475  //# sourceMappingURL=windowTime.js.map
142476  
142477  
142478  /***/ }),
142479  /* 913 */
142480  /***/ (function(module, __webpack_exports__, __webpack_require__) {
142481  
142482  "use strict";
142483  /* harmony export (immutable) */ __webpack_exports__["a"] = windowToggle;
142484  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
142485  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subject__ = __webpack_require__(36);
142486  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Subscription__ = __webpack_require__(25);
142487  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_tryCatch__ = __webpack_require__(57);
142488  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_errorObject__ = __webpack_require__(48);
142489  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__OuterSubscriber__ = __webpack_require__(13);
142490  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__util_subscribeToResult__ = __webpack_require__(14);
142491  /** PURE_IMPORTS_START tslib,_Subject,_Subscription,_util_tryCatch,_util_errorObject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
142492  
142493  
142494  
142495  
142496  
142497  
142498  
142499  function windowToggle(openings, closingSelector) {
142500      return function (source) { return source.lift(new WindowToggleOperator(openings, closingSelector)); };
142501  }
142502  var WindowToggleOperator = /*@__PURE__*/ (function () {
142503      function WindowToggleOperator(openings, closingSelector) {
142504          this.openings = openings;
142505          this.closingSelector = closingSelector;
142506      }
142507      WindowToggleOperator.prototype.call = function (subscriber, source) {
142508          return source.subscribe(new WindowToggleSubscriber(subscriber, this.openings, this.closingSelector));
142509      };
142510      return WindowToggleOperator;
142511  }());
142512  var WindowToggleSubscriber = /*@__PURE__*/ (function (_super) {
142513      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](WindowToggleSubscriber, _super);
142514      function WindowToggleSubscriber(destination, openings, closingSelector) {
142515          var _this = _super.call(this, destination) || this;
142516          _this.openings = openings;
142517          _this.closingSelector = closingSelector;
142518          _this.contexts = [];
142519          _this.add(_this.openSubscription = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__util_subscribeToResult__["a" /* subscribeToResult */])(_this, openings, openings));
142520          return _this;
142521      }
142522      WindowToggleSubscriber.prototype._next = function (value) {
142523          var contexts = this.contexts;
142524          if (contexts) {
142525              var len = contexts.length;
142526              for (var i = 0; i < len; i++) {
142527                  contexts[i].window.next(value);
142528              }
142529          }
142530      };
142531      WindowToggleSubscriber.prototype._error = function (err) {
142532          var contexts = this.contexts;
142533          this.contexts = null;
142534          if (contexts) {
142535              var len = contexts.length;
142536              var index = -1;
142537              while (++index < len) {
142538                  var context_1 = contexts[index];
142539                  context_1.window.error(err);
142540                  context_1.subscription.unsubscribe();
142541              }
142542          }
142543          _super.prototype._error.call(this, err);
142544      };
142545      WindowToggleSubscriber.prototype._complete = function () {
142546          var contexts = this.contexts;
142547          this.contexts = null;
142548          if (contexts) {
142549              var len = contexts.length;
142550              var index = -1;
142551              while (++index < len) {
142552                  var context_2 = contexts[index];
142553                  context_2.window.complete();
142554                  context_2.subscription.unsubscribe();
142555              }
142556          }
142557          _super.prototype._complete.call(this);
142558      };
142559      WindowToggleSubscriber.prototype._unsubscribe = function () {
142560          var contexts = this.contexts;
142561          this.contexts = null;
142562          if (contexts) {
142563              var len = contexts.length;
142564              var index = -1;
142565              while (++index < len) {
142566                  var context_3 = contexts[index];
142567                  context_3.window.unsubscribe();
142568                  context_3.subscription.unsubscribe();
142569              }
142570          }
142571      };
142572      WindowToggleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
142573          if (outerValue === this.openings) {
142574              var closingSelector = this.closingSelector;
142575              var closingNotifier = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_tryCatch__["a" /* tryCatch */])(closingSelector)(innerValue);
142576              if (closingNotifier === __WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */]) {
142577                  return this.error(__WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */].e);
142578              }
142579              else {
142580                  var window_1 = new __WEBPACK_IMPORTED_MODULE_1__Subject__["a" /* Subject */]();
142581                  var subscription = new __WEBPACK_IMPORTED_MODULE_2__Subscription__["a" /* Subscription */]();
142582                  var context_4 = { window: window_1, subscription: subscription };
142583                  this.contexts.push(context_4);
142584                  var innerSubscription = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__util_subscribeToResult__["a" /* subscribeToResult */])(this, closingNotifier, context_4);
142585                  if (innerSubscription.closed) {
142586                      this.closeWindow(this.contexts.length - 1);
142587                  }
142588                  else {
142589                      innerSubscription.context = context_4;
142590                      subscription.add(innerSubscription);
142591                  }
142592                  this.destination.next(window_1);
142593              }
142594          }
142595          else {
142596              this.closeWindow(this.contexts.indexOf(outerValue));
142597          }
142598      };
142599      WindowToggleSubscriber.prototype.notifyError = function (err) {
142600          this.error(err);
142601      };
142602      WindowToggleSubscriber.prototype.notifyComplete = function (inner) {
142603          if (inner !== this.openSubscription) {
142604              this.closeWindow(this.contexts.indexOf(inner.context));
142605          }
142606      };
142607      WindowToggleSubscriber.prototype.closeWindow = function (index) {
142608          if (index === -1) {
142609              return;
142610          }
142611          var contexts = this.contexts;
142612          var context = contexts[index];
142613          var window = context.window, subscription = context.subscription;
142614          contexts.splice(index, 1);
142615          window.complete();
142616          subscription.unsubscribe();
142617      };
142618      return WindowToggleSubscriber;
142619  }(__WEBPACK_IMPORTED_MODULE_5__OuterSubscriber__["a" /* OuterSubscriber */]));
142620  //# sourceMappingURL=windowToggle.js.map
142621  
142622  
142623  /***/ }),
142624  /* 914 */
142625  /***/ (function(module, __webpack_exports__, __webpack_require__) {
142626  
142627  "use strict";
142628  /* harmony export (immutable) */ __webpack_exports__["a"] = windowWhen;
142629  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
142630  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subject__ = __webpack_require__(36);
142631  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_tryCatch__ = __webpack_require__(57);
142632  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_errorObject__ = __webpack_require__(48);
142633  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__OuterSubscriber__ = __webpack_require__(13);
142634  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_subscribeToResult__ = __webpack_require__(14);
142635  /** PURE_IMPORTS_START tslib,_Subject,_util_tryCatch,_util_errorObject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
142636  
142637  
142638  
142639  
142640  
142641  
142642  function windowWhen(closingSelector) {
142643      return function windowWhenOperatorFunction(source) {
142644          return source.lift(new WindowOperator(closingSelector));
142645      };
142646  }
142647  var WindowOperator = /*@__PURE__*/ (function () {
142648      function WindowOperator(closingSelector) {
142649          this.closingSelector = closingSelector;
142650      }
142651      WindowOperator.prototype.call = function (subscriber, source) {
142652          return source.subscribe(new WindowSubscriber(subscriber, this.closingSelector));
142653      };
142654      return WindowOperator;
142655  }());
142656  var WindowSubscriber = /*@__PURE__*/ (function (_super) {
142657      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](WindowSubscriber, _super);
142658      function WindowSubscriber(destination, closingSelector) {
142659          var _this = _super.call(this, destination) || this;
142660          _this.destination = destination;
142661          _this.closingSelector = closingSelector;
142662          _this.openWindow();
142663          return _this;
142664      }
142665      WindowSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
142666          this.openWindow(innerSub);
142667      };
142668      WindowSubscriber.prototype.notifyError = function (error, innerSub) {
142669          this._error(error);
142670      };
142671      WindowSubscriber.prototype.notifyComplete = function (innerSub) {
142672          this.openWindow(innerSub);
142673      };
142674      WindowSubscriber.prototype._next = function (value) {
142675          this.window.next(value);
142676      };
142677      WindowSubscriber.prototype._error = function (err) {
142678          this.window.error(err);
142679          this.destination.error(err);
142680          this.unsubscribeClosingNotification();
142681      };
142682      WindowSubscriber.prototype._complete = function () {
142683          this.window.complete();
142684          this.destination.complete();
142685          this.unsubscribeClosingNotification();
142686      };
142687      WindowSubscriber.prototype.unsubscribeClosingNotification = function () {
142688          if (this.closingNotification) {
142689              this.closingNotification.unsubscribe();
142690          }
142691      };
142692      WindowSubscriber.prototype.openWindow = function (innerSub) {
142693          if (innerSub === void 0) {
142694              innerSub = null;
142695          }
142696          if (innerSub) {
142697              this.remove(innerSub);
142698              innerSub.unsubscribe();
142699          }
142700          var prevWindow = this.window;
142701          if (prevWindow) {
142702              prevWindow.complete();
142703          }
142704          var window = this.window = new __WEBPACK_IMPORTED_MODULE_1__Subject__["a" /* Subject */]();
142705          this.destination.next(window);
142706          var closingNotifier = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_tryCatch__["a" /* tryCatch */])(this.closingSelector)();
142707          if (closingNotifier === __WEBPACK_IMPORTED_MODULE_3__util_errorObject__["a" /* errorObject */]) {
142708              var err = __WEBPACK_IMPORTED_MODULE_3__util_errorObject__["a" /* errorObject */].e;
142709              this.destination.error(err);
142710              this.window.error(err);
142711          }
142712          else {
142713              this.add(this.closingNotification = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__util_subscribeToResult__["a" /* subscribeToResult */])(this, closingNotifier));
142714          }
142715      };
142716      return WindowSubscriber;
142717  }(__WEBPACK_IMPORTED_MODULE_4__OuterSubscriber__["a" /* OuterSubscriber */]));
142718  //# sourceMappingURL=windowWhen.js.map
142719  
142720  
142721  /***/ }),
142722  /* 915 */
142723  /***/ (function(module, __webpack_exports__, __webpack_require__) {
142724  
142725  "use strict";
142726  /* harmony export (immutable) */ __webpack_exports__["a"] = withLatestFrom;
142727  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
142728  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__ = __webpack_require__(13);
142729  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__ = __webpack_require__(14);
142730  /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
142731  
142732  
142733  
142734  function withLatestFrom() {
142735      var args = [];
142736      for (var _i = 0; _i < arguments.length; _i++) {
142737          args[_i] = arguments[_i];
142738      }
142739      return function (source) {
142740          var project;
142741          if (typeof args[args.length - 1] === 'function') {
142742              project = args.pop();
142743          }
142744          var observables = args;
142745          return source.lift(new WithLatestFromOperator(observables, project));
142746      };
142747  }
142748  var WithLatestFromOperator = /*@__PURE__*/ (function () {
142749      function WithLatestFromOperator(observables, project) {
142750          this.observables = observables;
142751          this.project = project;
142752      }
142753      WithLatestFromOperator.prototype.call = function (subscriber, source) {
142754          return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));
142755      };
142756      return WithLatestFromOperator;
142757  }());
142758  var WithLatestFromSubscriber = /*@__PURE__*/ (function (_super) {
142759      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](WithLatestFromSubscriber, _super);
142760      function WithLatestFromSubscriber(destination, observables, project) {
142761          var _this = _super.call(this, destination) || this;
142762          _this.observables = observables;
142763          _this.project = project;
142764          _this.toRespond = [];
142765          var len = observables.length;
142766          _this.values = new Array(len);
142767          for (var i = 0; i < len; i++) {
142768              _this.toRespond.push(i);
142769          }
142770          for (var i = 0; i < len; i++) {
142771              var observable = observables[i];
142772              _this.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_subscribeToResult__["a" /* subscribeToResult */])(_this, observable, observable, i));
142773          }
142774          return _this;
142775      }
142776      WithLatestFromSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
142777          this.values[outerIndex] = innerValue;
142778          var toRespond = this.toRespond;
142779          if (toRespond.length > 0) {
142780              var found = toRespond.indexOf(outerIndex);
142781              if (found !== -1) {
142782                  toRespond.splice(found, 1);
142783              }
142784          }
142785      };
142786      WithLatestFromSubscriber.prototype.notifyComplete = function () {
142787      };
142788      WithLatestFromSubscriber.prototype._next = function (value) {
142789          if (this.toRespond.length === 0) {
142790              var args = [value].concat(this.values);
142791              if (this.project) {
142792                  this._tryProject(args);
142793              }
142794              else {
142795                  this.destination.next(args);
142796              }
142797          }
142798      };
142799      WithLatestFromSubscriber.prototype._tryProject = function (args) {
142800          var result;
142801          try {
142802              result = this.project.apply(this, args);
142803          }
142804          catch (err) {
142805              this.destination.error(err);
142806              return;
142807          }
142808          this.destination.next(result);
142809      };
142810      return WithLatestFromSubscriber;
142811  }(__WEBPACK_IMPORTED_MODULE_1__OuterSubscriber__["a" /* OuterSubscriber */]));
142812  //# sourceMappingURL=withLatestFrom.js.map
142813  
142814  
142815  /***/ }),
142816  /* 916 */
142817  /***/ (function(module, __webpack_exports__, __webpack_require__) {
142818  
142819  "use strict";
142820  /* harmony export (immutable) */ __webpack_exports__["a"] = zip;
142821  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable_zip__ = __webpack_require__(314);
142822  /** PURE_IMPORTS_START _observable_zip PURE_IMPORTS_END */
142823  
142824  function zip() {
142825      var observables = [];
142826      for (var _i = 0; _i < arguments.length; _i++) {
142827          observables[_i] = arguments[_i];
142828      }
142829      return function zipOperatorFunction(source) {
142830          return source.lift.call(__WEBPACK_IMPORTED_MODULE_0__observable_zip__["a" /* zip */].apply(void 0, [source].concat(observables)));
142831      };
142832  }
142833  //# sourceMappingURL=zip.js.map
142834  
142835  
142836  /***/ }),
142837  /* 917 */
142838  /***/ (function(module, __webpack_exports__, __webpack_require__) {
142839  
142840  "use strict";
142841  /* harmony export (immutable) */ __webpack_exports__["a"] = zipAll;
142842  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable_zip__ = __webpack_require__(314);
142843  /** PURE_IMPORTS_START _observable_zip PURE_IMPORTS_END */
142844  
142845  function zipAll(project) {
142846      return function (source) { return source.lift(new __WEBPACK_IMPORTED_MODULE_0__observable_zip__["b" /* ZipOperator */](project)); };
142847  }
142848  //# sourceMappingURL=zipAll.js.map
142849  
142850  
142851  /***/ }),
142852  /* 918 */
142853  /***/ (function(module, __webpack_exports__, __webpack_require__) {
142854  
142855  "use strict";
142856  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Action; });
142857  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
142858  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscription__ = __webpack_require__(25);
142859  /** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */
142860  
142861  
142862  var Action = /*@__PURE__*/ (function (_super) {
142863      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](Action, _super);
142864      function Action(scheduler, work) {
142865          return _super.call(this) || this;
142866      }
142867      Action.prototype.schedule = function (state, delay) {
142868          if (delay === void 0) {
142869              delay = 0;
142870          }
142871          return this;
142872      };
142873      return Action;
142874  }(__WEBPACK_IMPORTED_MODULE_1__Subscription__["a" /* Subscription */]));
142875  
142876  //# sourceMappingURL=Action.js.map
142877  
142878  
142879  /***/ }),
142880  /* 919 */
142881  /***/ (function(module, __webpack_exports__, __webpack_require__) {
142882  
142883  "use strict";
142884  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AnimationFrameAction; });
142885  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
142886  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__AsyncAction__ = __webpack_require__(149);
142887  /** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */
142888  
142889  
142890  var AnimationFrameAction = /*@__PURE__*/ (function (_super) {
142891      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](AnimationFrameAction, _super);
142892      function AnimationFrameAction(scheduler, work) {
142893          var _this = _super.call(this, scheduler, work) || this;
142894          _this.scheduler = scheduler;
142895          _this.work = work;
142896          return _this;
142897      }
142898      AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {
142899          if (delay === void 0) {
142900              delay = 0;
142901          }
142902          if (delay !== null && delay > 0) {
142903              return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);
142904          }
142905          scheduler.actions.push(this);
142906          return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(function () { return scheduler.flush(null); }));
142907      };
142908      AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {
142909          if (delay === void 0) {
142910              delay = 0;
142911          }
142912          if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {
142913              return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);
142914          }
142915          if (scheduler.actions.length === 0) {
142916              cancelAnimationFrame(id);
142917              scheduler.scheduled = undefined;
142918          }
142919          return undefined;
142920      };
142921      return AnimationFrameAction;
142922  }(__WEBPACK_IMPORTED_MODULE_1__AsyncAction__["a" /* AsyncAction */]));
142923  
142924  //# sourceMappingURL=AnimationFrameAction.js.map
142925  
142926  
142927  /***/ }),
142928  /* 920 */
142929  /***/ (function(module, __webpack_exports__, __webpack_require__) {
142930  
142931  "use strict";
142932  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AnimationFrameScheduler; });
142933  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
142934  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__AsyncScheduler__ = __webpack_require__(150);
142935  /** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */
142936  
142937  
142938  var AnimationFrameScheduler = /*@__PURE__*/ (function (_super) {
142939      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](AnimationFrameScheduler, _super);
142940      function AnimationFrameScheduler() {
142941          return _super !== null && _super.apply(this, arguments) || this;
142942      }
142943      AnimationFrameScheduler.prototype.flush = function (action) {
142944          this.active = true;
142945          this.scheduled = undefined;
142946          var actions = this.actions;
142947          var error;
142948          var index = -1;
142949          var count = actions.length;
142950          action = action || actions.shift();
142951          do {
142952              if (error = action.execute(action.state, action.delay)) {
142953                  break;
142954              }
142955          } while (++index < count && (action = actions.shift()));
142956          this.active = false;
142957          if (error) {
142958              while (++index < count && (action = actions.shift())) {
142959                  action.unsubscribe();
142960              }
142961              throw error;
142962          }
142963      };
142964      return AnimationFrameScheduler;
142965  }(__WEBPACK_IMPORTED_MODULE_1__AsyncScheduler__["a" /* AsyncScheduler */]));
142966  
142967  //# sourceMappingURL=AnimationFrameScheduler.js.map
142968  
142969  
142970  /***/ }),
142971  /* 921 */
142972  /***/ (function(module, __webpack_exports__, __webpack_require__) {
142973  
142974  "use strict";
142975  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsapAction; });
142976  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
142977  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_Immediate__ = __webpack_require__(927);
142978  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__AsyncAction__ = __webpack_require__(149);
142979  /** PURE_IMPORTS_START tslib,_util_Immediate,_AsyncAction PURE_IMPORTS_END */
142980  
142981  
142982  
142983  var AsapAction = /*@__PURE__*/ (function (_super) {
142984      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](AsapAction, _super);
142985      function AsapAction(scheduler, work) {
142986          var _this = _super.call(this, scheduler, work) || this;
142987          _this.scheduler = scheduler;
142988          _this.work = work;
142989          return _this;
142990      }
142991      AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {
142992          if (delay === void 0) {
142993              delay = 0;
142994          }
142995          if (delay !== null && delay > 0) {
142996              return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);
142997          }
142998          scheduler.actions.push(this);
142999          return scheduler.scheduled || (scheduler.scheduled = __WEBPACK_IMPORTED_MODULE_1__util_Immediate__["a" /* Immediate */].setImmediate(scheduler.flush.bind(scheduler, null)));
143000      };
143001      AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {
143002          if (delay === void 0) {
143003              delay = 0;
143004          }
143005          if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {
143006              return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);
143007          }
143008          if (scheduler.actions.length === 0) {
143009              __WEBPACK_IMPORTED_MODULE_1__util_Immediate__["a" /* Immediate */].clearImmediate(id);
143010              scheduler.scheduled = undefined;
143011          }
143012          return undefined;
143013      };
143014      return AsapAction;
143015  }(__WEBPACK_IMPORTED_MODULE_2__AsyncAction__["a" /* AsyncAction */]));
143016  
143017  //# sourceMappingURL=AsapAction.js.map
143018  
143019  
143020  /***/ }),
143021  /* 922 */
143022  /***/ (function(module, __webpack_exports__, __webpack_require__) {
143023  
143024  "use strict";
143025  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsapScheduler; });
143026  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
143027  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__AsyncScheduler__ = __webpack_require__(150);
143028  /** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */
143029  
143030  
143031  var AsapScheduler = /*@__PURE__*/ (function (_super) {
143032      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](AsapScheduler, _super);
143033      function AsapScheduler() {
143034          return _super !== null && _super.apply(this, arguments) || this;
143035      }
143036      AsapScheduler.prototype.flush = function (action) {
143037          this.active = true;
143038          this.scheduled = undefined;
143039          var actions = this.actions;
143040          var error;
143041          var index = -1;
143042          var count = actions.length;
143043          action = action || actions.shift();
143044          do {
143045              if (error = action.execute(action.state, action.delay)) {
143046                  break;
143047              }
143048          } while (++index < count && (action = actions.shift()));
143049          this.active = false;
143050          if (error) {
143051              while (++index < count && (action = actions.shift())) {
143052                  action.unsubscribe();
143053              }
143054              throw error;
143055          }
143056      };
143057      return AsapScheduler;
143058  }(__WEBPACK_IMPORTED_MODULE_1__AsyncScheduler__["a" /* AsyncScheduler */]));
143059  
143060  //# sourceMappingURL=AsapScheduler.js.map
143061  
143062  
143063  /***/ }),
143064  /* 923 */
143065  /***/ (function(module, __webpack_exports__, __webpack_require__) {
143066  
143067  "use strict";
143068  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return QueueAction; });
143069  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
143070  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__AsyncAction__ = __webpack_require__(149);
143071  /** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */
143072  
143073  
143074  var QueueAction = /*@__PURE__*/ (function (_super) {
143075      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](QueueAction, _super);
143076      function QueueAction(scheduler, work) {
143077          var _this = _super.call(this, scheduler, work) || this;
143078          _this.scheduler = scheduler;
143079          _this.work = work;
143080          return _this;
143081      }
143082      QueueAction.prototype.schedule = function (state, delay) {
143083          if (delay === void 0) {
143084              delay = 0;
143085          }
143086          if (delay > 0) {
143087              return _super.prototype.schedule.call(this, state, delay);
143088          }
143089          this.delay = delay;
143090          this.state = state;
143091          this.scheduler.flush(this);
143092          return this;
143093      };
143094      QueueAction.prototype.execute = function (state, delay) {
143095          return (delay > 0 || this.closed) ?
143096              _super.prototype.execute.call(this, state, delay) :
143097              this._execute(state, delay);
143098      };
143099      QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {
143100          if (delay === void 0) {
143101              delay = 0;
143102          }
143103          if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {
143104              return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);
143105          }
143106          return scheduler.flush(this);
143107      };
143108      return QueueAction;
143109  }(__WEBPACK_IMPORTED_MODULE_1__AsyncAction__["a" /* AsyncAction */]));
143110  
143111  //# sourceMappingURL=QueueAction.js.map
143112  
143113  
143114  /***/ }),
143115  /* 924 */
143116  /***/ (function(module, __webpack_exports__, __webpack_require__) {
143117  
143118  "use strict";
143119  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return QueueScheduler; });
143120  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
143121  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__AsyncScheduler__ = __webpack_require__(150);
143122  /** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */
143123  
143124  
143125  var QueueScheduler = /*@__PURE__*/ (function (_super) {
143126      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](QueueScheduler, _super);
143127      function QueueScheduler() {
143128          return _super !== null && _super.apply(this, arguments) || this;
143129      }
143130      return QueueScheduler;
143131  }(__WEBPACK_IMPORTED_MODULE_1__AsyncScheduler__["a" /* AsyncScheduler */]));
143132  
143133  //# sourceMappingURL=QueueScheduler.js.map
143134  
143135  
143136  /***/ }),
143137  /* 925 */
143138  /***/ (function(module, __webpack_exports__, __webpack_require__) {
143139  
143140  "use strict";
143141  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return VirtualTimeScheduler; });
143142  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return VirtualAction; });
143143  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1);
143144  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__AsyncAction__ = __webpack_require__(149);
143145  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__AsyncScheduler__ = __webpack_require__(150);
143146  /** PURE_IMPORTS_START tslib,_AsyncAction,_AsyncScheduler PURE_IMPORTS_END */
143147  
143148  
143149  
143150  var VirtualTimeScheduler = /*@__PURE__*/ (function (_super) {
143151      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](VirtualTimeScheduler, _super);
143152      function VirtualTimeScheduler(SchedulerAction, maxFrames) {
143153          if (SchedulerAction === void 0) {
143154              SchedulerAction = VirtualAction;
143155          }
143156          if (maxFrames === void 0) {
143157              maxFrames = Number.POSITIVE_INFINITY;
143158          }
143159          var _this = _super.call(this, SchedulerAction, function () { return _this.frame; }) || this;
143160          _this.maxFrames = maxFrames;
143161          _this.frame = 0;
143162          _this.index = -1;
143163          return _this;
143164      }
143165      VirtualTimeScheduler.prototype.flush = function () {
143166          var _a = this, actions = _a.actions, maxFrames = _a.maxFrames;
143167          var error, action;
143168          while ((action = actions.shift()) && (this.frame = action.delay) <= maxFrames) {
143169              if (error = action.execute(action.state, action.delay)) {
143170                  break;
143171              }
143172          }
143173          if (error) {
143174              while (action = actions.shift()) {
143175                  action.unsubscribe();
143176              }
143177              throw error;
143178          }
143179      };
143180      VirtualTimeScheduler.frameTimeFactor = 10;
143181      return VirtualTimeScheduler;
143182  }(__WEBPACK_IMPORTED_MODULE_2__AsyncScheduler__["a" /* AsyncScheduler */]));
143183  
143184  var VirtualAction = /*@__PURE__*/ (function (_super) {
143185      __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](VirtualAction, _super);
143186      function VirtualAction(scheduler, work, index) {
143187          if (index === void 0) {
143188              index = scheduler.index += 1;
143189          }
143190          var _this = _super.call(this, scheduler, work) || this;
143191          _this.scheduler = scheduler;
143192          _this.work = work;
143193          _this.index = index;
143194          _this.active = true;
143195          _this.index = scheduler.index = index;
143196          return _this;
143197      }
143198      VirtualAction.prototype.schedule = function (state, delay) {
143199          if (delay === void 0) {
143200              delay = 0;
143201          }
143202          if (!this.id) {
143203              return _super.prototype.schedule.call(this, state, delay);
143204          }
143205          this.active = false;
143206          var action = new VirtualAction(this.scheduler, this.work);
143207          this.add(action);
143208          return action.schedule(state, delay);
143209      };
143210      VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {
143211          if (delay === void 0) {
143212              delay = 0;
143213          }
143214          this.delay = scheduler.frame + delay;
143215          var actions = scheduler.actions;
143216          actions.push(this);
143217          actions.sort(VirtualAction.sortActions);
143218          return true;
143219      };
143220      VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {
143221          if (delay === void 0) {
143222              delay = 0;
143223          }
143224          return undefined;
143225      };
143226      VirtualAction.prototype._execute = function (state, delay) {
143227          if (this.active === true) {
143228              return _super.prototype._execute.call(this, state, delay);
143229          }
143230      };
143231      VirtualAction.sortActions = function (a, b) {
143232          if (a.delay === b.delay) {
143233              if (a.index === b.index) {
143234                  return 0;
143235              }
143236              else if (a.index > b.index) {
143237                  return 1;
143238              }
143239              else {
143240                  return -1;
143241              }
143242          }
143243          else if (a.delay > b.delay) {
143244              return 1;
143245          }
143246          else {
143247              return -1;
143248          }
143249      };
143250      return VirtualAction;
143251  }(__WEBPACK_IMPORTED_MODULE_1__AsyncAction__["a" /* AsyncAction */]));
143252  
143253  //# sourceMappingURL=VirtualTimeScheduler.js.map
143254  
143255  
143256  /***/ }),
143257  /* 926 */
143258  /***/ (function(module, __webpack_exports__, __webpack_require__) {
143259  
143260  "use strict";
143261  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return animationFrame; });
143262  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__AnimationFrameAction__ = __webpack_require__(919);
143263  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__AnimationFrameScheduler__ = __webpack_require__(920);
143264  /** PURE_IMPORTS_START _AnimationFrameAction,_AnimationFrameScheduler PURE_IMPORTS_END */
143265  
143266  
143267  var animationFrame = /*@__PURE__*/ new __WEBPACK_IMPORTED_MODULE_1__AnimationFrameScheduler__["a" /* AnimationFrameScheduler */](__WEBPACK_IMPORTED_MODULE_0__AnimationFrameAction__["a" /* AnimationFrameAction */]);
143268  //# sourceMappingURL=animationFrame.js.map
143269  
143270  
143271  /***/ }),
143272  /* 927 */
143273  /***/ (function(module, __webpack_exports__, __webpack_require__) {
143274  
143275  "use strict";
143276  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Immediate; });
143277  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
143278  var nextHandle = 1;
143279  var tasksByHandle = {};
143280  function runIfPresent(handle) {
143281      var cb = tasksByHandle[handle];
143282      if (cb) {
143283          cb();
143284      }
143285  }
143286  var Immediate = {
143287      setImmediate: function (cb) {
143288          var handle = nextHandle++;
143289          tasksByHandle[handle] = cb;
143290          Promise.resolve().then(function () { return runIfPresent(handle); });
143291          return handle;
143292      },
143293      clearImmediate: function (handle) {
143294          delete tasksByHandle[handle];
143295      },
143296  };
143297  //# sourceMappingURL=Immediate.js.map
143298  
143299  
143300  /***/ }),
143301  /* 928 */
143302  /***/ (function(module, __webpack_exports__, __webpack_require__) {
143303  
143304  "use strict";
143305  /* harmony export (immutable) */ __webpack_exports__["a"] = isInteropObservable;
143306  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__symbol_observable__ = __webpack_require__(118);
143307  /** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */
143308  
143309  function isInteropObservable(input) {
143310      return input && typeof input[__WEBPACK_IMPORTED_MODULE_0__symbol_observable__["a" /* observable */]] === 'function';
143311  }
143312  //# sourceMappingURL=isInteropObservable.js.map
143313  
143314  
143315  /***/ }),
143316  /* 929 */
143317  /***/ (function(module, __webpack_exports__, __webpack_require__) {
143318  
143319  "use strict";
143320  /* harmony export (immutable) */ __webpack_exports__["a"] = isIterable;
143321  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__symbol_iterator__ = __webpack_require__(151);
143322  /** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */
143323  
143324  function isIterable(input) {
143325      return input && typeof input[__WEBPACK_IMPORTED_MODULE_0__symbol_iterator__["a" /* iterator */]] === 'function';
143326  }
143327  //# sourceMappingURL=isIterable.js.map
143328  
143329  
143330  /***/ }),
143331  /* 930 */
143332  /***/ (function(module, __webpack_exports__, __webpack_require__) {
143333  
143334  "use strict";
143335  /* harmony export (immutable) */ __webpack_exports__["a"] = isObservable;
143336  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12);
143337  /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */
143338  
143339  function isObservable(obj) {
143340      return !!obj && (obj instanceof __WEBPACK_IMPORTED_MODULE_0__Observable__["a" /* Observable */] || (typeof obj.lift === 'function' && typeof obj.subscribe === 'function'));
143341  }
143342  //# sourceMappingURL=isObservable.js.map
143343  
143344  
143345  /***/ }),
143346  /* 931 */
143347  /***/ (function(module, __webpack_exports__, __webpack_require__) {
143348  
143349  "use strict";
143350  /* harmony export (immutable) */ __webpack_exports__["a"] = not;
143351  /** PURE_IMPORTS_START  PURE_IMPORTS_END */
143352  function not(pred, thisArg) {
143353      function notPred() {
143354          return !(notPred.pred.apply(notPred.thisArg, arguments));
143355      }
143356      notPred.pred = pred;
143357      notPred.thisArg = thisArg;
143358      return notPred;
143359  }
143360  //# sourceMappingURL=not.js.map
143361  
143362  
143363  /***/ }),
143364  /* 932 */
143365  /***/ (function(module, __webpack_exports__, __webpack_require__) {
143366  
143367  "use strict";
143368  /* harmony export (immutable) */ __webpack_exports__["a"] = toSubscriber;
143369  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Subscriber__ = __webpack_require__(7);
143370  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__symbol_rxSubscriber__ = __webpack_require__(321);
143371  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Observer__ = __webpack_require__(420);
143372  /** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */
143373  
143374  
143375  
143376  function toSubscriber(nextOrObserver, error, complete) {
143377      if (nextOrObserver) {
143378          if (nextOrObserver instanceof __WEBPACK_IMPORTED_MODULE_0__Subscriber__["a" /* Subscriber */]) {
143379              return nextOrObserver;
143380          }
143381          if (nextOrObserver[__WEBPACK_IMPORTED_MODULE_1__symbol_rxSubscriber__["a" /* rxSubscriber */]]) {
143382              return nextOrObserver[__WEBPACK_IMPORTED_MODULE_1__symbol_rxSubscriber__["a" /* rxSubscriber */]]();
143383          }
143384      }
143385      if (!nextOrObserver && !error && !complete) {
143386          return new __WEBPACK_IMPORTED_MODULE_0__Subscriber__["a" /* Subscriber */](__WEBPACK_IMPORTED_MODULE_2__Observer__["a" /* empty */]);
143387      }
143388      return new __WEBPACK_IMPORTED_MODULE_0__Subscriber__["a" /* Subscriber */](nextOrObserver, error, complete);
143389  }
143390  //# sourceMappingURL=toSubscriber.js.map
143391  
143392  
143393  /***/ }),
143394  /* 933 */
143395  /***/ (function(module, exports) {
143396  
143397  // This is not the set of all possible signals.
143398  //
143399  // It IS, however, the set of all signals that trigger
143400  // an exit on either Linux or BSD systems.  Linux is a
143401  // superset of the signal names supported on BSD, and
143402  // the unknown signals just fail to register, so we can
143403  // catch that easily enough.
143404  //
143405  // Don't bother with SIGKILL.  It's uncatchable, which
143406  // means that we can't fire any callbacks anyway.
143407  //
143408  // If a user does happen to register a handler on a non-
143409  // fatal signal like SIGWINCH or something, and then
143410  // exit, it'll end up firing `process.emit('exit')`, so
143411  // the handler will be fired anyway.
143412  //
143413  // SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised
143414  // artificially, inherently leave the process in a
143415  // state from which it is not safe to try and enter JS
143416  // listeners.
143417  module.exports = [
143418    'SIGABRT',
143419    'SIGALRM',
143420    'SIGHUP',
143421    'SIGINT',
143422    'SIGTERM'
143423  ]
143424  
143425  if (process.platform !== 'win32') {
143426    module.exports.push(
143427      'SIGVTALRM',
143428      'SIGXCPU',
143429      'SIGXFSZ',
143430      'SIGUSR2',
143431      'SIGTRAP',
143432      'SIGSYS',
143433      'SIGQUIT',
143434      'SIGIOT'
143435      // should detect profiler and enable/disable accordingly.
143436      // see #21
143437      // 'SIGPROF'
143438    )
143439  }
143440  
143441  if (process.platform === 'linux') {
143442    module.exports.push(
143443      'SIGIO',
143444      'SIGPOLL',
143445      'SIGPWR',
143446      'SIGSTKFLT',
143447      'SIGUNUSED'
143448    )
143449  }
143450  
143451  
143452  /***/ }),
143453  /* 934 */
143454  /***/ (function(module, exports, __webpack_require__) {
143455  
143456  "use strict";
143457  
143458  const isPlainObj = __webpack_require__(738);
143459  
143460  module.exports = (obj, opts) => {
143461  	if (!isPlainObj(obj)) {
143462  		throw new TypeError('Expected a plain object');
143463  	}
143464  
143465  	opts = opts || {};
143466  
143467  	// DEPRECATED
143468  	if (typeof opts === 'function') {
143469  		throw new TypeError('Specify the compare function as an option instead');
143470  	}
143471  
143472  	const deep = opts.deep;
143473  	const seenInput = [];
143474  	const seenOutput = [];
143475  
143476  	const sortKeys = x => {
143477  		const seenIndex = seenInput.indexOf(x);
143478  
143479  		if (seenIndex !== -1) {
143480  			return seenOutput[seenIndex];
143481  		}
143482  
143483  		const ret = {};
143484  		const keys = Object.keys(x).sort(opts.compare);
143485  
143486  		seenInput.push(x);
143487  		seenOutput.push(ret);
143488  
143489  		for (let i = 0; i < keys.length; i++) {
143490  			const key = keys[i];
143491  			const val = x[key];
143492  
143493  			if (deep && Array.isArray(val)) {
143494  				const retArr = [];
143495  
143496  				for (let j = 0; j < val.length; j++) {
143497  					retArr[j] = isPlainObj(val[j]) ? sortKeys(val[j]) : val[j];
143498  				}
143499  
143500  				ret[key] = retArr;
143501  				continue;
143502  			}
143503  
143504  			ret[key] = deep && isPlainObj(val) ? sortKeys(val) : val;
143505  		}
143506  
143507  		return ret;
143508  	};
143509  
143510  	return sortKeys(obj);
143511  };
143512  
143513  
143514  /***/ }),
143515  /* 935 */
143516  /***/ (function(module, exports, __webpack_require__) {
143517  
143518  /*
143519  Copyright 2015 Kyle E. Mitchell
143520  
143521  Licensed under the Apache License, Version 2.0 (the "License");
143522  you may not use this file except in compliance with the License.
143523  You may obtain a copy of the License at
143524  
143525     http://www.apache.org/licenses/LICENSE-2.0
143526  
143527  Unless required by applicable law or agreed to in writing, software
143528  distributed under the License is distributed on an "AS IS" BASIS,
143529  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
143530  See the License for the specific language governing permissions and
143531  limitations under the License.
143532  */
143533  var parse = __webpack_require__(452)
143534  var spdxLicenseIds = __webpack_require__(453)
143535  
143536  function valid (string) {
143537    try {
143538      parse(string)
143539      return true
143540    } catch (error) {
143541      return false
143542    }
143543  }
143544  
143545  // Common transpositions of license identifier acronyms
143546  var transpositions = [
143547    ['APGL', 'AGPL'],
143548    ['Gpl', 'GPL'],
143549    ['GLP', 'GPL'],
143550    ['APL', 'Apache'],
143551    ['ISD', 'ISC'],
143552    ['GLP', 'GPL'],
143553    ['IST', 'ISC'],
143554    ['Claude', 'Clause'],
143555    [' or later', '+'],
143556    [' International', ''],
143557    ['GNU', 'GPL'],
143558    ['GUN', 'GPL'],
143559    ['+', ''],
143560    ['GNU GPL', 'GPL'],
143561    ['GNU/GPL', 'GPL'],
143562    ['GNU GLP', 'GPL'],
143563    ['GNU General Public License', 'GPL'],
143564    ['Gnu public license', 'GPL'],
143565    ['GNU Public License', 'GPL'],
143566    ['GNU GENERAL PUBLIC LICENSE', 'GPL'],
143567    ['MTI', 'MIT'],
143568    ['Mozilla Public License', 'MPL'],
143569    ['WTH', 'WTF'],
143570    ['-License', '']
143571  ]
143572  
143573  var TRANSPOSED = 0
143574  var CORRECT = 1
143575  
143576  // Simple corrections to nearly valid identifiers.
143577  var transforms = [
143578    // e.g. 'mit'
143579    function (argument) {
143580      return argument.toUpperCase()
143581    },
143582    // e.g. 'MIT '
143583    function (argument) {
143584      return argument.trim()
143585    },
143586    // e.g. 'M.I.T.'
143587    function (argument) {
143588      return argument.replace(/\./g, '')
143589    },
143590    // e.g. 'Apache- 2.0'
143591    function (argument) {
143592      return argument.replace(/\s+/g, '')
143593    },
143594    // e.g. 'CC BY 4.0''
143595    function (argument) {
143596      return argument.replace(/\s+/g, '-')
143597    },
143598    // e.g. 'LGPLv2.1'
143599    function (argument) {
143600      return argument.replace('v', '-')
143601    },
143602    // e.g. 'Apache 2.0'
143603    function (argument) {
143604      return argument.replace(/,?\s*(\d)/, '-$1')
143605    },
143606    // e.g. 'GPL 2'
143607    function (argument) {
143608      return argument.replace(/,?\s*(\d)/, '-$1.0')
143609    },
143610    // e.g. 'Apache Version 2.0'
143611    function (argument) {
143612      return argument
143613        .replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/, '-$2')
143614    },
143615    // e.g. 'Apache Version 2'
143616    function (argument) {
143617      return argument
143618        .replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/, '-$2.0')
143619    },
143620    // e.g. 'ZLIB'
143621    function (argument) {
143622      return argument[0].toUpperCase() + argument.slice(1)
143623    },
143624    // e.g. 'MPL/2.0'
143625    function (argument) {
143626      return argument.replace('/', '-')
143627    },
143628    // e.g. 'Apache 2'
143629    function (argument) {
143630      return argument
143631        .replace(/\s*V\s*(\d)/, '-$1')
143632        .replace(/(\d)$/, '$1.0')
143633    },
143634    // e.g. 'GPL-2.0', 'GPL-3.0'
143635    function (argument) {
143636      if (argument.indexOf('3.0') !== -1) {
143637        return argument + '-or-later'
143638      } else {
143639        return argument + '-only'
143640      }
143641    },
143642    // e.g. 'GPL-2.0-'
143643    function (argument) {
143644      return argument + 'only'
143645    },
143646    // e.g. 'GPL2'
143647    function (argument) {
143648      return argument.replace(/(\d)$/, '-$1.0')
143649    },
143650    // e.g. 'BSD 3'
143651    function (argument) {
143652      return argument.replace(/(-| )?(\d)$/, '-$2-Clause')
143653    },
143654    // e.g. 'BSD clause 3'
143655    function (argument) {
143656      return argument.replace(/(-| )clause(-| )(\d)/, '-$3-Clause')
143657    },
143658    // e.g. 'BY-NC-4.0'
143659    function (argument) {
143660      return 'CC-' + argument
143661    },
143662    // e.g. 'BY-NC'
143663    function (argument) {
143664      return 'CC-' + argument + '-4.0'
143665    },
143666    // e.g. 'Attribution-NonCommercial'
143667    function (argument) {
143668      return argument
143669        .replace('Attribution', 'BY')
143670        .replace('NonCommercial', 'NC')
143671        .replace('NoDerivatives', 'ND')
143672        .replace(/ (\d)/, '-$1')
143673        .replace(/ ?International/, '')
143674    },
143675    // e.g. 'Attribution-NonCommercial'
143676    function (argument) {
143677      return 'CC-' +
143678        argument
143679          .replace('Attribution', 'BY')
143680          .replace('NonCommercial', 'NC')
143681          .replace('NoDerivatives', 'ND')
143682          .replace(/ (\d)/, '-$1')
143683          .replace(/ ?International/, '') +
143684        '-4.0'
143685    }
143686  ]
143687  
143688  var licensesWithVersions = spdxLicenseIds
143689    .map(function (id) {
143690      var match = /^(.*)-\d+\.\d+$/.exec(id)
143691      return match
143692        ? [match[0], match[1]]
143693        : [id, null]
143694    })
143695    .reduce(function (objectMap, item) {
143696      var key = item[1]
143697      objectMap[key] = objectMap[key] || []
143698      objectMap[key].push(item[0])
143699      return objectMap
143700    }, {})
143701  
143702  var licensesWithOneVersion = Object.keys(licensesWithVersions)
143703    .map(function makeEntries (key) {
143704      return [key, licensesWithVersions[key]]
143705    })
143706    .filter(function identifySoleVersions (item) {
143707      return (
143708        // Licenses has just one valid version suffix.
143709        item[1].length === 1 &&
143710        item[0] !== null &&
143711        // APL will be considered Apache, rather than APL-1.0
143712        item[0] !== 'APL'
143713      )
143714    })
143715    .map(function createLastResorts (item) {
143716      return [item[0], item[1][0]]
143717    })
143718  
143719  licensesWithVersions = undefined
143720  
143721  // If all else fails, guess that strings containing certain substrings
143722  // meant to identify certain licenses.
143723  var lastResorts = [
143724    ['UNLI', 'Unlicense'],
143725    ['WTF', 'WTFPL'],
143726    ['2 CLAUSE', 'BSD-2-Clause'],
143727    ['2-CLAUSE', 'BSD-2-Clause'],
143728    ['3 CLAUSE', 'BSD-3-Clause'],
143729    ['3-CLAUSE', 'BSD-3-Clause'],
143730    ['AFFERO', 'AGPL-3.0-or-later'],
143731    ['AGPL', 'AGPL-3.0-or-later'],
143732    ['APACHE', 'Apache-2.0'],
143733    ['ARTISTIC', 'Artistic-2.0'],
143734    ['Affero', 'AGPL-3.0-or-later'],
143735    ['BEER', 'Beerware'],
143736    ['BOOST', 'BSL-1.0'],
143737    ['BSD', 'BSD-2-Clause'],
143738    ['CDDL', 'CDDL-1.1'],
143739    ['ECLIPSE', 'EPL-1.0'],
143740    ['FUCK', 'WTFPL'],
143741    ['GNU', 'GPL-3.0-or-later'],
143742    ['LGPL', 'LGPL-3.0-or-later'],
143743    ['GPLV1', 'GPL-1.0-only'],
143744    ['GPLV2', 'GPL-2.0-only'],
143745    ['GPL', 'GPL-3.0-or-later'],
143746    ['MIT +NO-FALSE-ATTRIBS', 'MITNFA'],
143747    ['MIT', 'MIT'],
143748    ['MPL', 'MPL-2.0'],
143749    ['X11', 'X11'],
143750    ['ZLIB', 'Zlib']
143751  ].concat(licensesWithOneVersion)
143752  
143753  var SUBSTRING = 0
143754  var IDENTIFIER = 1
143755  
143756  var validTransformation = function (identifier) {
143757    for (var i = 0; i < transforms.length; i++) {
143758      var transformed = transforms[i](identifier).trim()
143759      if (transformed !== identifier && valid(transformed)) {
143760        return transformed
143761      }
143762    }
143763    return null
143764  }
143765  
143766  var validLastResort = function (identifier) {
143767    var upperCased = identifier.toUpperCase()
143768    for (var i = 0; i < lastResorts.length; i++) {
143769      var lastResort = lastResorts[i]
143770      if (upperCased.indexOf(lastResort[SUBSTRING]) > -1) {
143771        return lastResort[IDENTIFIER]
143772      }
143773    }
143774    return null
143775  }
143776  
143777  var anyCorrection = function (identifier, check) {
143778    for (var i = 0; i < transpositions.length; i++) {
143779      var transposition = transpositions[i]
143780      var transposed = transposition[TRANSPOSED]
143781      if (identifier.indexOf(transposed) > -1) {
143782        var corrected = identifier.replace(
143783          transposed,
143784          transposition[CORRECT]
143785        )
143786        var checked = check(corrected)
143787        if (checked !== null) {
143788          return checked
143789        }
143790      }
143791    }
143792    return null
143793  }
143794  
143795  module.exports = function (identifier) {
143796    var validArugment = (
143797      typeof identifier === 'string' &&
143798      identifier.trim().length !== 0
143799    )
143800    if (!validArugment) {
143801      throw Error('Invalid argument. Expected non-empty string.')
143802    }
143803    identifier = identifier.replace(/\+$/, '').trim()
143804    if (valid(identifier)) {
143805      return upgradeGPLs(identifier)
143806    }
143807    var transformed = validTransformation(identifier)
143808    if (transformed !== null) {
143809      return upgradeGPLs(transformed)
143810    }
143811    transformed = anyCorrection(identifier, function (argument) {
143812      if (valid(argument)) {
143813        return argument
143814      }
143815      return validTransformation(argument)
143816    })
143817    if (transformed !== null) {
143818      return upgradeGPLs(transformed)
143819    }
143820    transformed = validLastResort(identifier)
143821    if (transformed !== null) {
143822      return upgradeGPLs(transformed)
143823    }
143824    transformed = anyCorrection(identifier, validLastResort)
143825    if (transformed !== null) {
143826      return upgradeGPLs(transformed)
143827    }
143828    return null
143829  }
143830  
143831  function upgradeGPLs (value) {
143832    if ([
143833      'GPL-1.0', 'LGPL-1.0', 'AGPL-1.0',
143834      'GPL-2.0', 'LGPL-2.0', 'AGPL-2.0',
143835      'LGPL-2.1'
143836    ].indexOf(value) !== -1) {
143837      return value + '-only'
143838    } else if (['GPL-3.0', 'LGPL-3.0', 'AGPL-3.0'].indexOf(value) !== -1) {
143839      return value + '-or-later'
143840    } else {
143841      return value
143842    }
143843  }
143844  
143845  
143846  /***/ }),
143847  /* 936 */
143848  /***/ (function(module, exports) {
143849  
143850  module.exports = ["389-exception","Autoconf-exception-2.0","Autoconf-exception-3.0","Bison-exception-2.2","Bootloader-exception","CLISP-exception-2.0","Classpath-exception-2.0","DigiRule-FOSS-exception","FLTK-exception","Fawkes-Runtime-exception","Font-exception-2.0","GCC-exception-2.0","GCC-exception-3.1","LZMA-exception","Libtool-exception","Linux-syscall-note","Nokia-Qt-exception-1.1","OCCT-exception-1.0","Qwt-exception-1.0","WxWindows-exception-3.1","eCos-exception-2.0","freertos-exception-2.0","gnu-javamail-exception","i2p-gpl-java-exception","mif-exception","openvpn-openssl-exception","u-boot-exception-2.0"]
143851  
143852  /***/ }),
143853  /* 937 */
143854  /***/ (function(module, exports, __webpack_require__) {
143855  
143856  "use strict";
143857  
143858  
143859  // The ABNF grammar in the spec is totally ambiguous.
143860  //
143861  // This parser follows the operator precedence defined in the
143862  // `Order of Precedence and Parentheses` section.
143863  
143864  module.exports = function (tokens) {
143865    var index = 0
143866  
143867    function hasMore () {
143868      return index < tokens.length
143869    }
143870  
143871    function token () {
143872      return hasMore() ? tokens[index] : null
143873    }
143874  
143875    function next () {
143876      if (!hasMore()) {
143877        throw new Error()
143878      }
143879      index++
143880    }
143881  
143882    function parseOperator (operator) {
143883      var t = token()
143884      if (t && t.type === 'OPERATOR' && operator === t.string) {
143885        next()
143886        return t.string
143887      }
143888    }
143889  
143890    function parseWith () {
143891      if (parseOperator('WITH')) {
143892        var t = token()
143893        if (t && t.type === 'EXCEPTION') {
143894          next()
143895          return t.string
143896        }
143897        throw new Error('Expected exception after `WITH`')
143898      }
143899    }
143900  
143901    function parseLicenseRef () {
143902      // TODO: Actually, everything is concatenated into one string
143903      // for backward-compatibility but it could be better to return
143904      // a nice structure.
143905      var begin = index
143906      var string = ''
143907      var t = token()
143908      if (t.type === 'DOCUMENTREF') {
143909        next()
143910        string += 'DocumentRef-' + t.string + ':'
143911        if (!parseOperator(':')) {
143912          throw new Error('Expected `:` after `DocumentRef-...`')
143913        }
143914      }
143915      t = token()
143916      if (t.type === 'LICENSEREF') {
143917        next()
143918        string += 'LicenseRef-' + t.string
143919        return {license: string}
143920      }
143921      index = begin
143922    }
143923  
143924    function parseLicense () {
143925      var t = token()
143926      if (t && t.type === 'LICENSE') {
143927        next()
143928        var node = {license: t.string}
143929        if (parseOperator('+')) {
143930          node.plus = true
143931        }
143932        var exception = parseWith()
143933        if (exception) {
143934          node.exception = exception
143935        }
143936        return node
143937      }
143938    }
143939  
143940    function parseParenthesizedExpression () {
143941      var left = parseOperator('(')
143942      if (!left) {
143943        return
143944      }
143945  
143946      var expr = parseExpression()
143947  
143948      if (!parseOperator(')')) {
143949        throw new Error('Expected `)`')
143950      }
143951  
143952      return expr
143953    }
143954  
143955    function parseAtom () {
143956      return (
143957        parseParenthesizedExpression() ||
143958        parseLicenseRef() ||
143959        parseLicense()
143960      )
143961    }
143962  
143963    function makeBinaryOpParser (operator, nextParser) {
143964      return function parseBinaryOp () {
143965        var left = nextParser()
143966        if (!left) {
143967          return
143968        }
143969  
143970        if (!parseOperator(operator)) {
143971          return left
143972        }
143973  
143974        var right = parseBinaryOp()
143975        if (!right) {
143976          throw new Error('Expected expression')
143977        }
143978        return {
143979          left: left,
143980          conjunction: operator.toLowerCase(),
143981          right: right
143982        }
143983      }
143984    }
143985  
143986    var parseAnd = makeBinaryOpParser('AND', parseAtom)
143987    var parseExpression = makeBinaryOpParser('OR', parseAnd)
143988  
143989    var node = parseExpression()
143990    if (!node || hasMore()) {
143991      throw new Error('Syntax error')
143992    }
143993    return node
143994  }
143995  
143996  
143997  /***/ }),
143998  /* 938 */
143999  /***/ (function(module, exports, __webpack_require__) {
144000  
144001  "use strict";
144002  
144003  
144004  var licenses = []
144005    .concat(__webpack_require__(453))
144006    .concat(__webpack_require__(939))
144007  var exceptions = __webpack_require__(936)
144008  
144009  module.exports = function (source) {
144010    var index = 0
144011  
144012    function hasMore () {
144013      return index < source.length
144014    }
144015  
144016    // `value` can be a regexp or a string.
144017    // If it is recognized, the matching source string is returned and
144018    // the index is incremented. Otherwise `undefined` is returned.
144019    function read (value) {
144020      if (value instanceof RegExp) {
144021        var chars = source.slice(index)
144022        var match = chars.match(value)
144023        if (match) {
144024          index += match[0].length
144025          return match[0]
144026        }
144027      } else {
144028        if (source.indexOf(value, index) === index) {
144029          index += value.length
144030          return value
144031        }
144032      }
144033    }
144034  
144035    function skipWhitespace () {
144036      read(/[ ]*/)
144037    }
144038  
144039    function operator () {
144040      var string
144041      var possibilities = ['WITH', 'AND', 'OR', '(', ')', ':', '+']
144042      for (var i = 0; i < possibilities.length; i++) {
144043        string = read(possibilities[i])
144044        if (string) {
144045          break
144046        }
144047      }
144048  
144049      if (string === '+' && index > 1 && source[index - 2] === ' ') {
144050        throw new Error('Space before `+`')
144051      }
144052  
144053      return string && {
144054        type: 'OPERATOR',
144055        string: string
144056      }
144057    }
144058  
144059    function idstring () {
144060      return read(/[A-Za-z0-9-.]+/)
144061    }
144062  
144063    function expectIdstring () {
144064      var string = idstring()
144065      if (!string) {
144066        throw new Error('Expected idstring at offset ' + index)
144067      }
144068      return string
144069    }
144070  
144071    function documentRef () {
144072      if (read('DocumentRef-')) {
144073        var string = expectIdstring()
144074        return {type: 'DOCUMENTREF', string: string}
144075      }
144076    }
144077  
144078    function licenseRef () {
144079      if (read('LicenseRef-')) {
144080        var string = expectIdstring()
144081        return {type: 'LICENSEREF', string: string}
144082      }
144083    }
144084  
144085    function identifier () {
144086      var begin = index
144087      var string = idstring()
144088  
144089      if (licenses.indexOf(string) !== -1) {
144090        return {
144091          type: 'LICENSE',
144092          string: string
144093        }
144094      } else if (exceptions.indexOf(string) !== -1) {
144095        return {
144096          type: 'EXCEPTION',
144097          string: string
144098        }
144099      }
144100  
144101      index = begin
144102    }
144103  
144104    // Tries to read the next token. Returns `undefined` if no token is
144105    // recognized.
144106    function parseToken () {
144107      // Ordering matters
144108      return (
144109        operator() ||
144110        documentRef() ||
144111        licenseRef() ||
144112        identifier()
144113      )
144114    }
144115  
144116    var tokens = []
144117    while (hasMore()) {
144118      skipWhitespace()
144119      if (!hasMore()) {
144120        break
144121      }
144122  
144123      var token = parseToken()
144124      if (!token) {
144125        throw new Error('Unexpected `' + source[index] +
144126                        '` at offset ' + index)
144127      }
144128  
144129      tokens.push(token)
144130    }
144131    return tokens
144132  }
144133  
144134  
144135  /***/ }),
144136  /* 939 */
144137  /***/ (function(module, exports) {
144138  
144139  module.exports = ["AGPL-3.0","eCos-2.0","GFDL-1.1","GFDL-1.2","GFDL-1.3","GPL-1.0","GPL-2.0-with-autoconf-exception","GPL-2.0-with-bison-exception","GPL-2.0-with-classpath-exception","GPL-2.0-with-font-exception","GPL-2.0-with-GCC-exception","GPL-2.0","GPL-3.0-with-autoconf-exception","GPL-3.0-with-GCC-exception","GPL-3.0","LGPL-2.0","LGPL-2.1","LGPL-3.0","Nunit","StandardML-NJ","wxWindows"]
144140  
144141  /***/ }),
144142  /* 940 */
144143  /***/ (function(module, exports, __webpack_require__) {
144144  
144145  // Copyright 2017 Joyent, Inc.
144146  
144147  module.exports = {
144148  	read: read,
144149  	verify: verify,
144150  	sign: sign,
144151  	signAsync: signAsync,
144152  	write: write,
144153  
144154  	/* Internal private API */
144155  	fromBuffer: fromBuffer,
144156  	toBuffer: toBuffer
144157  };
144158  
144159  var assert = __webpack_require__(16);
144160  var SSHBuffer = __webpack_require__(159);
144161  var crypto = __webpack_require__(11);
144162  var Buffer = __webpack_require__(15).Buffer;
144163  var algs = __webpack_require__(32);
144164  var Key = __webpack_require__(27);
144165  var PrivateKey = __webpack_require__(33);
144166  var Identity = __webpack_require__(158);
144167  var rfc4253 = __webpack_require__(103);
144168  var Signature = __webpack_require__(75);
144169  var utils = __webpack_require__(26);
144170  var Certificate = __webpack_require__(155);
144171  
144172  function verify(cert, key) {
144173  	/*
144174  	 * We always give an issuerKey, so if our verify() is being called then
144175  	 * there was no signature. Return false.
144176  	 */
144177  	return (false);
144178  }
144179  
144180  var TYPES = {
144181  	'user': 1,
144182  	'host': 2
144183  };
144184  Object.keys(TYPES).forEach(function (k) { TYPES[TYPES[k]] = k; });
144185  
144186  var ECDSA_ALGO = /^ecdsa-sha2-([^@-]+)-cert-v01@openssh.com$/;
144187  
144188  function read(buf, options) {
144189  	if (Buffer.isBuffer(buf))
144190  		buf = buf.toString('ascii');
144191  	var parts = buf.trim().split(/[ \t\n]+/g);
144192  	if (parts.length < 2 || parts.length > 3)
144193  		throw (new Error('Not a valid SSH certificate line'));
144194  
144195  	var algo = parts[0];
144196  	var data = parts[1];
144197  
144198  	data = Buffer.from(data, 'base64');
144199  	return (fromBuffer(data, algo));
144200  }
144201  
144202  function fromBuffer(data, algo, partial) {
144203  	var sshbuf = new SSHBuffer({ buffer: data });
144204  	var innerAlgo = sshbuf.readString();
144205  	if (algo !== undefined && innerAlgo !== algo)
144206  		throw (new Error('SSH certificate algorithm mismatch'));
144207  	if (algo === undefined)
144208  		algo = innerAlgo;
144209  
144210  	var cert = {};
144211  	cert.signatures = {};
144212  	cert.signatures.openssh = {};
144213  
144214  	cert.signatures.openssh.nonce = sshbuf.readBuffer();
144215  
144216  	var key = {};
144217  	var parts = (key.parts = []);
144218  	key.type = getAlg(algo);
144219  
144220  	var partCount = algs.info[key.type].parts.length;
144221  	while (parts.length < partCount)
144222  		parts.push(sshbuf.readPart());
144223  	assert.ok(parts.length >= 1, 'key must have at least one part');
144224  
144225  	var algInfo = algs.info[key.type];
144226  	if (key.type === 'ecdsa') {
144227  		var res = ECDSA_ALGO.exec(algo);
144228  		assert.ok(res !== null);
144229  		assert.strictEqual(res[1], parts[0].data.toString());
144230  	}
144231  
144232  	for (var i = 0; i < algInfo.parts.length; ++i) {
144233  		parts[i].name = algInfo.parts[i];
144234  		if (parts[i].name !== 'curve' &&
144235  		    algInfo.normalize !== false) {
144236  			var p = parts[i];
144237  			p.data = utils.mpNormalize(p.data);
144238  		}
144239  	}
144240  
144241  	cert.subjectKey = new Key(key);
144242  
144243  	cert.serial = sshbuf.readInt64();
144244  
144245  	var type = TYPES[sshbuf.readInt()];
144246  	assert.string(type, 'valid cert type');
144247  
144248  	cert.signatures.openssh.keyId = sshbuf.readString();
144249  
144250  	var principals = [];
144251  	var pbuf = sshbuf.readBuffer();
144252  	var psshbuf = new SSHBuffer({ buffer: pbuf });
144253  	while (!psshbuf.atEnd())
144254  		principals.push(psshbuf.readString());
144255  	if (principals.length === 0)
144256  		principals = ['*'];
144257  
144258  	cert.subjects = principals.map(function (pr) {
144259  		if (type === 'user')
144260  			return (Identity.forUser(pr));
144261  		else if (type === 'host')
144262  			return (Identity.forHost(pr));
144263  		throw (new Error('Unknown identity type ' + type));
144264  	});
144265  
144266  	cert.validFrom = int64ToDate(sshbuf.readInt64());
144267  	cert.validUntil = int64ToDate(sshbuf.readInt64());
144268  
144269  	cert.signatures.openssh.critical = sshbuf.readBuffer();
144270  	cert.signatures.openssh.exts = sshbuf.readBuffer();
144271  
144272  	/* reserved */
144273  	sshbuf.readBuffer();
144274  
144275  	var signingKeyBuf = sshbuf.readBuffer();
144276  	cert.issuerKey = rfc4253.read(signingKeyBuf);
144277  
144278  	/*
144279  	 * OpenSSH certs don't give the identity of the issuer, just their
144280  	 * public key. So, we use an Identity that matches anything. The
144281  	 * isSignedBy() function will later tell you if the key matches.
144282  	 */
144283  	cert.issuer = Identity.forHost('**');
144284  
144285  	var sigBuf = sshbuf.readBuffer();
144286  	cert.signatures.openssh.signature =
144287  	    Signature.parse(sigBuf, cert.issuerKey.type, 'ssh');
144288  
144289  	if (partial !== undefined) {
144290  		partial.remainder = sshbuf.remainder();
144291  		partial.consumed = sshbuf._offset;
144292  	}
144293  
144294  	return (new Certificate(cert));
144295  }
144296  
144297  function int64ToDate(buf) {
144298  	var i = buf.readUInt32BE(0) * 4294967296;
144299  	i += buf.readUInt32BE(4);
144300  	var d = new Date();
144301  	d.setTime(i * 1000);
144302  	d.sourceInt64 = buf;
144303  	return (d);
144304  }
144305  
144306  function dateToInt64(date) {
144307  	if (date.sourceInt64 !== undefined)
144308  		return (date.sourceInt64);
144309  	var i = Math.round(date.getTime() / 1000);
144310  	var upper = Math.floor(i / 4294967296);
144311  	var lower = Math.floor(i % 4294967296);
144312  	var buf = Buffer.alloc(8);
144313  	buf.writeUInt32BE(upper, 0);
144314  	buf.writeUInt32BE(lower, 4);
144315  	return (buf);
144316  }
144317  
144318  function sign(cert, key) {
144319  	if (cert.signatures.openssh === undefined)
144320  		cert.signatures.openssh = {};
144321  	try {
144322  		var blob = toBuffer(cert, true);
144323  	} catch (e) {
144324  		delete (cert.signatures.openssh);
144325  		return (false);
144326  	}
144327  	var sig = cert.signatures.openssh;
144328  	var hashAlgo = undefined;
144329  	if (key.type === 'rsa' || key.type === 'dsa')
144330  		hashAlgo = 'sha1';
144331  	var signer = key.createSign(hashAlgo);
144332  	signer.write(blob);
144333  	sig.signature = signer.sign();
144334  	return (true);
144335  }
144336  
144337  function signAsync(cert, signer, done) {
144338  	if (cert.signatures.openssh === undefined)
144339  		cert.signatures.openssh = {};
144340  	try {
144341  		var blob = toBuffer(cert, true);
144342  	} catch (e) {
144343  		delete (cert.signatures.openssh);
144344  		done(e);
144345  		return;
144346  	}
144347  	var sig = cert.signatures.openssh;
144348  
144349  	signer(blob, function (err, signature) {
144350  		if (err) {
144351  			done(err);
144352  			return;
144353  		}
144354  		try {
144355  			/*
144356  			 * This will throw if the signature isn't of a
144357  			 * type/algo that can be used for SSH.
144358  			 */
144359  			signature.toBuffer('ssh');
144360  		} catch (e) {
144361  			done(e);
144362  			return;
144363  		}
144364  		sig.signature = signature;
144365  		done();
144366  	});
144367  }
144368  
144369  function write(cert, options) {
144370  	if (options === undefined)
144371  		options = {};
144372  
144373  	var blob = toBuffer(cert);
144374  	var out = getCertType(cert.subjectKey) + ' ' + blob.toString('base64');
144375  	if (options.comment)
144376  		out = out + ' ' + options.comment;
144377  	return (out);
144378  }
144379  
144380  
144381  function toBuffer(cert, noSig) {
144382  	assert.object(cert.signatures.openssh, 'signature for openssh format');
144383  	var sig = cert.signatures.openssh;
144384  
144385  	if (sig.nonce === undefined)
144386  		sig.nonce = crypto.randomBytes(16);
144387  	var buf = new SSHBuffer({});
144388  	buf.writeString(getCertType(cert.subjectKey));
144389  	buf.writeBuffer(sig.nonce);
144390  
144391  	var key = cert.subjectKey;
144392  	var algInfo = algs.info[key.type];
144393  	algInfo.parts.forEach(function (part) {
144394  		buf.writePart(key.part[part]);
144395  	});
144396  
144397  	buf.writeInt64(cert.serial);
144398  
144399  	var type = cert.subjects[0].type;
144400  	assert.notStrictEqual(type, 'unknown');
144401  	cert.subjects.forEach(function (id) {
144402  		assert.strictEqual(id.type, type);
144403  	});
144404  	type = TYPES[type];
144405  	buf.writeInt(type);
144406  
144407  	if (sig.keyId === undefined) {
144408  		sig.keyId = cert.subjects[0].type + '_' +
144409  		    (cert.subjects[0].uid || cert.subjects[0].hostname);
144410  	}
144411  	buf.writeString(sig.keyId);
144412  
144413  	var sub = new SSHBuffer({});
144414  	cert.subjects.forEach(function (id) {
144415  		if (type === TYPES.host)
144416  			sub.writeString(id.hostname);
144417  		else if (type === TYPES.user)
144418  			sub.writeString(id.uid);
144419  	});
144420  	buf.writeBuffer(sub.toBuffer());
144421  
144422  	buf.writeInt64(dateToInt64(cert.validFrom));
144423  	buf.writeInt64(dateToInt64(cert.validUntil));
144424  
144425  	if (sig.critical === undefined)
144426  		sig.critical = Buffer.alloc(0);
144427  	buf.writeBuffer(sig.critical);
144428  
144429  	if (sig.exts === undefined)
144430  		sig.exts = Buffer.alloc(0);
144431  	buf.writeBuffer(sig.exts);
144432  
144433  	/* reserved */
144434  	buf.writeBuffer(Buffer.alloc(0));
144435  
144436  	sub = rfc4253.write(cert.issuerKey);
144437  	buf.writeBuffer(sub);
144438  
144439  	if (!noSig)
144440  		buf.writeBuffer(sig.signature.toBuffer('ssh'));
144441  
144442  	return (buf.toBuffer());
144443  }
144444  
144445  function getAlg(certType) {
144446  	if (certType === 'ssh-rsa-cert-v01@openssh.com')
144447  		return ('rsa');
144448  	if (certType === 'ssh-dss-cert-v01@openssh.com')
144449  		return ('dsa');
144450  	if (certType.match(ECDSA_ALGO))
144451  		return ('ecdsa');
144452  	if (certType === 'ssh-ed25519-cert-v01@openssh.com')
144453  		return ('ed25519');
144454  	throw (new Error('Unsupported cert type ' + certType));
144455  }
144456  
144457  function getCertType(key) {
144458  	if (key.type === 'rsa')
144459  		return ('ssh-rsa-cert-v01@openssh.com');
144460  	if (key.type === 'dsa')
144461  		return ('ssh-dss-cert-v01@openssh.com');
144462  	if (key.type === 'ecdsa')
144463  		return ('ecdsa-sha2-' + key.curve + '-cert-v01@openssh.com');
144464  	if (key.type === 'ed25519')
144465  		return ('ssh-ed25519-cert-v01@openssh.com');
144466  	throw (new Error('Unsupported key type ' + key.type));
144467  }
144468  
144469  
144470  /***/ }),
144471  /* 941 */
144472  /***/ (function(module, exports, __webpack_require__) {
144473  
144474  // Copyright 2016 Joyent, Inc.
144475  
144476  var x509 = __webpack_require__(457);
144477  
144478  module.exports = {
144479  	read: read,
144480  	verify: x509.verify,
144481  	sign: x509.sign,
144482  	write: write
144483  };
144484  
144485  var assert = __webpack_require__(16);
144486  var asn1 = __webpack_require__(66);
144487  var Buffer = __webpack_require__(15).Buffer;
144488  var algs = __webpack_require__(32);
144489  var utils = __webpack_require__(26);
144490  var Key = __webpack_require__(27);
144491  var PrivateKey = __webpack_require__(33);
144492  var pem = __webpack_require__(86);
144493  var Identity = __webpack_require__(158);
144494  var Signature = __webpack_require__(75);
144495  var Certificate = __webpack_require__(155);
144496  
144497  function read(buf, options) {
144498  	if (typeof (buf) !== 'string') {
144499  		assert.buffer(buf, 'buf');
144500  		buf = buf.toString('ascii');
144501  	}
144502  
144503  	var lines = buf.trim().split(/[\r\n]+/g);
144504  
144505  	var m = lines[0].match(/*JSSTYLED*/
144506  	    /[-]+[ ]*BEGIN CERTIFICATE[ ]*[-]+/);
144507  	assert.ok(m, 'invalid PEM header');
144508  
144509  	var m2 = lines[lines.length - 1].match(/*JSSTYLED*/
144510  	    /[-]+[ ]*END CERTIFICATE[ ]*[-]+/);
144511  	assert.ok(m2, 'invalid PEM footer');
144512  
144513  	var headers = {};
144514  	while (true) {
144515  		lines = lines.slice(1);
144516  		m = lines[0].match(/*JSSTYLED*/
144517  		    /^([A-Za-z0-9-]+): (.+)$/);
144518  		if (!m)
144519  			break;
144520  		headers[m[1].toLowerCase()] = m[2];
144521  	}
144522  
144523  	/* Chop off the first and last lines */
144524  	lines = lines.slice(0, -1).join('');
144525  	buf = Buffer.from(lines, 'base64');
144526  
144527  	return (x509.read(buf, options));
144528  }
144529  
144530  function write(cert, options) {
144531  	var dbuf = x509.write(cert, options);
144532  
144533  	var header = 'CERTIFICATE';
144534  	var tmp = dbuf.toString('base64');
144535  	var len = tmp.length + (tmp.length / 64) +
144536  	    18 + 16 + header.length*2 + 10;
144537  	var buf = Buffer.alloc(len);
144538  	var o = 0;
144539  	o += buf.write('-----BEGIN ' + header + '-----\n', o);
144540  	for (var i = 0; i < tmp.length; ) {
144541  		var limit = i + 64;
144542  		if (limit > tmp.length)
144543  			limit = tmp.length;
144544  		o += buf.write(tmp.slice(i, limit), o);
144545  		buf[o++] = 10;
144546  		i = limit;
144547  	}
144548  	o += buf.write('-----END ' + header + '-----\n', o);
144549  
144550  	return (buf.slice(0, o));
144551  }
144552  
144553  
144554  /***/ }),
144555  /* 942 */
144556  /***/ (function(module, exports) {
144557  
144558  module.exports = shift
144559  
144560  function shift (stream) {
144561    var rs = stream._readableState
144562    if (!rs) return null
144563    return rs.objectMode ? stream.read() : stream.read(getStateLength(rs))
144564  }
144565  
144566  function getStateLength (state) {
144567    if (state.buffer.length) {
144568      // Since node 6.3.0 state.buffer is a BufferList not an array
144569      if (state.buffer.head) {
144570        return state.buffer.head.data.length
144571      }
144572  
144573      return state.buffer[0].length
144574    }
144575  
144576    return state.length
144577  }
144578  
144579  
144580  /***/ }),
144581  /* 943 */
144582  /***/ (function(module, exports, __webpack_require__) {
144583  
144584  "use strict";
144585  
144586  module.exports = function (str) {
144587  	return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {
144588  		return '%' + c.charCodeAt(0).toString(16).toUpperCase();
144589  	});
144590  };
144591  
144592  
144593  /***/ }),
144594  /* 944 */
144595  /***/ (function(module, exports, __webpack_require__) {
144596  
144597  "use strict";
144598  
144599  
144600  var resolvePkg = __webpack_require__(679);
144601  
144602  /* @private
144603   *
144604   * given the name of a descendent module this module locates and returns its
144605   * package.json. In addition, it provides the baseDir.
144606   *
144607   * @method pkg
144608   * @param {String} name
144609   * @param {String} dir (optional) root directory to begin resolution
144610   */
144611  module.exports = function pkg(name, dir) {
144612    if (name !== './') { name += '/'; }
144613  
144614    var packagePath = resolvePkg(name, dir);
144615    if (packagePath === null) { return null; }
144616  
144617    var thePackage = require(packagePath);
144618  
144619    thePackage.baseDir = packagePath.slice(0, packagePath.length - 12 /* index of `/package.json` */);
144620  
144621    return thePackage;
144622  };
144623  
144624  
144625  /***/ }),
144626  /* 945 */
144627  /***/ (function(module, exports, __webpack_require__) {
144628  
144629  "use strict";
144630  
144631  var stripAnsi = __webpack_require__(947);
144632  var codePointAt = __webpack_require__(575);
144633  var isFullwidthCodePoint = __webpack_require__(946);
144634  
144635  // https://github.com/nodejs/io.js/blob/cff7300a578be1b10001f2d967aaedc88aee6402/lib/readline.js#L1345
144636  module.exports = function (str) {
144637  	if (typeof str !== 'string' || str.length === 0) {
144638  		return 0;
144639  	}
144640  
144641  	var width = 0;
144642  
144643  	str = stripAnsi(str);
144644  
144645  	for (var i = 0; i < str.length; i++) {
144646  		var code = codePointAt(str, i);
144647  
144648  		// ignore control characters
144649  		if (code <= 0x1f || (code >= 0x7f && code <= 0x9f)) {
144650  			continue;
144651  		}
144652  
144653  		// surrogates
144654  		if (code >= 0x10000) {
144655  			i++;
144656  		}
144657  
144658  		if (isFullwidthCodePoint(code)) {
144659  			width += 2;
144660  		} else {
144661  			width++;
144662  		}
144663  	}
144664  
144665  	return width;
144666  };
144667  
144668  
144669  /***/ }),
144670  /* 946 */
144671  /***/ (function(module, exports, __webpack_require__) {
144672  
144673  "use strict";
144674  
144675  var numberIsNan = __webpack_require__(767);
144676  
144677  module.exports = function (x) {
144678  	if (numberIsNan(x)) {
144679  		return false;
144680  	}
144681  
144682  	// https://github.com/nodejs/io.js/blob/cff7300a578be1b10001f2d967aaedc88aee6402/lib/readline.js#L1369
144683  
144684  	// code points are derived from:
144685  	// http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
144686  	if (x >= 0x1100 && (
144687  		x <= 0x115f ||  // Hangul Jamo
144688  		0x2329 === x || // LEFT-POINTING ANGLE BRACKET
144689  		0x232a === x || // RIGHT-POINTING ANGLE BRACKET
144690  		// CJK Radicals Supplement .. Enclosed CJK Letters and Months
144691  		(0x2e80 <= x && x <= 0x3247 && x !== 0x303f) ||
144692  		// Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
144693  		0x3250 <= x && x <= 0x4dbf ||
144694  		// CJK Unified Ideographs .. Yi Radicals
144695  		0x4e00 <= x && x <= 0xa4c6 ||
144696  		// Hangul Jamo Extended-A
144697  		0xa960 <= x && x <= 0xa97c ||
144698  		// Hangul Syllables
144699  		0xac00 <= x && x <= 0xd7a3 ||
144700  		// CJK Compatibility Ideographs
144701  		0xf900 <= x && x <= 0xfaff ||
144702  		// Vertical Forms
144703  		0xfe10 <= x && x <= 0xfe19 ||
144704  		// CJK Compatibility Forms .. Small Form Variants
144705  		0xfe30 <= x && x <= 0xfe6b ||
144706  		// Halfwidth and Fullwidth Forms
144707  		0xff01 <= x && x <= 0xff60 ||
144708  		0xffe0 <= x && x <= 0xffe6 ||
144709  		// Kana Supplement
144710  		0x1b000 <= x && x <= 0x1b001 ||
144711  		// Enclosed Ideographic Supplement
144712  		0x1f200 <= x && x <= 0x1f251 ||
144713  		// CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
144714  		0x20000 <= x && x <= 0x3fffd)) {
144715  		return true;
144716  	}
144717  
144718  	return false;
144719  }
144720  
144721  
144722  /***/ }),
144723  /* 947 */
144724  /***/ (function(module, exports, __webpack_require__) {
144725  
144726  "use strict";
144727  
144728  var ansiRegex = __webpack_require__(473)();
144729  
144730  module.exports = function (str) {
144731  	return typeof str === 'string' ? str.replace(ansiRegex, '') : str;
144732  };
144733  
144734  
144735  /***/ }),
144736  /* 948 */
144737  /***/ (function(module, exports, __webpack_require__) {
144738  
144739  "use strict";
144740  
144741  
144742  module.exports = () => {
144743  	const pattern = [
144744  		'[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[a-zA-Z\\d]*)*)?\\u0007)',
144745  		'(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PRZcf-ntqry=><~]))'
144746  	].join('|');
144747  
144748  	return new RegExp(pattern, 'g');
144749  };
144750  
144751  
144752  /***/ }),
144753  /* 949 */
144754  /***/ (function(module, exports, __webpack_require__) {
144755  
144756  var util = __webpack_require__(3)
144757  var bl = __webpack_require__(560)
144758  var xtend = __webpack_require__(465)
144759  var headers = __webpack_require__(459)
144760  
144761  var Writable = __webpack_require__(102).Writable
144762  var PassThrough = __webpack_require__(102).PassThrough
144763  
144764  var noop = function () {}
144765  
144766  var overflow = function (size) {
144767    size &= 511
144768    return size && 512 - size
144769  }
144770  
144771  var emptyStream = function (self, offset) {
144772    var s = new Source(self, offset)
144773    s.end()
144774    return s
144775  }
144776  
144777  var mixinPax = function (header, pax) {
144778    if (pax.path) header.name = pax.path
144779    if (pax.linkpath) header.linkname = pax.linkpath
144780    if (pax.size) header.size = parseInt(pax.size, 10)
144781    header.pax = pax
144782    return header
144783  }
144784  
144785  var Source = function (self, offset) {
144786    this._parent = self
144787    this.offset = offset
144788    PassThrough.call(this)
144789  }
144790  
144791  util.inherits(Source, PassThrough)
144792  
144793  Source.prototype.destroy = function (err) {
144794    this._parent.destroy(err)
144795  }
144796  
144797  var Extract = function (opts) {
144798    if (!(this instanceof Extract)) return new Extract(opts)
144799    Writable.call(this, opts)
144800  
144801    opts = opts || {}
144802  
144803    this._offset = 0
144804    this._buffer = bl()
144805    this._missing = 0
144806    this._partial = false
144807    this._onparse = noop
144808    this._header = null
144809    this._stream = null
144810    this._overflow = null
144811    this._cb = null
144812    this._locked = false
144813    this._destroyed = false
144814    this._pax = null
144815    this._paxGlobal = null
144816    this._gnuLongPath = null
144817    this._gnuLongLinkPath = null
144818  
144819    var self = this
144820    var b = self._buffer
144821  
144822    var oncontinue = function () {
144823      self._continue()
144824    }
144825  
144826    var onunlock = function (err) {
144827      self._locked = false
144828      if (err) return self.destroy(err)
144829      if (!self._stream) oncontinue()
144830    }
144831  
144832    var onstreamend = function () {
144833      self._stream = null
144834      var drain = overflow(self._header.size)
144835      if (drain) self._parse(drain, ondrain)
144836      else self._parse(512, onheader)
144837      if (!self._locked) oncontinue()
144838    }
144839  
144840    var ondrain = function () {
144841      self._buffer.consume(overflow(self._header.size))
144842      self._parse(512, onheader)
144843      oncontinue()
144844    }
144845  
144846    var onpaxglobalheader = function () {
144847      var size = self._header.size
144848      self._paxGlobal = headers.decodePax(b.slice(0, size))
144849      b.consume(size)
144850      onstreamend()
144851    }
144852  
144853    var onpaxheader = function () {
144854      var size = self._header.size
144855      self._pax = headers.decodePax(b.slice(0, size))
144856      if (self._paxGlobal) self._pax = xtend(self._paxGlobal, self._pax)
144857      b.consume(size)
144858      onstreamend()
144859    }
144860  
144861    var ongnulongpath = function () {
144862      var size = self._header.size
144863      this._gnuLongPath = headers.decodeLongPath(b.slice(0, size), opts.filenameEncoding)
144864      b.consume(size)
144865      onstreamend()
144866    }
144867  
144868    var ongnulonglinkpath = function () {
144869      var size = self._header.size
144870      this._gnuLongLinkPath = headers.decodeLongPath(b.slice(0, size), opts.filenameEncoding)
144871      b.consume(size)
144872      onstreamend()
144873    }
144874  
144875    var onheader = function () {
144876      var offset = self._offset
144877      var header
144878      try {
144879        header = self._header = headers.decode(b.slice(0, 512), opts.filenameEncoding)
144880      } catch (err) {
144881        self.emit('error', err)
144882      }
144883      b.consume(512)
144884  
144885      if (!header) {
144886        self._parse(512, onheader)
144887        oncontinue()
144888        return
144889      }
144890      if (header.type === 'gnu-long-path') {
144891        self._parse(header.size, ongnulongpath)
144892        oncontinue()
144893        return
144894      }
144895      if (header.type === 'gnu-long-link-path') {
144896        self._parse(header.size, ongnulonglinkpath)
144897        oncontinue()
144898        return
144899      }
144900      if (header.type === 'pax-global-header') {
144901        self._parse(header.size, onpaxglobalheader)
144902        oncontinue()
144903        return
144904      }
144905      if (header.type === 'pax-header') {
144906        self._parse(header.size, onpaxheader)
144907        oncontinue()
144908        return
144909      }
144910  
144911      if (self._gnuLongPath) {
144912        header.name = self._gnuLongPath
144913        self._gnuLongPath = null
144914      }
144915  
144916      if (self._gnuLongLinkPath) {
144917        header.linkname = self._gnuLongLinkPath
144918        self._gnuLongLinkPath = null
144919      }
144920  
144921      if (self._pax) {
144922        self._header = header = mixinPax(header, self._pax)
144923        self._pax = null
144924      }
144925  
144926      self._locked = true
144927  
144928      if (!header.size || header.type === 'directory') {
144929        self._parse(512, onheader)
144930        self.emit('entry', header, emptyStream(self, offset), onunlock)
144931        return
144932      }
144933  
144934      self._stream = new Source(self, offset)
144935  
144936      self.emit('entry', header, self._stream, onunlock)
144937      self._parse(header.size, onstreamend)
144938      oncontinue()
144939    }
144940  
144941    this._onheader = onheader
144942    this._parse(512, onheader)
144943  }
144944  
144945  util.inherits(Extract, Writable)
144946  
144947  Extract.prototype.destroy = function (err) {
144948    if (this._destroyed) return
144949    this._destroyed = true
144950  
144951    if (err) this.emit('error', err)
144952    this.emit('close')
144953    if (this._stream) this._stream.emit('close')
144954  }
144955  
144956  Extract.prototype._parse = function (size, onparse) {
144957    if (this._destroyed) return
144958    this._offset += size
144959    this._missing = size
144960    if (onparse === this._onheader) this._partial = false
144961    this._onparse = onparse
144962  }
144963  
144964  Extract.prototype._continue = function () {
144965    if (this._destroyed) return
144966    var cb = this._cb
144967    this._cb = noop
144968    if (this._overflow) this._write(this._overflow, undefined, cb)
144969    else cb()
144970  }
144971  
144972  Extract.prototype._write = function (data, enc, cb) {
144973    if (this._destroyed) return
144974  
144975    var s = this._stream
144976    var b = this._buffer
144977    var missing = this._missing
144978    if (data.length) this._partial = true
144979  
144980    // we do not reach end-of-chunk now. just forward it
144981  
144982    if (data.length < missing) {
144983      this._missing -= data.length
144984      this._overflow = null
144985      if (s) return s.write(data, cb)
144986      b.append(data)
144987      return cb()
144988    }
144989  
144990    // end-of-chunk. the parser should call cb.
144991  
144992    this._cb = cb
144993    this._missing = 0
144994  
144995    var overflow = null
144996    if (data.length > missing) {
144997      overflow = data.slice(missing)
144998      data = data.slice(0, missing)
144999    }
145000  
145001    if (s) s.end(data)
145002    else b.append(data)
145003  
145004    this._overflow = overflow
145005    this._onparse()
145006  }
145007  
145008  Extract.prototype._final = function (cb) {
145009    if (this._partial) return this.destroy(new Error('Unexpected end of data'))
145010    cb()
145011  }
145012  
145013  module.exports = Extract
145014  
145015  
145016  /***/ }),
145017  /* 950 */
145018  /***/ (function(module, exports, __webpack_require__) {
145019  
145020  var constants = __webpack_require__(619)
145021  var eos = __webpack_require__(174)
145022  var util = __webpack_require__(3)
145023  var alloc = __webpack_require__(374)
145024  var toBuffer = __webpack_require__(462)
145025  
145026  var Readable = __webpack_require__(102).Readable
145027  var Writable = __webpack_require__(102).Writable
145028  var StringDecoder = __webpack_require__(333).StringDecoder
145029  
145030  var headers = __webpack_require__(459)
145031  
145032  var DMODE = parseInt('755', 8)
145033  var FMODE = parseInt('644', 8)
145034  
145035  var END_OF_TAR = alloc(1024)
145036  
145037  var noop = function () {}
145038  
145039  var overflow = function (self, size) {
145040    size &= 511
145041    if (size) self.push(END_OF_TAR.slice(0, 512 - size))
145042  }
145043  
145044  function modeToType (mode) {
145045    switch (mode & constants.S_IFMT) {
145046      case constants.S_IFBLK: return 'block-device'
145047      case constants.S_IFCHR: return 'character-device'
145048      case constants.S_IFDIR: return 'directory'
145049      case constants.S_IFIFO: return 'fifo'
145050      case constants.S_IFLNK: return 'symlink'
145051    }
145052  
145053    return 'file'
145054  }
145055  
145056  var Sink = function (to) {
145057    Writable.call(this)
145058    this.written = 0
145059    this._to = to
145060    this._destroyed = false
145061  }
145062  
145063  util.inherits(Sink, Writable)
145064  
145065  Sink.prototype._write = function (data, enc, cb) {
145066    this.written += data.length
145067    if (this._to.push(data)) return cb()
145068    this._to._drain = cb
145069  }
145070  
145071  Sink.prototype.destroy = function () {
145072    if (this._destroyed) return
145073    this._destroyed = true
145074    this.emit('close')
145075  }
145076  
145077  var LinkSink = function () {
145078    Writable.call(this)
145079    this.linkname = ''
145080    this._decoder = new StringDecoder('utf-8')
145081    this._destroyed = false
145082  }
145083  
145084  util.inherits(LinkSink, Writable)
145085  
145086  LinkSink.prototype._write = function (data, enc, cb) {
145087    this.linkname += this._decoder.write(data)
145088    cb()
145089  }
145090  
145091  LinkSink.prototype.destroy = function () {
145092    if (this._destroyed) return
145093    this._destroyed = true
145094    this.emit('close')
145095  }
145096  
145097  var Void = function () {
145098    Writable.call(this)
145099    this._destroyed = false
145100  }
145101  
145102  util.inherits(Void, Writable)
145103  
145104  Void.prototype._write = function (data, enc, cb) {
145105    cb(new Error('No body allowed for this entry'))
145106  }
145107  
145108  Void.prototype.destroy = function () {
145109    if (this._destroyed) return
145110    this._destroyed = true
145111    this.emit('close')
145112  }
145113  
145114  var Pack = function (opts) {
145115    if (!(this instanceof Pack)) return new Pack(opts)
145116    Readable.call(this, opts)
145117  
145118    this._drain = noop
145119    this._finalized = false
145120    this._finalizing = false
145121    this._destroyed = false
145122    this._stream = null
145123  }
145124  
145125  util.inherits(Pack, Readable)
145126  
145127  Pack.prototype.entry = function (header, buffer, callback) {
145128    if (this._stream) throw new Error('already piping an entry')
145129    if (this._finalized || this._destroyed) return
145130  
145131    if (typeof buffer === 'function') {
145132      callback = buffer
145133      buffer = null
145134    }
145135  
145136    if (!callback) callback = noop
145137  
145138    var self = this
145139  
145140    if (!header.size || header.type === 'symlink') header.size = 0
145141    if (!header.type) header.type = modeToType(header.mode)
145142    if (!header.mode) header.mode = header.type === 'directory' ? DMODE : FMODE
145143    if (!header.uid) header.uid = 0
145144    if (!header.gid) header.gid = 0
145145    if (!header.mtime) header.mtime = new Date()
145146  
145147    if (typeof buffer === 'string') buffer = toBuffer(buffer)
145148    if (Buffer.isBuffer(buffer)) {
145149      header.size = buffer.length
145150      this._encode(header)
145151      this.push(buffer)
145152      overflow(self, header.size)
145153      process.nextTick(callback)
145154      return new Void()
145155    }
145156  
145157    if (header.type === 'symlink' && !header.linkname) {
145158      var linkSink = new LinkSink()
145159      eos(linkSink, function (err) {
145160        if (err) { // stream was closed
145161          self.destroy()
145162          return callback(err)
145163        }
145164  
145165        header.linkname = linkSink.linkname
145166        self._encode(header)
145167        callback()
145168      })
145169  
145170      return linkSink
145171    }
145172  
145173    this._encode(header)
145174  
145175    if (header.type !== 'file' && header.type !== 'contiguous-file') {
145176      process.nextTick(callback)
145177      return new Void()
145178    }
145179  
145180    var sink = new Sink(this)
145181  
145182    this._stream = sink
145183  
145184    eos(sink, function (err) {
145185      self._stream = null
145186  
145187      if (err) { // stream was closed
145188        self.destroy()
145189        return callback(err)
145190      }
145191  
145192      if (sink.written !== header.size) { // corrupting tar
145193        self.destroy()
145194        return callback(new Error('size mismatch'))
145195      }
145196  
145197      overflow(self, header.size)
145198      if (self._finalizing) self.finalize()
145199      callback()
145200    })
145201  
145202    return sink
145203  }
145204  
145205  Pack.prototype.finalize = function () {
145206    if (this._stream) {
145207      this._finalizing = true
145208      return
145209    }
145210  
145211    if (this._finalized) return
145212    this._finalized = true
145213    this.push(END_OF_TAR)
145214    this.push(null)
145215  }
145216  
145217  Pack.prototype.destroy = function (err) {
145218    if (this._destroyed) return
145219    this._destroyed = true
145220  
145221    if (err) this.emit('error', err)
145222    this.emit('close')
145223    if (this._stream && this._stream.destroy) this._stream.destroy()
145224  }
145225  
145226  Pack.prototype._encode = function (header) {
145227    if (!header.pax) {
145228      var buf = headers.encode(header)
145229      if (buf) {
145230        this.push(buf)
145231        return
145232      }
145233    }
145234    this._encodePax(header)
145235  }
145236  
145237  Pack.prototype._encodePax = function (header) {
145238    var paxHeader = headers.encodePax({
145239      name: header.name,
145240      linkname: header.linkname,
145241      pax: header.pax
145242    })
145243  
145244    var newHeader = {
145245      name: 'PaxHeader',
145246      mode: header.mode,
145247      uid: header.uid,
145248      gid: header.gid,
145249      size: paxHeader.length,
145250      mtime: header.mtime,
145251      type: 'pax-header',
145252      linkname: header.linkname && 'PaxHeader',
145253      uname: header.uname,
145254      gname: header.gname,
145255      devmajor: header.devmajor,
145256      devminor: header.devminor
145257    }
145258  
145259    this.push(headers.encode(newHeader))
145260    this.push(paxHeader)
145261    overflow(this, paxHeader.length)
145262  
145263    newHeader.size = header.size
145264    newHeader.type = header.type
145265    this.push(headers.encode(newHeader))
145266  }
145267  
145268  Pack.prototype._read = function (n) {
145269    var drain = this._drain
145270    this._drain = noop
145271    drain()
145272  }
145273  
145274  module.exports = Pack
145275  
145276  
145277  /***/ }),
145278  /* 951 */
145279  /***/ (function(module, exports, __webpack_require__) {
145280  
145281  
145282  var thenify = __webpack_require__(952)
145283  
145284  module.exports = thenifyAll
145285  thenifyAll.withCallback = withCallback
145286  thenifyAll.thenify = thenify
145287  
145288  /**
145289   * Promisifies all the selected functions in an object.
145290   *
145291   * @param {Object} source the source object for the async functions
145292   * @param {Object} [destination] the destination to set all the promisified methods
145293   * @param {Array} [methods] an array of method names of `source`
145294   * @return {Object}
145295   * @api public
145296   */
145297  
145298  function thenifyAll(source, destination, methods) {
145299    return promisifyAll(source, destination, methods, thenify)
145300  }
145301  
145302  /**
145303   * Promisifies all the selected functions in an object and backward compatible with callback.
145304   *
145305   * @param {Object} source the source object for the async functions
145306   * @param {Object} [destination] the destination to set all the promisified methods
145307   * @param {Array} [methods] an array of method names of `source`
145308   * @return {Object}
145309   * @api public
145310   */
145311  
145312  function withCallback(source, destination, methods) {
145313    return promisifyAll(source, destination, methods, thenify.withCallback)
145314  }
145315  
145316  function promisifyAll(source, destination, methods, promisify) {
145317    if (!destination) {
145318      destination = {};
145319      methods = Object.keys(source)
145320    }
145321  
145322    if (Array.isArray(destination)) {
145323      methods = destination
145324      destination = {}
145325    }
145326  
145327    if (!methods) {
145328      methods = Object.keys(source)
145329    }
145330  
145331    if (typeof source === 'function') destination = promisify(source)
145332  
145333    methods.forEach(function (name) {
145334      // promisify only if it's a function
145335      if (typeof source[name] === 'function') destination[name] = promisify(source[name])
145336    })
145337  
145338    // proxy the rest
145339    Object.keys(source).forEach(function (name) {
145340      if (deprecated(source, name)) return
145341      if (destination[name]) return
145342      destination[name] = source[name]
145343    })
145344  
145345    return destination
145346  }
145347  
145348  function deprecated(source, name) {
145349    var desc = Object.getOwnPropertyDescriptor(source, name)
145350    if (!desc || !desc.get) return false
145351    if (desc.get.name === 'deprecated') return true
145352    return false
145353  }
145354  
145355  
145356  /***/ }),
145357  /* 952 */
145358  /***/ (function(module, exports, __webpack_require__) {
145359  
145360  
145361  var Promise = __webpack_require__(339)
145362  var assert = __webpack_require__(28)
145363  
145364  module.exports = thenify
145365  
145366  /**
145367   * Turn async functions into promises
145368   *
145369   * @param {Function} $$__fn__$$
145370   * @return {Function}
145371   * @api public
145372   */
145373  
145374  function thenify($$__fn__$$, options) {
145375    assert(typeof $$__fn__$$ === 'function')
145376    return eval(createWrapper($$__fn__$$.name, options))
145377  }
145378  
145379  /**
145380   * Turn async functions into promises and backward compatible with callback
145381   *
145382   * @param {Function} $$__fn__$$
145383   * @return {Function}
145384   * @api public
145385   */
145386  
145387  thenify.withCallback = function ($$__fn__$$, options) {
145388    assert(typeof $$__fn__$$ === 'function')
145389    options = options || {}
145390    options.withCallback = true
145391    if (options.multiArgs === undefined) options.multiArgs = true
145392    return eval(createWrapper($$__fn__$$.name, options))
145393  }
145394  
145395  function createCallback(resolve, reject, multiArgs) {
145396    return function(err, value) {
145397      if (err) return reject(err)
145398      var length = arguments.length
145399  
145400      if (length <= 2 || !multiArgs) return resolve(value)
145401  
145402      if (Array.isArray(multiArgs)) {
145403        var values = {}
145404        for (var i = 1; i < length; i++) values[multiArgs[i - 1]] = arguments[i]
145405        return resolve(values)
145406      }
145407  
145408      var values = new Array(length - 1)
145409      for (var i = 1; i < length; ++i) values[i - 1] = arguments[i]
145410      resolve(values)
145411    }
145412  }
145413  
145414  function createWrapper(name, options) {
145415    name = (name || '').replace(/\s|bound(?!$)/g, '')
145416    options = options || {}
145417    // default to true
145418    var multiArgs = options.multiArgs !== undefined ? options.multiArgs : true
145419    multiArgs = 'var multiArgs = ' + JSON.stringify(multiArgs) + '\n'
145420  
145421    var withCallback = options.withCallback ?
145422      'var lastType = typeof arguments[len - 1]\n'
145423      + 'if (lastType === "function") return $$__fn__$$.apply(self, arguments)\n'
145424     : ''
145425  
145426    return '(function ' + name + '() {\n'
145427      + 'var self = this\n'
145428      + 'var len = arguments.length\n'
145429      + multiArgs
145430      + withCallback
145431      + 'var args = new Array(len + 1)\n'
145432      + 'for (var i = 0; i < len; ++i) args[i] = arguments[i]\n'
145433      + 'var lastIndex = i\n'
145434      + 'return new Promise(function (resolve, reject) {\n'
145435        + 'args[lastIndex] = createCallback(resolve, reject, multiArgs)\n'
145436        + '$$__fn__$$.apply(self, args)\n'
145437      + '})\n'
145438    + '})'
145439  }
145440  
145441  
145442  /***/ }),
145443  /* 953 */
145444  /***/ (function(module, exports, __webpack_require__) {
145445  
145446  var Stream = __webpack_require__(23)
145447  
145448  // through
145449  //
145450  // a stream that does nothing but re-emit the input.
145451  // useful for aggregating a series of changing but not ending streams into one stream)
145452  
145453  exports = module.exports = through
145454  through.through = through
145455  
145456  //create a readable writable stream.
145457  
145458  function through (write, end, opts) {
145459    write = write || function (data) { this.queue(data) }
145460    end = end || function () { this.queue(null) }
145461  
145462    var ended = false, destroyed = false, buffer = [], _ended = false
145463    var stream = new Stream()
145464    stream.readable = stream.writable = true
145465    stream.paused = false
145466  
145467  //  stream.autoPause   = !(opts && opts.autoPause   === false)
145468    stream.autoDestroy = !(opts && opts.autoDestroy === false)
145469  
145470    stream.write = function (data) {
145471      write.call(this, data)
145472      return !stream.paused
145473    }
145474  
145475    function drain() {
145476      while(buffer.length && !stream.paused) {
145477        var data = buffer.shift()
145478        if(null === data)
145479          return stream.emit('end')
145480        else
145481          stream.emit('data', data)
145482      }
145483    }
145484  
145485    stream.queue = stream.push = function (data) {
145486  //    console.error(ended)
145487      if(_ended) return stream
145488      if(data === null) _ended = true
145489      buffer.push(data)
145490      drain()
145491      return stream
145492    }
145493  
145494    //this will be registered as the first 'end' listener
145495    //must call destroy next tick, to make sure we're after any
145496    //stream piped from here.
145497    //this is only a problem if end is not emitted synchronously.
145498    //a nicer way to do this is to make sure this is the last listener for 'end'
145499  
145500    stream.on('end', function () {
145501      stream.readable = false
145502      if(!stream.writable && stream.autoDestroy)
145503        process.nextTick(function () {
145504          stream.destroy()
145505        })
145506    })
145507  
145508    function _end () {
145509      stream.writable = false
145510      end.call(stream)
145511      if(!stream.readable && stream.autoDestroy)
145512        stream.destroy()
145513    }
145514  
145515    stream.end = function (data) {
145516      if(ended) return
145517      ended = true
145518      if(arguments.length) stream.write(data)
145519      _end() // will emit or queue
145520      return stream
145521    }
145522  
145523    stream.destroy = function () {
145524      if(destroyed) return
145525      destroyed = true
145526      ended = true
145527      buffer.length = 0
145528      stream.writable = stream.readable = false
145529      stream.emit('close')
145530      return stream
145531    }
145532  
145533    stream.pause = function () {
145534      if(stream.paused) return
145535      stream.paused = true
145536      return stream
145537    }
145538  
145539    stream.resume = function () {
145540      if(stream.paused) {
145541        stream.paused = false
145542        stream.emit('resume')
145543      }
145544      drain()
145545      //may have become paused again,
145546      //as drain emits 'data'.
145547      if(!stream.paused)
145548        stream.emit('drain')
145549      return stream
145550    }
145551    return stream
145552  }
145553  
145554  
145555  
145556  /***/ }),
145557  /* 954 */
145558  /***/ (function(module, exports, __webpack_require__) {
145559  
145560  /*!
145561   * Tmp
145562   *
145563   * Copyright (c) 2011-2017 KARASZI Istvan <github@spam.raszi.hu>
145564   *
145565   * MIT Licensed
145566   */
145567  
145568  /*
145569   * Module dependencies.
145570   */
145571  const fs = __webpack_require__(4);
145572  const path = __webpack_require__(0);
145573  const crypto = __webpack_require__(11);
145574  const osTmpDir = __webpack_require__(772);
145575  const _c = process.binding('constants');
145576  
145577  /*
145578   * The working inner variables.
145579   */
145580  const
145581    /**
145582     * The temporary directory.
145583     * @type {string}
145584     */
145585    tmpDir = osTmpDir(),
145586  
145587    // the random characters to choose from
145588    RANDOM_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',
145589  
145590    TEMPLATE_PATTERN = /XXXXXX/,
145591  
145592    DEFAULT_TRIES = 3,
145593  
145594    CREATE_FLAGS = (_c.O_CREAT || _c.fs.O_CREAT) | (_c.O_EXCL || _c.fs.O_EXCL) | (_c.O_RDWR || _c.fs.O_RDWR),
145595  
145596    EBADF = _c.EBADF || _c.os.errno.EBADF,
145597    ENOENT = _c.ENOENT || _c.os.errno.ENOENT,
145598  
145599    DIR_MODE = 448 /* 0o700 */,
145600    FILE_MODE = 384 /* 0o600 */,
145601  
145602    // this will hold the objects need to be removed on exit
145603    _removeObjects = [];
145604  
145605  var
145606    _gracefulCleanup = false,
145607    _uncaughtException = false;
145608  
145609  /**
145610   * Random name generator based on crypto.
145611   * Adapted from http://blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript
145612   *
145613   * @param {number} howMany
145614   * @returns {string} the generated random name
145615   * @private
145616   */
145617  function _randomChars(howMany) {
145618    var
145619      value = [],
145620      rnd = null;
145621  
145622    // make sure that we do not fail because we ran out of entropy
145623    try {
145624      rnd = crypto.randomBytes(howMany);
145625    } catch (e) {
145626      rnd = crypto.pseudoRandomBytes(howMany);
145627    }
145628  
145629    for (var i = 0; i < howMany; i++) {
145630      value.push(RANDOM_CHARS[rnd[i] % RANDOM_CHARS.length]);
145631    }
145632  
145633    return value.join('');
145634  }
145635  
145636  /**
145637   * Checks whether the `obj` parameter is defined or not.
145638   *
145639   * @param {Object} obj
145640   * @returns {boolean} true if the object is undefined
145641   * @private
145642   */
145643  function _isUndefined(obj) {
145644    return typeof obj === 'undefined';
145645  }
145646  
145647  /**
145648   * Parses the function arguments.
145649   *
145650   * This function helps to have optional arguments.
145651   *
145652   * @param {(Options|Function)} options
145653   * @param {Function} callback
145654   * @returns {Array} parsed arguments
145655   * @private
145656   */
145657  function _parseArguments(options, callback) {
145658    if (typeof options == 'function') {
145659      return [callback || {}, options];
145660    }
145661  
145662    if (_isUndefined(options)) {
145663      return [{}, callback];
145664    }
145665  
145666    return [options, callback];
145667  }
145668  
145669  /**
145670   * Generates a new temporary name.
145671   *
145672   * @param {Object} opts
145673   * @returns {string} the new random name according to opts
145674   * @private
145675   */
145676  function _generateTmpName(opts) {
145677    if (opts.name) {
145678      return path.join(opts.dir || tmpDir, opts.name);
145679    }
145680  
145681    // mkstemps like template
145682    if (opts.template) {
145683      return opts.template.replace(TEMPLATE_PATTERN, _randomChars(6));
145684    }
145685  
145686    // prefix and postfix
145687    const name = [
145688      opts.prefix || 'tmp-',
145689      process.pid,
145690      _randomChars(12),
145691      opts.postfix || ''
145692    ].join('');
145693  
145694    return path.join(opts.dir || tmpDir, name);
145695  }
145696  
145697  /**
145698   * Gets a temporary file name.
145699   *
145700   * @param {(Options|tmpNameCallback)} options options or callback
145701   * @param {?tmpNameCallback} callback the callback function
145702   */
145703  function tmpName(options, callback) {
145704    var
145705      args = _parseArguments(options, callback),
145706      opts = args[0],
145707      cb = args[1],
145708      tries = opts.name ? 1 : opts.tries || DEFAULT_TRIES;
145709  
145710    if (isNaN(tries) || tries < 0)
145711      return cb(new Error('Invalid tries'));
145712  
145713    if (opts.template && !opts.template.match(TEMPLATE_PATTERN))
145714      return cb(new Error('Invalid template provided'));
145715  
145716    (function _getUniqueName() {
145717      const name = _generateTmpName(opts);
145718  
145719      // check whether the path exists then retry if needed
145720      fs.stat(name, function (err) {
145721        if (!err) {
145722          if (tries-- > 0) return _getUniqueName();
145723  
145724          return cb(new Error('Could not get a unique tmp filename, max tries reached ' + name));
145725        }
145726  
145727        cb(null, name);
145728      });
145729    }());
145730  }
145731  
145732  /**
145733   * Synchronous version of tmpName.
145734   *
145735   * @param {Object} options
145736   * @returns {string} the generated random name
145737   * @throws {Error} if the options are invalid or could not generate a filename
145738   */
145739  function tmpNameSync(options) {
145740    var
145741      args = _parseArguments(options),
145742      opts = args[0],
145743      tries = opts.name ? 1 : opts.tries || DEFAULT_TRIES;
145744  
145745    if (isNaN(tries) || tries < 0)
145746      throw new Error('Invalid tries');
145747  
145748    if (opts.template && !opts.template.match(TEMPLATE_PATTERN))
145749      throw new Error('Invalid template provided');
145750  
145751    do {
145752      const name = _generateTmpName(opts);
145753      try {
145754        fs.statSync(name);
145755      } catch (e) {
145756        return name;
145757      }
145758    } while (tries-- > 0);
145759  
145760    throw new Error('Could not get a unique tmp filename, max tries reached');
145761  }
145762  
145763  /**
145764   * Creates and opens a temporary file.
145765   *
145766   * @param {(Options|fileCallback)} options the config options or the callback function
145767   * @param {?fileCallback} callback
145768   */
145769  function file(options, callback) {
145770    var
145771      args = _parseArguments(options, callback),
145772      opts = args[0],
145773      cb = args[1];
145774  
145775    opts.postfix = (_isUndefined(opts.postfix)) ? '.tmp' : opts.postfix;
145776  
145777    // gets a temporary filename
145778    tmpName(opts, function _tmpNameCreated(err, name) {
145779      if (err) return cb(err);
145780  
145781      // create and open the file
145782      fs.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err, fd) {
145783        if (err) return cb(err);
145784  
145785        if (opts.discardDescriptor) {
145786          return fs.close(fd, function _discardCallback(err) {
145787            if (err) {
145788              // Low probability, and the file exists, so this could be
145789              // ignored.  If it isn't we certainly need to unlink the
145790              // file, and if that fails too its error is more
145791              // important.
145792              try {
145793                fs.unlinkSync(name);
145794              } catch (e) {
145795                if (!isENOENT(e)) {
145796                  err = e;
145797                }
145798              }
145799              return cb(err);
145800            }
145801            cb(null, name, undefined, _prepareTmpFileRemoveCallback(name, -1, opts));
145802          });
145803        }
145804        if (opts.detachDescriptor) {
145805          return cb(null, name, fd, _prepareTmpFileRemoveCallback(name, -1, opts));
145806        }
145807        cb(null, name, fd, _prepareTmpFileRemoveCallback(name, fd, opts));
145808      });
145809    });
145810  }
145811  
145812  /**
145813   * Synchronous version of file.
145814   *
145815   * @param {Options} options
145816   * @returns {FileSyncObject} object consists of name, fd and removeCallback
145817   * @throws {Error} if cannot create a file
145818   */
145819  function fileSync(options) {
145820    var
145821      args = _parseArguments(options),
145822      opts = args[0];
145823  
145824    opts.postfix = opts.postfix || '.tmp';
145825  
145826    const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;
145827    const name = tmpNameSync(opts);
145828    var fd = fs.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE);
145829    if (opts.discardDescriptor) {
145830      fs.closeSync(fd); 
145831      fd = undefined;
145832    }
145833  
145834    return {
145835      name: name,
145836      fd: fd,
145837      removeCallback: _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts)
145838    };
145839  }
145840  
145841  /**
145842   * Removes files and folders in a directory recursively.
145843   *
145844   * @param {string} root
145845   * @private
145846   */
145847  function _rmdirRecursiveSync(root) {
145848    const dirs = [root];
145849  
145850    do {
145851      var
145852        dir = dirs.pop(),
145853        deferred = false,
145854        files = fs.readdirSync(dir);
145855  
145856      for (var i = 0, length = files.length; i < length; i++) {
145857        var
145858          file = path.join(dir, files[i]),
145859          stat = fs.lstatSync(file); // lstat so we don't recurse into symlinked directories
145860  
145861        if (stat.isDirectory()) {
145862          if (!deferred) {
145863            deferred = true;
145864            dirs.push(dir);
145865          }
145866          dirs.push(file);
145867        } else {
145868          fs.unlinkSync(file);
145869        }
145870      }
145871  
145872      if (!deferred) {
145873        fs.rmdirSync(dir);
145874      }
145875    } while (dirs.length !== 0);
145876  }
145877  
145878  /**
145879   * Creates a temporary directory.
145880   *
145881   * @param {(Options|dirCallback)} options the options or the callback function
145882   * @param {?dirCallback} callback
145883   */
145884  function dir(options, callback) {
145885    var
145886      args = _parseArguments(options, callback),
145887      opts = args[0],
145888      cb = args[1];
145889  
145890    // gets a temporary filename
145891    tmpName(opts, function _tmpNameCreated(err, name) {
145892      if (err) return cb(err);
145893  
145894      // create the directory
145895      fs.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err) {
145896        if (err) return cb(err);
145897  
145898        cb(null, name, _prepareTmpDirRemoveCallback(name, opts));
145899      });
145900    });
145901  }
145902  
145903  /**
145904   * Synchronous version of dir.
145905   *
145906   * @param {Options} options
145907   * @returns {DirSyncObject} object consists of name and removeCallback
145908   * @throws {Error} if it cannot create a directory
145909   */
145910  function dirSync(options) {
145911    var
145912      args = _parseArguments(options),
145913      opts = args[0];
145914  
145915    const name = tmpNameSync(opts);
145916    fs.mkdirSync(name, opts.mode || DIR_MODE);
145917  
145918    return {
145919      name: name,
145920      removeCallback: _prepareTmpDirRemoveCallback(name, opts)
145921    };
145922  }
145923  
145924  /**
145925   * Prepares the callback for removal of the temporary file.
145926   *
145927   * @param {string} name the path of the file
145928   * @param {number} fd file descriptor
145929   * @param {Object} opts
145930   * @returns {fileCallback}
145931   * @private
145932   */
145933  function _prepareTmpFileRemoveCallback(name, fd, opts) {
145934    const removeCallback = _prepareRemoveCallback(function _removeCallback(fdPath) {
145935      try {
145936        if (0 <= fdPath[0]) {
145937          fs.closeSync(fdPath[0]);
145938        }
145939      }
145940      catch (e) {
145941        // under some node/windows related circumstances, a temporary file
145942        // may have not be created as expected or the file was already closed
145943        // by the user, in which case we will simply ignore the error
145944        if (!isEBADF(e) && !isENOENT(e)) {
145945          // reraise any unanticipated error
145946          throw e;
145947        }
145948      }
145949      try {
145950        fs.unlinkSync(fdPath[1]);
145951      }
145952      catch (e) {
145953        if (!isENOENT(e)) {
145954          // reraise any unanticipated error
145955          throw e;
145956        }
145957      }
145958    }, [fd, name]);
145959  
145960    if (!opts.keep) {
145961      _removeObjects.unshift(removeCallback);
145962    }
145963  
145964    return removeCallback;
145965  }
145966  
145967  /**
145968   * Prepares the callback for removal of the temporary directory.
145969   *
145970   * @param {string} name
145971   * @param {Object} opts
145972   * @returns {Function} the callback
145973   * @private
145974   */
145975  function _prepareTmpDirRemoveCallback(name, opts) {
145976    const removeFunction = opts.unsafeCleanup ? _rmdirRecursiveSync : fs.rmdirSync.bind(fs);
145977    const removeCallback = _prepareRemoveCallback(removeFunction, name);
145978  
145979    if (!opts.keep) {
145980      _removeObjects.unshift(removeCallback);
145981    }
145982  
145983    return removeCallback;
145984  }
145985  
145986  /**
145987   * Creates a guarded function wrapping the removeFunction call.
145988   *
145989   * @param {Function} removeFunction
145990   * @param {Object} arg
145991   * @returns {Function}
145992   * @private
145993   */
145994  function _prepareRemoveCallback(removeFunction, arg) {
145995    var called = false;
145996  
145997    return function _cleanupCallback(next) {
145998      if (!called) {
145999        const index = _removeObjects.indexOf(_cleanupCallback);
146000        if (index >= 0) {
146001          _removeObjects.splice(index, 1);
146002        }
146003  
146004        called = true;
146005        removeFunction(arg);
146006      }
146007  
146008      if (next) next(null);
146009    };
146010  }
146011  
146012  /**
146013   * The garbage collector.
146014   *
146015   * @private
146016   */
146017  function _garbageCollector() {
146018    if (_uncaughtException && !_gracefulCleanup) {
146019      return;
146020    }
146021  
146022    // the function being called removes itself from _removeObjects,
146023    // loop until _removeObjects is empty
146024    while (_removeObjects.length) {
146025      try {
146026        _removeObjects[0].call(null);
146027      } catch (e) {
146028        // already removed?
146029      }
146030    }
146031  }
146032  
146033  /**
146034   * Helper for testing against EBADF to compensate changes made to Node 7.x under Windows.
146035   */
146036  function isEBADF(error) {
146037    return isExpectedError(error, -EBADF, 'EBADF');
146038  }
146039  
146040  /**
146041   * Helper for testing against ENOENT to compensate changes made to Node 7.x under Windows.
146042   */
146043  function isENOENT(error) {
146044    return isExpectedError(error, -ENOENT, 'ENOENT');
146045  }
146046  
146047  /**
146048   * Helper to determine whether the expected error code matches the actual code and errno,
146049   * which will differ between the supported node versions.
146050   *
146051   * - Node >= 7.0:
146052   *   error.code {String}
146053   *   error.errno {String|Number} any numerical value will be negated
146054   *
146055   * - Node >= 6.0 < 7.0:
146056   *   error.code {String}
146057   *   error.errno {Number} negated
146058   *
146059   * - Node >= 4.0 < 6.0: introduces SystemError
146060   *   error.code {String}
146061   *   error.errno {Number} negated
146062   *
146063   * - Node >= 0.10 < 4.0:
146064   *   error.code {Number} negated
146065   *   error.errno n/a
146066   */
146067  function isExpectedError(error, code, errno) {
146068    return error.code == code || error.code == errno;
146069  }
146070  
146071  /**
146072   * Sets the graceful cleanup.
146073   *
146074   * Also removes the created files and directories when an uncaught exception occurs.
146075   */
146076  function setGracefulCleanup() {
146077    _gracefulCleanup = true;
146078  }
146079  
146080  const version = process.versions.node.split('.').map(function (value) {
146081    return parseInt(value, 10);
146082  });
146083  
146084  if (version[0] === 0 && (version[1] < 9 || version[1] === 9 && version[2] < 5)) {
146085    process.addListener('uncaughtException', function _uncaughtExceptionThrown(err) {
146086      _uncaughtException = true;
146087      _garbageCollector();
146088  
146089      throw err;
146090    });
146091  }
146092  
146093  process.addListener('exit', function _exit(code) {
146094    if (code) _uncaughtException = true;
146095    _garbageCollector();
146096  });
146097  
146098  /**
146099   * Configuration options.
146100   *
146101   * @typedef {Object} Options
146102   * @property {?number} tries the number of tries before give up the name generation
146103   * @property {?string} template the "mkstemp" like filename template
146104   * @property {?string} name fix name
146105   * @property {?string} dir the tmp directory to use
146106   * @property {?string} prefix prefix for the generated name
146107   * @property {?string} postfix postfix for the generated name
146108   */
146109  
146110  /**
146111   * @typedef {Object} FileSyncObject
146112   * @property {string} name the name of the file
146113   * @property {string} fd the file descriptor
146114   * @property {fileCallback} removeCallback the callback function to remove the file
146115   */
146116  
146117  /**
146118   * @typedef {Object} DirSyncObject
146119   * @property {string} name the name of the directory
146120   * @property {fileCallback} removeCallback the callback function to remove the directory
146121   */
146122  
146123  /**
146124   * @callback tmpNameCallback
146125   * @param {?Error} err the error object if anything goes wrong
146126   * @param {string} name the temporary file name
146127   */
146128  
146129  /**
146130   * @callback fileCallback
146131   * @param {?Error} err the error object if anything goes wrong
146132   * @param {string} name the temporary file name
146133   * @param {number} fd the file descriptor
146134   * @param {cleanupCallback} fn the cleanup callback function
146135   */
146136  
146137  /**
146138   * @callback dirCallback
146139   * @param {?Error} err the error object if anything goes wrong
146140   * @param {string} name the temporary file name
146141   * @param {cleanupCallback} fn the cleanup callback function
146142   */
146143  
146144  /**
146145   * Removes the temporary created file or directory.
146146   *
146147   * @callback cleanupCallback
146148   * @param {simpleCallback} [next] function to call after entry was removed
146149   */
146150  
146151  /**
146152   * Callback function for function composition.
146153   * @see {@link https://github.com/raszi/node-tmp/issues/57|raszi/node-tmp#57}
146154   *
146155   * @callback simpleCallback
146156   */
146157  
146158  // exporting all the needed methods
146159  module.exports.tmpdir = tmpDir;
146160  
146161  module.exports.dir = dir;
146162  module.exports.dirSync = dirSync;
146163  
146164  module.exports.file = file;
146165  module.exports.fileSync = fileSync;
146166  
146167  module.exports.tmpName = tmpName;
146168  module.exports.tmpNameSync = tmpNameSync;
146169  
146170  module.exports.setGracefulCleanup = setGracefulCleanup;
146171  
146172  
146173  /***/ }),
146174  /* 955 */
146175  /***/ (function(module, exports, __webpack_require__) {
146176  
146177  "use strict";
146178  
146179  
146180  var net = __webpack_require__(164)
146181    , tls = __webpack_require__(467)
146182    , http = __webpack_require__(87)
146183    , https = __webpack_require__(196)
146184    , events = __webpack_require__(77)
146185    , assert = __webpack_require__(28)
146186    , util = __webpack_require__(3)
146187    , Buffer = __webpack_require__(45).Buffer
146188    ;
146189  
146190  exports.httpOverHttp = httpOverHttp
146191  exports.httpsOverHttp = httpsOverHttp
146192  exports.httpOverHttps = httpOverHttps
146193  exports.httpsOverHttps = httpsOverHttps
146194  
146195  
146196  function httpOverHttp(options) {
146197    var agent = new TunnelingAgent(options)
146198    agent.request = http.request
146199    return agent
146200  }
146201  
146202  function httpsOverHttp(options) {
146203    var agent = new TunnelingAgent(options)
146204    agent.request = http.request
146205    agent.createSocket = createSecureSocket
146206    agent.defaultPort = 443
146207    return agent
146208  }
146209  
146210  function httpOverHttps(options) {
146211    var agent = new TunnelingAgent(options)
146212    agent.request = https.request
146213    return agent
146214  }
146215  
146216  function httpsOverHttps(options) {
146217    var agent = new TunnelingAgent(options)
146218    agent.request = https.request
146219    agent.createSocket = createSecureSocket
146220    agent.defaultPort = 443
146221    return agent
146222  }
146223  
146224  
146225  function TunnelingAgent(options) {
146226    var self = this
146227    self.options = options || {}
146228    self.proxyOptions = self.options.proxy || {}
146229    self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets
146230    self.requests = []
146231    self.sockets = []
146232  
146233    self.on('free', function onFree(socket, host, port) {
146234      for (var i = 0, len = self.requests.length; i < len; ++i) {
146235        var pending = self.requests[i]
146236        if (pending.host === host && pending.port === port) {
146237          // Detect the request to connect same origin server,
146238          // reuse the connection.
146239          self.requests.splice(i, 1)
146240          pending.request.onSocket(socket)
146241          return
146242        }
146243      }
146244      socket.destroy()
146245      self.removeSocket(socket)
146246    })
146247  }
146248  util.inherits(TunnelingAgent, events.EventEmitter)
146249  
146250  TunnelingAgent.prototype.addRequest = function addRequest(req, options) {
146251    var self = this
146252  
146253     // Legacy API: addRequest(req, host, port, path)
146254    if (typeof options === 'string') {
146255      options = {
146256        host: options,
146257        port: arguments[2],
146258        path: arguments[3]
146259      };
146260    }
146261  
146262    if (self.sockets.length >= this.maxSockets) {
146263      // We are over limit so we'll add it to the queue.
146264      self.requests.push({host: options.host, port: options.port, request: req})
146265      return
146266    }
146267  
146268    // If we are under maxSockets create a new one.
146269    self.createConnection({host: options.host, port: options.port, request: req})
146270  }
146271  
146272  TunnelingAgent.prototype.createConnection = function createConnection(pending) {
146273    var self = this
146274  
146275    self.createSocket(pending, function(socket) {
146276      socket.on('free', onFree)
146277      socket.on('close', onCloseOrRemove)
146278      socket.on('agentRemove', onCloseOrRemove)
146279      pending.request.onSocket(socket)
146280  
146281      function onFree() {
146282        self.emit('free', socket, pending.host, pending.port)
146283      }
146284  
146285      function onCloseOrRemove(err) {
146286        self.removeSocket(socket)
146287        socket.removeListener('free', onFree)
146288        socket.removeListener('close', onCloseOrRemove)
146289        socket.removeListener('agentRemove', onCloseOrRemove)
146290      }
146291    })
146292  }
146293  
146294  TunnelingAgent.prototype.createSocket = function createSocket(options, cb) {
146295    var self = this
146296    var placeholder = {}
146297    self.sockets.push(placeholder)
146298  
146299    var connectOptions = mergeOptions({}, self.proxyOptions,
146300      { method: 'CONNECT'
146301      , path: options.host + ':' + options.port
146302      , agent: false
146303      }
146304    )
146305    if (connectOptions.proxyAuth) {
146306      connectOptions.headers = connectOptions.headers || {}
146307      connectOptions.headers['Proxy-Authorization'] = 'Basic ' +
146308          Buffer.from(connectOptions.proxyAuth).toString('base64')
146309    }
146310  
146311    debug('making CONNECT request')
146312    var connectReq = self.request(connectOptions)
146313    connectReq.useChunkedEncodingByDefault = false // for v0.6
146314    connectReq.once('response', onResponse) // for v0.6
146315    connectReq.once('upgrade', onUpgrade)   // for v0.6
146316    connectReq.once('connect', onConnect)   // for v0.7 or later
146317    connectReq.once('error', onError)
146318    connectReq.end()
146319  
146320    function onResponse(res) {
146321      // Very hacky. This is necessary to avoid http-parser leaks.
146322      res.upgrade = true
146323    }
146324  
146325    function onUpgrade(res, socket, head) {
146326      // Hacky.
146327      process.nextTick(function() {
146328        onConnect(res, socket, head)
146329      })
146330    }
146331  
146332    function onConnect(res, socket, head) {
146333      connectReq.removeAllListeners()
146334      socket.removeAllListeners()
146335  
146336      if (res.statusCode === 200) {
146337        assert.equal(head.length, 0)
146338        debug('tunneling connection has established')
146339        self.sockets[self.sockets.indexOf(placeholder)] = socket
146340        cb(socket)
146341      } else {
146342        debug('tunneling socket could not be established, statusCode=%d', res.statusCode)
146343        var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode)
146344        error.code = 'ECONNRESET'
146345        options.request.emit('error', error)
146346        self.removeSocket(placeholder)
146347      }
146348    }
146349  
146350    function onError(cause) {
146351      connectReq.removeAllListeners()
146352  
146353      debug('tunneling socket could not be established, cause=%s\n', cause.message, cause.stack)
146354      var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message)
146355      error.code = 'ECONNRESET'
146356      options.request.emit('error', error)
146357      self.removeSocket(placeholder)
146358    }
146359  }
146360  
146361  TunnelingAgent.prototype.removeSocket = function removeSocket(socket) {
146362    var pos = this.sockets.indexOf(socket)
146363    if (pos === -1) return
146364  
146365    this.sockets.splice(pos, 1)
146366  
146367    var pending = this.requests.shift()
146368    if (pending) {
146369      // If we have pending requests and a socket gets closed a new one
146370      // needs to be created to take over in the pool for the one that closed.
146371      this.createConnection(pending)
146372    }
146373  }
146374  
146375  function createSecureSocket(options, cb) {
146376    var self = this
146377    TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {
146378      // 0 is dummy port for v0.6
146379      var secureSocket = tls.connect(0, mergeOptions({}, self.options,
146380        { servername: options.host
146381        , socket: socket
146382        }
146383      ))
146384      self.sockets[self.sockets.indexOf(socket)] = secureSocket
146385      cb(secureSocket)
146386    })
146387  }
146388  
146389  
146390  function mergeOptions(target) {
146391    for (var i = 1, len = arguments.length; i < len; ++i) {
146392      var overrides = arguments[i]
146393      if (typeof overrides === 'object') {
146394        var keys = Object.keys(overrides)
146395        for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {
146396          var k = keys[j]
146397          if (overrides[k] !== undefined) {
146398            target[k] = overrides[k]
146399          }
146400        }
146401      }
146402    }
146403    return target
146404  }
146405  
146406  
146407  var debug
146408  if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
146409    debug = function() {
146410      var args = Array.prototype.slice.call(arguments)
146411      if (typeof args[0] === 'string') {
146412        args[0] = 'TUNNEL: ' + args[0]
146413      } else {
146414        args.unshift('TUNNEL:')
146415      }
146416      console.error.apply(console, args)
146417    }
146418  } else {
146419    debug = function() {}
146420  }
146421  exports.debug = debug // for test
146422  
146423  
146424  /***/ }),
146425  /* 956 */
146426  /***/ (function(module, exports, __webpack_require__) {
146427  
146428  
146429  /**
146430   * For Node.js, simply re-export the core `util.deprecate` function.
146431   */
146432  
146433  module.exports = __webpack_require__(3).deprecate;
146434  
146435  
146436  /***/ }),
146437  /* 957 */
146438  /***/ (function(module, exports, __webpack_require__) {
146439  
146440  var rng = __webpack_require__(464);
146441  var bytesToUuid = __webpack_require__(463);
146442  
146443  // **`v1()` - Generate time-based UUID**
146444  //
146445  // Inspired by https://github.com/LiosK/UUID.js
146446  // and http://docs.python.org/library/uuid.html
146447  
146448  var _nodeId;
146449  var _clockseq;
146450  
146451  // Previous uuid creation time
146452  var _lastMSecs = 0;
146453  var _lastNSecs = 0;
146454  
146455  // See https://github.com/broofa/node-uuid for API details
146456  function v1(options, buf, offset) {
146457    var i = buf && offset || 0;
146458    var b = buf || [];
146459  
146460    options = options || {};
146461    var node = options.node || _nodeId;
146462    var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;
146463  
146464    // node and clockseq need to be initialized to random values if they're not
146465    // specified.  We do this lazily to minimize issues related to insufficient
146466    // system entropy.  See #189
146467    if (node == null || clockseq == null) {
146468      var seedBytes = rng();
146469      if (node == null) {
146470        // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
146471        node = _nodeId = [
146472          seedBytes[0] | 0x01,
146473          seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]
146474        ];
146475      }
146476      if (clockseq == null) {
146477        // Per 4.2.2, randomize (14 bit) clockseq
146478        clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;
146479      }
146480    }
146481  
146482    // UUID timestamps are 100 nano-second units since the Gregorian epoch,
146483    // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so
146484    // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
146485    // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
146486    var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();
146487  
146488    // Per 4.2.1.2, use count of uuid's generated during the current clock
146489    // cycle to simulate higher resolution clock
146490    var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;
146491  
146492    // Time since last uuid creation (in msecs)
146493    var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;
146494  
146495    // Per 4.2.1.2, Bump clockseq on clock regression
146496    if (dt < 0 && options.clockseq === undefined) {
146497      clockseq = clockseq + 1 & 0x3fff;
146498    }
146499  
146500    // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
146501    // time interval
146502    if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {
146503      nsecs = 0;
146504    }
146505  
146506    // Per 4.2.1.2 Throw error if too many uuids are requested
146507    if (nsecs >= 10000) {
146508      throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec');
146509    }
146510  
146511    _lastMSecs = msecs;
146512    _lastNSecs = nsecs;
146513    _clockseq = clockseq;
146514  
146515    // Per 4.1.4 - Convert from unix epoch to Gregorian epoch
146516    msecs += 12219292800000;
146517  
146518    // `time_low`
146519    var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
146520    b[i++] = tl >>> 24 & 0xff;
146521    b[i++] = tl >>> 16 & 0xff;
146522    b[i++] = tl >>> 8 & 0xff;
146523    b[i++] = tl & 0xff;
146524  
146525    // `time_mid`
146526    var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;
146527    b[i++] = tmh >>> 8 & 0xff;
146528    b[i++] = tmh & 0xff;
146529  
146530    // `time_high_and_version`
146531    b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
146532    b[i++] = tmh >>> 16 & 0xff;
146533  
146534    // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
146535    b[i++] = clockseq >>> 8 | 0x80;
146536  
146537    // `clock_seq_low`
146538    b[i++] = clockseq & 0xff;
146539  
146540    // `node`
146541    for (var n = 0; n < 6; ++n) {
146542      b[i + n] = node[n];
146543    }
146544  
146545    return buf ? buf : bytesToUuid(b);
146546  }
146547  
146548  module.exports = v1;
146549  
146550  
146551  /***/ }),
146552  /* 958 */
146553  /***/ (function(module, exports, __webpack_require__) {
146554  
146555  var rng = __webpack_require__(464);
146556  var bytesToUuid = __webpack_require__(463);
146557  
146558  function v4(options, buf, offset) {
146559    var i = buf && offset || 0;
146560  
146561    if (typeof(options) == 'string') {
146562      buf = options === 'binary' ? new Array(16) : null;
146563      options = null;
146564    }
146565    options = options || {};
146566  
146567    var rnds = options.random || (options.rng || rng)();
146568  
146569    // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
146570    rnds[6] = (rnds[6] & 0x0f) | 0x40;
146571    rnds[8] = (rnds[8] & 0x3f) | 0x80;
146572  
146573    // Copy bytes to buffer, if provided
146574    if (buf) {
146575      for (var ii = 0; ii < 16; ++ii) {
146576        buf[i + ii] = rnds[ii];
146577      }
146578    }
146579  
146580    return buf || bytesToUuid(rnds);
146581  }
146582  
146583  module.exports = v4;
146584  
146585  
146586  /***/ }),
146587  /* 959 */
146588  /***/ (function(module, exports, __webpack_require__) {
146589  
146590  var parse = __webpack_require__(452);
146591  var correct = __webpack_require__(935);
146592  
146593  var genericWarning = (
146594    'license should be ' +
146595    'a valid SPDX license expression (without "LicenseRef"), ' +
146596    '"UNLICENSED", or ' +
146597    '"SEE LICENSE IN <filename>"'
146598  );
146599  
146600  var fileReferenceRE = /^SEE LICEN[CS]E IN (.+)$/;
146601  
146602  function startsWith(prefix, string) {
146603    return string.slice(0, prefix.length) === prefix;
146604  }
146605  
146606  function usesLicenseRef(ast) {
146607    if (ast.hasOwnProperty('license')) {
146608      var license = ast.license;
146609      return (
146610        startsWith('LicenseRef', license) ||
146611        startsWith('DocumentRef', license)
146612      );
146613    } else {
146614      return (
146615        usesLicenseRef(ast.left) ||
146616        usesLicenseRef(ast.right)
146617      );
146618    }
146619  }
146620  
146621  module.exports = function(argument) {
146622    var ast;
146623  
146624    try {
146625      ast = parse(argument);
146626    } catch (e) {
146627      var match
146628      if (
146629        argument === 'UNLICENSED' ||
146630        argument === 'UNLICENCED'
146631      ) {
146632        return {
146633          validForOldPackages: true,
146634          validForNewPackages: true,
146635          unlicensed: true
146636        };
146637      } else if (match = fileReferenceRE.exec(argument)) {
146638        return {
146639          validForOldPackages: true,
146640          validForNewPackages: true,
146641          inFile: match[1]
146642        };
146643      } else {
146644        var result = {
146645          validForOldPackages: false,
146646          validForNewPackages: false,
146647          warnings: [genericWarning]
146648        };
146649        if (argument.trim().length !== 0) {
146650          var corrected = correct(argument);
146651          if (corrected) {
146652            result.warnings.push(
146653              'license is similar to the valid expression "' + corrected + '"'
146654            );
146655          }
146656        }
146657        return result;
146658      }
146659    }
146660  
146661    if (usesLicenseRef(ast)) {
146662      return {
146663        validForNewPackages: false,
146664        validForOldPackages: false,
146665        spdx: true,
146666        warnings: [genericWarning]
146667      };
146668    } else {
146669      return {
146670        validForNewPackages: true,
146671        validForOldPackages: true,
146672        spdx: true
146673      };
146674    }
146675  };
146676  
146677  
146678  /***/ }),
146679  /* 960 */
146680  /***/ (function(module, exports, __webpack_require__) {
146681  
146682  /*
146683   * verror.js: richer JavaScript errors
146684   */
146685  
146686  var mod_assertplus = __webpack_require__(16);
146687  var mod_util = __webpack_require__(3);
146688  
146689  var mod_extsprintf = __webpack_require__(961);
146690  var mod_isError = __webpack_require__(113).isError;
146691  var sprintf = mod_extsprintf.sprintf;
146692  
146693  /*
146694   * Public interface
146695   */
146696  
146697  /* So you can 'var VError = require('verror')' */
146698  module.exports = VError;
146699  /* For compatibility */
146700  VError.VError = VError;
146701  /* Other exported classes */
146702  VError.SError = SError;
146703  VError.WError = WError;
146704  VError.MultiError = MultiError;
146705  
146706  /*
146707   * Common function used to parse constructor arguments for VError, WError, and
146708   * SError.  Named arguments to this function:
146709   *
146710   *     strict		force strict interpretation of sprintf arguments, even
146711   *     			if the options in "argv" don't say so
146712   *
146713   *     argv		error's constructor arguments, which are to be
146714   *     			interpreted as described in README.md.  For quick
146715   *     			reference, "argv" has one of the following forms:
146716   *
146717   *          [ sprintf_args... ]           (argv[0] is a string)
146718   *          [ cause, sprintf_args... ]    (argv[0] is an Error)
146719   *          [ options, sprintf_args... ]  (argv[0] is an object)
146720   *
146721   * This function normalizes these forms, producing an object with the following
146722   * properties:
146723   *
146724   *    options           equivalent to "options" in third form.  This will never
146725   *    			be a direct reference to what the caller passed in
146726   *    			(i.e., it may be a shallow copy), so it can be freely
146727   *    			modified.
146728   *
146729   *    shortmessage      result of sprintf(sprintf_args), taking options.strict
146730   *    			into account as described in README.md.
146731   */
146732  function parseConstructorArguments(args)
146733  {
146734  	var argv, options, sprintf_args, shortmessage, k;
146735  
146736  	mod_assertplus.object(args, 'args');
146737  	mod_assertplus.bool(args.strict, 'args.strict');
146738  	mod_assertplus.array(args.argv, 'args.argv');
146739  	argv = args.argv;
146740  
146741  	/*
146742  	 * First, figure out which form of invocation we've been given.
146743  	 */
146744  	if (argv.length === 0) {
146745  		options = {};
146746  		sprintf_args = [];
146747  	} else if (mod_isError(argv[0])) {
146748  		options = { 'cause': argv[0] };
146749  		sprintf_args = argv.slice(1);
146750  	} else if (typeof (argv[0]) === 'object') {
146751  		options = {};
146752  		for (k in argv[0]) {
146753  			options[k] = argv[0][k];
146754  		}
146755  		sprintf_args = argv.slice(1);
146756  	} else {
146757  		mod_assertplus.string(argv[0],
146758  		    'first argument to VError, SError, or WError ' +
146759  		    'constructor must be a string, object, or Error');
146760  		options = {};
146761  		sprintf_args = argv;
146762  	}
146763  
146764  	/*
146765  	 * Now construct the error's message.
146766  	 *
146767  	 * extsprintf (which we invoke here with our caller's arguments in order
146768  	 * to construct this Error's message) is strict in its interpretation of
146769  	 * values to be processed by the "%s" specifier.  The value passed to
146770  	 * extsprintf must actually be a string or something convertible to a
146771  	 * String using .toString().  Passing other values (notably "null" and
146772  	 * "undefined") is considered a programmer error.  The assumption is
146773  	 * that if you actually want to print the string "null" or "undefined",
146774  	 * then that's easy to do that when you're calling extsprintf; on the
146775  	 * other hand, if you did NOT want that (i.e., there's actually a bug
146776  	 * where the program assumes some variable is non-null and tries to
146777  	 * print it, which might happen when constructing a packet or file in
146778  	 * some specific format), then it's better to stop immediately than
146779  	 * produce bogus output.
146780  	 *
146781  	 * However, sometimes the bug is only in the code calling VError, and a
146782  	 * programmer might prefer to have the error message contain "null" or
146783  	 * "undefined" rather than have the bug in the error path crash the
146784  	 * program (making the first bug harder to identify).  For that reason,
146785  	 * by default VError converts "null" or "undefined" arguments to their
146786  	 * string representations and passes those to extsprintf.  Programmers
146787  	 * desiring the strict behavior can use the SError class or pass the
146788  	 * "strict" option to the VError constructor.
146789  	 */
146790  	mod_assertplus.object(options);
146791  	if (!options.strict && !args.strict) {
146792  		sprintf_args = sprintf_args.map(function (a) {
146793  			return (a === null ? 'null' :
146794  			    a === undefined ? 'undefined' : a);
146795  		});
146796  	}
146797  
146798  	if (sprintf_args.length === 0) {
146799  		shortmessage = '';
146800  	} else {
146801  		shortmessage = sprintf.apply(null, sprintf_args);
146802  	}
146803  
146804  	return ({
146805  	    'options': options,
146806  	    'shortmessage': shortmessage
146807  	});
146808  }
146809  
146810  /*
146811   * See README.md for reference documentation.
146812   */
146813  function VError()
146814  {
146815  	var args, obj, parsed, cause, ctor, message, k;
146816  
146817  	args = Array.prototype.slice.call(arguments, 0);
146818  
146819  	/*
146820  	 * This is a regrettable pattern, but JavaScript's built-in Error class
146821  	 * is defined to work this way, so we allow the constructor to be called
146822  	 * without "new".
146823  	 */
146824  	if (!(this instanceof VError)) {
146825  		obj = Object.create(VError.prototype);
146826  		VError.apply(obj, arguments);
146827  		return (obj);
146828  	}
146829  
146830  	/*
146831  	 * For convenience and backwards compatibility, we support several
146832  	 * different calling forms.  Normalize them here.
146833  	 */
146834  	parsed = parseConstructorArguments({
146835  	    'argv': args,
146836  	    'strict': false
146837  	});
146838  
146839  	/*
146840  	 * If we've been given a name, apply it now.
146841  	 */
146842  	if (parsed.options.name) {
146843  		mod_assertplus.string(parsed.options.name,
146844  		    'error\'s "name" must be a string');
146845  		this.name = parsed.options.name;
146846  	}
146847  
146848  	/*
146849  	 * For debugging, we keep track of the original short message (attached
146850  	 * this Error particularly) separately from the complete message (which
146851  	 * includes the messages of our cause chain).
146852  	 */
146853  	this.jse_shortmsg = parsed.shortmessage;
146854  	message = parsed.shortmessage;
146855  
146856  	/*
146857  	 * If we've been given a cause, record a reference to it and update our
146858  	 * message appropriately.
146859  	 */
146860  	cause = parsed.options.cause;
146861  	if (cause) {
146862  		mod_assertplus.ok(mod_isError(cause), 'cause is not an Error');
146863  		this.jse_cause = cause;
146864  
146865  		if (!parsed.options.skipCauseMessage) {
146866  			message += ': ' + cause.message;
146867  		}
146868  	}
146869  
146870  	/*
146871  	 * If we've been given an object with properties, shallow-copy that
146872  	 * here.  We don't want to use a deep copy in case there are non-plain
146873  	 * objects here, but we don't want to use the original object in case
146874  	 * the caller modifies it later.
146875  	 */
146876  	this.jse_info = {};
146877  	if (parsed.options.info) {
146878  		for (k in parsed.options.info) {
146879  			this.jse_info[k] = parsed.options.info[k];
146880  		}
146881  	}
146882  
146883  	this.message = message;
146884  	Error.call(this, message);
146885  
146886  	if (Error.captureStackTrace) {
146887  		ctor = parsed.options.constructorOpt || this.constructor;
146888  		Error.captureStackTrace(this, ctor);
146889  	}
146890  
146891  	return (this);
146892  }
146893  
146894  mod_util.inherits(VError, Error);
146895  VError.prototype.name = 'VError';
146896  
146897  VError.prototype.toString = function ve_toString()
146898  {
146899  	var str = (this.hasOwnProperty('name') && this.name ||
146900  		this.constructor.name || this.constructor.prototype.name);
146901  	if (this.message)
146902  		str += ': ' + this.message;
146903  
146904  	return (str);
146905  };
146906  
146907  /*
146908   * This method is provided for compatibility.  New callers should use
146909   * VError.cause() instead.  That method also uses the saner `null` return value
146910   * when there is no cause.
146911   */
146912  VError.prototype.cause = function ve_cause()
146913  {
146914  	var cause = VError.cause(this);
146915  	return (cause === null ? undefined : cause);
146916  };
146917  
146918  /*
146919   * Static methods
146920   *
146921   * These class-level methods are provided so that callers can use them on
146922   * instances of Errors that are not VErrors.  New interfaces should be provided
146923   * only using static methods to eliminate the class of programming mistake where
146924   * people fail to check whether the Error object has the corresponding methods.
146925   */
146926  
146927  VError.cause = function (err)
146928  {
146929  	mod_assertplus.ok(mod_isError(err), 'err must be an Error');
146930  	return (mod_isError(err.jse_cause) ? err.jse_cause : null);
146931  };
146932  
146933  VError.info = function (err)
146934  {
146935  	var rv, cause, k;
146936  
146937  	mod_assertplus.ok(mod_isError(err), 'err must be an Error');
146938  	cause = VError.cause(err);
146939  	if (cause !== null) {
146940  		rv = VError.info(cause);
146941  	} else {
146942  		rv = {};
146943  	}
146944  
146945  	if (typeof (err.jse_info) == 'object' && err.jse_info !== null) {
146946  		for (k in err.jse_info) {
146947  			rv[k] = err.jse_info[k];
146948  		}
146949  	}
146950  
146951  	return (rv);
146952  };
146953  
146954  VError.findCauseByName = function (err, name)
146955  {
146956  	var cause;
146957  
146958  	mod_assertplus.ok(mod_isError(err), 'err must be an Error');
146959  	mod_assertplus.string(name, 'name');
146960  	mod_assertplus.ok(name.length > 0, 'name cannot be empty');
146961  
146962  	for (cause = err; cause !== null; cause = VError.cause(cause)) {
146963  		mod_assertplus.ok(mod_isError(cause));
146964  		if (cause.name == name) {
146965  			return (cause);
146966  		}
146967  	}
146968  
146969  	return (null);
146970  };
146971  
146972  VError.hasCauseWithName = function (err, name)
146973  {
146974  	return (VError.findCauseByName(err, name) !== null);
146975  };
146976  
146977  VError.fullStack = function (err)
146978  {
146979  	mod_assertplus.ok(mod_isError(err), 'err must be an Error');
146980  
146981  	var cause = VError.cause(err);
146982  
146983  	if (cause) {
146984  		return (err.stack + '\ncaused by: ' + VError.fullStack(cause));
146985  	}
146986  
146987  	return (err.stack);
146988  };
146989  
146990  VError.errorFromList = function (errors)
146991  {
146992  	mod_assertplus.arrayOfObject(errors, 'errors');
146993  
146994  	if (errors.length === 0) {
146995  		return (null);
146996  	}
146997  
146998  	errors.forEach(function (e) {
146999  		mod_assertplus.ok(mod_isError(e));
147000  	});
147001  
147002  	if (errors.length == 1) {
147003  		return (errors[0]);
147004  	}
147005  
147006  	return (new MultiError(errors));
147007  };
147008  
147009  VError.errorForEach = function (err, func)
147010  {
147011  	mod_assertplus.ok(mod_isError(err), 'err must be an Error');
147012  	mod_assertplus.func(func, 'func');
147013  
147014  	if (err instanceof MultiError) {
147015  		err.errors().forEach(function iterError(e) { func(e); });
147016  	} else {
147017  		func(err);
147018  	}
147019  };
147020  
147021  
147022  /*
147023   * SError is like VError, but stricter about types.  You cannot pass "null" or
147024   * "undefined" as string arguments to the formatter.
147025   */
147026  function SError()
147027  {
147028  	var args, obj, parsed, options;
147029  
147030  	args = Array.prototype.slice.call(arguments, 0);
147031  	if (!(this instanceof SError)) {
147032  		obj = Object.create(SError.prototype);
147033  		SError.apply(obj, arguments);
147034  		return (obj);
147035  	}
147036  
147037  	parsed = parseConstructorArguments({
147038  	    'argv': args,
147039  	    'strict': true
147040  	});
147041  
147042  	options = parsed.options;
147043  	VError.call(this, options, '%s', parsed.shortmessage);
147044  
147045  	return (this);
147046  }
147047  
147048  /*
147049   * We don't bother setting SError.prototype.name because once constructed,
147050   * SErrors are just like VErrors.
147051   */
147052  mod_util.inherits(SError, VError);
147053  
147054  
147055  /*
147056   * Represents a collection of errors for the purpose of consumers that generally
147057   * only deal with one error.  Callers can extract the individual errors
147058   * contained in this object, but may also just treat it as a normal single
147059   * error, in which case a summary message will be printed.
147060   */
147061  function MultiError(errors)
147062  {
147063  	mod_assertplus.array(errors, 'list of errors');
147064  	mod_assertplus.ok(errors.length > 0, 'must be at least one error');
147065  	this.ase_errors = errors;
147066  
147067  	VError.call(this, {
147068  	    'cause': errors[0]
147069  	}, 'first of %d error%s', errors.length, errors.length == 1 ? '' : 's');
147070  }
147071  
147072  mod_util.inherits(MultiError, VError);
147073  MultiError.prototype.name = 'MultiError';
147074  
147075  MultiError.prototype.errors = function me_errors()
147076  {
147077  	return (this.ase_errors.slice(0));
147078  };
147079  
147080  
147081  /*
147082   * See README.md for reference details.
147083   */
147084  function WError()
147085  {
147086  	var args, obj, parsed, options;
147087  
147088  	args = Array.prototype.slice.call(arguments, 0);
147089  	if (!(this instanceof WError)) {
147090  		obj = Object.create(WError.prototype);
147091  		WError.apply(obj, args);
147092  		return (obj);
147093  	}
147094  
147095  	parsed = parseConstructorArguments({
147096  	    'argv': args,
147097  	    'strict': false
147098  	});
147099  
147100  	options = parsed.options;
147101  	options['skipCauseMessage'] = true;
147102  	VError.call(this, options, '%s', parsed.shortmessage);
147103  
147104  	return (this);
147105  }
147106  
147107  mod_util.inherits(WError, VError);
147108  WError.prototype.name = 'WError';
147109  
147110  WError.prototype.toString = function we_toString()
147111  {
147112  	var str = (this.hasOwnProperty('name') && this.name ||
147113  		this.constructor.name || this.constructor.prototype.name);
147114  	if (this.message)
147115  		str += ': ' + this.message;
147116  	if (this.jse_cause && this.jse_cause.message)
147117  		str += '; caused by ' + this.jse_cause.toString();
147118  
147119  	return (str);
147120  };
147121  
147122  /*
147123   * For purely historical reasons, WError's cause() function allows you to set
147124   * the cause.
147125   */
147126  WError.prototype.cause = function we_cause(c)
147127  {
147128  	if (mod_isError(c))
147129  		this.jse_cause = c;
147130  
147131  	return (this.jse_cause);
147132  };
147133  
147134  
147135  /***/ }),
147136  /* 961 */
147137  /***/ (function(module, exports, __webpack_require__) {
147138  
147139  /*
147140   * extsprintf.js: extended POSIX-style sprintf
147141   */
147142  
147143  var mod_assert = __webpack_require__(28);
147144  var mod_util = __webpack_require__(3);
147145  
147146  /*
147147   * Public interface
147148   */
147149  exports.sprintf = jsSprintf;
147150  exports.printf = jsPrintf;
147151  exports.fprintf = jsFprintf;
147152  
147153  /*
147154   * Stripped down version of s[n]printf(3c).  We make a best effort to throw an
147155   * exception when given a format string we don't understand, rather than
147156   * ignoring it, so that we won't break existing programs if/when we go implement
147157   * the rest of this.
147158   *
147159   * This implementation currently supports specifying
147160   *	- field alignment ('-' flag),
147161   * 	- zero-pad ('0' flag)
147162   *	- always show numeric sign ('+' flag),
147163   *	- field width
147164   *	- conversions for strings, decimal integers, and floats (numbers).
147165   *	- argument size specifiers.  These are all accepted but ignored, since
147166   *	  Javascript has no notion of the physical size of an argument.
147167   *
147168   * Everything else is currently unsupported, most notably precision, unsigned
147169   * numbers, non-decimal numbers, and characters.
147170   */
147171  function jsSprintf(ofmt)
147172  {
147173  	var regex = [
147174  	    '([^%]*)',				/* normal text */
147175  	    '%',				/* start of format */
147176  	    '([\'\\-+ #0]*?)',			/* flags (optional) */
147177  	    '([1-9]\\d*)?',			/* width (optional) */
147178  	    '(\\.([1-9]\\d*))?',		/* precision (optional) */
147179  	    '[lhjztL]*?',			/* length mods (ignored) */
147180  	    '([diouxXfFeEgGaAcCsSp%jr])'	/* conversion */
147181  	].join('');
147182  
147183  	var re = new RegExp(regex);
147184  
147185  	/* variadic arguments used to fill in conversion specifiers */
147186  	var args = Array.prototype.slice.call(arguments, 1);
147187  	/* remaining format string */
147188  	var fmt = ofmt;
147189  
147190  	/* components of the current conversion specifier */
147191  	var flags, width, precision, conversion;
147192  	var left, pad, sign, arg, match;
147193  
147194  	/* return value */
147195  	var ret = '';
147196  
147197  	/* current variadic argument (1-based) */
147198  	var argn = 1;
147199  	/* 0-based position in the format string that we've read */
147200  	var posn = 0;
147201  	/* 1-based position in the format string of the current conversion */
147202  	var convposn;
147203  	/* current conversion specifier */
147204  	var curconv;
147205  
147206  	mod_assert.equal('string', typeof (fmt),
147207  	    'first argument must be a format string');
147208  
147209  	while ((match = re.exec(fmt)) !== null) {
147210  		ret += match[1];
147211  		fmt = fmt.substring(match[0].length);
147212  
147213  		/*
147214  		 * Update flags related to the current conversion specifier's
147215  		 * position so that we can report clear error messages.
147216  		 */
147217  		curconv = match[0].substring(match[1].length);
147218  		convposn = posn + match[1].length + 1;
147219  		posn += match[0].length;
147220  
147221  		flags = match[2] || '';
147222  		width = match[3] || 0;
147223  		precision = match[4] || '';
147224  		conversion = match[6];
147225  		left = false;
147226  		sign = false;
147227  		pad = ' ';
147228  
147229  		if (conversion == '%') {
147230  			ret += '%';
147231  			continue;
147232  		}
147233  
147234  		if (args.length === 0) {
147235  			throw (jsError(ofmt, convposn, curconv,
147236  			    'has no matching argument ' +
147237  			    '(too few arguments passed)'));
147238  		}
147239  
147240  		arg = args.shift();
147241  		argn++;
147242  
147243  		if (flags.match(/[\' #]/)) {
147244  			throw (jsError(ofmt, convposn, curconv,
147245  			    'uses unsupported flags'));
147246  		}
147247  
147248  		if (precision.length > 0) {
147249  			throw (jsError(ofmt, convposn, curconv,
147250  			    'uses non-zero precision (not supported)'));
147251  		}
147252  
147253  		if (flags.match(/-/))
147254  			left = true;
147255  
147256  		if (flags.match(/0/))
147257  			pad = '0';
147258  
147259  		if (flags.match(/\+/))
147260  			sign = true;
147261  
147262  		switch (conversion) {
147263  		case 's':
147264  			if (arg === undefined || arg === null) {
147265  				throw (jsError(ofmt, convposn, curconv,
147266  				    'attempted to print undefined or null ' +
147267  				    'as a string (argument ' + argn + ' to ' +
147268  				    'sprintf)'));
147269  			}
147270  			ret += doPad(pad, width, left, arg.toString());
147271  			break;
147272  
147273  		case 'd':
147274  			arg = Math.floor(arg);
147275  			/*jsl:fallthru*/
147276  		case 'f':
147277  			sign = sign && arg > 0 ? '+' : '';
147278  			ret += sign + doPad(pad, width, left,
147279  			    arg.toString());
147280  			break;
147281  
147282  		case 'x':
147283  			ret += doPad(pad, width, left, arg.toString(16));
147284  			break;
147285  
147286  		case 'j': /* non-standard */
147287  			if (width === 0)
147288  				width = 10;
147289  			ret += mod_util.inspect(arg, false, width);
147290  			break;
147291  
147292  		case 'r': /* non-standard */
147293  			ret += dumpException(arg);
147294  			break;
147295  
147296  		default:
147297  			throw (jsError(ofmt, convposn, curconv,
147298  			    'is not supported'));
147299  		}
147300  	}
147301  
147302  	ret += fmt;
147303  	return (ret);
147304  }
147305  
147306  function jsError(fmtstr, convposn, curconv, reason) {
147307  	mod_assert.equal(typeof (fmtstr), 'string');
147308  	mod_assert.equal(typeof (curconv), 'string');
147309  	mod_assert.equal(typeof (convposn), 'number');
147310  	mod_assert.equal(typeof (reason), 'string');
147311  	return (new Error('format string "' + fmtstr +
147312  	    '": conversion specifier "' + curconv + '" at character ' +
147313  	    convposn + ' ' + reason));
147314  }
147315  
147316  function jsPrintf() {
147317  	var args = Array.prototype.slice.call(arguments);
147318  	args.unshift(process.stdout);
147319  	jsFprintf.apply(null, args);
147320  }
147321  
147322  function jsFprintf(stream) {
147323  	var args = Array.prototype.slice.call(arguments, 1);
147324  	return (stream.write(jsSprintf.apply(this, args)));
147325  }
147326  
147327  function doPad(chr, width, left, str)
147328  {
147329  	var ret = str;
147330  
147331  	while (ret.length < width) {
147332  		if (left)
147333  			ret += chr;
147334  		else
147335  			ret = chr + ret;
147336  	}
147337  
147338  	return (ret);
147339  }
147340  
147341  /*
147342   * This function dumps long stack traces for exceptions having a cause() method.
147343   * See node-verror for an example.
147344   */
147345  function dumpException(ex)
147346  {
147347  	var ret;
147348  
147349  	if (!(ex instanceof Error))
147350  		throw (new Error(jsSprintf('invalid type for %%r: %j', ex)));
147351  
147352  	/* Note that V8 prepends "ex.stack" with ex.toString(). */
147353  	ret = 'EXCEPTION: ' + ex.constructor.name + ': ' + ex.stack;
147354  
147355  	if (ex.cause && typeof (ex.cause) === 'function') {
147356  		var cex = ex.cause();
147357  		if (cex) {
147358  			ret += '\nCaused by: ' + dumpException(cex);
147359  		}
147360  	}
147361  
147362  	return (ret);
147363  }
147364  
147365  
147366  /***/ }),
147367  /* 962 */
147368  /***/ (function(module, exports, __webpack_require__) {
147369  
147370  "use strict";
147371  
147372  const lenient = __webpack_require__(963);
147373  
147374  module.exports = (val, opts) => {
147375  	val = String(val).trim();
147376  	opts = Object.assign({
147377  		lenient: false,
147378  		default: null
147379  	}, opts);
147380  
147381  	if (opts.default !== null && typeof opts.default !== 'boolean') {
147382  		throw new TypeError(`Expected the \`default\` option to be of type \`boolean\`, got \`${typeof opts.default}\``);
147383  	}
147384  
147385  	if (/^(?:y|yes|true|1)$/i.test(val)) {
147386  		return true;
147387  	}
147388  
147389  	if (/^(?:n|no|false|0)$/i.test(val)) {
147390  		return false;
147391  	}
147392  
147393  	if (opts.lenient === true) {
147394  		return lenient(val, opts);
147395  	}
147396  
147397  	return opts.default;
147398  };
147399  
147400  
147401  /***/ }),
147402  /* 963 */
147403  /***/ (function(module, exports, __webpack_require__) {
147404  
147405  "use strict";
147406  
147407  
147408  const YES_MATCH_SCORE_THRESHOLD = 2;
147409  const NO_MATCH_SCORE_THRESHOLD = 1.25;
147410  
147411  const yMatch = new Map([
147412  	[5, 0.25],
147413  	[6, 0.25],
147414  	[7, 0.25],
147415  	['t', 0.75],
147416  	['y', 1],
147417  	['u', 0.75],
147418  	['g', 0.25],
147419  	['h', 0.25],
147420  	['k', 0.25]
147421  ]);
147422  
147423  const eMatch = new Map([
147424  	[2, 0.25],
147425  	[3, 0.25],
147426  	[4, 0.25],
147427  	['w', 0.75],
147428  	['e', 1],
147429  	['r', 0.75],
147430  	['s', 0.25],
147431  	['d', 0.25],
147432  	['f', 0.25]
147433  ]);
147434  
147435  const sMatch = new Map([
147436  	['q', 0.25],
147437  	['w', 0.25],
147438  	['e', 0.25],
147439  	['a', 0.75],
147440  	['s', 1],
147441  	['d', 0.75],
147442  	['z', 0.25],
147443  	['x', 0.25],
147444  	['c', 0.25]
147445  ]);
147446  
147447  const nMatch = new Map([
147448  	['h', 0.25],
147449  	['j', 0.25],
147450  	['k', 0.25],
147451  	['b', 0.75],
147452  	['n', 1],
147453  	['m', 0.75]
147454  ]);
147455  
147456  const oMatch = new Map([
147457  	[9, 0.25],
147458  	[0, 0.25],
147459  	['i', 0.75],
147460  	['o', 1],
147461  	['p', 0.75],
147462  	['k', 0.25],
147463  	['l', 0.25]
147464  ]);
147465  
147466  function getYesMatchScore(val) {
147467  	let score = 0;
147468  	const y = val[0];
147469  	const e = val[1];
147470  	const s = val[2];
147471  
147472  	if (yMatch.has(y)) {
147473  		score += yMatch.get(y);
147474  	}
147475  
147476  	if (eMatch.has(e)) {
147477  		score += eMatch.get(e);
147478  	}
147479  
147480  	if (sMatch.has(s)) {
147481  		score += sMatch.get(s);
147482  	}
147483  
147484  	return score;
147485  }
147486  
147487  function getNoMatchScore(val) {
147488  	let score = 0;
147489  	const n = val[0];
147490  	const o = val[1];
147491  
147492  	if (nMatch.has(n)) {
147493  		score += nMatch.get(n);
147494  	}
147495  
147496  	if (oMatch.has(o)) {
147497  		score += oMatch.get(o);
147498  	}
147499  
147500  	return score;
147501  }
147502  
147503  module.exports = (val, opts) => {
147504  	if (getYesMatchScore(val) >= YES_MATCH_SCORE_THRESHOLD) {
147505  		return true;
147506  	}
147507  
147508  	if (getNoMatchScore(val) >= NO_MATCH_SCORE_THRESHOLD) {
147509  		return false;
147510  	}
147511  
147512  	return opts.default;
147513  };
147514  
147515  
147516  /***/ }),
147517  /* 964 */
147518  /***/ (function(module, exports) {
147519  
147520  module.exports = require("dns");
147521  
147522  /***/ }),
147523  /* 965 */
147524  /***/ (function(module, exports) {
147525  
147526  module.exports = require("domain");
147527  
147528  /***/ })
147529  /******/ ]);