diff --git a/.babelrc b/.babelrc
index aaae53f..7ae6b7b 100644
--- a/.babelrc
+++ b/.babelrc
@@ -1,6 +1,11 @@
{
"presets": [
- [ "es2015", "stage-0" ]
+ [
+ "env", {
+ "loose": true,
+ "modules": false
+ }
+ ]
],
- "plugins": [ "transform-flow-strip-types", "transform-async-to-generator" ]
+ "plugins": [ "transform-flow-strip-types", "transform-async-to-generator", "transform-strict-mode" ]
}
diff --git a/.eslintrc.json b/.eslintrc.json
new file mode 100644
index 0000000..13bf469
--- /dev/null
+++ b/.eslintrc.json
@@ -0,0 +1,58 @@
+{
+ "env": {
+ "browser": true,
+ "node": true
+ },
+ "plugins": [
+ "flowtype"
+ ],
+ "parser": "babel-eslint",
+ "parserOptions": {
+ "ecmaVersion": 6,
+ "sourceType": "module"
+ },
+ "extends": "google",
+ "rules": {
+
+ "array-bracket-spacing": [
+ 2,
+ "always",
+ {
+ "objectsInArrays": false,
+ "arraysInArrays": false
+ }
+ ],
+ "brace-style": [
+ 2,
+ "stroustrup",
+ {
+ "allowSingleLine": true
+ }
+ ],
+ "flowtype/space-after-type-colon": [
+ 2,
+ "always"
+ ],
+ "linebreak-style": "off",
+ "max-len": [
+ 2,
+ 120,
+ { "ignoreStrings": true }
+ ],
+ "no-invalid-this": "off",
+ "object-curly-spacing": [
+ 2,
+ "always",
+ {
+ "objectsInObjects": false,
+ "arraysInObjects": false
+ }
+ ],
+ "semi": [
+ 2,
+ "always"
+ ],
+ "space-before-function-paren": "off",
+ "valid-jsdoc": "off"
+ }
+}
diff --git a/.gitignore b/.gitignore
index 9f5bdd1..6ba41be 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,7 @@
# See http://help.github.com/ignore-files/ for more about ignoring files.
# compiled output
-# /dist
+/dist
/tmp
# dependencies
diff --git a/.make-packages.js b/.make-packages.js
new file mode 100644
index 0000000..2d2cf1a
--- /dev/null
+++ b/.make-packages.js
@@ -0,0 +1,153 @@
+"use strict";
+
+let pkg = require('./package.json');
+let fs = require('fs-extra');
+let mkdirp = require('mkdirp');
+let path = require('path');
+let klawSync = require('klaw-sync');
+let licenseTool = require('./tools/add-license-to-file');
+let addLicenseToFile = licenseTool.addLicenseToFile;
+let addLicenseTextToFile = licenseTool.addLicenseTextToFile;
+let bo = null;
+// Build Optimizer is not available on Node 4.x. Using a try/catch
+// here to make sure the build passes on Travis using Node 4, but
+// the NPM distribution will run through build-optimizer.
+try {
+ bo = require('@angular-devkit/build-optimizer');
+} catch (e) {}
+
+const ROOT = 'dist/';
+const CJS_ROOT = ROOT + 'cjs/';
+const ESM5_ROOT = ROOT + 'esm5/';
+const ESM2015_ROOT = ROOT + 'esm2015/';
+const UMD_ROOT = ROOT + 'global/';
+const TYPE_ROOT = ROOT + 'typings/';
+const PKG_ROOT = ROOT + 'package/';
+const CJS_PKG = PKG_ROOT + '';
+const ESM5_PKG = PKG_ROOT + '_esm5/';
+const ESM2015_PKG = PKG_ROOT + '_esm2015/';
+const UMD_PKG = PKG_ROOT + 'bundles/';
+const TYPE_PKG = PKG_ROOT;
+
+const EXPORT_FILE = 'index.js';
+
+// License info for minified files
+let licenseUrl = 'https://github.com/json-schema-form/json-schema-form-core/blob/master/LICENSE.txt';
+let license = 'MIT ' + licenseUrl;
+
+delete pkg.scripts;
+delete pkg['scripts-info'];
+fs.removeSync(PKG_ROOT);
+
+let rootPackageJson = Object.assign({}, pkg, {
+ name: 'core.js',
+ main: './Core.js',
+ typings: './Core.d.ts'
+});
+
+// Get a list of the file names
+const fileNames = klawSync(CJS_ROOT, {
+ nodir: true,
+ filter: function(item) {
+ return item.path.endsWith('.js');
+ }
+})
+.map(item => item.path)
+.map(path => path.slice((`${__dirname}/${CJS_ROOT}`).length));
+
+// Execute build optimizer transforms on ESM5 files
+fileNames.map(fileName => {
+ if (!bo) return fileName;
+ let fullPath = path.resolve(__dirname, ESM5_ROOT, fileName);
+ let content = fs.readFileSync(fullPath).toString();
+ let transformed = bo.transformJavascript({
+ content: content,
+ getTransforms: [bo.getPrefixClassesTransformer, bo.getPrefixFunctionsTransformer, bo.getFoldFileTransformer]
+ });
+ fs.writeFileSync(fullPath, transformed.content);
+ return fileName;
+});
+// Create an object hash mapping imports to file names
+const fileMappings = fileNames.reduce((acc, fileName) => {
+ // Get the name of the file to be the new directory
+ const directory = fileName.slice(0, fileName.length - 3);
+
+ acc[directory] = fileName;
+ return acc;
+}, {});
+
+// For node-resolved imports (rxjs/operators resolves to rxjs/operators/index.js), Webpack's "alias"
+// functionality requires that the most broad mapping (rxjs/operators) be at the end of the alias
+// mapping object. Created Webpack issue: https://github.com/webpack/webpack/issues/5870
+const importTargets = Object.assign({}, fileMappings, fileNames.reduce((acc, fileName) => {
+ // If the fileName is index.js (re-export file), create another entry
+ // for the root of the export. Example:
+ // fileName = 'rxjs/operators/index.js'
+ // create entry:
+ // {'rxjs/operators': 'rxjs/operators/index.js'}
+ if (fileName.slice(fileName.length - EXPORT_FILE.length) === EXPORT_FILE) {
+ acc[fileName.slice(0, EXPORT_FILE.length + 1)] = fileName;
+ }
+ return acc;
+}, {}));
+
+createImportTargets(importTargets, "_esm5/", ESM5_PKG);
+createImportTargets(importTargets, "_esm2015/", ESM2015_PKG);
+
+// Make the distribution folder
+mkdirp.sync(PKG_ROOT);
+
+// Copy over the sources
+copySources('src/', PKG_ROOT + 'src/');
+copySources(CJS_ROOT, CJS_PKG);
+fs.copySync(TYPE_ROOT, TYPE_PKG);
+
+copySources(ESM5_ROOT, ESM5_PKG, true);
+copySources(ESM2015_ROOT, ESM2015_PKG, true);
+
+
+fs.writeJsonSync(PKG_ROOT + 'package.json', rootPackageJson, { spaces: 2 });
+
+if (fs.existsSync(UMD_ROOT)) {
+ fs.copySync(UMD_ROOT, UMD_PKG);
+ // Add licenses to tops of bundles
+ addLicenseToFile('LICENSE.txt', UMD_PKG + 'Core.js');
+ addLicenseTextToFile(license, UMD_PKG + 'Core.min.js');
+ addLicenseToFile('LICENSE.txt', UMD_PKG + 'Core.js');
+ addLicenseTextToFile(license, UMD_PKG + 'Core.min.js');
+}
+
+function copySources(rootDir, packageDir, ignoreMissing) {
+ // If we are ignoring missing directories, early return when source doesn't exist
+ if (!fs.existsSync(rootDir)) {
+ if (ignoreMissing) {
+ return;
+ } else {
+ throw "Source root dir does not exist!";
+ }
+ }
+ // Copy over the CommonJS files
+ fs.copySync(rootDir, packageDir);
+ fs.copySync('./LICENSE.txt', packageDir + 'LICENSE.txt');
+ fs.copySync('./README.md', packageDir + 'README.md');
+}
+
+// Create a file that exports the importTargets object
+function createImportTargets(importTargets, targetName, targetDirectory) {
+ const importMap = {};
+ for (const x in importTargets) {
+ importMap['json-schema-form-core/' + x] = 'json-schema-form-core/' + targetName + importTargets[x];
+ }
+
+ const outputData =
+`
+"use strict"
+var path = require('path');
+var dir = path.resolve(__dirname);
+module.exports = function() {
+ return ${JSON.stringify(importMap, null, 4).replace(/(: )"json-schema-form-core\/_esm(5|2015)\/(.+")(,?)/g, "$1path.join(dir, \"$3)$4")};
+}
+`
+
+ fs.outputFileSync(targetDirectory + 'path-mapping.js', outputData);
+}
diff --git a/.mocha b/.mocha
deleted file mode 100644
index 866ca5e..0000000
--- a/.mocha
+++ /dev/null
@@ -1,5 +0,0 @@
---compilers js:babel-register
---require babel-polyfill
---reporter spec
---watch-extensions js
-src/**/*.spec.js
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..0fdd83e
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,90 @@
+Contributing
+============
+ - [How to setup to develop](#setup)
+ - [How to build the package](#build)
+ - [Working on the libraries](#work)
+ - [PR requirements](#requirements)
+
+
+## How to setup to develop
+To get started clone all json-schema-form library repos into sibling folders.
+ json-schema-form-core
+ angular-schema-form
+ angular-schema-form-bootstrap
+ angular-schema-form-material
+
+Once cloned each repo has npm commands for assisting development
+```bash
+# Run unit tests
+npm run test
+
+# Run the build
+npm run build
+
+# Run the build and minify
+npm run dist # not in json-schema-form-core
+
+# Run the build and watch for changes
+npm run watch
+```
+
+
+## How to build the package
+When working on `angular-schema-form` running the `npm build` will look for a sibling
+folder when importing `json-schema-form-core`. This allows you to work on bugs or
+issues that require work on both libraries simultaneously.
+
+This is set up for bootstrap and material design decorators also.
+
+The bootstrap repo is required to build `angular-schema-form` with the bootstrap
+decorator bundle distribution.
+
+
+## Working on the libraries
+When I work on the libraries I use a multi-tab console tool like
+Terminator (Linux) or ConEmu (Windows)
+
+Run each of the following in a separate tab:
+```bash
+json-schema-form-core> npm run watch
+json-schema-form-core> npm run test
+angular-schema-form> npm run watch
+angular-schema-form> npm run test
+```
+This will re-compile all the libraries after changes that affect them which
+then runs the related tests.
+
+A static file web server is required to run the examples, but the example
+can be used to run saved gist of the example app. It can help to add a model
+to one of the example app json files to test with.
+
+
+## PR requirements
+We love contributions!
+
+**Please base any merge request on the _development_ branch instead of _master_.**
+
+The reason for this is that we're trying to use
+[git flow](http://danielkummer.github.io/git-flow-cheatsheet/), and it makes merging your pull
+request a heck of a lot easier for us.
+
+Please **avoid including anything from the `dist/`** directory as that can make merging harder, and we
+always generate these files when we make a new release.
+
+**If you are using this library with another repo other than *ASF* it must still maintain compatibility
+with *ASF* which is why the instructions for *ASF* are above**, eventually there will be enough test
+cases that you wont need to test both, but we aren't there yet.
+
+**The bootstrap decorator, has been moved to it's own repo. It's here [github.com/json-schema-form/angular-schema-form-bootstrap](https://github.com/json-schema-form/angular-schema-form-bootstrap)**
+
+Feel free to submit issues on the main repo anyway though.
+
+If its a new field type consider making it an add-on instead,
+especially if it has external dependencies. See [extending Schema Form documentation.](docs/extending.md)
+
+With new features we love to see updates to the docs as well as tests, that makes it super
+easy and fast for us to merge it!
+
+Also consider running any code through the code style checker [jscs](https://github.com/mdevils/node-jscs)
+(or even better use it in your editor) with preset set to `google`. You can also
+use `gulp jscs` to check your code. I hope to set up ESLint in the not too distant future.
diff --git a/LICENSE b/LICENSE.txt
similarity index 100%
rename from LICENSE
rename to LICENSE.txt
diff --git a/Tools/add-license-to-file.js b/Tools/add-license-to-file.js
new file mode 100644
index 0000000..7c38d53
--- /dev/null
+++ b/Tools/add-license-to-file.js
@@ -0,0 +1,39 @@
+const fs = require('fs');
+const package = require('./../package.json');
+const buildDate = new Date();
+const dist = require('minimist')(process.argv).dist;
+const license = require('minimist')(process.argv).license;
+
+function addLicenseToFile (license, destination) {
+ if (!license) {
+ throw new Error('license path is required as 1st argument');
+ }
+
+ addLicenseTextToFile(fs.readFileSync(license).toString(), destination);
+}
+
+function addLicenseTextToFile(licenseText, destination) {
+ if (!destination) {
+ throw new Error('destination file path is required as 2nd argument');
+ }
+
+ fs.writeFileSync(destination, `/*!
+ JSON Schema Core
+ @name core
+ @version ${package.version}
+ @date ${buildDate.toUTCString()}
+ @link https://github.com/json-schema-form/core
+
+ @license
+ ${licenseText}
+
+ Copyright (c) 2016-${buildDate.getFullYear()} JSON Schema Form
+ **/
+${fs.readFileSync(`${destination}`).toString()}
+`);
+}
+
+module.exports = {
+ addLicenseToFile: addLicenseToFile,
+ addLicenseTextToFile: addLicenseTextToFile
+};
\ No newline at end of file
diff --git a/Tools/make-closure-core.js b/Tools/make-closure-core.js
new file mode 100644
index 0000000..f637bc9
--- /dev/null
+++ b/Tools/make-closure-core.js
@@ -0,0 +1,15 @@
+var compiler = require('google-closure-compiler-js').compile;
+var fs = require('fs');
+
+var source = fs.readFileSync('dist/global/Core.js', 'utf8');
+
+var compilerFlags = {
+ jsCode: [{src: source}],
+ languageIn: 'ES2015',
+ createSourceMap: true,
+};
+
+var output = compiler(compilerFlags);
+
+fs.writeFileSync('dist/global/Core.min.js', output.compiledCode, 'utf8');
+fs.writeFileSync('dist/global/Core.min.js.map', output.sourceMap, 'utf8');
\ No newline at end of file
diff --git a/Tools/make-umd-bundle.js b/Tools/make-umd-bundle.js
new file mode 100644
index 0000000..3120a9e
--- /dev/null
+++ b/Tools/make-umd-bundle.js
@@ -0,0 +1,29 @@
+var _ = require('lodash');
+
+var rollup = require('rollup');
+var rollupInject = require('rollup-plugin-inject');
+var rollupNodeResolve = require('rollup-plugin-node-resolve');
+
+var fs = require('fs');
+var path = require('path');
+
+rollup.rollup({
+ input: 'dist/cjs/Core.js',
+ plugins: [
+ rollupNodeResolve({
+ jsnext: true,
+ }),
+ rollupInject({
+ exclude: [ 'node_modules/**' ]
+ }),
+ ],
+}).then(function (bundle) {
+ bundle.generate({
+ format: 'umd',
+ name: 'JSON Schema Core',
+ sourcemap: true
+ }).then(function(result) {
+ fs.writeFileSync('dist/global/Core.js', result.code);
+ fs.writeFileSync('dist/global/Core.js.map', result.map);
+ });
+});
diff --git a/bower.json b/bower.json
index 7d6100f..4089fe7 100644
--- a/bower.json
+++ b/bower.json
@@ -19,8 +19,5 @@
"index.js",
"package.json",
"docs"
- ],
- "devDependencies": {
- "json-refs": "2.1.6"
- }
+ ]
}
diff --git a/dist/json-schema-form-core.js b/dist/json-schema-form-core.js
deleted file mode 100644
index eebb6f6..0000000
--- a/dist/json-schema-form-core.js
+++ /dev/null
@@ -1,2645 +0,0 @@
-/*!
- * json-schema-form-core
- * @version 1.0.0-alpha.4
- * @date Sat, 15 Apr 2017 08:25:55 GMT
- * @link https://github.com/json-schema-form/json-schema-form-core
- * @license MIT
- * Copyright (c) 2014-2017 JSON Schema Form
- */
-module.exports =
-/******/ (function(modules) { // webpackBootstrap
-/******/ // The module cache
-/******/ var installedModules = {};
-/******/
-/******/ // The require function
-/******/ function __webpack_require__(moduleId) {
-/******/
-/******/ // Check if module is in cache
-/******/ if(installedModules[moduleId])
-/******/ return installedModules[moduleId].exports;
-/******/
-/******/ // Create a new module (and put it into the cache)
-/******/ var module = installedModules[moduleId] = {
-/******/ i: moduleId,
-/******/ l: false,
-/******/ exports: {}
-/******/ };
-/******/
-/******/ // Execute the module function
-/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
-/******/ // Flag the module as loaded
-/******/ module.l = true;
-/******/
-/******/ // Return the exports of the module
-/******/ return module.exports;
-/******/ }
-/******/
-/******/
-/******/ // expose the modules object (__webpack_modules__)
-/******/ __webpack_require__.m = modules;
-/******/
-/******/ // expose the module cache
-/******/ __webpack_require__.c = installedModules;
-/******/
-/******/ // identity function for calling harmony imports with the correct context
-/******/ __webpack_require__.i = function(value) { return value; };
-/******/
-/******/ // define getter function for harmony exports
-/******/ __webpack_require__.d = function(exports, name, getter) {
-/******/ if(!__webpack_require__.o(exports, name)) {
-/******/ Object.defineProperty(exports, name, {
-/******/ configurable: false,
-/******/ enumerable: true,
-/******/ get: getter
-/******/ });
-/******/ }
-/******/ };
-/******/
-/******/ // getDefaultExport function for compatibility with non-harmony modules
-/******/ __webpack_require__.n = function(module) {
-/******/ var getter = module && module.__esModule ?
-/******/ function getDefault() { return module['default']; } :
-/******/ function getModuleExports() { return module; };
-/******/ __webpack_require__.d(getter, 'a', getter);
-/******/ return getter;
-/******/ };
-/******/
-/******/ // Object.prototype.hasOwnProperty.call
-/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
-/******/
-/******/ // __webpack_public_path__
-/******/ __webpack_require__.p = "";
-/******/
-/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = 13);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_objectpath__ = __webpack_require__(2);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_objectpath___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_objectpath__);
-/* harmony reexport (binding) */ if(__webpack_require__.o(__WEBPACK_IMPORTED_MODULE_0_objectpath__, "parse")) __webpack_require__.d(__webpack_exports__, "parse", function() { return __WEBPACK_IMPORTED_MODULE_0_objectpath__["parse"]; });
-/* harmony reexport (binding) */ if(__webpack_require__.o(__WEBPACK_IMPORTED_MODULE_0_objectpath__, "stringify")) __webpack_require__.d(__webpack_exports__, "stringify", function() { return __WEBPACK_IMPORTED_MODULE_0_objectpath__["stringify"]; });
-/* harmony reexport (binding) */ if(__webpack_require__.o(__WEBPACK_IMPORTED_MODULE_0_objectpath__, "normalize")) __webpack_require__.d(__webpack_exports__, "normalize", function() { return __WEBPACK_IMPORTED_MODULE_0_objectpath__["normalize"]; });
-/* harmony export (immutable) */ __webpack_exports__["name"] = name;
-
-
-
-
-/**
- * I am a name formatter function for processing keys into names for classes or Id.
- *
- * @param {Array} key I am the key array of a processed schema key
- * @param {string} separator I am the separator between the key items and optional form name
- * @param {string} formName I am an optional form name
- * @param {boolean} omitNumbers I determine if numeric values should be included in the output or withheld
- *
- * @return {string} I am the formatted key
- */
-function name(key, separator) {
- var formName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
- var omitNumbers = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
-
- if (key) {
- var fieldKey = key.slice();
- var fieldSeparator = separator || '-';
-
- if (omitNumbers) {
- fieldKey = fieldKey.filter(function (currentKey) {
- return typeof currentKey !== 'number';
- });
- };
-
- return (formName.length !== 0 ? formName + fieldSeparator : '') + fieldKey.join(fieldSeparator);
- };
-
- return '';
-};
-
-/***/ }),
-/* 1 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-// Takes a titleMap in either object or list format and returns one
-/* harmony default export */ __webpack_exports__["a"] = function (titleMap, originalEnum) {
- if (!Array.isArray(titleMap)) {
- var _ret = function () {
- var canonical = [];
- if (originalEnum) {
- originalEnum.forEach(function (value) {
- canonical.push({ name: titleMap[value], value: value });
- });
- } else {
- Object.keys(titleMap).forEach(function (value) {
- canonical.push({ name: titleMap[value], value: value });
- });
- }
- return {
- v: canonical
- };
- }();
-
- if ((typeof _ret === "undefined" ? "undefined" : _typeof(_ret)) === "object") return _ret.v;
- }
- return titleMap;
-};
-
-/***/ }),
-/* 2 */
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__(11).ObjectPath;
-
-
-/***/ }),
-/* 3 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sf_path__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__canonical_title_map__ = __webpack_require__(1);
-/* harmony export (immutable) */ __webpack_exports__["defaultFormDefinition"] = defaultFormDefinition;
-/* harmony export (immutable) */ __webpack_exports__["stdFormObj"] = stdFormObj;
-/* harmony export (immutable) */ __webpack_exports__["text"] = text;
-/* harmony export (immutable) */ __webpack_exports__["number"] = number;
-/* harmony export (immutable) */ __webpack_exports__["integer"] = integer;
-/* harmony export (immutable) */ __webpack_exports__["checkbox"] = checkbox;
-/* harmony export (immutable) */ __webpack_exports__["select"] = select;
-/* harmony export (immutable) */ __webpack_exports__["checkboxes"] = checkboxes;
-/* harmony export (immutable) */ __webpack_exports__["fieldset"] = fieldset;
-/* harmony export (immutable) */ __webpack_exports__["array"] = array;
-/* harmony export (immutable) */ __webpack_exports__["createDefaults"] = createDefaults;
-/* harmony export (immutable) */ __webpack_exports__["defaultForm"] = defaultForm;
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-
-
-
-/* Utils */
-var stripNullType = function stripNullType(type) {
- if (Array.isArray(type) && type.length === 2) {
- if (type[0] === 'null') {
- return type[1];
- };
- if (type[1] === 'null') {
- return type[0];
- };
- };
- return type;
-};
-
-// Creates an default titleMap list from an enum, i.e. a list of strings.
-var enumToTitleMap = function enumToTitleMap(enm) {
- var titleMap = []; // canonical titleMap format is a list.
- enm.forEach(function (name) {
- titleMap.push({ name: name, value: name });
- });
- return titleMap;
-};
-
-/**
- * Creates a default form definition from a schema.
- */
-function defaultFormDefinition(schemaTypes, name, schema, options) {
- var rules = schemaTypes[stripNullType(schema.type)];
- if (rules) {
- var def = void 0;
- // We give each rule a possibility to recurse it's children.
- var innerDefaultFormDefinition = function innerDefaultFormDefinition(childName, childSchema, childOptions) {
- return defaultFormDefinition(schemaTypes, childName, childSchema, childOptions);
- };
- for (var i = 0; i < rules.length; i++) {
- def = rules[i](name, schema, options, innerDefaultFormDefinition);
-
- // first handler in list that actually returns something is our handler!
- if (def) {
-
- // Do we have form defaults in the schema under the x-schema-form-attribute?
- if (def.schema['x-schema-form']) {
- Object.assign(def, def.schema['x-schema-form']);
- }
-
- return def;
- }
- }
- }
-}
-
-/**
- * Creates a form object with all common properties
- */
-function stdFormObj(name, schema, options) {
- options = options || {};
-
- // The Object.assign used to be a angular.copy. Should work though.
- var f = options.global && options.global.formDefaults ? Object.assign({}, options.global.formDefaults) : {};
- if (options.global && options.global.supressPropertyTitles === true) {
- f.title = schema.title;
- } else {
- f.title = schema.title || name;
- }
-
- if (schema.description) {
- f.description = schema.description;
- }
- if (options.required === true || schema.required === true) {
- f.required = true;
- }
- if (schema.maxLength) {
- f.maxlength = schema.maxLength;
- }
- if (schema.minLength) {
- f.minlength = schema.minLength;
- }
- if (schema.readOnly || schema.readonly) {
- f.readonly = true;
- }
- if (schema.minimum) {
- f.minimum = schema.minimum + (schema.exclusiveMinimum ? 1 : 0);
- }
- if (schema.maximum) {
- f.maximum = schema.maximum - (schema.exclusiveMaximum ? 1 : 0);
- }
-
- // Non standard attributes (DONT USE DEPRECATED)
- // If you must set stuff like this in the schema use the x-schema-form attribute
- if (schema.validationMessage) {
- f.validationMessage = schema.validationMessage;
- }
- if (schema.enumNames) {
- f.titleMap = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__canonical_title_map__["a" /* default */])(schema.enumNames, schema['enum']);
- }
- f.schema = schema;
-
- // Ng model options doesn't play nice with undefined, might be defined
- // globally though
- f.ngModelOptions = f.ngModelOptions || {};
-
- return f;
-};
-
-/*** Schema types to form type mappings, with defaults ***/
-function text(name, schema, options) {
- if (stripNullType(schema.type) === 'string' && !schema['enum']) {
- var f = stdFormObj(name, schema, options);
- f.key = options.path;
- f.type = 'text';
- options.lookup[__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__sf_path__["stringify"])(options.path)] = f;
- return f;
- }
-}
-
-// default in json form for number and integer is a text field
-// input type="number" would be more suitable don't ya think?
-function number(name, schema, options) {
- if (stripNullType(schema.type) === 'number') {
- var f = stdFormObj(name, schema, options);
- f.key = options.path;
- f.type = 'number';
- options.lookup[__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__sf_path__["stringify"])(options.path)] = f;
- return f;
- }
-}
-
-function integer(name, schema, options) {
- if (stripNullType(schema.type) === 'integer') {
- var f = stdFormObj(name, schema, options);
- f.key = options.path;
- f.type = 'number';
- options.lookup[__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__sf_path__["stringify"])(options.path)] = f;
- return f;
- }
-}
-
-function checkbox(name, schema, options) {
- if (stripNullType(schema.type) === 'boolean') {
- var f = stdFormObj(name, schema, options);
- f.key = options.path;
- f.type = 'checkbox';
- options.lookup[__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__sf_path__["stringify"])(options.path)] = f;
- return f;
- }
-}
-
-function select(name, schema, options) {
- if (stripNullType(schema.type) === 'string' && schema['enum']) {
- var f = stdFormObj(name, schema, options);
- f.key = options.path;
- f.type = 'select';
- if (!f.titleMap) {
- f.titleMap = enumToTitleMap(schema['enum']);
- }
- options.lookup[__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__sf_path__["stringify"])(options.path)] = f;
- return f;
- }
-}
-
-function checkboxes(name, schema, options) {
- if (stripNullType(schema.type) === 'array' && schema.items && schema.items['enum']) {
- var f = stdFormObj(name, schema, options);
- f.key = options.path;
- f.type = 'checkboxes';
- if (!f.titleMap) {
- f.titleMap = enumToTitleMap(schema.items['enum']);
- }
- options.lookup[__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__sf_path__["stringify"])(options.path)] = f;
- return f;
- }
-}
-
-function fieldset(name, schema, options, defaultFormDef) {
- if (stripNullType(schema.type) === 'object') {
- var _ret = function () {
- var f = stdFormObj(name, schema, options);
- f.type = 'fieldset';
- f.key = options.path;
- f.items = [];
- options.lookup[__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__sf_path__["stringify"])(options.path)] = f;
-
- // recurse down into properties
- if (schema.properties) {
- Object.keys(schema.properties).forEach(function (key) {
- var value = schema.properties[key];
- var path = options.path.slice();
- path.push(key);
- if (options.ignore[__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__sf_path__["stringify"])(path)] !== true) {
- var required = schema.required && schema.required.indexOf(key) !== -1;
-
- var def = defaultFormDef(key, value, {
- path: path,
- required: required || false,
- lookup: options.lookup,
- ignore: options.ignore,
- global: options.global
- });
- if (def) {
- f.items.push(def);
- }
- }
- });
- }
- return {
- v: f
- };
- }();
-
- if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
- }
-}
-
-function array(name, schema, options, defaultFormDef) {
- if (stripNullType(schema.type) === 'array') {
- var f = stdFormObj(name, schema, options);
- f.type = 'array';
- f.key = options.path;
- options.lookup[__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__sf_path__["stringify"])(options.path)] = f;
-
- var required = schema.required && schema.required.indexOf(options.path[options.path.length - 1]) !== -1;
-
- // The default is to always just create one child. This works since if the
- // schemas items declaration is of type: "object" then we get a fieldset.
- // We also follow json form notatation, adding empty brackets "[]" to
- // signify arrays.
-
- var arrPath = options.path.slice();
- arrPath.push('');
-
- f.items = [defaultFormDef(name, schema.items, {
- path: arrPath,
- required: required || false,
- lookup: options.lookup,
- ignore: options.ignore,
- global: options.global
- })];
-
- return f;
- }
-}
-
-function createDefaults() {
- // First sorted by schema type then a list.
- // Order has importance. First handler returning an form snippet will be used.
- return {
- string: [select, text],
- object: [fieldset],
- number: [number],
- integer: [integer],
- boolean: [checkbox],
- array: [checkboxes, array]
- };
-};
-
-/**
- * Create form defaults from schema
- */
-function defaultForm(schema, defaultSchemaTypes, ignore, globalOptions) {
- var form = [];
- var lookup = {}; // Map path => form obj for fast lookup in merging
- ignore = ignore || {};
- globalOptions = globalOptions || {};
- defaultSchemaTypes = defaultSchemaTypes || createDefaults();
-
- if (schema.properties) {
- Object.keys(schema.properties).forEach(function (key) {
- if (ignore[key] !== true) {
- var required = schema.required && schema.required.indexOf(key) !== -1;
- var def = defaultFormDefinition(defaultSchemaTypes, key, schema.properties[key], {
- path: [key], // Path to this property in bracket notation.
- lookup: lookup, // Extra map to register with. Optimization for merger.
- ignore: ignore, // The ignore list of paths (sans root level name)
- required: required, // Is it required? (v4 json schema style)
- global: globalOptions // Global options, including form defaults
- });
- if (def) {
- form.push(def);
- }
- }
- });
- } else {
- throw new Error('Not implemented. Only type "object" allowed at root level of schema.');
- }
- return { form: form, lookup: lookup };
-}
-
-/***/ }),
-/* 4 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lib_schema_defaults__ = __webpack_require__(3);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__lib_sf_path__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__lib_canonical_title_map__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__lib_merge__ = __webpack_require__(6);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return __WEBPACK_IMPORTED_MODULE_3__lib_merge__["a"]; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__lib_select__ = __webpack_require__(8);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "select", function() { return __WEBPACK_IMPORTED_MODULE_4__lib_select__["a"]; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__lib_resolve__ = __webpack_require__(7);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "jsonref", function() { return __WEBPACK_IMPORTED_MODULE_5__lib_resolve__["a"]; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__lib_traverse__ = __webpack_require__(9);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "traverseSchema", function() { return __WEBPACK_IMPORTED_MODULE_6__lib_traverse__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "traverseForm", function() { return __WEBPACK_IMPORTED_MODULE_6__lib_traverse__["b"]; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__lib_validate__ = __webpack_require__(10);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "validate", function() { return __WEBPACK_IMPORTED_MODULE_7__lib_validate__["a"]; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sfPath", function() { return sfPath; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "schemaDefaults", function() { return schemaDefaults; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "canonicalTitleMap", function() { return canonicalTitleMap; });
-
-
-
-
-
-
-
-
-
-
-var sfPath = __WEBPACK_IMPORTED_MODULE_1__lib_sf_path__;
-var schemaDefaults = __WEBPACK_IMPORTED_MODULE_0__lib_schema_defaults__;
-var canonicalTitleMap = __WEBPACK_IMPORTED_MODULE_2__lib_canonical_title_map__["a" /* default */];
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var require;var require;var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};(function(f){if(( false?"undefined":_typeof(exports))==="object"&&typeof module!=="undefined"){module.exports=f();}else if(true){!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (f),
- __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
- (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));}else{var g;if(typeof window!=="undefined"){g=window;}else if(typeof global!=="undefined"){g=global;}else if(typeof self!=="undefined"){g=self;}else{g=this;}g.JsonRefs=f();}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return require(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f;}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e);},l,l.exports,e,t,n,r);}return n[o].exports;}var i=typeof require=="function"&&require;for(var o=0;o-1){combinedDetails=u2Details;}else{u1Details=isType(u1,'Undefined')?undefined:parseURI(u1);if(!isType(u1Details,'Undefined')){combinedDetails=u1Details;// Join the paths
-combinedDetails.path=slash(path.join(u1Details.path,u2Details.path));// Join query parameters
-combinedDetails.query=combineQueryParams(u1Details.query,u2Details.query);}else{combinedDetails=u2Details;}}// Remove the fragment
-combinedDetails.fragment=undefined;// For relative URIs, add back the '..' since it was removed above
-return(remoteUriTypes.indexOf(combinedDetails.reference)===-1&&combinedDetails.path.indexOf('../')===0?'../':'')+URI.serialize(combinedDetails);}function findAncestors(obj,path){var ancestors=[];var node;if(path.length>0){node=obj;path.slice(0,path.length-1).forEach(function(seg){if(seg in node){node=node[seg];ancestors.push(node);}});}return ancestors;}function processSubDocument(mode,doc,subDocPath,refDetails,options,parents,parentPtrs,allRefs,indirect){var refValue;var rOptions;if(subDocPath.length>0){try{refValue=findValue(doc,subDocPath);}catch(err){// We only mark missing remote references as missing because local references can have deferred values
-if(mode==='remote'){refDetails.error=err.message;refDetails.missing=true;}}}else{refValue=doc;}if(!isType(refValue,'Undefined')){refDetails.value=refValue;}if(isType(refValue,'Array')||isType(refValue,'Object')){rOptions=clone(options);if(mode==='local'){delete rOptions.subDocPath;// Traverse the dereferenced value
-doc=refValue;}else{rOptions.relativeBase=path.dirname(parents[parents.length-1]);if(subDocPath.length===0){delete rOptions.subDocPath;}else{rOptions.subDocPath=subDocPath;}}return findRefsRecursive(doc,rOptions,parents,parentPtrs,allRefs,indirect);}}// Should this be its own exported API?
-function findRefsRecursive(obj,options,parents,parentPtrs,allRefs,indirect){var allTasks=Promise.resolve();var parentPath=parentPtrs.length?pathFromPtr(parentPtrs[parentPtrs.length-1]):[];var refs=findRefs(obj,options);var subDocPath=options.subDocPath||[];var subDocPtr=pathToPtr(subDocPath);var ancestorPtrs=['#'];parents.forEach(function(parent,index){if(parent.charAt(0)!=='#'){ancestorPtrs.push(parentPtrs[index]);}});// Reverse the order so we search them in the proper order
-ancestorPtrs.reverse();if((parents[parents.length-1]||'').charAt(0)!=='#'){allRefs.documents[pathToPtr(parentPath)]=obj;}Object.keys(refs).forEach(function(refPtr){var refDetails=refs[refPtr];var location;var parentIndex;var refFullPath;var refFullPtr;// If there are no parents, treat the reference pointer as-is. Otherwise, the reference is a reference within a
-// remote document and its sub document path prefix must be removed.
-if(parents.length===0){refFullPath=parentPath.concat(pathFromPtr(refPtr));}else{refFullPath=parentPath.concat(pathFromPtr(refPtr).slice(parents.length===0?0:subDocPath.length));}refFullPtr=pathToPtr(refFullPath);// It is possible to process the same reference more than once in the event of hierarchical references so we avoid
-// processing a reference if we've already done so.
-if(!isType(allRefs[refFullPtr],'Undefined')){return;}// Record the reference metadata
-allRefs.refs[refFullPtr]=refs[refPtr];// Do not process invalid references
-if(isType(refDetails.error,'Undefined')&&refDetails.type!=='invalid'){if(remoteTypes.indexOf(refDetails.type)>-1){location=combineURIs(options.relativeBase,refDetails.uri);parentIndex=parents.indexOf(location);}else{location=refDetails.uri;parentIndex=parentPtrs.indexOf(location);}// Record ancestor paths
-refDetails.ancestorPtrs=ancestorPtrs;// Record if the reference is indirect based on its parent
-refDetails.indirect=indirect;// Only process non-circular references further
-if(parentIndex===-1){if(remoteTypes.indexOf(refDetails.type)>-1){allTasks=allTasks.then(function(){return getRemoteDocument(location,options).then(function(doc){return processSubDocument('remote',doc,isType(refDetails.uriDetails.fragment,'Undefined')?[]:pathFromPtr(decodeURI(refDetails.uriDetails.fragment)),refDetails,options,parents.concat(location),parentPtrs.concat(refFullPtr),allRefs,indirect);}).catch(function(err){refDetails.error=err.message;refDetails.missing=true;});});}else{if(refFullPtr.indexOf(location+'/')!==0&&refFullPtr!==location&&subDocPtr.indexOf(location+'/')!==0&&subDocPtr!==location){if(location.indexOf(subDocPtr+'/')!==0){allTasks=allTasks.then(function(){return processSubDocument('local',obj,pathFromPtr(location),refDetails,options,parents.concat(location),parentPtrs.concat(refFullPtr),allRefs,indirect||location.indexOf(subDocPtr+'/')===-1&&location!==subDocPtr);});}}else{refDetails.circular=true;}}}else{// Mark seen ancestors as circular
-parentPtrs.slice(parentIndex).forEach(function(parentPtr){allRefs.refs[parentPtr].circular=true;});refDetails.circular=true;}}});allTasks=allTasks.then(function(){// Identify indirect, local circular references (Issue 82)
-var circulars=[];var processedRefPtrs=[];var processedRefs=[];function walkRefs(parentPtrs,parentRefs,refPtr,ref){Object.keys(allRefs.refs).forEach(function(dRefPtr){var dRefDetails=allRefs.refs[dRefPtr];// Do not process already processed references or references that are not a nested references
-if(processedRefs.indexOf(ref)===-1&&processedRefPtrs.indexOf(refPtr)===-1&&circulars.indexOf(ref)===-1&&dRefPtr!==refPtr&&dRefPtr.indexOf(ref+'/')===0){if(parentRefs.indexOf(ref)>-1){parentRefs.forEach(function(parentRef){if(circulars.indexOf(ref)===-1){circulars.push(parentRef);}});}else{walkRefs(parentPtrs.concat(refPtr),parentRefs.concat(ref),dRefPtr,dRefDetails.uri);}processedRefPtrs.push(refPtr);processedRefs.push(ref);}});}Object.keys(allRefs.refs).forEach(function(refPtr){var refDetails=allRefs.refs[refPtr];// Only process local, non-circular references
-if(refDetails.type==='local'&&!refDetails.circular&&circulars.indexOf(refDetails.uri)===-1){walkRefs([],[],refPtr,refDetails.uri);}});Object.keys(allRefs.refs).forEach(function(refPtr){var refDetails=allRefs.refs[refPtr];if(circulars.indexOf(refDetails.uri)>-1){refDetails.circular=true;}});}).then(function(){return allRefs;});return allTasks;}function findValue(obj,path){var value=obj;path.forEach(function(seg){seg=decodeURI(seg);if(seg in value){value=value[seg];}else{throw Error('JSON Pointer points to missing location: '+pathToPtr(path));}});return value;}function getExtraRefKeys(ref){return Object.keys(ref).filter(function(key){return key!=='$ref';});}function getRefType(refDetails){var type;// Convert the URI reference to one of our types
-switch(refDetails.uriDetails.reference){case'absolute':case'uri':type='remote';break;case'same-document':type='local';break;default:type=refDetails.uriDetails.reference;}return type;}function getRemoteDocument(url,options){var cacheEntry=remoteCache[url];var allTasks=Promise.resolve();var loaderOptions=clone(options.loaderOptions||{});if(isType(cacheEntry,'Undefined')){// If there is no content processor, default to processing the raw response as JSON
-if(isType(loaderOptions.processContent,'Undefined')){loaderOptions.processContent=function(res,callback){callback(undefined,JSON.parse(res.text));};}// Attempt to load the resource using path-loader
-allTasks=PathLoader.load(decodeURI(url),loaderOptions);// Update the cache
-allTasks=allTasks.then(function(res){remoteCache[url]={value:res};return res;}).catch(function(err){remoteCache[url]={error:err};throw err;});}else{// Return the cached version
-allTasks=allTasks.then(function(){return cacheEntry.value;});}// Return a cloned version to avoid updating the cache
-allTasks=allTasks.then(function(res){return clone(res);});return allTasks;}function isRefLike(obj,throwWithDetails){var refLike=true;try{if(!isType(obj,'Object')){throw new Error('obj is not an Object');}else if(!isType(obj.$ref,'String')){throw new Error('obj.$ref is not a String');}}catch(err){if(throwWithDetails){throw err;}refLike=false;}return refLike;}function isType(obj,type){// A PhantomJS bug (https://github.com/ariya/phantomjs/issues/11722) prohibits us from using the same approach for
-// undefined checking that we use for other types.
-if(type==='Undefined'){return typeof obj==='undefined';}else{return Object.prototype.toString.call(obj)==='[object '+type+']';}}function makeRefFilter(options){var refFilter;var validTypes;if(isType(options.filter,'Array')||isType(options.filter,'String')){validTypes=isType(options.filter,'String')?[options.filter]:options.filter;refFilter=function refFilter(refDetails){// Check the exact type or for invalid URIs, check its original type
-return validTypes.indexOf(refDetails.type)>-1||validTypes.indexOf(getRefType(refDetails))>-1;};}else if(isType(options.filter,'Function')){refFilter=options.filter;}else if(isType(options.filter,'Undefined')){refFilter=function refFilter(){return true;};}return function(refDetails,path){return(refDetails.type!=='invalid'||options.includeInvalid===true)&&refFilter(refDetails,path);};}function makeSubDocPath(options){var subDocPath;if(isType(options.subDocPath,'Array')){subDocPath=options.subDocPath;}else if(isType(options.subDocPath,'String')){subDocPath=pathFromPtr(options.subDocPath);}else if(isType(options.subDocPath,'Undefined')){subDocPath=[];}return subDocPath;}function parseURI(uri){// We decode first to avoid doubly encoding
-return URI.parse(encodeURI(decodeURI(uri)));}function setValue(obj,refPath,value){findValue(obj,refPath.slice(0,refPath.length-1))[decodeURI(refPath[refPath.length-1])]=value;}function walk(ancestors,node,path,fn){var processChildren=true;function walkItem(item,segment){path.push(segment);walk(ancestors,item,path,fn);path.pop();}// Call the iteratee
-if(isType(fn,'Function')){processChildren=fn(ancestors,node,path);}// We do not process circular objects again
-if(ancestors.indexOf(node)===-1){ancestors.push(node);if(processChildren!==false){if(isType(node,'Array')){node.forEach(function(member,index){walkItem(member,index.toString());});}else if(isType(node,'Object')){Object.keys(node).forEach(function(key){walkItem(node[key],key);});}}}ancestors.pop();}function validateOptions(options,obj){if(isType(options,'Undefined')){// Default to an empty options object
-options={};}else{// Clone the options so we do not alter the ones passed in
-options=clone(options);}if(!isType(options,'Object')){throw new TypeError('options must be an Object');}else if(!isType(options.filter,'Undefined')&&!isType(options.filter,'Array')&&!isType(options.filter,'Function')&&!isType(options.filter,'String')){throw new TypeError('options.filter must be an Array, a Function of a String');}else if(!isType(options.includeInvalid,'Undefined')&&!isType(options.includeInvalid,'Boolean')){throw new TypeError('options.includeInvalid must be a Boolean');}else if(!isType(options.refPreProcessor,'Undefined')&&!isType(options.refPreProcessor,'Function')){throw new TypeError('options.refPreProcessor must be a Function');}else if(!isType(options.refPostProcessor,'Undefined')&&!isType(options.refPostProcessor,'Function')){throw new TypeError('options.refPostProcessor must be a Function');}else if(!isType(options.subDocPath,'Undefined')&&!isType(options.subDocPath,'Array')&&!isPtr(options.subDocPath)){// If a pointer is provided, throw an error if it's not the proper type
-throw new TypeError('options.subDocPath must be an Array of path segments or a valid JSON Pointer');}options.filter=makeRefFilter(options);// Set the subDocPath to avoid everyone else having to compute it
-options.subDocPath=makeSubDocPath(options);if(!isType(obj,'Undefined')){try{findValue(obj,options.subDocPath);}catch(err){err.message=err.message.replace('JSON Pointer','options.subDocPath');throw err;}}return options;}/* Module Members *//*
- * Each of the functions below are defined as function statements and *then* exported in two steps instead of one due
- * to a bug in jsdoc (https://github.com/jsdoc2md/jsdoc-parse/issues/18) that causes our documentation to be
- * generated improperly. The impact to the user is significant enough for us to warrant working around it until this
- * is fixed.
- *//**
- * The options used for various JsonRefs APIs.
- *
- * @typedef {object} JsonRefsOptions
- *
- * @param {string|string[]|function} [filter=function () {return true;}] - The filter to use when gathering JSON
- * References *(If this value is a single string or an array of strings, the value(s) are expected to be the `type(s)`
- * you are interested in collecting as described in {@link module:JsonRefs.getRefDetails}. If it is a function, it is
- * expected that the function behaves like {@link module:JsonRefs~RefDetailsFilter}.)*
- * @param {boolean} [includeInvalid=false] - Whether or not to include invalid JSON Reference details *(This will make
- * it so that objects that are like JSON Reference objects, as in they are an `Object` and the have a `$ref` property,
- * but fail validation will be included. This is very useful for when you want to know if you have invalid JSON
- * Reference definitions. This will not mean that APIs will process invalid JSON References but the reasons as to why
- * the JSON References are invalid will be included in the returned metadata.)*
- * @param {object} [loaderOptions] - The options to pass to
- * {@link https://github.com/whitlockjc/path-loader/blob/master/docs/API.md#module_PathLoader.load|PathLoader~load}
- * @param {module:JsonRefs~RefPreProcessor} [refPreProcessor] - The callback used to pre-process a JSON Reference like
- * object *(This is called prior to validating the JSON Reference like object and getting its details)*
- * @param {module:JsonRefs~RefPostProcessor} [refPostProcessor] - The callback used to post-process the JSON Reference
- * metadata *(This is called prior filtering the references)*
- * @param {string} [options.relativeBase] - The base location to use when resolving relative references *(Only useful
- * for APIs that do remote reference resolution. If this value is not defined,
- * {@link https://github.com/whitlockjc/path-loader|path-loader} will use `window.location.href` for the browser and
- * `process.cwd()` for Node.js.)*
- * @param {string|string[]} [options.subDocPath=[]] - The JSON Pointer or array of path segments to the sub document
- * location to search from
- *//**
- * Simple function used to filter out JSON References.
- *
- * @typedef {function} RefDetailsFilter
- *
- * @param {module:JsonRefs~UnresolvedRefDetails} refDetails - The JSON Reference details to test
- * @param {string[]} path - The path to the JSON Reference
- *
- * @returns {boolean} whether the JSON Reference should be filtered *(out)* or not
- *//**
- * Simple function used to pre-process a JSON Reference like object.
- *
- * @typedef {function} RefPreProcessor
- *
- * @param {object} obj - The JSON Reference like object
- * @param {string[]} path - The path to the JSON Reference like object
- *
- * @returns {object} the processed JSON Reference like object
- *//**
- * Simple function used to post-process a JSON Reference details.
- *
- * @typedef {function} RefPostProcessor
- *
- * @param {module:JsonRefs~UnresolvedRefDetails} refDetails - The JSON Reference details to test
- * @param {string[]} path - The path to the JSON Reference
- *
- * @returns {object} the processed JSON Reference details object
- *//**
- * Detailed information about resolved JSON References.
- *
- * @typedef {module:JsonRefs~UnresolvedRefDetails} ResolvedRefDetails
- *
- * @property {boolean} [circular] - Whether or not the JSON Reference is circular *(Will not be set if the JSON
- * Reference is not circular)*
- * @property {boolean} [missing] - Whether or not the referenced value was missing or not *(Will not be set if the
- * referenced value is not missing)*
- * @property {*} [value] - The referenced value *(Will not be set if the referenced value is missing)*
- *//**
- * The results of resolving the JSON References of an array/object.
- *
- * @typedef {object} ResolvedRefsResults
- *
- * @property {module:JsonRefs~ResolvedRefDetails} refs - An object whose keys are JSON Pointers *(fragment version)*
- * to where the JSON Reference is defined and whose values are {@link module:JsonRefs~ResolvedRefDetails}
- * @property {object} resolved - The array/object with its JSON References fully resolved
- *//**
- * An object containing the retrieved document and detailed information about its JSON References.
- *
- * @typedef {module:JsonRefs~ResolvedRefsResults} RetrievedRefsResults
- *
- * @property {object} value - The retrieved document
- *//**
- * An object containing the retrieved document, the document with its references resolved and detailed information
- * about its JSON References.
- *
- * @typedef {object} RetrievedResolvedRefsResults
- *
- * @property {module:JsonRefs~UnresolvedRefDetails} refs - An object whose keys are JSON Pointers *(fragment version)*
- * to where the JSON Reference is defined and whose values are {@link module:JsonRefs~UnresolvedRefDetails}
- * @property {ResolvedRefsResults} - An object whose keys are JSON Pointers *(fragment version)*
- * to where the JSON Reference is defined and whose values are {@link module:JsonRefs~ResolvedRefDetails}
- * @property {object} value - The retrieved document
- *//**
- * Detailed information about unresolved JSON References.
- *
- * @typedef {object} UnresolvedRefDetails
- *
- * @property {object} def - The JSON Reference definition
- * @property {string} [error] - The error information for invalid JSON Reference definition *(Only present when the
- * JSON Reference definition is invalid or there was a problem retrieving a remote reference during resolution)*
- * @property {string} uri - The URI portion of the JSON Reference
- * @property {object} uriDetails - Detailed information about the URI as provided by
- * {@link https://github.com/garycourt/uri-js|URI.parse}.
- * @property {string} type - The JSON Reference type *(This value can be one of the following: `invalid`, `local`,
- * `relative` or `remote`.)*
- * @property {string} [warning] - The warning information *(Only present when the JSON Reference definition produces a
- * warning)*
- *//**
- * Clears the internal cache of remote documents, reference details, etc.
- *
- * @alias module:JsonRefs.clearCache
- */function clearCache(){remoteCache={};}/**
- * Takes an array of path segments and decodes the JSON Pointer tokens in them.
- *
- * @param {string[]} path - The array of path segments
- *
- * @returns {string} the array of path segments with their JSON Pointer tokens decoded
- *
- * @throws {Error} if the path is not an `Array`
- *
- * @see {@link https://tools.ietf.org/html/rfc6901#section-3}
- *
- * @alias module:JsonRefs.decodePath
- */function decodePath(path){if(!isType(path,'Array')){throw new TypeError('path must be an array');}return path.map(function(seg){if(!isType(seg,'String')){seg=JSON.stringify(seg);}return decodeURI(seg.replace(/~1/g,'/').replace(/~0/g,'~'));});}/**
- * Takes an array of path segments and encodes the special JSON Pointer characters in them.
- *
- * @param {string[]} path - The array of path segments
- *
- * @returns {string} the array of path segments with their JSON Pointer tokens encoded
- *
- * @throws {Error} if the path is not an `Array`
- *
- * @see {@link https://tools.ietf.org/html/rfc6901#section-3}
- *
- * @alias module:JsonRefs.encodePath
- */function encodePath(path){if(!isType(path,'Array')){throw new TypeError('path must be an array');}return path.map(function(seg){if(!isType(seg,'String')){seg=JSON.stringify(seg);}return seg.replace(/~/g,'~0').replace(/\//g,'~1');});}/**
- * Finds JSON References defined within the provided array/object.
- *
- * @param {array|object} obj - The structure to find JSON References within
- * @param {module:JsonRefs~JsonRefsOptions} [options] - The JsonRefs options
- *
- * @returns {object} an object whose keys are JSON Pointers *(fragment version)* to where the JSON Reference is defined
- * and whose values are {@link module:JsonRefs~UnresolvedRefDetails}.
- *
- * @throws {Error} when the input arguments fail validation or if `options.subDocPath` points to an invalid location
- *
- * @alias module:JsonRefs.findRefs
- *
- * @example
- * // Finding all valid references
- * var allRefs = JsonRefs.findRefs(obj);
- * // Finding all remote references
- * var remoteRefs = JsonRefs.findRefs(obj, {filter: ['relative', 'remote']});
- * // Finding all invalid references
- * var invalidRefs = JsonRefs.findRefs(obj, {filter: 'invalid', includeInvalid: true});
- */function findRefs(obj,options){var refs={};// Validate the provided document
-if(!isType(obj,'Array')&&!isType(obj,'Object')){throw new TypeError('obj must be an Array or an Object');}// Validate options
-options=validateOptions(options,obj);// Walk the document (or sub document) and find all JSON References
-walk(findAncestors(obj,options.subDocPath),findValue(obj,options.subDocPath),clone(options.subDocPath),function(ancestors,node,path){var processChildren=true;var refDetails;if(isRefLike(node)){// Pre-process the node when necessary
-if(!isType(options.refPreProcessor,'Undefined')){node=options.refPreProcessor(clone(node),path);}refDetails=getRefDetails(node);// Post-process the reference details
-if(!isType(options.refPostProcessor,'Undefined')){refDetails=options.refPostProcessor(refDetails,path);}if(options.filter(refDetails,path)){refs[pathToPtr(path)]=refDetails;}// Whenever a JSON Reference has extra children, its children should not be processed.
-// See: http://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03#section-3
-if(getExtraRefKeys(node).length>0){processChildren=false;}}return processChildren;});return refs;}/**
- * Finds JSON References defined within the document at the provided location.
- *
- * This API is identical to {@link module:JsonRefs.findRefs} except this API will retrieve a remote document and then
- * return the result of {@link module:JsonRefs.findRefs} on the retrieved document.
- *
- * @param {string} location - The location to retrieve *(Can be relative or absolute, just make sure you look at the
- * {@link module:JsonRefs~JsonRefsOptions|options documentation} to see how relative references are handled.)*
- * @param {module:JsonRefs~JsonRefsOptions} [options] - The JsonRefs options
- *
- * @returns {Promise} a promise that resolves a {@link module:JsonRefs~RetrievedRefsResults} and rejects with an
- * `Error` when the input arguments fail validation, when `options.subDocPath` points to an invalid location or when
- * the location argument points to an unloadable resource
- *
- * @alias module:JsonRefs.findRefsAt
- *
- * @example
- * // Example that only resolves references within a sub document
- * JsonRefs.findRefsAt('http://petstore.swagger.io/v2/swagger.json', {
- * subDocPath: '#/definitions'
- * })
- * .then(function (res) {
- * // Do something with the response
- * //
- * // res.refs: JSON Reference locations and details
- * // res.value: The retrieved document
- * }, function (err) {
- * console.log(err.stack);
- * });
- */function findRefsAt(location,options){var allTasks=Promise.resolve();allTasks=allTasks.then(function(){// Validate the provided location
-if(!isType(location,'String')){throw new TypeError('location must be a string');}// Validate options
-options=validateOptions(options);// Combine the location and the optional relative base
-location=combineURIs(options.relativeBase,location);return getRemoteDocument(location,options);}).then(function(res){var cacheEntry=clone(remoteCache[location]);var cOptions=clone(options);var uriDetails=parseURI(location);if(isType(cacheEntry.refs,'Undefined')){// Do not filter any references so the cache is complete
-delete cOptions.filter;delete cOptions.subDocPath;cOptions.includeInvalid=true;remoteCache[location].refs=findRefs(res,cOptions);}// Add the filter options back
-if(!isType(options.filter,'Undefined')){cOptions.filter=options.filter;}if(!isType(uriDetails.fragment,'Undefined')){cOptions.subDocPath=pathFromPtr(decodeURI(uriDetails.fragment));}else if(!isType(uriDetails.subDocPath,'Undefined')){cOptions.subDocPath=options.subDocPath;}// This will use the cache so don't worry about calling it twice
-return{refs:findRefs(res,cOptions),value:res};});return allTasks;}/**
- * Returns detailed information about the JSON Reference.
- *
- * @param {object} obj - The JSON Reference definition
- *
- * @returns {module:JsonRefs~UnresolvedRefDetails} the detailed information
- *
- * @alias module:JsonRefs.getRefDetails
- */function getRefDetails(obj){var details={def:obj};var cacheKey;var extraKeys;var uriDetails;try{if(isRefLike(obj,true)){cacheKey=obj.$ref;uriDetails=uriDetailsCache[cacheKey];if(isType(uriDetails,'Undefined')){uriDetails=uriDetailsCache[cacheKey]=parseURI(cacheKey);}details.uri=cacheKey;details.uriDetails=uriDetails;if(isType(uriDetails.error,'Undefined')){details.type=getRefType(details);}else{details.error=details.uriDetails.error;details.type='invalid';}// Identify warning
-extraKeys=getExtraRefKeys(obj);if(extraKeys.length>0){details.warning='Extra JSON Reference properties will be ignored: '+extraKeys.join(', ');}}else{details.type='invalid';}}catch(err){details.error=err.message;details.type='invalid';}return details;}/**
- * Returns whether the argument represents a JSON Pointer.
- *
- * A string is a JSON Pointer if the following are all true:
- *
- * * The string is of type `String`
- * * The string must be empty, `#` or start with a `/` or `#/`
- *
- * @param {string} ptr - The string to check
- * @param {boolean} [throwWithDetails=false] - Whether or not to throw an `Error` with the details as to why the value
- * provided is invalid
- *
- * @returns {boolean} the result of the check
- *
- * @throws {error} when the provided value is invalid and the `throwWithDetails` argument is `true`
- *
- * @alias module:JsonRefs.isPtr
- *
- * @see {@link https://tools.ietf.org/html/rfc6901#section-3}
- *
- * @example
- * // Separating the different ways to invoke isPtr for demonstration purposes
- * if (isPtr(str)) {
- * // Handle a valid JSON Pointer
- * } else {
- * // Get the reason as to why the value is not a JSON Pointer so you can fix/report it
- * try {
- * isPtr(str, true);
- * } catch (err) {
- * // The error message contains the details as to why the provided value is not a JSON Pointer
- * }
- * }
- */function isPtr(ptr,throwWithDetails){var valid=true;var firstChar;try{if(isType(ptr,'String')){if(ptr!==''){firstChar=ptr.charAt(0);if(['#','/'].indexOf(firstChar)===-1){throw new Error('ptr must start with a / or #/');}else if(firstChar==='#'&&ptr!=='#'&&ptr.charAt(1)!=='/'){throw new Error('ptr must start with a / or #/');}else if(ptr.match(badPtrTokenRegex)){throw new Error('ptr has invalid token(s)');}}}else{throw new Error('ptr is not a String');}}catch(err){if(throwWithDetails===true){throw err;}valid=false;}return valid;}/**
- * Returns whether the argument represents a JSON Reference.
- *
- * An object is a JSON Reference only if the following are all true:
- *
- * * The object is of type `Object`
- * * The object has a `$ref` property
- * * The `$ref` property is a valid URI *(We do not require 100% strict URIs and will handle unescaped special
- * characters.)*
- *
- * @param {object} obj - The object to check
- * @param {boolean} [throwWithDetails=false] - Whether or not to throw an `Error` with the details as to why the value
- * provided is invalid
- *
- * @returns {boolean} the result of the check
- *
- * @throws {error} when the provided value is invalid and the `throwWithDetails` argument is `true`
- *
- * @alias module:JsonRefs.isRef
- *
- * @see {@link http://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03#section-3}
- *
- * @example
- * // Separating the different ways to invoke isRef for demonstration purposes
- * if (isRef(obj)) {
- * // Handle a valid JSON Reference
- * } else {
- * // Get the reason as to why the value is not a JSON Reference so you can fix/report it
- * try {
- * isRef(str, true);
- * } catch (err) {
- * // The error message contains the details as to why the provided value is not a JSON Reference
- * }
- * }
- */function isRef(obj,throwWithDetails){return isRefLike(obj,throwWithDetails)&&getRefDetails(obj,throwWithDetails).type!=='invalid';}/**
- * Returns an array of path segments for the provided JSON Pointer.
- *
- * @param {string} ptr - The JSON Pointer
- *
- * @returns {string[]} the path segments
- *
- * @throws {Error} if the provided `ptr` argument is not a JSON Pointer
- *
- * @alias module:JsonRefs.pathFromPtr
- */function pathFromPtr(ptr){if(!isPtr(ptr)){throw new Error('ptr must be a JSON Pointer');}var segments=ptr.split('/');// Remove the first segment
-segments.shift();return decodePath(segments);}/**
- * Returns a JSON Pointer for the provided array of path segments.
- *
- * **Note:** If a path segment in `path` is not a `String`, it will be converted to one using `JSON.stringify`.
- *
- * @param {string[]} path - The array of path segments
- * @param {boolean} [hashPrefix=true] - Whether or not create a hash-prefixed JSON Pointer
- *
- * @returns {string} the corresponding JSON Pointer
- *
- * @throws {Error} if the `path` argument is not an array
- *
- * @alias module:JsonRefs.pathToPtr
- */function pathToPtr(path,hashPrefix){if(!isType(path,'Array')){throw new Error('path must be an Array');}// Encode each segment and return
-return(hashPrefix!==false?'#':'')+(path.length>0?'/':'')+encodePath(path).join('/');}/**
- * Finds JSON References defined within the provided array/object and resolves them.
- *
- * @param {array|object} obj - The structure to find JSON References within
- * @param {module:JsonRefs~JsonRefsOptions} [options] - The JsonRefs options
- *
- * @returns {Promise} a promise that resolves a {@link module:JsonRefs~ResolvedRefsResults} and rejects with an
- * `Error` when the input arguments fail validation, when `options.subDocPath` points to an invalid location or when
- * the location argument points to an unloadable resource
- *
- * @alias module:JsonRefs.resolveRefs
- *
- * @example
- * // Example that only resolves relative and remote references
- * JsonRefs.resolveRefs(swaggerObj, {
- * filter: ['relative', 'remote']
- * })
- * .then(function (res) {
- * // Do something with the response
- * //
- * // res.refs: JSON Reference locations and details
- * // res.resolved: The document with the appropriate JSON References resolved
- * }, function (err) {
- * console.log(err.stack);
- * });
- */function resolveRefs(obj,options){var allTasks=Promise.resolve();allTasks=allTasks.then(function(){// Validate the provided document
-if(!isType(obj,'Array')&&!isType(obj,'Object')){throw new TypeError('obj must be an Array or an Object');}// Validate options
-options=validateOptions(options,obj);// Clone the input so we do not alter it
-obj=clone(obj);}).then(function(){return findRefsRecursive(obj,options,[],[],{documents:{},refs:{}});}).then(function(allRefs){var deferredRefs={};var refs={};function pathSorter(p1,p2){return pathFromPtr(p1).length-pathFromPtr(p2).length;}// Resolve all references with a known value
-Object.keys(allRefs.refs).sort(pathSorter).forEach(function(refPtr){var refDetails=allRefs.refs[refPtr];// Record all direct references
-if(!refDetails.indirect){refs[refPtr]=refDetails;}// Delete helper property
-delete refDetails.indirect;if(isType(refDetails.error,'Undefined')&&refDetails.type!=='invalid'){if(isType(refDetails.value,'Undefined')&&refDetails.circular){refDetails.value=refDetails.def;}// We defer processing all references without a value until later
-if(isType(refDetails.value,'Undefined')){deferredRefs[refPtr]=refDetails;}else{if(refPtr==='#'){obj=refDetails.value;}else{setValue(obj,pathFromPtr(refPtr),refDetails.value);}// Delete helper property
-delete refDetails.ancestorPtrs;}}else{// Delete helper property
-delete refDetails.ancestorPtrs;}});// Resolve all deferred references
-Object.keys(deferredRefs).forEach(function(refPtr){var refDetails=deferredRefs[refPtr];// Attempt to resolve the value against all if its ancestors in order
-refDetails.ancestorPtrs.forEach(function(ancestorPtr,index){if(isType(refDetails.value,'Undefined')){try{refDetails.value=findValue(allRefs.documents[ancestorPtr],pathFromPtr(refDetails.uri));// Delete helper property
-delete refDetails.ancestorPtrs;setValue(obj,pathFromPtr(refPtr),refDetails.value);}catch(err){if(index===refDetails.ancestorPtrs.length-1){refDetails.error=err.message;refDetails.missing=true;// Delete helper property
-delete refDetails.ancestorPtrs;}}}});});return{refs:refs,resolved:obj};});return allTasks;}/**
- * Resolves JSON References defined within the document at the provided location.
- *
- * This API is identical to {@link module:JsonRefs.resolveRefs} except this API will retrieve a remote document and then
- * return the result of {@link module:JsonRefs.resolveRefs} on the retrieved document.
- *
- * @param {string} location - The location to retrieve *(Can be relative or absolute, just make sure you look at the
- * {@link module:JsonRefs~JsonRefsOptions|options documentation} to see how relative references are handled.)*
- * @param {module:JsonRefs~JsonRefsOptions} [options] - The JsonRefs options
- *
- * @returns {Promise} a promise that resolves a {@link module:JsonRefs~RetrievedResolvedRefsResults} and rejects with an
- * `Error` when the input arguments fail validation, when `options.subDocPath` points to an invalid location or when
- * the location argument points to an unloadable resource
- *
- * @alias module:JsonRefs.resolveRefsAt
- *
- * @example
- * // Example that loads a JSON document (No options.loaderOptions.processContent required) and resolves all references
- * JsonRefs.resolveRefsAt('./swagger.json')
- * .then(function (res) {
- * // Do something with the response
- * //
- * // res.refs: JSON Reference locations and details
- * // res.resolved: The document with the appropriate JSON References resolved
- * // res.value: The retrieved document
- * }, function (err) {
- * console.log(err.stack);
- * });
- */function resolveRefsAt(location,options){var allTasks=Promise.resolve();allTasks=allTasks.then(function(){// Validate the provided location
-if(!isType(location,'String')){throw new TypeError('location must be a string');}// Validate options
-options=validateOptions(options);// Combine the location and the optional relative base
-location=combineURIs(options.relativeBase,location);return getRemoteDocument(location,options);}).then(function(res){var cOptions=clone(options);var uriDetails=parseURI(location);// Set the sub document path if necessary
-if(!isType(uriDetails.fragment,'Undefined')){cOptions.subDocPath=pathFromPtr(decodeURI(uriDetails.fragment));}// Update the relative base based on the retrieved location
-cOptions.relativeBase=path.dirname(location);return resolveRefs(res,cOptions).then(function(res2){return{refs:res2.refs,resolved:res2.resolved,value:res};});});return allTasks;}/* Export the module members */module.exports.clearCache=clearCache;module.exports.decodePath=decodePath;module.exports.encodePath=encodePath;module.exports.findRefs=findRefs;module.exports.findRefsAt=findRefsAt;module.exports.getRefDetails=getRefDetails;module.exports.isPtr=isPtr;module.exports.isRef=isRef;module.exports.pathFromPtr=pathFromPtr;module.exports.pathToPtr=pathToPtr;module.exports.resolveRefs=resolveRefs;module.exports.resolveRefsAt=resolveRefsAt;},{"native-promise-only":3,"path":4,"path-loader":5,"querystring":11,"slash":13,"uri-js":23}],2:[function(require,module,exports){/**
- * Expose `Emitter`.
- */module.exports=Emitter;/**
- * Initialize a new `Emitter`.
- *
- * @api public
- */function Emitter(obj){if(obj)return mixin(obj);};/**
- * Mixin the emitter properties.
- *
- * @param {Object} obj
- * @return {Object}
- * @api private
- */function mixin(obj){for(var key in Emitter.prototype){obj[key]=Emitter.prototype[key];}return obj;}/**
- * Listen on the given `event` with `fn`.
- *
- * @param {String} event
- * @param {Function} fn
- * @return {Emitter}
- * @api public
- */Emitter.prototype.on=Emitter.prototype.addEventListener=function(event,fn){this._callbacks=this._callbacks||{};(this._callbacks['$'+event]=this._callbacks['$'+event]||[]).push(fn);return this;};/**
- * Adds an `event` listener that will be invoked a single
- * time then automatically removed.
- *
- * @param {String} event
- * @param {Function} fn
- * @return {Emitter}
- * @api public
- */Emitter.prototype.once=function(event,fn){function on(){this.off(event,on);fn.apply(this,arguments);}on.fn=fn;this.on(event,on);return this;};/**
- * Remove the given callback for `event` or all
- * registered callbacks.
- *
- * @param {String} event
- * @param {Function} fn
- * @return {Emitter}
- * @api public
- */Emitter.prototype.off=Emitter.prototype.removeListener=Emitter.prototype.removeAllListeners=Emitter.prototype.removeEventListener=function(event,fn){this._callbacks=this._callbacks||{};// all
-if(0==arguments.length){this._callbacks={};return this;}// specific event
-var callbacks=this._callbacks['$'+event];if(!callbacks)return this;// remove all handlers
-if(1==arguments.length){delete this._callbacks['$'+event];return this;}// remove specific handler
-var cb;for(var i=0;i0){schedule(notify,self);}}}catch(err){reject.call(new MakeDefWrapper(self),err);}}function reject(msg){var self=this;// already triggered?
-if(self.triggered){return;}self.triggered=true;// unwrap
-if(self.def){self=self.def;}self.msg=msg;self.state=2;if(self.chain.length>0){schedule(notify,self);}}function iteratePromises(Constructor,arr,resolver,rejecter){for(var idx=0;idx 0
-var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==='.'){parts.splice(i,1);}else if(last==='..'){parts.splice(i,1);up++;}else if(up){parts.splice(i,1);up--;}}// if the path is allowed to go above the root, restore leading ..s
-if(allowAboveRoot){for(;up--;up){parts.unshift('..');}}return parts;}// Split a filename into [root, dir, basename, ext], unix version
-// 'root' is just a slash, or nothing.
-var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;var splitPath=function splitPath(filename){return splitPathRe.exec(filename).slice(1);};// path.resolve([from ...], to)
-// posix version
-exports.resolve=function(){var resolvedPath='',resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:process.cwd();// Skip empty and invalid entries
-if(typeof path!=='string'){throw new TypeError('Arguments to path.resolve must be strings');}else if(!path){continue;}resolvedPath=path+'/'+resolvedPath;resolvedAbsolute=path.charAt(0)==='/';}// At this point the path should be resolved to a full absolute path, but
-// handle relative paths to be safe (might happen when process.cwd() fails)
-// Normalize the path
-resolvedPath=normalizeArray(filter(resolvedPath.split('/'),function(p){return!!p;}),!resolvedAbsolute).join('/');return(resolvedAbsolute?'/':'')+resolvedPath||'.';};// path.normalize(path)
-// posix version
-exports.normalize=function(path){var isAbsolute=exports.isAbsolute(path),trailingSlash=substr(path,-1)==='/';// Normalize the path
-path=normalizeArray(filter(path.split('/'),function(p){return!!p;}),!isAbsolute).join('/');if(!path&&!isAbsolute){path='.';}if(path&&trailingSlash){path+='/';}return(isAbsolute?'/':'')+path;};// posix version
-exports.isAbsolute=function(path){return path.charAt(0)==='/';};// posix version
-exports.join=function(){var paths=Array.prototype.slice.call(arguments,0);return exports.normalize(filter(paths,function(p,index){if(typeof p!=='string'){throw new TypeError('Arguments to path.join must be strings');}return p;}).join('/'));};// path.relative(from, to)
-// posix version
-exports.relative=function(from,to){from=exports.resolve(from).substr(1);to=exports.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=='')break;}if(start>end)return[];return arr.slice(start,end-start+1);}var fromParts=trim(from.split('/'));var toParts=trim(to.split('/'));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i1){for(var i=1;i0&&len>maxKeys){len=maxKeys;}for(var i=0;i=0){kstr=x.substr(0,idx);vstr=x.substr(idx+1);}else{kstr=x;vstr='';}k=decodeURIComponent(kstr);v=decodeURIComponent(vstr);if(!hasOwnProperty(obj,k)){obj[k]=v;}else if(isArray(obj[k])){obj[k].push(v);}else{obj[k]=[obj[k],v];}}return obj;};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==='[object Array]';};},{}],10:[function(require,module,exports){// Copyright Joyent, Inc. and other Node contributors.
-//
-// 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.
-'use strict';var stringifyPrimitive=function stringifyPrimitive(v){switch(typeof v==="undefined"?"undefined":_typeof(v)){case'string':return v;case'boolean':return v?'true':'false';case'number':return isFinite(v)?v:'';default:return'';}};module.exports=function(obj,sep,eq,name){sep=sep||'&';eq=eq||'=';if(obj===null){obj=undefined;}if((typeof obj==="undefined"?"undefined":_typeof(obj))==='object'){return map(objectKeys(obj),function(k){var ks=encodeURIComponent(stringifyPrimitive(k))+eq;if(isArray(obj[k])){return map(obj[k],function(v){return ks+encodeURIComponent(stringifyPrimitive(v));}).join(sep);}else{return ks+encodeURIComponent(stringifyPrimitive(obj[k]));}}).join(sep);}if(!name)return'';return encodeURIComponent(stringifyPrimitive(name))+eq+encodeURIComponent(stringifyPrimitive(obj));};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==='[object Array]';};function map(xs,f){if(xs.map)return xs.map(f);var res=[];for(var i=0;i=200&&res.status<300){return self.callback(err,res);}var new_err=new Error(res.statusText||'Unsuccessful HTTP response');new_err.original=err;new_err.response=res;new_err.status=res.status;self.callback(new_err,res);});}/**
- * Mixin `Emitter` and `requestBase`.
- */Emitter(Request.prototype);for(var key in requestBase){Request.prototype[key]=requestBase[key];}/**
- * Abort the request, and clear potential timeout.
- *
- * @return {Request}
- * @api public
- */Request.prototype.abort=function(){if(this.aborted)return;this.aborted=true;this.xhr.abort();this.clearTimeout();this.emit('abort');return this;};/**
- * Set Content-Type to `type`, mapping values from `request.types`.
- *
- * Examples:
- *
- * superagent.types.xml = 'application/xml';
- *
- * request.post('/')
- * .type('xml')
- * .send(xmlstring)
- * .end(callback);
- *
- * request.post('/')
- * .type('application/xml')
- * .send(xmlstring)
- * .end(callback);
- *
- * @param {String} type
- * @return {Request} for chaining
- * @api public
- */Request.prototype.type=function(type){this.set('Content-Type',request.types[type]||type);return this;};/**
- * Set responseType to `val`. Presently valid responseTypes are 'blob' and
- * 'arraybuffer'.
- *
- * Examples:
- *
- * req.get('/')
- * .responseType('blob')
- * .end(callback);
- *
- * @param {String} val
- * @return {Request} for chaining
- * @api public
- */Request.prototype.responseType=function(val){this._responseType=val;return this;};/**
- * Set Accept to `type`, mapping values from `request.types`.
- *
- * Examples:
- *
- * superagent.types.json = 'application/json';
- *
- * request.get('/agent')
- * .accept('json')
- * .end(callback);
- *
- * request.get('/agent')
- * .accept('application/json')
- * .end(callback);
- *
- * @param {String} accept
- * @return {Request} for chaining
- * @api public
- */Request.prototype.accept=function(type){this.set('Accept',request.types[type]||type);return this;};/**
- * Set Authorization field value with `user` and `pass`.
- *
- * @param {String} user
- * @param {String} pass
- * @param {Object} options with 'type' property 'auto' or 'basic' (default 'basic')
- * @return {Request} for chaining
- * @api public
- */Request.prototype.auth=function(user,pass,options){if(!options){options={type:'basic'};}switch(options.type){case'basic':var str=btoa(user+':'+pass);this.set('Authorization','Basic '+str);break;case'auto':this.username=user;this.password=pass;break;}return this;};/**
-* Add query-string `val`.
-*
-* Examples:
-*
-* request.get('/shoes')
-* .query('size=10')
-* .query({ color: 'blue' })
-*
-* @param {Object|String} val
-* @return {Request} for chaining
-* @api public
-*/Request.prototype.query=function(val){if('string'!=typeof val)val=serialize(val);if(val)this._query.push(val);return this;};/**
- * Queue the given `file` as an attachment to the specified `field`,
- * with optional `filename`.
- *
- * ``` js
- * request.post('/upload')
- * .attach(new Blob(['hey!'], { type: "text/html"}))
- * .end(callback);
- * ```
- *
- * @param {String} field
- * @param {Blob|File} file
- * @param {String} filename
- * @return {Request} for chaining
- * @api public
- */Request.prototype.attach=function(field,file,filename){this._getFormData().append(field,file,filename||file.name);return this;};Request.prototype._getFormData=function(){if(!this._formData){this._formData=new root.FormData();}return this._formData;};/**
- * Send `data` as the request body, defaulting the `.type()` to "json" when
- * an object is given.
- *
- * Examples:
- *
- * // manual json
- * request.post('/user')
- * .type('json')
- * .send('{"name":"tj"}')
- * .end(callback)
- *
- * // auto json
- * request.post('/user')
- * .send({ name: 'tj' })
- * .end(callback)
- *
- * // manual x-www-form-urlencoded
- * request.post('/user')
- * .type('form')
- * .send('name=tj')
- * .end(callback)
- *
- * // auto x-www-form-urlencoded
- * request.post('/user')
- * .type('form')
- * .send({ name: 'tj' })
- * .end(callback)
- *
- * // defaults to x-www-form-urlencoded
- * request.post('/user')
- * .send('name=tobi')
- * .send('species=ferret')
- * .end(callback)
- *
- * @param {String|Object} data
- * @return {Request} for chaining
- * @api public
- */Request.prototype.send=function(data){var obj=isObject(data);var type=this._header['content-type'];// merge
-if(obj&&isObject(this._data)){for(var key in data){this._data[key]=data[key];}}else if('string'==typeof data){if(!type)this.type('form');type=this._header['content-type'];if('application/x-www-form-urlencoded'==type){this._data=this._data?this._data+'&'+data:data;}else{this._data=(this._data||'')+data;}}else{this._data=data;}if(!obj||isHost(data))return this;if(!type)this.type('json');return this;};/**
- * @deprecated
- */Response.prototype.parse=function serialize(fn){if(root.console){console.warn("Client-side parse() method has been renamed to serialize(). This method is not compatible with superagent v2.0");}this.serialize(fn);return this;};Response.prototype.serialize=function serialize(fn){this._parser=fn;return this;};/**
- * Invoke the callback with `err` and `res`
- * and handle arity check.
- *
- * @param {Error} err
- * @param {Response} res
- * @api private
- */Request.prototype.callback=function(err,res){var fn=this._callback;this.clearTimeout();fn(err,res);};/**
- * Invoke callback with x-domain error.
- *
- * @api private
- */Request.prototype.crossDomainError=function(){var err=new Error('Request has been terminated\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');err.crossDomain=true;err.status=this.status;err.method=this.method;err.url=this.url;this.callback(err);};/**
- * Invoke callback with timeout error.
- *
- * @api private
- */Request.prototype.timeoutError=function(){var timeout=this._timeout;var err=new Error('timeout of '+timeout+'ms exceeded');err.timeout=timeout;this.callback(err);};/**
- * Enable transmission of cookies with x-domain requests.
- *
- * Note that for this to work the origin must not be
- * using "Access-Control-Allow-Origin" with a wildcard,
- * and also must set "Access-Control-Allow-Credentials"
- * to "true".
- *
- * @api public
- */Request.prototype.withCredentials=function(){this._withCredentials=true;return this;};/**
- * Initiate request, invoking callback `fn(res)`
- * with an instanceof `Response`.
- *
- * @param {Function} fn
- * @return {Request} for chaining
- * @api public
- */Request.prototype.end=function(fn){var self=this;var xhr=this.xhr=request.getXHR();var query=this._query.join('&');var timeout=this._timeout;var data=this._formData||this._data;// store callback
-this._callback=fn||noop;// state change
-xhr.onreadystatechange=function(){if(4!=xhr.readyState)return;// In IE9, reads to any property (e.g. status) off of an aborted XHR will
-// result in the error "Could not complete the operation due to error c00c023f"
-var status;try{status=xhr.status;}catch(e){status=0;}if(0==status){if(self.timedout)return self.timeoutError();if(self.aborted)return;return self.crossDomainError();}self.emit('end');};// progress
-var handleProgress=function handleProgress(e){if(e.total>0){e.percent=e.loaded/e.total*100;}e.direction='download';self.emit('progress',e);};if(this.hasListeners('progress')){xhr.onprogress=handleProgress;}try{if(xhr.upload&&this.hasListeners('progress')){xhr.upload.onprogress=handleProgress;}}catch(e){}// Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.
-// Reported here:
-// https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context
-// timeout
-if(timeout&&!this._timer){this._timer=setTimeout(function(){self.timedout=true;self.abort();},timeout);}// querystring
-if(query){query=request.serializeObject(query);this.url+=~this.url.indexOf('?')?'&'+query:'?'+query;}// initiate request
-if(this.username&&this.password){xhr.open(this.method,this.url,true,this.username,this.password);}else{xhr.open(this.method,this.url,true);}// CORS
-if(this._withCredentials)xhr.withCredentials=true;// body
-if('GET'!=this.method&&'HEAD'!=this.method&&'string'!=typeof data&&!isHost(data)){// serialize stuff
-var contentType=this._header['content-type'];var serialize=this._parser||request.serialize[contentType?contentType.split(';')[0]:''];if(!serialize&&isJSON(contentType))serialize=request.serialize['application/json'];if(serialize)data=serialize(data);}// set header fields
-for(var field in this.header){if(null==this.header[field])continue;xhr.setRequestHeader(field,this.header[field]);}if(this._responseType){xhr.responseType=this._responseType;}// send stuff
-this.emit('request',this);// IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)
-// We need null here if data is undefined
-xhr.send(typeof data!=='undefined'?data:null);return this;};/**
- * Expose `Request`.
- */request.Request=Request;/**
- * GET `url` with optional callback `fn(res)`.
- *
- * @param {String} url
- * @param {Mixed|Function} data or fn
- * @param {Function} fn
- * @return {Request}
- * @api public
- */request.get=function(url,data,fn){var req=request('GET',url);if('function'==typeof data)fn=data,data=null;if(data)req.query(data);if(fn)req.end(fn);return req;};/**
- * HEAD `url` with optional callback `fn(res)`.
- *
- * @param {String} url
- * @param {Mixed|Function} data or fn
- * @param {Function} fn
- * @return {Request}
- * @api public
- */request.head=function(url,data,fn){var req=request('HEAD',url);if('function'==typeof data)fn=data,data=null;if(data)req.send(data);if(fn)req.end(fn);return req;};/**
- * DELETE `url` with optional callback `fn(res)`.
- *
- * @param {String} url
- * @param {Function} fn
- * @return {Request}
- * @api public
- */function del(url,fn){var req=request('DELETE',url);if(fn)req.end(fn);return req;};request['del']=del;request['delete']=del;/**
- * PATCH `url` with optional `data` and callback `fn(res)`.
- *
- * @param {String} url
- * @param {Mixed} data
- * @param {Function} fn
- * @return {Request}
- * @api public
- */request.patch=function(url,data,fn){var req=request('PATCH',url);if('function'==typeof data)fn=data,data=null;if(data)req.send(data);if(fn)req.end(fn);return req;};/**
- * POST `url` with optional `data` and callback `fn(res)`.
- *
- * @param {String} url
- * @param {Mixed} data
- * @param {Function} fn
- * @return {Request}
- * @api public
- */request.post=function(url,data,fn){var req=request('POST',url);if('function'==typeof data)fn=data,data=null;if(data)req.send(data);if(fn)req.end(fn);return req;};/**
- * PUT `url` with optional `data` and callback `fn(res)`.
- *
- * @param {String} url
- * @param {Mixed|Function} data or fn
- * @param {Function} fn
- * @return {Request}
- * @api public
- */request.put=function(url,data,fn){var req=request('PUT',url);if('function'==typeof data)fn=data,data=null;if(data)req.send(data);if(fn)req.end(fn);return req;};},{"./is-object":15,"./request":17,"./request-base":16,"emitter":2,"reduce":12}],15:[function(require,module,exports){/**
- * Check if `obj` is an object.
- *
- * @param {Object} obj
- * @return {Boolean}
- * @api private
- */function isObject(obj){return null!=obj&&'object'==(typeof obj==="undefined"?"undefined":_typeof(obj));}module.exports=isObject;},{}],16:[function(require,module,exports){/**
- * Module of mixed-in functions shared between node and client code
- */var isObject=require('./is-object');/**
- * Clear previous timeout.
- *
- * @return {Request} for chaining
- * @api public
- */exports.clearTimeout=function _clearTimeout(){this._timeout=0;clearTimeout(this._timer);return this;};/**
- * Force given parser
- *
- * Sets the body parser no matter type.
- *
- * @param {Function}
- * @api public
- */exports.parse=function parse(fn){this._parser=fn;return this;};/**
- * Set timeout to `ms`.
- *
- * @param {Number} ms
- * @return {Request} for chaining
- * @api public
- */exports.timeout=function timeout(ms){this._timeout=ms;return this;};/**
- * Faux promise support
- *
- * @param {Function} fulfill
- * @param {Function} reject
- * @return {Request}
- */exports.then=function then(fulfill,reject){return this.end(function(err,res){err?reject(err):fulfill(res);});};/**
- * Allow for extension
- */exports.use=function use(fn){fn(this);return this;};/**
- * Get request header `field`.
- * Case-insensitive.
- *
- * @param {String} field
- * @return {String}
- * @api public
- */exports.get=function(field){return this._header[field.toLowerCase()];};/**
- * Get case-insensitive header `field` value.
- * This is a deprecated internal API. Use `.get(field)` instead.
- *
- * (getHeader is no longer used internally by the superagent code base)
- *
- * @param {String} field
- * @return {String}
- * @api private
- * @deprecated
- */exports.getHeader=exports.get;/**
- * Set header `field` to `val`, or multiple fields with one object.
- * Case-insensitive.
- *
- * Examples:
- *
- * req.get('/')
- * .set('Accept', 'application/json')
- * .set('X-API-Key', 'foobar')
- * .end(callback);
- *
- * req.get('/')
- * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })
- * .end(callback);
- *
- * @param {String|Object} field
- * @param {String} val
- * @return {Request} for chaining
- * @api public
- */exports.set=function(field,val){if(isObject(field)){for(var key in field){this.set(key,field[key]);}return this;}this._header[field.toLowerCase()]=val;this.header[field]=val;return this;};/**
- * Remove header `field`.
- * Case-insensitive.
- *
- * Example:
- *
- * req.get('/')
- * .unset('User-Agent')
- * .end(callback);
- *
- * @param {String} field
- */exports.unset=function(field){delete this._header[field.toLowerCase()];delete this.header[field];return this;};/**
- * Write the field `name` and `val` for "multipart/form-data"
- * request bodies.
- *
- * ``` js
- * request.post('/upload')
- * .field('foo', 'bar')
- * .end(callback);
- * ```
- *
- * @param {String} name
- * @param {String|Blob|File|Buffer|fs.ReadStream} val
- * @return {Request} for chaining
- * @api public
- */exports.field=function(name,val){this._getFormData().append(name,val);return this;};},{"./is-object":15}],17:[function(require,module,exports){// The node and browser modules expose versions of this with the
-// appropriate constructor function bound as first argument
-/**
- * Issue a request:
- *
- * Examples:
- *
- * request('GET', '/users').end(callback)
- * request('/users').end(callback)
- * request('/users', callback)
- *
- * @param {String} method
- * @param {String|Function} url or callback
- * @return {Request}
- * @api public
- */function request(RequestConstructor,method,url){// callback
-if('function'==typeof url){return new RequestConstructor('GET',method).end(url);}// url first
-if(2==arguments.length){return new RequestConstructor('GET',method);}return new RequestConstructor(method,url);}module.exports=request;},{}],18:[function(require,module,exports){/*! https://mths.be/punycode v1.3.2 by @mathias, modified for URI.js */var punycode=function(){/**
- * The `punycode` object.
- * @name punycode
- * @type Object
- */var punycode,/** Highest positive signed 32-bit float value */maxInt=2147483647,// aka. 0x7FFFFFFF or 2^31-1
-/** Bootstring parameters */base=36,tMin=1,tMax=26,skew=38,damp=700,initialBias=72,initialN=128,// 0x80
-delimiter='-',// '\x2D'
-/** Regular expressions */regexPunycode=/^xn--/,regexNonASCII=/[^\x20-\x7E]/,// unprintable ASCII chars + non-ASCII chars
-regexSeparators=/[\x2E\u3002\uFF0E\uFF61]/g,// RFC 3490 separators
-/** Error messages */errors={'overflow':'Overflow: input needs wider integers to process','not-basic':'Illegal input >= 0x80 (not a basic code point)','invalid-input':'Invalid input'},/** Convenience shortcuts */baseMinusTMin=base-tMin,floor=Math.floor,stringFromCharCode=String.fromCharCode,/** Temporary variable */key;/*--------------------------------------------------------------------------*//**
- * A generic error utility function.
- * @private
- * @param {String} type The error type.
- * @returns {Error} Throws a `RangeError` with the applicable error message.
- */function error(type){throw new RangeError(errors[type]);}/**
- * A generic `Array#map` utility function.
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} callback The function that gets called for every array
- * item.
- * @returns {Array} A new array of values returned by the callback function.
- */function map(array,fn){var length=array.length;var result=[];while(length--){result[length]=fn(array[length]);}return result;}/**
- * A simple `Array#map`-like wrapper to work with domain name strings or email
- * addresses.
- * @private
- * @param {String} domain The domain name or email address.
- * @param {Function} callback The function that gets called for every
- * character.
- * @returns {Array} A new string of characters returned by the callback
- * function.
- */function mapDomain(string,fn){var parts=string.split('@');var result='';if(parts.length>1){// In email addresses, only the domain name should be punycoded. Leave
-// the local part (i.e. everything up to `@`) intact.
-result=parts[0]+'@';string=parts[1];}// Avoid `split(regex)` for IE8 compatibility. See #17.
-string=string.replace(regexSeparators,'\x2E');var labels=string.split('.');var encoded=map(labels,fn).join('.');return result+encoded;}/**
- * Creates an array containing the numeric code points of each Unicode
- * character in the string. While JavaScript uses UCS-2 internally,
- * this function will convert a pair of surrogate halves (each of which
- * UCS-2 exposes as separate characters) into a single code point,
- * matching UTF-16.
- * @see `punycode.ucs2.encode`
- * @see
- * @memberOf punycode.ucs2
- * @name decode
- * @param {String} string The Unicode input string (UCS-2).
- * @returns {Array} The new array of code points.
- */function ucs2decode(string){var output=[],counter=0,length=string.length,value,extra;while(counter=0xD800&&value<=0xDBFF&&counter0xFFFF){value-=0x10000;output+=stringFromCharCode(value>>>10&0x3FF|0xD800);value=0xDC00|value&0x3FF;}output+=stringFromCharCode(value);return output;}).join('');}/**
- * Converts a basic code point into a digit/integer.
- * @see `digitToBasic()`
- * @private
- * @param {Number} codePoint The basic numeric code point value.
- * @returns {Number} The numeric value of a basic code point (for use in
- * representing integers) in the range `0` to `base - 1`, or `base` if
- * the code point does not represent a value.
- */function basicToDigit(codePoint){if(codePoint-48<10){return codePoint-22;}if(codePoint-65<26){return codePoint-65;}if(codePoint-97<26){return codePoint-97;}return base;}/**
- * Converts a digit/integer into a basic code point.
- * @see `basicToDigit()`
- * @private
- * @param {Number} digit The numeric value of a basic code point.
- * @returns {Number} The basic code point whose value (when used for
- * representing integers) is `digit`, which needs to be in the range
- * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
- * used; else, the lowercase form is used. The behavior is undefined
- * if `flag` is non-zero and `digit` has no uppercase form.
- */function digitToBasic(digit,flag){// 0..25 map to ASCII a..z or A..Z
-// 26..35 map to ASCII 0..9
-return digit+22+75*(digit<26)-((flag!=0)<<5);}/**
- * Bias adaptation function as per section 3.4 of RFC 3492.
- * https://tools.ietf.org/html/rfc3492#section-3.4
- * @private
- */function adapt(delta,numPoints,firstTime){var k=0;delta=firstTime?floor(delta/damp):delta>>1;delta+=floor(delta/numPoints);for(;/* no initialization */delta>baseMinusTMin*tMax>>1;k+=base){delta=floor(delta/baseMinusTMin);}return floor(k+(baseMinusTMin+1)*delta/(delta+skew));}/**
- * Converts a Punycode string of ASCII-only symbols to a string of Unicode
- * symbols.
- * @memberOf punycode
- * @param {String} input The Punycode string of ASCII-only symbols.
- * @returns {String} The resulting string of Unicode symbols.
- */function decode(input){// Don't use UCS-2
-var output=[],inputLength=input.length,out,i=0,n=initialN,bias=initialBias,basic,j,index,oldi,w,k,digit,t,/** Cached calculation results */baseMinusT;// Handle the basic code points: let `basic` be the number of input code
-// points before the last delimiter, or `0` if there is none, then copy
-// the first basic code points to the output.
-basic=input.lastIndexOf(delimiter);if(basic<0){basic=0;}for(j=0;j=0x80){error('not-basic');}output.push(input.charCodeAt(j));}// Main decoding loop: start just after the last delimiter if any basic code
-// points were copied; start at the beginning otherwise.
-for(index=basic>0?basic+1:0;index=inputLength){error('invalid-input');}digit=basicToDigit(input.charCodeAt(index++));if(digit>=base||digit>floor((maxInt-i)/w)){error('overflow');}i+=digit*w;t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(digitfloor(maxInt/baseMinusT)){error('overflow');}w*=baseMinusT;}out=output.length+1;bias=adapt(i-oldi,out,oldi==0);// `i` was supposed to wrap around from `out` to `0`,
-// incrementing `n` each time, so we'll fix that now:
-if(floor(i/out)>maxInt-n){error('overflow');}n+=floor(i/out);i%=out;// Insert `n` at position `i` of the output
-output.splice(i++,0,n);}return ucs2encode(output);}/**
- * Converts a string of Unicode symbols (e.g. a domain name label) to a
- * Punycode string of ASCII-only symbols.
- * @memberOf punycode
- * @param {String} input The string of Unicode symbols.
- * @returns {String} The resulting Punycode string of ASCII-only symbols.
- */function encode(input){var n,delta,handledCPCount,basicLength,bias,j,m,q,k,t,currentValue,output=[],/** `inputLength` will hold the number of code points in `input`. */inputLength,/** Cached calculation results */handledCPCountPlusOne,baseMinusT,qMinusT;// Convert the input in UCS-2 to Unicode
-input=ucs2decode(input);// Cache the length
-inputLength=input.length;// Initialize the state
-n=initialN;delta=0;bias=initialBias;// Handle the basic code points
-for(j=0;j=n&¤tValue state to ,
-// but guard against overflow
-handledCPCountPlusOne=handledCPCount+1;if(m-n>floor((maxInt-delta)/handledCPCountPlusOne)){error('overflow');}delta+=(m-n)*handledCPCountPlusOne;n=m;for(j=0;jmaxInt){error('overflow');}if(currentValue==n){// Represent delta as a generalized variable-length integer
-for(q=delta,k=base;;/* no condition */k+=base){t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(q
- * @memberOf punycode
- * @type Object
- */ucs2:{decode:ucs2decode,encode:ucs2encode},decode:decode,encode:encode,toASCII:toASCII,toUnicode:toUnicode};return punycode;}();if(typeof COMPILED==="undefined"&&typeof module!=="undefined")module.exports=punycode;},{}],19:[function(require,module,exports){///
-require("./schemes/http");require("./schemes/urn");require("./schemes/mailto");},{"./schemes/http":20,"./schemes/mailto":21,"./schemes/urn":22}],20:[function(require,module,exports){///
-if(typeof COMPILED==="undefined"&&typeof URI==="undefined"&&typeof require==="function")var URI=require("../uri");URI.SCHEMES["http"]=URI.SCHEMES["https"]={domainHost:true,parse:function parse(components,options){//report missing host
-if(!components.host){components.error=components.error||"HTTP URIs must have a host.";}return components;},serialize:function serialize(components,options){//normalize the default port
-if(components.port===(String(components.scheme).toLowerCase()!=="https"?80:443)||components.port===""){components.port=undefined;}//normalize the empty path
-if(!components.path){components.path="/";}//NOTE: We do not parse query strings for HTTP URIs
-//as WWW Form Url Encoded query strings are part of the HTML4+ spec,
-//and not the HTTP spec.
-return components;}};},{"../uri":23}],21:[function(require,module,exports){///
-if(typeof COMPILED==="undefined"&&typeof URI==="undefined"&&typeof require==="function"){var URI=require("../uri"),punycode=require("../punycode");}(function(){function merge(){var sets=[];for(var _i=0;_i1){sets[0]=sets[0].slice(0,-1);var xl=sets.length-1;for(var x=1;xA-Z\\x5E-\\x7E]",VCHAR$$=merge(QTEXT$$,"[\\\"\\\\]"),DOT_ATOM_TEXT$=subexp(ATEXT$$+"+"+subexp("\\."+ATEXT$$+"+")+"*"),QUOTED_PAIR$=subexp("\\\\"+VCHAR$$),QCONTENT$=subexp(QTEXT$$+"|"+QUOTED_PAIR$),QUOTED_STRING$=subexp('\\"'+QCONTENT$+"*"+'\\"'),//RFC 6068
-DTEXT_NO_OBS$$="[\\x21-\\x5A\\x5E-\\x7E]",SOME_DELIMS$$="[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]",QCHAR$=subexp(UNRESERVED$$+"|"+PCT_ENCODED$+"|"+SOME_DELIMS$$),DOMAIN$=subexp(DOT_ATOM_TEXT$+"|"+"\\["+DTEXT_NO_OBS$$+"*"+"\\]"),LOCAL_PART$=subexp(DOT_ATOM_TEXT$+"|"+QUOTED_STRING$),ADDR_SPEC$=subexp(LOCAL_PART$+"\\@"+DOMAIN$),TO$=subexp(ADDR_SPEC$+subexp("\\,"+ADDR_SPEC$)+"*"),HFNAME$=subexp(QCHAR$+"*"),HFVALUE$=HFNAME$,HFIELD$=subexp(HFNAME$+"\\="+HFVALUE$),HFIELDS2$=subexp(HFIELD$+subexp("\\&"+HFIELD$)+"*"),HFIELDS$=subexp("\\?"+HFIELDS2$),MAILTO_URI=URI.VALIDATE_SUPPORT&&new RegExp("^mailto\\:"+TO$+"?"+HFIELDS$+"?$"),UNRESERVED=new RegExp(UNRESERVED$$,"g"),PCT_ENCODED=new RegExp(PCT_ENCODED$,"g"),NOT_LOCAL_PART=new RegExp(merge("[^]",ATEXT$$,"[\\.]",'[\\"]',VCHAR$$),"g"),NOT_DOMAIN=new RegExp(merge("[^]",ATEXT$$,"[\\.]","[\\[]",DTEXT_NO_OBS$$,"[\\]]"),"g"),NOT_HFNAME=new RegExp(merge("[^]",UNRESERVED$$,SOME_DELIMS$$),"g"),NOT_HFVALUE=NOT_HFNAME,TO=URI.VALIDATE_SUPPORT&&new RegExp("^"+TO$+"$"),HFIELDS=URI.VALIDATE_SUPPORT&&new RegExp("^"+HFIELDS2$+"$");function toUpperCase(str){return str.toUpperCase();}function decodeUnreserved(str){var decStr=URI.pctDecChars(str);return!decStr.match(UNRESERVED)?str:decStr;}function toArray(obj){return obj!==undefined&&obj!==null?obj instanceof Array&&!obj.callee?obj:typeof obj.length!=="number"||obj.split||obj.setInterval||obj.call?[obj]:Array.prototype.slice.call(obj):[];}URI.SCHEMES["mailto"]={parse:function parse(components,options){if(URI.VALIDATE_SUPPORT&&!components.error){if(components.path&&!TO.test(components.path)){components.error="Email address is not valid";}else if(components.query&&!HFIELDS.test(components.query)){components.error="Header fields are invalid";}}var to=components.to=components.path?components.path.split(","):[];components.path=undefined;if(components.query){var unknownHeaders=false,headers={};var hfields=components.query.split("&");for(var x=0,xl=hfields.length;x ASCII IDN
-try{addr[1]=punycode.toASCII(URI.unescapeComponent(addr[1],options).toLowerCase());}catch(e){components.error=components.error||"Email address's domain name can not be converted to ASCII via punycode: "+e;}}else{addr[1]=URI.unescapeComponent(addr[1],options).toLowerCase();}to[x]=addr.join("@");}return components;},serialize:function serialize(components,options){var to=toArray(components.to);if(to){for(var x=0,xl=to.length;x
-if(typeof COMPILED==="undefined"&&typeof URI==="undefined"&&typeof require==="function")var URI=require("../uri");(function(){var pctEncChar=URI.pctEncChar,NID$="(?:[0-9A-Za-z][0-9A-Za-z\\-]{1,31})",PCT_ENCODED$="(?:\\%[0-9A-Fa-f]{2})",TRANS$$="[0-9A-Za-z\\(\\)\\+\\,\\-\\.\\:\\=\\@\\;\\$\\_\\!\\*\\'\\/\\?\\#]",NSS$="(?:(?:"+PCT_ENCODED$+"|"+TRANS$$+")+)",URN_SCHEME=new RegExp("^urn\\:("+NID$+")$"),URN_PATH=new RegExp("^("+NID$+")\\:("+NSS$+")$"),URN_PARSE=/^([^\:]+)\:(.*)/,URN_EXCLUDED=/[\x00-\x20\\\"\&\<\>\[\]\^\`\{\|\}\~\x7F-\xFF]/g,UUID=/^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/;//RFC 2141
-URI.SCHEMES["urn"]={parse:function parse(components,options){var matches=components.path.match(URN_PATH),scheme,schemeHandler;if(!matches){if(!options.tolerant){components.error=components.error||"URN is not strictly valid.";}matches=components.path.match(URN_PARSE);}if(matches){scheme="urn:"+matches[1].toLowerCase();schemeHandler=URI.SCHEMES[scheme];//in order to serialize properly,
-//every URN must have a serializer that calls the URN serializer
-if(!schemeHandler){//create fake scheme handler
-schemeHandler=URI.SCHEMES[scheme]={parse:function parse(components,options){return components;},serialize:URI.SCHEMES["urn"].serialize};}components.scheme=scheme;components.path=matches[2];components=schemeHandler.parse(components,options);}else{components.error=components.error||"URN can not be parsed.";}return components;},serialize:function serialize(components,options){var scheme=components.scheme||options.scheme,matches;if(scheme&&scheme!=="urn"){var matches=scheme.match(URN_SCHEME);if(!matches){matches=["urn:"+scheme,scheme];}components.scheme="urn";components.path=matches[1]+":"+(components.path?components.path.replace(URN_EXCLUDED,pctEncChar):"");}return components;}};//RFC 4122
-URI.SCHEMES["urn:uuid"]={parse:function parse(components,options){if(!options.tolerant&&(!components.path||!components.path.match(UUID))){components.error=components.error||"UUID is not valid.";}return components;},serialize:function serialize(components,options){//ensure UUID is valid
-if(!options.tolerant&&(!components.path||!components.path.match(UUID))){//invalid UUIDs can not have this scheme
-components.scheme=undefined;}else{//normalize UUID
-components.path=(components.path||"").toLowerCase();}return URI.SCHEMES["urn"].serialize(components,options);}};})();},{"../uri":23}],23:[function(require,module,exports){/**
- * URI.js
- *
- * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.
- * @author Gary Court
- * @version 2.0.0
- * @see http://github.com/garycourt/uri-js
- * @license URI.js v2.0.0 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js
- *//**
- * Copyright 2011 Gary Court. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. 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 GARY COURT ``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 GARY COURT OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of Gary Court.
- *////
-///
-/**
- * Compiler switch for indicating code is compiled
- * @define {boolean}
- */var COMPILED=false;/**
- * Compiler switch for supporting IRI URIs
- * @define {boolean}
- */var URI__IRI_SUPPORT=true;/**
- * Compiler switch for supporting URI validation
- * @define {boolean}
- */var URI__VALIDATE_SUPPORT=true;var URI=function(){function merge(){var sets=[];for(var _i=0;_i1){sets[0]=sets[0].slice(0,-1);var xl=sets.length-1;for(var x=1;x>6|192).toString(16).toUpperCase()+"%"+(c&63|128).toString(16).toUpperCase();else e="%"+(c>>12|224).toString(16).toUpperCase()+"%"+(c>>6&63|128).toString(16).toUpperCase()+"%"+(c&63|128).toString(16).toUpperCase();return e;}function pctDecChars(str){var newStr="",i=0,il=str.length,c,c2,c3;while(i=194&&c<224){if(il-i>=6){c2=parseInt(str.substr(i+4,2),16);newStr+=String.fromCharCode((c&31)<<6|c2&63);}else{newStr+=str.substr(i,6);}i+=6;}else if(c>=224){if(il-i>=9){c2=parseInt(str.substr(i+4,2),16);c3=parseInt(str.substr(i+7,2),16);newStr+=String.fromCharCode((c&15)<<12|(c2&63)<<6|c3&63);}else{newStr+=str.substr(i,9);}i+=9;}else{newStr+=str.substr(i,3);i+=3;}}return newStr;}function typeOf(o){return o===undefined?"undefined":o===null?"null":Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase();}function toUpperCase(str){return str.toUpperCase();}var SCHEMES={};function _normalizeComponentEncoding(components,protocol){function decodeUnreserved(str){var decStr=pctDecChars(str);return!decStr.match(protocol.UNRESERVED)?str:decStr;}if(components.scheme)components.scheme=String(components.scheme).replace(protocol.PCT_ENCODED,decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME,"");if(components.userinfo!==undefined)components.userinfo=String(components.userinfo).replace(protocol.PCT_ENCODED,decodeUnreserved).replace(protocol.NOT_USERINFO,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);if(components.host!==undefined)components.host=String(components.host).replace(protocol.PCT_ENCODED,decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);if(components.path!==undefined)components.path=String(components.path).replace(protocol.PCT_ENCODED,decodeUnreserved).replace(components.scheme?protocol.NOT_PATH:protocol.NOT_PATH_NOSCHEME,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);if(components.query!==undefined)components.query=String(components.query).replace(protocol.PCT_ENCODED,decodeUnreserved).replace(protocol.NOT_QUERY,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);if(components.fragment!==undefined)components.fragment=String(components.fragment).replace(protocol.PCT_ENCODED,decodeUnreserved).replace(protocol.NOT_FRAGMENT,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);return components;};function parse(uriString,options){if(options===void 0){options={};}var protocol=URI__IRI_SUPPORT&&options.iri!==false?IRI_PROTOCOL:URI_PROTOCOL,matches,parseError=false,components={},schemeHandler;if(options.reference==="suffix")uriString=(options.scheme?options.scheme+":":"")+"//"+uriString;if(URI__VALIDATE_SUPPORT){matches=uriString.match(protocol.URI_REF);if(matches){if(matches[1]){//generic URI
-matches=matches.slice(1,10);}else{//relative URI
-matches=matches.slice(10,19);}}if(!matches){parseError=true;if(!options.tolerant)components.error=components.error||"URI is not strictly valid.";matches=uriString.match(URI_PARSE);}}else{matches=uriString.match(URI_PARSE);}if(matches){if(NO_MATCH_IS_UNDEFINED){//store each component
-components.scheme=matches[1];//components.authority = matches[2];
-components.userinfo=matches[3];components.host=matches[4];components.port=parseInt(matches[5],10);components.path=matches[6]||"";components.query=matches[7];components.fragment=matches[8];//fix port number
-if(isNaN(components.port)){components.port=matches[5];}}else{//store each component
-components.scheme=matches[1]||undefined;//components.authority = (uriString.indexOf("//") !== -1 ? matches[2] : undefined);
-components.userinfo=uriString.indexOf("@")!==-1?matches[3]:undefined;components.host=uriString.indexOf("//")!==-1?matches[4]:undefined;components.port=parseInt(matches[5],10);components.path=matches[6]||"";components.query=uriString.indexOf("?")!==-1?matches[7]:undefined;components.fragment=uriString.indexOf("#")!==-1?matches[8]:undefined;//fix port number
-if(isNaN(components.port)){components.port=uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?matches[4]:undefined;}}//determine reference type
-if(components.scheme===undefined&&components.userinfo===undefined&&components.host===undefined&&components.port===undefined&&!components.path&&components.query===undefined){components.reference="same-document";}else if(components.scheme===undefined){components.reference="relative";}else if(components.fragment===undefined){components.reference="absolute";}else{components.reference="uri";}//check for reference errors
-if(options.reference&&options.reference!=="suffix"&&options.reference!==components.reference){components.error=components.error||"URI is not a "+options.reference+" reference.";}//find scheme handler
-schemeHandler=SCHEMES[(options.scheme||components.scheme||"").toLowerCase()];//check if scheme can't handle IRIs
-if(URI__IRI_SUPPORT&&typeof punycode!=="undefined"&&!options.unicodeSupport&&(!schemeHandler||!schemeHandler.unicodeSupport)){//if host component is a domain name
-if(components.host&&(options.domainHost||schemeHandler&&schemeHandler.domainHost)){//convert Unicode IDN -> ASCII IDN
-try{components.host=punycode.toASCII(components.host.replace(protocol.PCT_ENCODED,pctDecChars).toLowerCase());}catch(e){components.error=components.error||"Host's domain name can not be converted to ASCII via punycode: "+e;}}//convert IRI -> URI
-_normalizeComponentEncoding(components,URI_PROTOCOL);}else{//normalize encodings
-_normalizeComponentEncoding(components,protocol);}//perform scheme specific parsing
-if(schemeHandler&&schemeHandler.parse){schemeHandler.parse(components,options);}}else{parseError=true;components.error=components.error||"URI can not be parsed.";}return components;};function _recomposeAuthority(components,options){var uriTokens=[];if(components.userinfo!==undefined){uriTokens.push(components.userinfo);uriTokens.push("@");}if(components.host!==undefined){uriTokens.push(components.host);}if(typeof components.port==="number"){uriTokens.push(":");uriTokens.push(components.port.toString(10));}return uriTokens.length?uriTokens.join(""):undefined;};function removeDotSegments(input){var output=[],s;while(input.length){if(input.match(RDS1)){input=input.replace(RDS1,"");}else if(input.match(RDS2)){input=input.replace(RDS2,"/");}else if(input.match(RDS3)){input=input.replace(RDS3,"/");output.pop();}else if(input==="."||input===".."){input="";}else{s=input.match(RDS5)[0];input=input.slice(s.length);output.push(s);}}return output.join("");};function serialize(components,options){if(options===void 0){options={};}var protocol=URI__IRI_SUPPORT&&options.iri?IRI_PROTOCOL:URI_PROTOCOL,uriTokens=[],schemeHandler,authority,s;//find scheme handler
-schemeHandler=SCHEMES[(options.scheme||components.scheme||"").toLowerCase()];//perform scheme specific serialization
-if(schemeHandler&&schemeHandler.serialize)schemeHandler.serialize(components,options);//if host component is a domain name
-if(URI__IRI_SUPPORT&&typeof punycode!=="undefined"&&components.host&&(options.domainHost||schemeHandler&&schemeHandler.domainHost)){//convert IDN via punycode
-try{components.host=!options.iri?punycode.toASCII(components.host.replace(protocol.PCT_ENCODED,pctDecChars).toLowerCase()):punycode.toUnicode(components.host);}catch(e){components.error=components.error||"Host's domain name can not be converted to "+(!options.iri?"ASCII":"Unicode")+" via punycode: "+e;}}//normalize encoding
-_normalizeComponentEncoding(components,protocol);if(options.reference!=="suffix"&&components.scheme){uriTokens.push(components.scheme);uriTokens.push(":");}authority=_recomposeAuthority(components,options);if(authority!==undefined){if(options.reference!=="suffix"){uriTokens.push("//");}uriTokens.push(authority);if(components.path&&components.path.charAt(0)!=="/"){uriTokens.push("/");}}if(components.path!==undefined){s=components.path;if(!options.absolutePath&&(!schemeHandler||!schemeHandler.absolutePath)){s=removeDotSegments(s);}if(authority===undefined){s=s.replace(/^\/\//,"/%2F");//don't allow the path to start with "//"
-}uriTokens.push(s);}if(components.query!==undefined){uriTokens.push("?");uriTokens.push(components.query);}if(components.fragment!==undefined){uriTokens.push("#");uriTokens.push(components.fragment);}return uriTokens.join('');//merge tokens into a string
-};function resolveComponents(base,relative,options,skipNormalization){if(options===void 0){options={};}var target={};if(!skipNormalization){base=parse(serialize(base,options),options);//normalize base components
-relative=parse(serialize(relative,options),options);//normalize relative components
-}options=options||{};if(!options.tolerant&&relative.scheme){target.scheme=relative.scheme;//target.authority = relative.authority;
-target.userinfo=relative.userinfo;target.host=relative.host;target.port=relative.port;target.path=removeDotSegments(relative.path);target.query=relative.query;}else{if(relative.userinfo!==undefined||relative.host!==undefined||relative.port!==undefined){//target.authority = relative.authority;
-target.userinfo=relative.userinfo;target.host=relative.host;target.port=relative.port;target.path=removeDotSegments(relative.path);target.query=relative.query;}else{if(!relative.path){target.path=base.path;if(relative.query!==undefined){target.query=relative.query;}else{target.query=base.query;}}else{if(relative.path.charAt(0)==="/"){target.path=removeDotSegments(relative.path);}else{if((base.userinfo!==undefined||base.host!==undefined||base.port!==undefined)&&!base.path){target.path="/"+relative.path;}else if(!base.path){target.path=relative.path;}else{target.path=base.path.slice(0,base.path.lastIndexOf("/")+1)+relative.path;}target.path=removeDotSegments(target.path);}target.query=relative.query;}//target.authority = base.authority;
-target.userinfo=base.userinfo;target.host=base.host;target.port=base.port;}target.scheme=base.scheme;}target.fragment=relative.fragment;return target;};function resolve(baseURI,relativeURI,options){return serialize(resolveComponents(parse(baseURI,options),parse(relativeURI,options),options,true),options);};function normalize(uri,options){if(typeof uri==="string"){uri=serialize(parse(uri,options),options);}else if(typeOf(uri)==="object"){uri=parse(serialize(uri,options),options);}return uri;};function equal(uriA,uriB,options){if(typeof uriA==="string"){uriA=serialize(parse(uriA,options),options);}else if(typeOf(uriA)==="object"){uriA=serialize(uriA,options);}if(typeof uriB==="string"){uriB=serialize(parse(uriB,options),options);}else if(typeOf(uriB)==="object"){uriB=serialize(uriB,options);}return uriA===uriB;};function escapeComponent(str,options){return str&&str.toString().replace(!URI__IRI_SUPPORT||!options||!options.iri?URI_PROTOCOL.ESCAPE:IRI_PROTOCOL.ESCAPE,pctEncChar);};function unescapeComponent(str,options){return str&&str.toString().replace(!URI__IRI_SUPPORT||!options||!options.iri?URI_PROTOCOL.PCT_ENCODED:IRI_PROTOCOL.PCT_ENCODED,pctDecChars);};return{IRI_SUPPORT:URI__IRI_SUPPORT,VALIDATE_SUPPORT:URI__VALIDATE_SUPPORT,pctEncChar:pctEncChar,pctDecChars:pctDecChars,SCHEMES:SCHEMES,parse:parse,_recomposeAuthority:_recomposeAuthority,removeDotSegments:removeDotSegments,serialize:serialize,resolveComponents:resolveComponents,resolve:resolve,normalize:normalize,equal:equal,escapeComponent:escapeComponent,unescapeComponent:unescapeComponent};}();if(!COMPILED&&typeof module!=="undefined"&&typeof require==="function"){var punycode=require("./punycode");module.exports=URI;require("./schemes");}},{"./punycode":18,"./schemes":19}]},{},[1])(1);});
-
-/***/ }),
-/* 6 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sf_path__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__schema_defaults__ = __webpack_require__(3);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__canonical_title_map__ = __webpack_require__(1);
-/* harmony export (immutable) */ __webpack_exports__["a"] = merge;
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-
-
-
-
-// export function merge(schema, form, schemaDefaultTypes, ignore, options, readonly, asyncTemplates) {
-function merge(lookup, form) {
- var typeDefaults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__schema_defaults__["createDefaults"])();
- var ignore = arguments[3];
- var options = arguments[4];
- var readonly = arguments[5];
- var asyncTemplates = arguments[6];
-
- var formItems = [];
- var formItemRest = [];
- form = form || [];
- var idx = form.indexOf('*');
- options = options || {};
- var stdForm = {};
-
- var idxRest = form.indexOf('...');
- if ((typeof lookup === 'undefined' ? 'undefined' : _typeof(lookup)) === 'object' && lookup.hasOwnProperty('properties')) {
- readonly = readonly || lookup.readonly || lookup.readOnly;
- stdForm = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__schema_defaults__["defaultForm"])(lookup, typeDefaults, ignore, options);
-
- var defaultFormLookup = stdForm.lookup;
-
- lookup = defaultFormLookup || lookup;
- formItems = formItems.concat(stdForm.form);
- };
-
- if (idx !== -1) {
- form = form.slice(0, idx).concat(formItems).concat(form.slice(idx + 1));
- }
-
- //simple case, we have a "...", just put the formItemRest there
- if (stdForm.form && idxRest !== -1) {
- (function () {
- var formKeys = form.map(function (obj) {
- if (typeof obj === 'string') {
- return obj;
- } else if (obj.key) {
- return obj.key;
- };
- }).filter(function (element) {
- return element !== undefined;
- });
-
- formItemRest = formItemRest.concat(stdForm.form.map(function (obj) {
- var isInside = formKeys.indexOf(obj.key[0]) !== -1;
- if (!isInside) {
- return obj;
- };
- }).filter(function (element) {
- return element !== undefined;
- }));
- })();
- };
-
- if (idxRest !== -1) {
- form = form.slice(0, idxRest).concat(formItemRest).concat(form.slice(idxRest + 1));
- };
-
- // ok let's merge!
- // We look at the supplied form and extend it with schema standards
- return form.map(function (obj) {
- // handle the shortcut with just a name
- if (typeof obj === 'string') {
- obj = { key: obj };
- }
-
- if (obj.key) {
- if (typeof obj.key === 'string') {
- obj.key = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__sf_path__["parse"])(obj.key);
- }
- }
-
- // If it has a titleMap make sure it's a list
- if (obj.titleMap) {
- obj.titleMap = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__canonical_title_map__["a" /* default */])(obj.titleMap);
- }
-
- // extend with std form from schema.
- if (obj.key) {
- var strid = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__sf_path__["stringify"])(obj.key);
- if (lookup[strid]) {
- (function () {
- var schemaDefaults = lookup[strid];
- if (schemaDefaults) {
- Object.keys(schemaDefaults).forEach(function (attr) {
- if (obj[attr] === undefined) {
- obj[attr] = schemaDefaults[attr];
- }
- });
- }
- })();
- }
- }
-
- // Are we inheriting readonly?
- if (readonly === true) {
- // Inheriting false is not cool.
- obj.readonly = true;
- }
-
- // if it's a type with items, merge 'em!
- if (obj.items) {
- obj.items = merge(lookup, obj.items, typeDefaults, ignore, options, obj.readonly, asyncTemplates);
- }
-
- // if its has tabs, merge them also!
- if (obj.tabs) {
- obj.tabs.forEach(function (tab) {
- if (tab.items) {
- tab.items = merge(lookup, tab.items, typeDefaults, ignore, options, obj.readonly, asyncTemplates);
- }
- });
- }
-
- // Special case: checkbox
- // Since have to ternary state we need a default
- if (obj.type === 'checkbox') {
- // Check for schema property, as the checkbox may be part of the explicitly defined form
- if (obj.schema === undefined) {
- obj.schema = { default: false };
- } else if (obj.schema['default'] === undefined) {
- obj.schema['default'] = false;
- };
- };
-
- // Special case: template type with tempplateUrl that's needs to be loaded before rendering
- // TODO: this is not a clean solution. Maybe something cleaner can be made when $ref support
- // is introduced since we need to go async then anyway
- if (asyncTemplates && obj.type === 'template' && !obj.template && obj.templateUrl) {
- asyncTemplates.push(obj);
- };
-
- return obj;
- });
-}
-
-/***/ }),
-/* 7 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lib_json_refs_standalone__ = __webpack_require__(5);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lib_json_refs_standalone___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__lib_json_refs_standalone__);
-/* harmony export (immutable) */ __webpack_exports__["a"] = jsonref;
-
-
-function jsonref(schema, callBack) {
- var promise = new Promise(function (resolve, reject) {
- __WEBPACK_IMPORTED_MODULE_0__lib_json_refs_standalone__["resolveRefs"](schema, {
- "filter": ['relative', 'local', 'remote']
- }).then(function (res) {
- resolve(res.resolved);
- }).catch(function (err) {
- reject(new Error(err));
- });
- });
-
- if (typeof callBack === 'function') {
- promise.then(function (resolved) {
- callBack(null, resolved);
- }).catch(function (error) {
- callBack(error);
- });
- } else {
- return promise;
- }
-};
-
-/***/ }),
-/* 8 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sf_path__ = __webpack_require__(0);
-/* harmony export (immutable) */ __webpack_exports__["a"] = select;
-
-
-var numRe = /^\d+$/;
-
-/**
- * @description
- * Utility method to access deep properties without
- * throwing errors when things are not defined.
- * Can also set a value in a deep structure, creating objects when missing
- * ex.
- * var foo = Select('address.contact.name',obj)
- * Select('address.contact.name',obj,'Leeroy')
- *
- * @param {string} projection A dot path to the property you want to get/set
- * @param {object} obj (optional) The object to project on, defaults to 'this'
- * @param {Any} valueToSet (opional) The value to set, if parts of the path of
- * the projection is missing empty objects will be created.
- * @returns {Any|undefined} returns the value at the end of the projection path
- * or undefined if there is none.
- */
-function select(projection, obj, valueToSet) {
- if (!obj) {
- obj = this;
- };
-
- // Support [] array syntax
- var parts = typeof projection === 'string' ? __WEBPACK_IMPORTED_MODULE_0__sf_path__["parse"](projection) : projection;
-
- if (typeof valueToSet !== 'undefined' && parts.length === 1) {
- // special case, just setting one variable
- obj[parts[0]] = valueToSet;
-
- return obj;
- };
-
- if (typeof valueToSet !== 'undefined' && typeof obj[parts[0]] === 'undefined') {
- // We need to look ahead to check if array is appropriate
- obj[parts[0]] = parts.length > 2 && numRe.test(parts[1]) ? [] : {};
- };
-
- var value = obj[parts[0]];
-
- for (var i = 1; i < parts.length; i++) {
- // Special case: We allow JSON Form syntax for arrays using empty brackets
- // These will of course not work here so we exit if they are found.
- if (parts[i] === '') {
- return undefined;
- };
-
- if (typeof valueToSet !== 'undefined') {
- if (i === parts.length - 1) {
- // last step. Let's set the value
- value[parts[i]] = valueToSet;
- return valueToSet;
- } else {
- // Make sure to create new objects on the way if they are not there.
- // We need to look ahead to check if array is appropriate
- var tmp = value[parts[i]];
-
- if (typeof tmp === 'undefined' || tmp === null) {
- tmp = numRe.test(parts[i + 1]) ? [] : {};
- value[parts[i]] = tmp;
- };
-
- value = tmp;
- };
- } else if (value) {
- // Just get nex value.
- value = value[parts[i]];
- };
- };
-
- return value;
-};
-
-/***/ }),
-/* 9 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (immutable) */ __webpack_exports__["a"] = traverseSchema;
-/* harmony export (immutable) */ __webpack_exports__["b"] = traverseForm;
-/**
- * Traverse a schema, applying a function(schema,path) on every sub schema
- * i.e. every property of an object.
- */
-function traverseSchema(schema, fn, path, ignoreArrays) {
- ignoreArrays = ignoreArrays === undefined ? true : ignoreArrays;
-
- path = path || [];
-
- var traverse = function traverse(schemaObject, processorFunction, pathArray) {
- processorFunction(schemaObject, pathArray);
- if (schemaObject.properties) {
- Object.keys(schemaObject.properties).forEach(function (name) {
- var currentPath = pathArray.slice();
- currentPath.push(name);
- traverse(schemaObject.properties[name], processorFunction, currentPath);
- });
- }
-
- // Only support type "array" which have a schemaObject as "items".
- if (!ignoreArrays && schemaObject.items) {
- var arrPath = pathArray.slice();arrPath.push('');
- traverse(schemaObject.items, processorFunction, arrPath);
- }
- };
-
- traverse(schema, fn, path || []);
-}
-
-function traverseForm(form, fn) {
- fn(form);
- if (form.items) {
- form.items.forEach(function (f) {
- traverseForm(f, fn);
- });
- }
-
- if (form.tabs) {
- form.tabs.forEach(function (tab) {
- if (tab.items) {
- tab.items.forEach(function (f) {
- traverseForm(f, fn);
- });
- }
- });
- }
-}
-
-/***/ }),
-/* 10 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tv4__ = __webpack_require__(12);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tv4___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_tv4__);
-/* harmony export (immutable) */ __webpack_exports__["a"] = validate;
-/* Common code for validating a value against its form and schema definition */
-
-
-/**
- * Validate a value against its form definition and schema.
- * The value should either be of proper type or a string, some type
- * coercion is applied.
- *
- * @param {Object} form A merged form definition, i.e. one with a schema.
- * @param {Any} value the value to validate.
- * @return {Object} a tv4js result object.
- */
-function validate(form, value) {
- if (!form) {
- return { valid: true };
- };
-
- var schema = form.schema;
- if (!schema) {
- return { valid: true };
- };
-
- // Input of type text and textareas will give us a viewValue of ''
- // when empty, this is a valid value in a schema and does not count as something
- // that breaks validation of 'required'. But for our own sanity an empty field should
- // not validate if it's required.
- if (value === '') {
- value = undefined;
- };
-
- // Numbers fields will give a null value, which also means empty field
- if (form.type === 'number' && value === null) {
- value = undefined;
- };
-
- // Version 4 of JSON Schema has the required property not on the
- // property itself but on the wrapping object. Since we like to test
- // only this property we wrap it in a fake object.
- var wrap = { type: 'object', 'properties': {}, required: undefined };
- var propName = form.key[form.key.length - 1];
- wrap.properties[propName] = schema;
-
- if (form.required) {
- wrap.required = [propName];
- };
-
- var valueWrap = {};
- if (typeof value !== 'undefined') {
- valueWrap[propName] = value;
- };
-
- return __WEBPACK_IMPORTED_MODULE_0_tv4___default.a.validateResult(valueWrap, wrap);
-};
-
-/***/ }),
-/* 11 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-var __WEBPACK_AMD_DEFINE_RESULT__;
-
-;!function(undefined) {
-
- var ObjectPath = {
- parse: function(str){
- if(typeof str !== 'string'){
- throw new TypeError('ObjectPath.parse must be passed a string');
- }
-
- var i = 0;
- var parts = [];
- var d, b, q, c;
- while (i < str.length){
- d = str.indexOf('.', i);
- b = str.indexOf('[', i);
-
- // we've reached the end
- if (d === -1 && b === -1){
- parts.push(str.slice(i, str.length));
- i = str.length;
- }
-
- // dots
- else if (b === -1 || (d !== -1 && d < b)) {
- parts.push(str.slice(i, d));
- i = d + 1;
- }
-
- // brackets
- else {
- if (b > i){
- parts.push(str.slice(i, b));
- i = b;
- }
- q = str.slice(b+1, b+2);
- if (q !== '"' && q !=='\'') {
- c = str.indexOf(']', b);
- if (c === -1) c = str.length;
- parts.push(str.slice(i + 1, c));
- i = (str.slice(c + 1, c + 2) === '.') ? c + 2 : c + 1;
- } else {
- c = str.indexOf(q+']', b);
- if (c === -1) c = str.length;
- while (str.slice(c - 1, c) === '\\' && b < str.length){
- b++;
- c = str.indexOf(q+']', b);
- }
- parts.push(str.slice(i + 2, c).replace(new RegExp('\\'+q,'g'), q));
- i = (str.slice(c + 2, c + 3) === '.') ? c + 3 : c + 2;
- }
- }
- }
- return parts;
- },
-
- // root === true : auto calculate root; must be dot-notation friendly
- // root String : the string to use as root
- stringify: function(arr, quote){
-
- if(!Array.isArray(arr))
- arr = [arr.toString()];
-
- quote = quote === '"' ? '"' : '\'';
-
- return arr.map(function(n){ return '[' + quote + (n.toString()).replace(new RegExp(quote, 'g'), '\\' + quote) + quote + ']'; }).join('');
- },
-
- normalize: function(data, quote){
- return ObjectPath.stringify(Array.isArray(data) ? data : ObjectPath.parse(data), quote);
- },
-
- // Angular
- registerModule: function(angular) {
- angular.module('ObjectPath', []).provider('ObjectPath', function(){
- this.parse = ObjectPath.parse;
- this.stringify = ObjectPath.stringify;
- this.normalize = ObjectPath.normalize;
- this.$get = function(){
- return ObjectPath;
- };
- });
- }
- };
-
- // AMD
- if (true) {
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function() {
- return {ObjectPath: ObjectPath};
- }.call(exports, __webpack_require__, exports, module),
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
- }
-
- // CommonJS
- else if (typeof exports === 'object') {
- exports.ObjectPath = ObjectPath;
- }
-
- // Browser global
- else {
- window.ObjectPath = ObjectPath;
- }
-
-}();
-
-/***/ }),
-/* 12 */
-/***/ (function(module, exports) {
-
-module.exports = tv4;
-
-/***/ }),
-/* 13 */
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__(4);
-
-
-/***/ })
-/******/ ]);
-//# sourceMappingURL=json-schema-form-core.js.map
\ No newline at end of file
diff --git a/dist/json-schema-form-core.js.map b/dist/json-schema-form-core.js.map
deleted file mode 100644
index 077a655..0000000
--- a/dist/json-schema-form-core.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap 29e9f63d8ee4b92578af","webpack:///./src/lib/sf-path.js","webpack:///./src/lib/canonical-title-map.js","webpack:///./~/objectpath/index.js","webpack:///./src/lib/schema-defaults.js","webpack:///./src/module.js","webpack:///node_modules/browser-pack/_prelude.js","webpack:///index.js","webpack:///node_modules/component-emitter/index.js","webpack:///node_modules/native-promise-only/lib/npo.src.js","webpack:///node_modules/path-browserify/index.js","webpack:///node_modules/path-loader/index.js","webpack:///node_modules/path-loader/lib/loaders/file-browser.js","webpack:///node_modules/path-loader/lib/loaders/http.js","webpack:///node_modules/process/browser.js","webpack:///node_modules/querystring-es3/decode.js","webpack:///node_modules/querystring-es3/encode.js","webpack:///node_modules/querystring-es3/index.js","webpack:///node_modules/reduce-component/index.js","webpack:///node_modules/slash/index.js","webpack:///node_modules/superagent/lib/client.js","webpack:///node_modules/superagent/lib/is-object.js","webpack:///node_modules/superagent/lib/request-base.js","webpack:///node_modules/superagent/lib/request.js","webpack:///node_modules/uri-js/build/punycode.js","webpack:///node_modules/uri-js/build/schemes.js","webpack:///node_modules/uri-js/build/schemes/http.js","webpack:///node_modules/uri-js/build/schemes/mailto.js","webpack:///node_modules/uri-js/build/schemes/urn.js","webpack:///node_modules/uri-js/build/uri.js","webpack:///./src/lib/merge.js","webpack:///./src/lib/resolve.js","webpack:///./src/lib/select.js","webpack:///./src/lib/traverse.js","webpack:///./src/lib/validate.js","webpack:///./~/objectpath/lib/ObjectPath.js","webpack:///external \"tv4\""],"names":["name","key","separator","formName","omitNumbers","fieldKey","slice","fieldSeparator","filter","currentKey","length","join","titleMap","originalEnum","Array","isArray","canonical","forEach","value","push","Object","keys","stripNullType","type","enumToTitleMap","enm","defaultFormDefinition","schemaTypes","schema","options","rules","def","innerDefaultFormDefinition","childName","childSchema","childOptions","i","assign","stdFormObj","f","global","formDefaults","supressPropertyTitles","title","description","required","maxLength","maxlength","minLength","minlength","readOnly","readonly","minimum","exclusiveMinimum","maximum","exclusiveMaximum","validationMessage","enumNames","canonicalTitleMap","ngModelOptions","text","path","lookup","stringify","number","integer","checkbox","select","checkboxes","items","fieldset","defaultFormDef","properties","ignore","indexOf","array","arrPath","createDefaults","string","object","boolean","defaultForm","defaultSchemaTypes","globalOptions","form","Error","sfPath","schemaDefaults","merge","typeDefaults","asyncTemplates","formItems","formItemRest","idx","stdForm","idxRest","hasOwnProperty","defaultFormLookup","concat","formKeys","map","obj","element","undefined","isInside","parse","strid","attr","tabs","tab","default","template","templateUrl","jsonref","callBack","promise","Promise","resolve","reject","JsonRefs","then","res","resolved","catch","err","error","numRe","projection","valueToSet","parts","test","tmp","traverseSchema","fn","ignoreArrays","traverse","schemaObject","processorFunction","pathArray","currentPath","traverseForm","validate","valid","wrap","propName","valueWrap","tv4","validateResult"],"mappings":";;;;;;;;;;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA,mDAA2C,cAAc;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;;;;;;AChEA;AACA;AACA;;AAEA;;;;;;;;;;AAUO,SAASA,IAAT,CAAeC,GAAf,EAAmCC,SAAnC,EAA2F;AAAA,MAApCC,QAAoC,uEAAzB,EAAyB;AAAA,MAArBC,WAAqB,uEAAP,KAAO;;AAChG,MAAIH,GAAJ,EAAS;AACP,QAAII,WAAWJ,IAAIK,KAAJ,EAAf;AACA,QAAIC,iBAAiBL,aAAa,GAAlC;;AAEA,QAAIE,WAAJ,EAAiB;AACfC,iBAAWA,SAASG,MAAT,CAAgB,UAASC,UAAT,EAA0B;AACnD,eAAO,OAAOA,UAAP,KAAsB,QAA7B;AACD,OAFU,CAAX;AAGD;;AAED,WAAO,CAAEN,SAASO,MAAT,KAAoB,CAArB,GACJP,WAAWI,cADP,GAEJ,EAFG,IAGHF,SAASM,IAAT,CAAcJ,cAAd,CAHJ;AAID;;AAED,SAAO,EAAP;AACD,E;;;;;;;;;AChCD;AAEA,wDAAe,UAASK,QAAT,EAA+BC,YAA/B,EAAmD;AAChE,MAAI,CAACC,MAAMC,OAAN,CAAcH,QAAd,CAAL,EAA8B;AAAA;AAC5B,UAAMI,YAAY,EAAlB;AACA,UAAIH,YAAJ,EAAkB;AAChBA,qBAAaI,OAAb,CAAqB,UAACC,KAAD,EAAW;AAC9BF,oBAAUG,IAAV,CAAe,EAAEnB,MAAMY,SAASM,KAAT,CAAR,EAAyBA,YAAzB,EAAf;AACD,SAFD;AAGD,OAJD,MAKK;AACHE,eAAOC,IAAP,CAAYT,QAAZ,EAAsBK,OAAtB,CAA8B,UAACC,KAAD,EAAW;AACvCF,oBAAUG,IAAV,CAAe,EAAEnB,MAAMY,SAASM,KAAT,CAAR,EAAyBA,YAAzB,EAAf;AACD,SAFD;AAGD;AACD;AAAA,WAAOF;AAAP;AAZ4B;;AAAA;AAa7B;AACD,SAAOJ,QAAP;AACD,C;;;;;;AClBD;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AACA;;AAEA;AACA,IAAMU,gBAAgB,SAAhBA,aAAgB,CAACC,IAAD,EAAU;AAC9B,MAAIT,MAAMC,OAAN,CAAcQ,IAAd,KAAuBA,KAAKb,MAAL,KAAgB,CAA3C,EAA8C;AAC5C,QAAIa,KAAK,CAAL,MAAY,MAAhB,EAAwB;AACtB,aAAOA,KAAK,CAAL,CAAP;AACD;AACD,QAAIA,KAAK,CAAL,MAAY,MAAhB,EAAwB;AACtB,aAAOA,KAAK,CAAL,CAAP;AACD;AACF;AACD,SAAOA,IAAP;AACD,CAVD;;AAYA;AACA,IAAMC,iBAAiB,SAAjBA,cAAiB,CAACC,GAAD,EAAS;AAC9B,MAAMb,WAAW,EAAjB,CAD8B,CACT;AACrBa,MAAIR,OAAJ,CAAY,UAACjB,IAAD,EAAU;AACpBY,aAASO,IAAT,CAAc,EAAEnB,UAAF,EAAQkB,OAAOlB,IAAf,EAAd;AACD,GAFD;AAGA,SAAOY,QAAP;AACD,CAND;;AAQA;;;AAGO,SAASc,qBAAT,CAA+BC,WAA/B,EAA4C3B,IAA5C,EAAkD4B,MAAlD,EAA0DC,OAA1D,EAAmE;AACxE,MAAMC,QAAQH,YAAYL,cAAcM,OAAOL,IAArB,CAAZ,CAAd;AACA,MAAIO,KAAJ,EAAW;AACT,QAAIC,YAAJ;AACA;AACA,QAAMC,6BAA6B,SAA7BA,0BAA6B,CAACC,SAAD,EAAYC,WAAZ,EAA0BC,YAA1B;AAAA,aACbT,sBAAsBC,WAAtB,EAAmCM,SAAnC,EAA8CC,WAA9C,EAA2DC,YAA3D,CADa;AAAA,KAAnC;AAEA,SAAK,IAAIC,IAAI,CAAb,EAAgBA,IAAIN,MAAMpB,MAA1B,EAAkC0B,GAAlC,EAAuC;AACrCL,YAAMD,MAAMM,CAAN,EAASpC,IAAT,EAAe4B,MAAf,EAAuBC,OAAvB,EAAgCG,0BAAhC,CAAN;;AAEA;AACA,UAAID,GAAJ,EAAS;;AAEP;AACA,YAAIA,IAAIH,MAAJ,CAAW,eAAX,CAAJ,EAAiC;AAC/BR,iBAAOiB,MAAP,CAAcN,GAAd,EAAmBA,IAAIH,MAAJ,CAAW,eAAX,CAAnB;AACD;;AAED,eAAOG,GAAP;AACD;AACF;AACF;AACF;;AAED;;;AAGO,SAASO,UAAT,CAAoBtC,IAApB,EAA0B4B,MAA1B,EAAkCC,OAAlC,EAA2C;AAChDA,YAAUA,WAAW,EAArB;;AAEA;AACA,MAAMU,IAAIV,QAAQW,MAAR,IAAkBX,QAAQW,MAAR,CAAeC,YAAjC,GACFrB,OAAOiB,MAAP,CAAc,EAAd,EAAkBR,QAAQW,MAAR,CAAeC,YAAjC,CADE,GAC+C,EADzD;AAEA,MAAIZ,QAAQW,MAAR,IAAkBX,QAAQW,MAAR,CAAeE,qBAAf,KAAyC,IAA/D,EAAqE;AACnEH,MAAEI,KAAF,GAAUf,OAAOe,KAAjB;AACD,GAFD,MAGK;AACHJ,MAAEI,KAAF,GAAUf,OAAOe,KAAP,IAAgB3C,IAA1B;AACD;;AAED,MAAI4B,OAAOgB,WAAX,EAAwB;AAAEL,MAAEK,WAAF,GAAgBhB,OAAOgB,WAAvB;AAAqC;AAC/D,MAAIf,QAAQgB,QAAR,KAAqB,IAArB,IAA6BjB,OAAOiB,QAAP,KAAoB,IAArD,EAA2D;AAAEN,MAAEM,QAAF,GAAa,IAAb;AAAoB;AACjF,MAAIjB,OAAOkB,SAAX,EAAsB;AAAEP,MAAEQ,SAAF,GAAcnB,OAAOkB,SAArB;AAAiC;AACzD,MAAIlB,OAAOoB,SAAX,EAAsB;AAAET,MAAEU,SAAF,GAAcrB,OAAOoB,SAArB;AAAiC;AACzD,MAAIpB,OAAOsB,QAAP,IAAmBtB,OAAOuB,QAA9B,EAAwC;AAAEZ,MAAEY,QAAF,GAAc,IAAd;AAAqB;AAC/D,MAAIvB,OAAOwB,OAAX,EAAoB;AAAEb,MAAEa,OAAF,GAAYxB,OAAOwB,OAAP,IAAkBxB,OAAOyB,gBAAP,GAA0B,CAA1B,GAA8B,CAAhD,CAAZ;AAAiE;AACvF,MAAIzB,OAAO0B,OAAX,EAAoB;AAAEf,MAAEe,OAAF,GAAY1B,OAAO0B,OAAP,IAAkB1B,OAAO2B,gBAAP,GAA0B,CAA1B,GAA8B,CAAhD,CAAZ;AAAiE;;AAEvF;AACA;AACA,MAAI3B,OAAO4B,iBAAX,EAA8B;AAAEjB,MAAEiB,iBAAF,GAAsB5B,OAAO4B,iBAA7B;AAAiD;AACjF,MAAI5B,OAAO6B,SAAX,EAAsB;AAAElB,MAAE3B,QAAF,GAAa,4FAAA8C,CAAkB9B,OAAO6B,SAAzB,EAAoC7B,OAAO,MAAP,CAApC,CAAb;AAAmE;AAC3FW,IAAEX,MAAF,GAAWA,MAAX;;AAEA;AACA;AACAW,IAAEoB,cAAF,GAAmBpB,EAAEoB,cAAF,IAAoB,EAAvC;;AAEA,SAAOpB,CAAP;AACD;;AAED;AACO,SAASqB,IAAT,CAAc5D,IAAd,EAAoB4B,MAApB,EAA4BC,OAA5B,EAAqC;AAC1C,MAAIP,cAAcM,OAAOL,IAArB,MAA+B,QAA/B,IAA2C,CAACK,OAAO,MAAP,CAAhD,EAAgE;AAC9D,QAAMW,IAAID,WAAWtC,IAAX,EAAiB4B,MAAjB,EAAyBC,OAAzB,CAAV;AACAU,MAAEtC,GAAF,GAAS4B,QAAQgC,IAAjB;AACAtB,MAAEhB,IAAF,GAAS,MAAT;AACAM,YAAQiC,MAAR,CAAe,0EAAAC,CAAUlC,QAAQgC,IAAlB,CAAf,IAA0CtB,CAA1C;AACA,WAAOA,CAAP;AACD;AACF;;AAED;AACA;AACO,SAASyB,MAAT,CAAgBhE,IAAhB,EAAsB4B,MAAtB,EAA8BC,OAA9B,EAAuC;AAC5C,MAAIP,cAAcM,OAAOL,IAArB,MAA+B,QAAnC,EAA6C;AAC3C,QAAMgB,IAAID,WAAWtC,IAAX,EAAiB4B,MAAjB,EAAyBC,OAAzB,CAAV;AACAU,MAAEtC,GAAF,GAAS4B,QAAQgC,IAAjB;AACAtB,MAAEhB,IAAF,GAAS,QAAT;AACAM,YAAQiC,MAAR,CAAe,0EAAAC,CAAUlC,QAAQgC,IAAlB,CAAf,IAA0CtB,CAA1C;AACA,WAAOA,CAAP;AACD;AACF;;AAEM,SAAS0B,OAAT,CAAiBjE,IAAjB,EAAuB4B,MAAvB,EAA+BC,OAA/B,EAAwC;AAC7C,MAAIP,cAAcM,OAAOL,IAArB,MAA+B,SAAnC,EAA8C;AAC5C,QAAMgB,IAAID,WAAWtC,IAAX,EAAiB4B,MAAjB,EAAyBC,OAAzB,CAAV;AACAU,MAAEtC,GAAF,GAAS4B,QAAQgC,IAAjB;AACAtB,MAAEhB,IAAF,GAAS,QAAT;AACAM,YAAQiC,MAAR,CAAe,0EAAAC,CAAUlC,QAAQgC,IAAlB,CAAf,IAA0CtB,CAA1C;AACA,WAAOA,CAAP;AACD;AACF;;AAEM,SAAS2B,QAAT,CAAkBlE,IAAlB,EAAwB4B,MAAxB,EAAgCC,OAAhC,EAAyC;AAC9C,MAAIP,cAAcM,OAAOL,IAArB,MAA+B,SAAnC,EAA8C;AAC5C,QAAMgB,IAAID,WAAWtC,IAAX,EAAiB4B,MAAjB,EAAyBC,OAAzB,CAAV;AACAU,MAAEtC,GAAF,GAAS4B,QAAQgC,IAAjB;AACAtB,MAAEhB,IAAF,GAAS,UAAT;AACAM,YAAQiC,MAAR,CAAe,0EAAAC,CAAUlC,QAAQgC,IAAlB,CAAf,IAA0CtB,CAA1C;AACA,WAAOA,CAAP;AACD;AACF;;AAEM,SAAS4B,MAAT,CAAgBnE,IAAhB,EAAsB4B,MAAtB,EAA8BC,OAA9B,EAAuC;AAC5C,MAAIP,cAAcM,OAAOL,IAArB,MAA+B,QAA/B,IAA2CK,OAAO,MAAP,CAA/C,EAA+D;AAC7D,QAAMW,IAAID,WAAWtC,IAAX,EAAiB4B,MAAjB,EAAyBC,OAAzB,CAAV;AACAU,MAAEtC,GAAF,GAAS4B,QAAQgC,IAAjB;AACAtB,MAAEhB,IAAF,GAAS,QAAT;AACA,QAAI,CAACgB,EAAE3B,QAAP,EAAiB;AACf2B,QAAE3B,QAAF,GAAaY,eAAeI,OAAO,MAAP,CAAf,CAAb;AACD;AACDC,YAAQiC,MAAR,CAAe,0EAAAC,CAAUlC,QAAQgC,IAAlB,CAAf,IAA0CtB,CAA1C;AACA,WAAOA,CAAP;AACD;AACF;;AAEM,SAAS6B,UAAT,CAAoBpE,IAApB,EAA0B4B,MAA1B,EAAkCC,OAAlC,EAA2C;AAChD,MAAIP,cAAcM,OAAOL,IAArB,MAA+B,OAA/B,IAA0CK,OAAOyC,KAAjD,IAA0DzC,OAAOyC,KAAP,CAAa,MAAb,CAA9D,EAAoF;AAClF,QAAM9B,IAAID,WAAWtC,IAAX,EAAiB4B,MAAjB,EAAyBC,OAAzB,CAAV;AACAU,MAAEtC,GAAF,GAAS4B,QAAQgC,IAAjB;AACAtB,MAAEhB,IAAF,GAAS,YAAT;AACA,QAAI,CAACgB,EAAE3B,QAAP,EAAiB;AACf2B,QAAE3B,QAAF,GAAaY,eAAeI,OAAOyC,KAAP,CAAa,MAAb,CAAf,CAAb;AACD;AACDxC,YAAQiC,MAAR,CAAe,0EAAAC,CAAUlC,QAAQgC,IAAlB,CAAf,IAA0CtB,CAA1C;AACA,WAAOA,CAAP;AACD;AACF;;AAEM,SAAS+B,QAAT,CAAkBtE,IAAlB,EAAwB4B,MAAxB,EAAgCC,OAAhC,EAAyC0C,cAAzC,EAAyD;AAC9D,MAAIjD,cAAcM,OAAOL,IAArB,MAA+B,QAAnC,EAA6C;AAAA;AAC3C,UAAMgB,IAAMD,WAAWtC,IAAX,EAAiB4B,MAAjB,EAAyBC,OAAzB,CAAZ;AACAU,QAAEhB,IAAF,GAAU,UAAV;AACAgB,QAAEtC,GAAF,GAAU4B,QAAQgC,IAAlB;AACAtB,QAAE8B,KAAF,GAAU,EAAV;AACAxC,cAAQiC,MAAR,CAAe,0EAAAC,CAAUlC,QAAQgC,IAAlB,CAAf,IAA0CtB,CAA1C;;AAEA;AACA,UAAIX,OAAO4C,UAAX,EAAuB;AACrBpD,eAAOC,IAAP,CAAYO,OAAO4C,UAAnB,EAA+BvD,OAA/B,CAAuC,UAAChB,GAAD,EAAS;AAC9C,cAAMiB,QAAQU,OAAO4C,UAAP,CAAkBvE,GAAlB,CAAd;AACA,cAAM4D,OAAOhC,QAAQgC,IAAR,CAAavD,KAAb,EAAb;AACAuD,eAAK1C,IAAL,CAAUlB,GAAV;AACA,cAAI4B,QAAQ4C,MAAR,CAAe,0EAAAV,CAAUF,IAAV,CAAf,MAAoC,IAAxC,EAA8C;AAC5C,gBAAMhB,WAAWjB,OAAOiB,QAAP,IAAmBjB,OAAOiB,QAAP,CAAgB6B,OAAhB,CAAwBzE,GAAxB,MAAiC,CAAC,CAAtE;;AAEA,gBAAM8B,MAAMwC,eAAetE,GAAf,EAAoBiB,KAApB,EAA2B;AACrC2C,wBADqC;AAErChB,wBAAUA,YAAY,KAFe;AAGrCiB,sBAAQjC,QAAQiC,MAHqB;AAIrCW,sBAAQ5C,QAAQ4C,MAJqB;AAKrCjC,sBAAQX,QAAQW;AALqB,aAA3B,CAAZ;AAOA,gBAAIT,GAAJ,EAAS;AACPQ,gBAAE8B,KAAF,CAAQlD,IAAR,CAAaY,GAAb;AACD;AACF;AACF,SAlBD;AAmBD;AACD;AAAA,WAAOQ;AAAP;AA7B2C;;AAAA;AA8B5C;AACF;;AAEM,SAASoC,KAAT,CAAe3E,IAAf,EAAqB4B,MAArB,EAA6BC,OAA7B,EAAsC0C,cAAtC,EAAsD;AAC3D,MAAIjD,cAAcM,OAAOL,IAArB,MAA+B,OAAnC,EAA4C;AAC1C,QAAMgB,IAAMD,WAAWtC,IAAX,EAAiB4B,MAAjB,EAAyBC,OAAzB,CAAZ;AACAU,MAAEhB,IAAF,GAAU,OAAV;AACAgB,MAAEtC,GAAF,GAAU4B,QAAQgC,IAAlB;AACAhC,YAAQiC,MAAR,CAAe,0EAAAC,CAAUlC,QAAQgC,IAAlB,CAAf,IAA0CtB,CAA1C;;AAEA,QAAMM,WAAWjB,OAAOiB,QAAP,IACFjB,OAAOiB,QAAP,CAAgB6B,OAAhB,CAAwB7C,QAAQgC,IAAR,CAAahC,QAAQgC,IAAR,CAAanD,MAAb,GAAsB,CAAnC,CAAxB,MAAmE,CAAC,CADnF;;AAGA;AACA;AACA;AACA;;AAEA,QAAMkE,UAAU/C,QAAQgC,IAAR,CAAavD,KAAb,EAAhB;AACAsE,YAAQzD,IAAR,CAAa,EAAb;;AAEAoB,MAAE8B,KAAF,GAAU,CACRE,eAAevE,IAAf,EAAqB4B,OAAOyC,KAA5B,EAAmC;AACjCR,YAAMe,OAD2B;AAEjC/B,gBAAUA,YAAY,KAFW;AAGjCiB,cAAQjC,QAAQiC,MAHiB;AAIjCW,cAAQ5C,QAAQ4C,MAJiB;AAKjCjC,cAAQX,QAAQW;AALiB,KAAnC,CADQ,CAAV;;AAUA,WAAOD,CAAP;AACD;AACF;;AAEM,SAASsC,cAAT,GAA0B;AAC/B;AACA;AACA,SAAO;AACLC,YAAS,CAAEX,MAAF,EAAUP,IAAV,CADJ;AAELmB,YAAS,CAAET,QAAF,CAFJ;AAGLN,YAAS,CAAEA,MAAF,CAHJ;AAILC,aAAS,CAAEA,OAAF,CAJJ;AAKLe,aAAS,CAAEd,QAAF,CALJ;AAMLS,WAAS,CAAEP,UAAF,EAAcO,KAAd;AANJ,GAAP;AAQD;;AAED;;;AAGO,SAASM,WAAT,CAAqBrD,MAArB,EAAkCsD,kBAAlC,EAA2DT,MAA3D,EAAyEU,aAAzE,EAA8F;AACnG,MAAMC,OAAS,EAAf;AACA,MAAMtB,SAAS,EAAf,CAFmG,CAEhF;AACnBW,WAASA,UAAU,EAAnB;AACAU,kBAAgBA,iBAAiB,EAAjC;AACAD,uBAAqBA,sBAAsBL,gBAA3C;;AAEA,MAAIjD,OAAO4C,UAAX,EAAuB;AACrBpD,WAAOC,IAAP,CAAYO,OAAO4C,UAAnB,EAA+BvD,OAA/B,CAAuC,UAAChB,GAAD,EAAS;AAC9C,UAAIwE,OAAOxE,GAAP,MAAgB,IAApB,EAA0B;AACxB,YAAM4C,WAAWjB,OAAOiB,QAAP,IAAmBjB,OAAOiB,QAAP,CAAgB6B,OAAhB,CAAwBzE,GAAxB,MAAiC,CAAC,CAAtE;AACA,YAAM8B,MAAML,sBAAsBwD,kBAAtB,EAA0CjF,GAA1C,EAA+C2B,OAAO4C,UAAP,CAAkBvE,GAAlB,CAA/C,EAAuE;AACjF4D,gBAAM,CAAE5D,GAAF,CAD2E,EAC1D;AACvB6D,kBAAQA,MAFyE,EAE9D;AACnBW,kBAAQA,MAHyE,EAG9D;AACnB5B,oBAAUA,QAJuE,EAI7D;AACpBL,kBAAQ2C,aALyE,CAK3D;AAL2D,SAAvE,CAAZ;AAOA,YAAIpD,GAAJ,EAAS;AACPqD,eAAKjE,IAAL,CAAUY,GAAV;AACD;AACF;AACF,KAdD;AAeD,GAhBD,MAiBK;AACH,UAAM,IAAIsD,KAAJ,CAAU,sEAAV,CAAN;AACD;AACD,SAAO,EAAED,MAAMA,IAAR,EAActB,QAAQA,MAAtB,EAAP;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;AC5QD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEO,IAAMwB,SAAS,0CAAf;AACA,IAAMC,iBAAiB,kDAAvB;AACA,IAAM7B,oBAAoB,yEAA1B,C;;;;;;iWCZP;AAAA;AAAA;AAAA,4yBCuBA;;;;;;;;;;;;;;;;;;;;;;GAEA,aAOA;;;;;GACA,yBACA,sCACA,8BACA,2BACA,gBACA,UACA,qCACA,mBACA,sCACA,sCACA,oBACA,GACA;AACA,wBACA,gCACA,SACA,uBACA,CAEA,wBACA;AACA;AACA;AACA,mBACA,IAEA,+BACA,QAEA,oCACA,qBACA,OACA,iCACA,QAEA,yCACA,uBACA,MACA,QACA,QACA,IAEA,OACA,QACA,CACA,oCACA,cAEA,iCACA,uCACA,mBACA,KACA,GAEA,gCACA,oCAEA,oEACA,UACA,CACA,2BACA,CACA;uBACA,UACA,IAEA,wBACA,UACA,IAEA,kDACA,OACA,cAEA,mEACA,iBACA,eACA,qDAEA,sCACA,iBAEA,UACA;8DAEA,OACA;mEACA,YACA,iBACA,UACA,CAEA,CACA;yBAEA,UACA;4DACA,mEACA,iBACA,CACA,gCACA,eACA,MAEA,uBACA,MAEA,qDACA,gBACA,WAEA,oBACA,MACA,CACA,GAEA,OACA,WACA,CACA,uGACA,IACA,aAEA,iCACA,IACA,wBACA,uBACA,CACA;mBACA,sBACA,2BACA,KACA,CACA,MACA,UACA,IAEA,kCACA,kBACA,SAEA,wDACA,gBAEA,2BACA,iBAEA,WACA;IACA,cACA,2DAEA,6BACA,iBACA,gBACA,qBACA,WACA,CAEA,kEACA,UACA,CACA,CACA;AACA,2EACA,sBACA,wFACA,yBACA,4CACA,2BACA,8BAEA,2CACA,2BACA,8BACA,QACA,CAEA,GACA;aAEA,6DACA,0CACA,IAEA,2CACA,qBACA,WACA,aACA,gBACA,gBAEA,YACA;AACA;sBACA,2CACA,cACA,yFACA,SAEA,sBAEA,aACA;AACA;4CACA,CACA,OAEA,CACA;8BAEA,QACA;qEACA,4CACA,sDACA,iCACA,eACA,qBACA,mCACA,UAEA,CACA;wBAEA,aACA;oBAEA,SACA;oBACA,4CACA,UACA,wBACA,mCACA,2BACA,2BACA,SACA,0CACA,aACA,+CACA,WACA,WACA,uBACA,4BACA,YACA,QACA,UACA,sBACA,sBACA,2BACA,KACA,GACA,QACA,uDACA,oEACA,wCACA,UACA,wBACA,2BACA,QACA,gBACA,UACA,WACA,uBACA,4BACA,YACA,mEACA,WACA,GACA,MACA,qBACA,KACA,CACA,MACA,CACA;yDACA,kCACA,KAEA,uBACA,KACA,CACA,CAEA,YACA,wBACA,CACA;cACA,wBACA,qBAEA,sDACA,oDACA,8BAEA,SACA;wEACA,+EACA,+BACA,uCACA,gCACA,gBACA,WACA,CACA,QACA,+EACA,KAEA,uBACA,2BACA,KACA,CACA,GAEA,mDACA,6BAEA,QACA;2FACA,kCACA,KACA,CAEA,qDACA,6BAEA,gDACA,qBACA,KACA,CACA,GACA,kBACA,OACA,SAEA,SACA,UACA,CACA,4BACA,WAEA,8BACA,eAEA,qBACA,aACA,UACA,mEACA,OACA,CAEA,SACA,OACA,CACA,6BACA,6CACA,cACA,OACA,GACA,CACA,+BACA,IAEA,MACA;6BACA,eACA,eACA,WACA,SACA,UACA,qBACA,QACA,MACA,mCAGA,iBACA,MACA,CACA,uCACA,4BACA,0BACA,yDAEA,sCACA,CACA;oDACA,oDACA,mCACA,OACA,EAEA,CACA;wCAEA,eACA;SACA,2BACA,kBACA,OAGA,WACA,KACA,sBACA,kBACA,OAGA,UACA,KACA,QACA,CACA;iCACA,mBACA,MACA,GAEA,CACA;oCACA,cACA,KAEA,SACA,UACA,CACA,wCACA,aAEA,QACA,0BACA,iBACA,4DACA,iBACA,4BACA,YACA,qBACA,MACA,KAEA,SACA,MAEA,OACA,SACA,CACA,yBACA,CACA;AACA;sBACA,qBACA,iBACA,8DACA,IACA,CACA,CACA,+BACA,IACA,cAEA,+EACA,qEACA,+CACA,CACA;2FACA,EACA,6CACA,mBACA,mDACA,+BACA,OACA,MACA,EAEA,iCACA,0FACA,MACA,EACA,CACA,gCACA,IAEA,kDACA,oBACA,wDACA,gCACA,4DACA,YACA,GAEA,OACA,YACA,CACA,sBACA,CACA;qCACA,OACA,CACA,oCACA,wFACA,MACA,CACA,qCACA,qBAEA,oCACA,WACA,kCACA,SACA,MAEA,CACA;yBACA,mCACA,MAEA,CACA;gCACA,gBAEA,iCACA,yBACA,oCACA,uBACA,YACA,kCACA,wCACA,oBACA,KACA,GACA,CACA,CAEA,WACA,MACA,CACA,qCACA,gCACA,CACA;QACA,QACA,CACA;cACA,SAEA,8BACA,qBACA,6DACA,qCACA,iCACA,8CACA,qBACA,mGACA,wDACA,qBACA,qFACA,0DACA,qBACA,wFACA,2DACA,qBACA,mFACA,yCACA,qCACA,CACA;oBACA,gFAEA,8BAEA,SACA;kCAEA,qCACA,IACA,uBACA,uBACA,gDAEA,2BACA,KACA,CAEA,OACA,SACA,CAEA,oBAOA;;;;;GA4BA;;;;;;;;;;;;;;;;;;;;;;;;;;GAWA;;;;;;;;;GAWA;;;;;;;;;GAWA;;;;;;;;;GAYA;;;;;;;;;;GAUA;;;;;;;;GAQA;;;;;;GAaA;;;;;;;;;;;GAiBA;;;;;;;;;;;;;;;GAKA;;;;GACA,qBACA,aACA,GACA,CAaA;;;;;;;;;;;;GACA,yBACA,0BACA,qBACA,yBAEA,8BACA,0BACA,oBACA,KAEA,uDACA,MACA,GACA,CAaA;;;;;;;;;;;;GACA,yBACA,0BACA,qBACA,yBAEA,8BACA,0BACA,oBACA,KAEA,6CACA,MACA,GACA,CAqBA;;;;;;;;;;;;;;;;;;;;GACA,8BACA,UAEA,GACA;+CACA,qBACA,qCAEA,CACA;gCAEA,KACA;+BACA,kCACA,0BACA,yCACA,qBACA,QAEA,+BACA,CACA;gDACA,0CACA,MAEA,0BAEA,MACA;iDACA,gDACA,MAEA,oCACA,uBACA,WAEA,CACA;AACA;kCACA,iBACA,MACA,CAEA,OACA,iBAEA,SACA,MACA,CA8BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACA,qCACA,sBAEA,2CAEA,CACA;8BACA,qBACA,6BAEA,CACA;wBAEA,SACA;0CAEA,4CACA,SACA,qBACA,kCACA,8BACA,iCAEA,iDACA,CACA;gBACA,uBAEA,mCAEA,6CACA,UAEA,CACA;uCACA,yBACA,OAEA,6CACA,sDACA,+DACA,6BACA,WAEA,CACA;MACA,mBACA,gBAEA,KAEA,CA/CA,QAgDA,UACA,CASA;;;;;;;;GACA,2BACA,aACA,KAEA,QACA,aACA,cAEA,eACA,wBACA,cACA,gCAEA,4CACA,+CACA,UAEA,aACA,4BAEA,mDACA,yBACA,cACA,kCACA,mBACA,UAEA,CACA;0BAEA,2BACA,oFACA,MACA,MACA,cACA,UACA,YACA,mBACA,qBACA,UAEA,OACA,SACA,CAiCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACA,oCACA,WACA,QAEA,cACA,yBACA,aACA,sBAEA,wCACA,iBACA,0FACA,iBACA,sEACA,iBACA,4BACA,CACA,MACA,iBACA,uBACA,YACA,4BACA,MACA,KAEA,OACA,MAEA,OACA,OACA,CAmCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACA,oCACA,oFACA,UACA,CAWA;;;;;;;;;;GACA,yBACA,gBACA,iBACA,8BAEA,wBAEA,KACA;SAEA,0BACA,UACA,CAcA;;;;;;;;;;;;;GACA,mCACA,0BACA,iBACA,yBAEA,CACA;+EACA,KACA,CA0BA;;;;;;;;;;;;;;;;;;;;;;;;;GACA,iCACA,sBAEA,2CAEA,CACA;+CACA,qBACA,qCAEA,CACA;gCAEA,KACA;UACA,KACA,CAZA,iBAaA,4CACA,WACA,QAEA,KACA,yBACA,kBACA,YAEA,6BACA,+CACA,OAEA,CACA;mEACA,6BAEA,QACA;wBACA,cACA,WAEA,CACA;kBAEA,8EACA,8DACA,6BACA,IAEA,CACA;wCACA,sBACA,gBACA,iBACA,gBACA,WACA,6CACA,OAEA,CACA;kBACA,aACA,MACA,CACA;kBACA,aACA,CAEA,GACA;kDACA,6BAEA,QACA;2DACA,yCACA,IACA,kFAEA,MACA;kBAEA,yDACA,kBACA,6CACA,sBACA,2BAEA,KACA;kBACA,aACA,CACA,CACA,CACA,GAEA,SACA,MACA,cAEA,KAEA,SACA,UACA,CA6BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACA,wCACA,sBAEA,mBACA,wBACA,CACA;8BACA,qBACA,6BAEA,CACA;wBAEA,SACA;0CAEA,4CACA,SACA,qBACA,oBACA,iCAEA,UACA;4CACA,sDACA,WAEA,CACA;mCAEA,iCACA,6BACA,OACA,WACA,mBACA,eAEA,KACA,GAEA,SACA,UACA,CACA,+BACA,qCACA,qCACA,qCACA,iCACA,qCACA,2CACA,2BACA,2BACA,uCACA,mCACA,uCACA,6BACA,+ICr2CA,CAIA;;GACA,eACA,QAMA;;;;GACA,qBACA,qBACA,KACA,EAQA;;;;;;GACA,mBACA,kCACA,4BACA,KACA,OACA,KACA,CASA;;;;;;;GACA,qBACA,qDACA,kCACA,2DACA,SACA,UACA,MACA,EAUA;;;;;;;;GACA,yCACA,cACA,gBACA,kBACA,WAEA,OACA,iBACA,UACA,MACA,EAUA;;;;;;;;GACA,sBACA,iCACA,qCACA,wDACA,kCAEA,GACA;uBACA,iBACA,SACA,MAEA,CACA;kCACA,2BAEA,MACA;uBACA,4BACA,aACA,MAEA,CACA;GACA,uCACA,cACA,0BACA,oBACA,GACA,MACA,CACA,OACA,MACA,EAQA;;;;;;GACA,sCACA,kCACA,oCACA,iCAEA,oBACA,2BACA,8CACA,yBACA,MACA,CAEA,OACA,MACA,EAQA;;;;;;GACA,2CACA,kCACA,sCACA,GACA,EAQA;;;;;;GACA,8CACA,+BACA,OACA,8DC7JA;;;EACA,sCACA,CACA;6BACA,yFACA,gGACA,mEACA,CACA,0BAEA,mCACA,2CACA,oCACA,uDACA,EAGA,WACA;GACA,8BACA,yDACA,uCACA,OACA,aACA,2BAEA,QACA,EACA,WACA,+CACA,WACA,UACA,KACA,EAEA,CACA;iCACA,gBAEA,2BACA,SACA,aACA,mBACA,GAEA,OACA,0BACA,kBACA,cACA,WACA,KACA,KACA,OACA,KACA,MACA,cACA,GACA,wBACA,OACA,2BAEA,WACA,aACA,UACA,KACA,CAEA,GAEA,8BACA,yBACA,gBACA,8BACA,OACA,CAEA,CACA;sBACA,wBAEA,8CAEA,iCAEA,YACA,SACA,KACA,uCACA,MAEA,kBACA,qCACA,CACA,eACA,wDACA,mBAEA,IACA,mBACA,EAEA,CACA;AACA;AACA;sCACA,SACA,SACA,eACA,mBACA,KACA,KACA,cACA,UACA,IACA,KACA,yBACA,KAEA,wBACA,wBACA,wBACA,+BACA,oCACA,QACA,KACA,eACA,KACA,CACA,CACA,WACA,cACA,KACA,CAEA,sBACA,gBAEA,KACA;0BAEA,gBAEA,KACA;YACA,WACA,IAEA,IACA,0BACA,oBACA,oCACA,SACA,YACA,8DACA,0DAEA,GACA,WACA,yBACA,KACA,CACA,GACA,KACA,UACA,eACA,yBACA,iBACA,MACA,CACA,CACA,WACA,sCACA,KACA,CAEA,qBACA,UAEA,KACA;0BAEA,gBAEA,KACA;YACA,WACA,IAEA,UACA,eACA,yBACA,iBACA,MACA,CAEA,4DACA,oCACA,oBACA,yBACA,MACA,6BACA,cACA,KACA,EAEA,aACA,KACA,CAEA,8BACA,UACA,oBACA,MAEA,uBACA,cACA,gBACA,iBACA,iBACA,gBACA,GAEA,2BACA,gCACA,iBACA,kBAEA,qBACA,iBACA,iBAEA,CACA;AACA;aAEA,sBAEA,iDACA,OACA,4CACA,gDAEA,OACA;AACA;AACA;oEACA,0DACA,iBACA,kBAEA,WACA,iBACA,OACA,kBAEA,oBACA,iBACA,KAEA,UACA,QACA,yCACA,yBACA,SAEA,KACA,UACA,SACA,8BACA,kBACA,KACA,4BACA,iBACA,KAEA,GACA,WACA,iBACA,KACA,CAEA,mDACA,yBAGA,OACA;kBAEA,iBACA;uCACA,mBAGA,kEACA,iBAEA,KACA;AACA;uFACA,OACA,KAEA,yDACA,0DACA,iBACA,kBAEA,SACA,KACA,GAEA,4DACA,kDACA,0DACA,iBACA,kBAEA,QACA,KACA,GAEA,sDACA,iBAEA,KACA;wCACA,qCACA,iBACA,mBACA,4BACA,IAEA,yDACA,0DACA,iBACA,kBAEA,0CAEA,4DACA,WACA,qBACA,SACA,MACA,GACA,QACA,GAEA,wDACA,iBAEA,KACA;wCACA,qCACA,iBAEA,yDACA,0DACA,iBACA,kBAEA,2DACA,SACA,OACA,QACA,GAEA,SACA,SACA,sLCrXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA,6CACA,CACA;OACA,oCACA,gBACA,iBACA,gBACA,wBACA,gBACA,GACA,iBACA,gBACA,GACA,KACA,CAEA,CACA;kBACA,cACA,eACA,MACA,CAEA,OACA,OACA,CACA;AACA;AACA,GACA,6EACA,0CACA,yCACA,GACA,EACA;AACA;AACA,0BACA,kBACA,oBAEA,gEACA,oCAEA,MACA;0BACA,qBACA,4DACA,CACA,SAEA,uBACA,+CACA,IAEA,CACA;AAEA;AACA;sEACA,SACA,6BAEA,mDACA,IACA,EACA;AACA;AACA,gCACA,mCACA,sCAEA,IACA;sDACA,SACA,uBAEA,2BACA,MACA,IACA,wBACA,OACA,IAEA,2BACA,KACA,EACA;AACA,iCACA,yBACA,IACA,EACA;AACA,uBACA,gDACA,0DACA,wBACA,qBACA,0CACA,OACA,WACA,MAEA,EACA;AACA;AACA,kCACA,mCACA,iCAEA,qBACA,WACA,gCACA,oBACA,MAEA,oBACA,oBACA,kBACA,MAEA,oBACA,oCACA,GAEA,+BACA,gCAEA,mDACA,4BACA,gCACA,8BACA,iBACA,EACA,MACA,CAEA,iBACA,oDACA,kBACA,MAEA,8CAEA,0CACA,KACA,EACA,gBACA,kBACA,kCAEA,sBACA,kBACA,cAEA,kBACA,CACA;MACA,IAEA,QACA,CACA;4BACA,GAEA,aACA,IAEA,CAlBA,CAmBA,mCACA,uBACA,GACA;sCACA,2BACA,QACA,OACA,GAEA,EACA,8BACA,wBACA,GACA,EACA,qBACA,+BACA,WACA,+BACA,8BACA,IACA,OACA,KACA,CACA;AACA,6BACA,yDACA,yBACA,6BACA,8BACA,KAEA,0FCzMA;;;;;;;;;;;;;;;;;;;;;;GAEA,aAMA;;;;GACA,qBACA,cACA,mCACA,oCACA,uBACA,+GACA,4BACA,sBACA,KACA;AACA,wBACA,gCACA,SACA,uBACA,CACA,4BACA,kCACA,gEACA,GAEA,OACA,UACA,CAaA;;;;;;;;;;GAcA;;;;;;;;;;;;;IACA,4BACA,sBACA,sCAEA,uCACA,gBACA,QACA,mBACA,wCACA,QACA,CAEA,OACA,QACA,CAsEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACA,8CACA,sBAEA,UACA;gCACA,SACA,GAEA,CACA;iCACA,kCACA,qBACA,4DACA,qBACA,6BAEA,iCACA,2EACA,qBACA,8HACA,qBACA,6CACA,CACA,CAEA,GACA;SACA,wBACA,4CACA,sBAEA,iEACA,QACA,QACA,UACA,SACA,UACA,CACA,GACA,GACA,qBACA,2BACA,4CACA,CACA;AACA;4HACA,QACA,QACA,UACA,SACA,WACA,CACA,GACA,QACA,CACA;AACA;8EACA,IACA,CAEA,SACA,UACA,iHC9MA;;;;;;;;;;;;;;;;;;;;;;GAEA,aACA,mCACA,uDAKA;;;;GACA,iCACA,MACA,kBACA,EAGA;;GACA,8BACA,mCAEA,6BACA,IACA,uBACA,MACA,kBACA,CACA,4CChDA,8BAwBA;;;;;;;;;;;;;;;;;;;;;;GAEA,aACA,oBACA,cACA,+DACA,OAWA;;;;;;;;;;GACA,uDACA,4DACA,SACA,QAEA,0CACA,QACA,UACA,UACA,CACA;kCACA,YACA,MAEA,CACA,0BACA,SACA,UACA,WACA,oBACA,KACA,CACA,GACA,CAEA,wCACA,qCACA,mBACA,8FACA,mBACA,uHACA,wDACA,IACA,kGACA,mBACA,6CAEA,SACA,6DAEA,oCACA,IACA,oCACA,yBACA,UACA,MACA,MACA,uBACA,aACA,MACA,UACA,KACA,CACA,2DC/FA;AACA,8BACA,aACA,mBACA,iBACA,gBACA,EACA,0BACA,UACA,6BACA,2BACA,YACA,aACA,EACA,iBACA,CACA,aACA,CACA,CACA,qBACA,aACA,CACA,OACA,wBACA,0BAEA,mBACA,iBACA,cACA,YACA,0BACA,iBACA,0BACA,MACA,CACA,aACA,YACA,OACA,cACA,cACA,mBACA,SACA,CACA,8BACA,qCACA,yBACA,oCACA,qBACA,GACA,CACA,yBACA,sCACA,uBACA,GACA,CACA,EACA;AACA,wBACA,UACA,eACA,OACA,6BACA,0BACA,SACA,wBACA,qBACA,eACA,gBACA;AACA,iBACA,GACA,gBACA,CACA,gBACA,yBACA,kBACA,iBACA,4BACA,gCACA,aACA,KACA,8BACA,iBACA,oCACA,EACA,mCACA,2BACA,iBACA,oCACA,kCACA,4CC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA,aACA;AACA;AACA;AACA,iCACA,iDACA,MACA,CACA,0CACA,UACA,WACA,YAEA,0CACA,OACA,KAEA,YACA,kBAEA,iBACA,mDACA,iBACA,QAEA,YACA,OACA;0BACA,KACA,QAEA,uBACA,4BACA,qBACA,gBAEA,YACA,iBACA,uBACA,QACA,MACA,OACA,GAEA,sBACA,2BAEA,gCACA,QACA,2BACA,aACA,QACA,gBACA,GACA,CAEA,OACA,KACA,EACA,uCACA,6CACA,iBACA,6CCpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA,aACA,qDACA,cACA,6CACA,eAEA,OACA,0BAEA,YACA,8BAEA,GACA,cAEA,IACA,EACA,wCACA,UACA,WACA,kBACA,KACA,UAEA,mEACA,uCACA,kDACA,sBACA,8BACA,iDACA,YACA,UACA,qDACA,KACA,SAEA,KAEA,gBACA,uDACA,yCACA,MACA,EACA,uCACA,6CACA,iBACA,EACA,kBACA,yBACA,WACA,+BACA,kBACA,IACA,OACA,KACA,CACA,yCACA,SACA,sBACA,2DACA,KACA,OACA,KACA,6CCpFA,aACA,iDACA,yCACA,gFCJA,CAUA;;;;;;;;GACA,uCACA,SACA,cACA,kCACA,EACA,YAEA,qBACA,uCACA,KAEA,OACA,mDCvBA,aACA,4BACA,2CACA,0CAEA,0CACA,OACA,KAEA,0BACA,KACA,6CCRA;;GACA,+BACA,6BACA,0CACA,qBACA,eAIA;;GACA,SACA,gCACA;KACA,2CACA;KACA,WACA;KACA,KACA,CAIA;;GACA,gBACA,EAWA;;;;;;;;;GACA,oBACA,0BAEA,YACA,SACA,oBACA,oBACA,0BACA,MACA,cAEA,QACA,CAIA;;GACA,0DACA,SAIA;;GACA,yBACA,SACA,wDACA,+BACA,WACA,uBACA,6DACA,8DACA,8DACA,0DACA,CACA,OACA,OACA,EAQA;;;;;;GACA,YACA,iCACA,kDACA,EAQA;;;;;;GACA,uBACA,yBACA,eACA,sBACA,mBACA,uCACA,MACA,CACA,mBACA,KACA,CASA;;;;;;;GACA,+CACA,uBACA,+BACA,mCACA,GACA,GACA,+BACA,4BACA,MACA,CAKA;;2BAEA,UAOA;;;;;;IACA,yBACA,SACA,uBACA,QACA,UAEA,6CACA,YACA,oBACA,gEACA,IAEA,OACA,KACA,CAIA;;GACA,oBACA,YAOA;;;;;GACA,cACA,MACA,iBACA,uBACA,6BACA,2CACA,gDAEA,qCAUA;;;;;;;qBACA,qCACA,kCAGA,WAQA;;;;;;;IACA,cACA,qCACA,oCAEA,OASA;;;;;;;GACA,yBACA,qBACA,oBACA,MACA,UACA,SACA,UAEA,iBAEA;uCACA,YACA,sBACA,+BACA,wCACA,kBACA,IAEA,OACA,QACA,CAQA;;;;;;GACA,qBACA,2BACA,MACA,CAQA;;;;;;GACA,kBACA,2BACA,QACA,EAQA;;;;;;GACA,oBACA,mDACA,qBACA,mBACA,kBAEA,6BACA,UACA,OACA,IACA,EA8CA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACA,8BACA,kBACA,YACA,sBACA,IACA;gIACA,qBACA,aACA,kCACA,6CACA,sDACA,yBACA;AACA;AACA;uDACA,8CACA,mCACA,mDACA,UACA,KACA,CAQA;;;;;;GACA,sCACA,0BACA,eACA,EAYA;;;;;;;;;;GACA,uDACA,CACA;oCACA,kBAEA,IACA;eACA,sCACA,MACA,EAWA;;;;;;;;;GACA,0CACA,8BACA,mCACA,qBACA,oBACA,+CACA,eACA,KACA,KACA,EAqBA;;;;;;;;;;;;;;;;;;;GACA,uDACA,CACA;iBACA,QACA,IAEA,qBAEA,EACA;4BACA,uBAEA,KACA;aACA,gBACA,yBACA,yBACA,4BACA,UACA,UAEA,MACA;mBACA,2BACA,4BACA,8BACA,+BACA,0BACA,2BACA,OACA,EAOA;;;;;GACA,qCACA,cACA,mBACA,mBAEA,sDACA,sBACA,qBACA,kBACA,eAEA,UACA,KACA,EAIA;;GACA,iBACA,SAQA;;;;;;GACA,4BACA,UACA,8BACA,eACA,gBACA,mBACA;gBACA;wBACA,SACA,aAEA,QACA,kBACA,eACA,eACA,oDACA,kBACA,EACA;sEACA,KACA;yDACA,0BACA,KAEA,sBAEA,YACA,0BACA,KAEA,oCACA,0BACA,KAEA,uCACA,+CACA,qBACA,uBAEA,6BACA,KACA,GACA,CAIA;;GACA,2BACA,2BACA,oCACA,KACA,CAOA;;;;;GACA,kCACA,iBACA,oBACA,cACA,aACA,yBACA,eACA,MACA,EAsBA;;;;;;;;;;;;;;;;;;;;GACA,qCACA,8CACA,YACA,MACA,EAeA;;;;;;;;;;;;;GACA,4CACA,oBACA,UACA,MACA,EAoBA;;;;;;;;;;;;;;;;;;GACA,uCACA,wCACA,YACA,MACA,EAUA;;;;;;;;GACA,kDACA,aACA,SACA,MAEA,SAEA,gBACA,UACA,8BACA,wCACA,KAEA,UACA,qBACA,mBACA,KAEA,aACA,MACA,EAcA;;;;;;;;;;;;EACA,qCACA,uCACA,6BACA,WACA,MACA,EAiBA;;;;;;;;;;;;;;;GACA,sDACA,sDACA,YACA,MACA,EACA,yCACA,oBACA,yBACA,WACA,aACA,UACA,EAwCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACA,qCACA,kBACA,4BAEA,gBACA;6BACA,qBACA,sBACA,KACA,gCACA,oBACA,0BACA,6DACA,iBACA,qBACA,KACA,UACA,6BACA,KACA,MACA,YACA,KAEA,6BACA,yBACA,cACA,MACA,EAGA;;GACA,+CACA,iBACA,cACA,kHACA,gBACA,UACA,MACA,EACA,mDACA,cACA,SACA,MACA,EASA;;;;;;;GACA,4CACA,aACA,eACA,sBACA,KACA,EAMA;;;;GACA,6CACA,mBACA,gLAEA,qBACA,uBACA,oBAEA,kBACA,KACA,EAMA;;;;GACA,yCACA,kBACA,iDACA,2BACA,sBACA,KACA,EAWA;;;;;;;;;GACA,4CACA,uBACA,WACA,MACA,EASA;;;;;;;GACA,kCACA,UACA,8BACA,oCACA,sBACA,uCAEA,MACA;mBAEA,KACA;iCACA,sBAEA,OACA;AACA;GACA,iDAEA,cACA,8BACA,+BACA,mBACA,mBACA,WACA,OAEA,EACA;6CACA,cACA,4BACA,IACA,aACA,gCACA,GACA,mCACA,gBACA,eACA,IACA,8CACA,uBACA,eACA,UACA,CAKA,CAJA;AACA;AACA;AAGA;yBACA,kCACA,eACA,UACA,UACA,SAEA,CACA;SACA,+BACA,mCACA,SACA,UACA,MAEA,CACA;gCACA,uDACA,eACA,+BACA,MAEA,CACA;6CAEA,KACA;iFACA,CACA;6BACA,oGACA,mEACA,gDACA,MAEA,CACA;6BACA,6BACA,gDACA,QAEA,uBACA,uBACA,cAEA,CACA;oBAEA,MACA;AACA;wCACA,YACA,MAEA,EAIA;;GACA,gBACA,QAUA;;;;;;;;GACA,iCACA,uBACA,6CACA,uBACA,oBACA,UACA,KACA,EAUA;;;;;;;;GACA,kCACA,wBACA,6CACA,sBACA,oBACA,UACA,KACA,EASA;;;;;;;GACA,oBACA,0BACA,mBACA,UACA,KACA,EACA,mBACA,kBACA,IAUA;;;;;;;;GACA,mCACA,yBACA,6CACA,sBACA,oBACA,UACA,KACA,EAUA;;;;;;;;GACA,kCACA,wBACA,6CACA,sBACA,oBACA,UACA,KACA,EAUA;;;;;;;;GACA,iCACA,uBACA,6CACA,sBACA,oBACA,UACA,KACA,wHC9iCA;;;;;;GACA,sBACA,oCACA,6CACA,CACA,eACA,oDCXA;;GACA,qBACA,eAOA;;;;;GACA,6CACA,eACA,oBACA,cACA,MACA,EASA;;;;;;;GACA,gCACA,cACA,SACA,MACA,EAQA;;;;;;GACA,oCACA,eACA,SACA,MACA,EAQA;;;;;;GACA,0CACA,kCACA,yBACA,KACA,GACA,EAIA;;GACA,4BACA,IACA,YACA,MAEA,EASA;;;;;;;GACA,2BACA,2BACA,eACA,EAYA;;;;;;;;;;GACA,0BACA,IAqBA;;;;;;;;;;;;;;;;;;;GACA,+BACA,oBACA,sBACA,oBACA,MACA,OACA,MACA,mCACA,uBACA,UACA,MACA,EAYA;;;;;;;;;;;GACA,6BACA,2BACA,kCACA,aACA,MACA,EAeA;;;;;;;;;;;;;;GACA,gCACA,iCACA,WACA,MACA,6DCtKA;AACA;AAeA;;;;;;;;;;;;;GACA,+CACA,CACA;0BACA,iDACA,KAEA,CACA;uBACA,qCACA,QAEA,sCACA,KACA,CACA,eACA,mDC/BA,8FAGA,CAKA;;;;OAEA,UACA,mEAEA;AACA,iCACA,QACA,OACA,QACA,QACA,gBACA,gBACA;cAEA;AACA,wCACA,qCACA;4CAEA;AACA,4BACA,YACA,8DACA,iEAGA,iBACA,+CACA,gBACA,gCAEA,aACA,yBAEA,IAEA,8EAMA;;;;;wBACA,6BACA,OAEA,CAQA;;;;;;;0BACA,kBACA,kBACA,kBACA,yBACA,SACA,OACA,QAEA,CAUA;;;;;;;;;iCACA,wBACA,gBACA,qBACA,CACA;AACA;gBACA,iBACA,GACA,CACA;sCACA,gCACA,qCACA,mBACA,QAEA,CAaA;;;;;;;;;;;;+BACA,YACA,WACA,gBACA,OACA,MACA,2BACA,yBACA,2DACA,CACA;wBACA,sCACA;8CACA,cACA,CACA;AACA;YACA,OACA,UACA,MACA,aACA,OACA,CACA,OACA,QAEA,CAQA;;;;;;;8BACA,iCACA,YACA,mBACA,QACA,oDACA,2BACA,MACA,4BACA,aACA,gBACA,IAEA,CASA;;;;;;;;oCACA,oBACA,kBACA,GACA,oBACA,kBACA,GACA,oBACA,kBACA,GACA,OACA,MAEA,CAWA;;;;;;;;;;qCACA,CACA;AACA;0CACA,GAEA,CAKA;;;;6CACA,OACA,2CACA,qBACA,2EACA,mBACA,eACA,+CACA,OAEA,CAOA;;;;;;0BACA,CACA;WACA,qBACA,OACA,MACA,IACA,cACA,YACA,MACA,EACA,MACA,KACA,EACA,EACA,MACA,EACA,iCAEA,WACA;AACA;AAEA;wBACA,sBACA,OACA,EAEA,qBACA,CACA;6BACA,OACA,aACA,8BACA,IAEA,CACA;AAEA;wEAEA,CACA;AACA;AACA;AACA;AACA;iDAEA,uBACA,OACA,iBAEA,qCAEA,oDACA,OACA,YAEA,UACA,qCAEA,gBACA,CACA,MAEA,iBACA,gCACA,OACA,YAEA,IAEA,WAEA,mBACA,8BAEA,GACA;AACA;yBACA,OACA,YAEA,YACA,QAEA,IACA;oBAEA,GAEA,mBACA,QAEA,CAOA;;;;;;0BACA,IACA,GACA,MACA,eACA,YACA,KACA,EACA,EACA,EACA,EACA,EACA,oBACA,GACA,oEACA,YACA,iCACA,sBACA,WAEA,QACA;iBAEA,OACA;kBAEA,OACA;EACA,eACA,OAEA,YACA;0BACA,oBACA,wBACA,gCACA,eACA,CAEA,mCAEA,OACA;AAEA;AACA;eACA,aACA,WAEA,CACA;iCAEA,CACA;AACA;mCACA,oBACA,sCACA,GACA,aACA,CAEA,CACA;AACA;qCACA,qDACA,OACA,YAEA,cACA,wBAEA,4BACA,oBAEA,qCACA,OACA,YAEA,oBACA,CACA;8CACA,oCACA,YACA,CACA,MACA,WACA,kBACA,SACA,0DAEA,qBACA,YAEA,+CACA,4DACA,mBACA,IACA,eACA,CAEA,GACA,QAEA,EACA,oBACA,IAEA,CAWA;;;;;;;;;;6BACA,wCACA,2BACA,+BACA,eACA,OACA,GAEA,CAWA;;;;;;;;;;2BACA,wCACA,2BACA,sBACA,QACA,OACA,GAEA,CAEA,8EACA,sCAMA;;;;aACA,OANA,CAaA;;;;;;UACA,QACA,kBAEA,mBACA,cACA,eACA,kBAGA,iBACA,UACA,GA7eA,CA8eA,iIChfA;AACA,0BACA,yBACA,QACA,2HCJA;AACA,6EACA,0FAGA,6CACA,CACA;oBACA,oCACA,8BACA,OACA,YACA,kDACA,CACA;sGACA,iBACA,UACA,CACA;oBACA,iBACA,IACA,CACA;AACA;AACA;MACA,YAEA,CAvBA,CADA,uDCHA;AACA,wFACA,4CACA,gBACA,WACA,iBACA,UACA,yCACA,sBACA,IACA,kBACA,0BACA,sBACA,uBACA,0BACA,GACA,yBACA,oBACA,IACA,KACA,aACA,GACA,CACA,qBACA,iBACA,IACA,oBACA,YACA;oUACA,WACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;mWACA,OACA;oiCACA,8BACA,YACA,cACA,+BACA,4BACA,yCACA,OACA,sBACA,mLACA,GACA,gEAEA,4CACA,+CACA,kBACA,6BACA,2DACA,kBACA,4BACA,CACA,iEACA,mBACA,8BACA,kCACA,sCACA,4CACA,6BACA,mBACA,QACA,iCACA,sDACA,iBACA,MACA,CACA,UACA,6DACA,SACA,UACA,uDACA,SACA,MACA,uBACA,uFACA,SAEA,OACA,IACA,kCACA,QACA,kBACA,4CACA,sBACA,wCACA,8DACA,CACA;GACA,iEACA,eACA,SACA,+GACA,EACA,CACA,KACA,gDACA,cACA,iBACA,KACA,OACA,YACA,CA1DA,iDA2DA,2BACA,UACA,mCACA,sBACA,iCACA,kCACA,qCACA,yHACA,6CACA,CACA;GACA,8GACA,QACA,SACA,8IACA,EACA,CACA,KACA,2HACA,YACA,qBACA,OACA,yBACA,KACA,oDACA,iBACA,sCACA,sBACA,gCACA,gBACA,6BACA,gCACA,kHACA,YACA,mHACA,aACA,CACA,kBACA,8BACA,KACA,OACA,YAEA,GACA,4EC7JA;AACA,6EACA,gDAEA,qaACA,2DACA;mBACA,yCACA,oDACA,0BACA,sBACA,oCACA,6BACA,+BACA,WACA,YACA,0BACA,wCACA,QACA;AACA;kBACA,CACA;kCACA,yCACA,OACA,YACA,+BAEA,WACA,mBACA,+BACA,6CACA,SACA,KACA,oCACA,yBACA,OACA,YACA,kDACA,8CACA,kCACA,0BACA,wBACA,wBACA,QACA,mBACA,uGACA,IACA,OACA,YAEA,GACA;wBACA,yCACA,wEACA,oCACA,qBACA,OACA,YACA,kDACA,CACA;uEACA,CACA;kBACA,UACA,KACA,CACA;sCACA,cACA,gDACA,SAEA,GACA,IAtEA,uDCKA;;;;;;;;GA2BA;;;;;;;;;;;;;;;;;;;;;;;;;;GACA;AACA;AAIA;;;GACA,mBAIA;;;GACA,0BAIA;;;GACA,+BACA,kBACA,iBACA,UACA,yCACA,sBACA,IACA,kBACA,0BACA,sBACA,uBACA,0BACA,GACA,yBACA,oBACA,IACA,KACA,aACA,GACA,CACA,qBACA,iBACA,IACA,0BACA,yoHACA,WACA,gFACA,sEACA,0EACA,mEACA,4EACA,kFACA,gGACA,wFACA,8DACA,wCACA,oEACA,yCAEA,MACA,uWACA,kCACA,yBACA,OACA,yBACA,wBACA,yBACA,wBACA,6EAEA,yIACA,oBACA,GACA,0BACA,sCACA,cACA,8BACA,aACA,6BACA,MACA,EACA,uBACA,YACA,+BACA,6CACA,IACA,KACA,sBACA,GACA,IACA,EACA,gBACA,YACA,+BACA,kCACA,yDACA,IACA,KACA,sBACA,GACA,IACA,EACA,KACA,sBACA,MACA,EACA,CACA,OACA,QACA,mBACA,wHACA,cACA,0BACA,YACA,cACA,aACA,4DACA,+BACA,wBACA,kDACA,OACA,eACA,4IACA,6BACA,gLACA,kCACA,kLACA,kCACA,iNACA,mCACA,uKACA,sCACA,gLACA,mBACA,YACA,CACA,kCACA,iCACA,qHACA,qCACA,+DACA,mCACA,kCACA,oBACA,eACA,CACA;wBACA,IACA,KACA,CACA;yBACA,IACA,CACA,aACA,YACA,iBACA,4CACA,qDACA,WACA,CACA,KACA,yBACA,WACA,YACA,0BACA,CACA;0BACA,GACA;4BACA,2BACA,uCACA,gCACA,4BACA,+BACA,GACA;0BACA,yBACA,GACA,CACA,KACA,CACA;8BACA,UACA;2DACA,kEACA,8CACA,gCACA,2DACA,qEACA,UACA;0BACA,6EACA,UACA,CACA,CACA;4KACA,sBACA,gBACA,uCACA,sBACA,WACA,yCACA,sBACA,WACA,KACA,sBACA,MACA,CACA;6FACA,sEACA,cACA,CACA;8DACA,eACA;6HACA,CACA;kFACA,CACA;GACA,4FACA,eACA,SACA,sGACA,EACA,CACA,CACA;uCACA,cACA,KACA,CACA;uCACA,UACA,CACA;sCACA,gCACA,SACA,CACA,KACA,YACA,wCACA,yBACA,OACA,YACA,CACA,iDACA,eACA,sCACA,2BACA,yBACA,KACA,gCACA,2BACA,MACA,sCACA,gBACA,6CACA,KACA,4CACA,UACA,CACA,kCACA,eACA,qBACA,sBACA,0BACA,IACA,2BACA,0BACA,KACA,2BACA,0BACA,YACA,MACA,mCACA,OACA,GACA,KACA,qBACA,uBACA,oBACA,GACA,CACA,oBACA,IACA,CACA,uCACA,iCACA,2GACA,EACA;8DACA,eACA;gCACA,6CACA,SACA;mIACA,CACA;GACA,sJACA,MACA,SACA,qIACA,EACA,CACA,CACA;uCACA,6DACA,2BACA,uBACA,KACA,0CACA,kCACA,iCACA,gBACA,MACA,gBACA,+DACA,gBACA,KACA,CACA,gCACA,cACA,6EACA,qBACA,GACA,0BACA,6BACA;AACA,gBACA,GACA,iCACA,gBACA,+BACA,OACA,oCACA,gBACA,+BACA,UACA,2BACA;AACA,CACA,oEACA,iCACA,YACA,yBACA,6CACA;oDACA;AACA,kBACA,yCACA,wBACA,OACA;yBACA,8BACA,0BACA,4CACA,4BACA,MACA,KACA,wFACA,CACA;yBACA,8BACA,0BACA,4CACA,4BACA,MACA,KACA,mBACA,kBACA,mCACA,uBACA,MACA,KACA,mBACA,MACA,CACA,KACA,kCACA,wCACA,MACA,KACA,0FACA,0BACA,KACA,oBACA,sBACA,KACA,KACA,sEACA,KACA,sCACA,MACA,uBACA,MACA,CACA;qBACA,0BACA,sBACA,KACA,oBACA,OACA,0BACA,eACA,QACA,CACA,8CACA,oGACA,SACA,CACA,gCACA,0BACA,kCACA,SACA,gCACA,kCACA,SACA,OACA,KACA,CACA,kCACA,2BACA,oCACA,SACA,iCACA,qBACA,SACA,2BACA,oCACA,SACA,iCACA,qBACA,SACA,eACA,KACA,CACA,sCACA,sHACA,YACA,CACA,wCACA,gIACA,aACA,CACA,OACA,aACA,kCACA,iCACA,uBACA,oBACA,cACA,0BACA,sCACA,4BACA,4BACA,0BACA,kBACA,gBACA,sBACA,kCAEA,uBACA,uEACA,sBACA,6BACA,YACA,aACA,oD;;;;;;;;;;;;;AClfA;AACA;AACA;;AAEA;AACO,SAAS8B,KAAT,CAAe1B,MAAf,EAAuBsB,IAAvB,EAAuG;AAAA,MAA1EK,YAA0E,uEAA7D,uFAAAZ,EAA6D;AAAA,MAA3CJ,MAA2C;AAAA,MAAnC5C,OAAmC;AAAA,MAA1BsB,QAA0B;AAAA,MAAhBuC,cAAgB;;AAC5G,MAAIC,YAAY,EAAhB;AACA,MAAIC,eAAe,EAAnB;AACAR,SAAQA,QAAQ,EAAhB;AACA,MAAIS,MAAMT,KAAKV,OAAL,CAAa,GAAb,CAAV;AACA7C,YAAUA,WAAW,EAArB;AACA,MAAIiE,UAAU,EAAd;;AAEA,MAAIC,UAAUX,KAAKV,OAAL,CAAa,KAAb,CAAd;AACA,MAAG,QAAOZ,MAAP,yCAAOA,MAAP,OAAkB,QAAlB,IAA8BA,OAAOkC,cAAP,CAAsB,YAAtB,CAAjC,EAAsE;AACpE7C,eAAWA,YAAYW,OAAOX,QAAnB,IAA+BW,OAAOZ,QAAjD;AACA4C,cAAU,oFAAAb,CAAYnB,MAAZ,EAAoB2B,YAApB,EAAkChB,MAAlC,EAA0C5C,OAA1C,CAAV;;AAEA,QAAIoE,oBAAoBH,QAAQhC,MAAhC;;AAEAA,aAASmC,qBAAqBnC,MAA9B;AACA6B,gBAAYA,UAAUO,MAAV,CAAiBJ,QAAQV,IAAzB,CAAZ;AACD;;AAED,MAAIS,QAAQ,CAAC,CAAb,EAAgB;AACdT,WAAOA,KAAK9E,KAAL,CAAW,CAAX,EAAcuF,GAAd,EAAmBK,MAAnB,CAA0BP,SAA1B,EAAqCO,MAArC,CAA4Cd,KAAK9E,KAAL,CAAWuF,MAAM,CAAjB,CAA5C,CAAP;AACD;;AAED;AACA,MAAIC,QAAQV,IAAR,IAAgBW,YAAY,CAAC,CAAjC,EAAoC;AAAA;AAClC,UAAII,WAAWf,KAAKgB,GAAL,CAAS,UAASC,GAAT,EAAc;AACpC,YAAI,OAAOA,GAAP,KAAe,QAAnB,EAA4B;AAC1B,iBAAOA,GAAP;AACD,SAFD,MAGK,IAAIA,IAAIpG,GAAR,EAAa;AAChB,iBAAOoG,IAAIpG,GAAX;AACD;AACF,OAPc,EAOZO,MAPY,CAOL,UAAS8F,OAAT,EAAkB;AAC1B,eAAOA,YAAYC,SAAnB;AACD,OATc,CAAf;;AAWAX,qBAAeA,aAAaM,MAAb,CACbJ,QAAQV,IAAR,CAAagB,GAAb,CAAiB,UAASC,GAAT,EAAc;AAC7B,YAAIG,WAAWL,SAASzB,OAAT,CAAiB2B,IAAIpG,GAAJ,CAAQ,CAAR,CAAjB,MAAiC,CAAC,CAAjD;AACA,YAAI,CAACuG,QAAL,EAAe;AACb,iBAAOH,GAAP;AACD;AACF,OALD,EAMC7F,MAND,CAMQ,UAAS8F,OAAT,EAAkB;AACxB,eAAOA,YAAYC,SAAnB;AACD,OARD,CADa,CAAf;AAZkC;AAuBnC;;AAED,MAAIR,YAAY,CAAC,CAAjB,EAAoB;AAClBX,WAAOA,KAAK9E,KAAL,CAAW,CAAX,EAAcyF,OAAd,EAAuBG,MAAvB,CAA8BN,YAA9B,EAA4CM,MAA5C,CAAmDd,KAAK9E,KAAL,CAAWyF,UAAU,CAArB,CAAnD,CAAP;AACD;;AAED;AACA;AACA,SAAOX,KAAKgB,GAAL,CAAS,UAACC,GAAD,EAAS;AACvB;AACA,QAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AAC3BA,YAAM,EAAEpG,KAAKoG,GAAP,EAAN;AACD;;AAED,QAAIA,IAAIpG,GAAR,EAAa;AACX,UAAI,OAAOoG,IAAIpG,GAAX,KAAmB,QAAvB,EAAiC;AAC/BoG,YAAIpG,GAAJ,GAAU,sEAAAwG,CAAMJ,IAAIpG,GAAV,CAAV;AACD;AACF;;AAED;AACA,QAAIoG,IAAIzF,QAAR,EAAkB;AAChByF,UAAIzF,QAAJ,GAAe,4FAAA8C,CAAkB2C,IAAIzF,QAAtB,CAAf;AACD;;AAED;AACA,QAAIyF,IAAIpG,GAAR,EAAa;AACX,UAAMyG,QAAQ,0EAAA3C,CAAUsC,IAAIpG,GAAd,CAAd;AACA,UAAI6D,OAAO4C,KAAP,CAAJ,EAAmB;AAAA;AACjB,cAAMnB,iBAAiBzB,OAAO4C,KAAP,CAAvB;AACA,cAAInB,cAAJ,EAAoB;AAClBnE,mBAAOC,IAAP,CAAYkE,cAAZ,EAA4BtE,OAA5B,CAAoC,UAAC0F,IAAD,EAAU;AAC5C,kBAAIN,IAAIM,IAAJ,MAAcJ,SAAlB,EAA6B;AAC3BF,oBAAIM,IAAJ,IAAYpB,eAAeoB,IAAf,CAAZ;AACD;AACF,aAJD;AAKD;AARgB;AASlB;AACF;;AAED;AACA,QAAIxD,aAAa,IAAjB,EAAuB;AAAE;AACvBkD,UAAIlD,QAAJ,GAAe,IAAf;AACD;;AAED;AACA,QAAIkD,IAAIhC,KAAR,EAAe;AACbgC,UAAIhC,KAAJ,GAAYmB,MAAM1B,MAAN,EAAcuC,IAAIhC,KAAlB,EAAyBoB,YAAzB,EAAuChB,MAAvC,EAA+C5C,OAA/C,EAAwDwE,IAAIlD,QAA5D,EAAsEuC,cAAtE,CAAZ;AACD;;AAED;AACA,QAAIW,IAAIO,IAAR,EAAc;AACZP,UAAIO,IAAJ,CAAS3F,OAAT,CAAiB,UAAC4F,GAAD,EAAS;AACxB,YAAIA,IAAIxC,KAAR,EAAe;AACbwC,cAAIxC,KAAJ,GAAYmB,MAAM1B,MAAN,EAAc+C,IAAIxC,KAAlB,EAAyBoB,YAAzB,EAAuChB,MAAvC,EAA+C5C,OAA/C,EAAwDwE,IAAIlD,QAA5D,EAAsEuC,cAAtE,CAAZ;AACD;AACF,OAJD;AAKD;;AAED;AACA;AACA,QAAIW,IAAI9E,IAAJ,KAAa,UAAjB,EAA6B;AAC3B;AACA,UAAI8E,IAAIzE,MAAJ,KAAe2E,SAAnB,EAA8B;AAC5BF,YAAIzE,MAAJ,GAAa,EAAEkF,SAAS,KAAX,EAAb;AACD,OAFD,MAGK,IAAIT,IAAIzE,MAAJ,CAAW,SAAX,MAA0B2E,SAA9B,EAAyC;AAC5CF,YAAIzE,MAAJ,CAAW,SAAX,IAAwB,KAAxB;AACD;AACF;;AAED;AACA;AACA;AACA,QAAI8D,kBAAkBW,IAAI9E,IAAJ,KAAa,UAA/B,IAA6C,CAAC8E,IAAIU,QAAlD,IAA8DV,IAAIW,WAAtE,EAAmF;AACjFtB,qBAAevE,IAAf,CAAoBkF,GAApB;AACD;;AAED,WAAOA,GAAP;AACD,GAvEM,CAAP;AAwED,C;;;;;;;;;;ACpID;;AAEO,SAASY,OAAT,CAAiBrF,MAAjB,EAAyBsF,QAAzB,EAAmC;AACxC,MAAIC,UAAU,IAAIC,OAAJ,CACZ,UAASC,OAAT,EAAkBC,MAAlB,EAA0B;AACxBC,IAAA,uEAAqB3F,MAArB,EAA6B;AAC3B,gBAAU,CAAE,UAAF,EAAc,OAAd,EAAuB,QAAvB;AADiB,KAA7B,EAGG4F,IAHH,CAGQ,UAACC,GAAD,EAAS;AAAEJ,cAAQI,IAAIC,QAAZ;AAAwB,KAH3C,EAIGC,KAJH,CAIS,UAACC,GAAD,EAAS;AAAEN,aAAO,IAAIjC,KAAJ,CAAUuC,GAAV,CAAP;AAAyB,KAJ7C;AAKD,GAPW,CAAd;;AAUA,MAAG,OAAOV,QAAP,KAAqB,UAAxB,EAAoC;AAClCC,YACGK,IADH,CACQ,UAACE,QAAD,EAAc;AAAER,eAAS,IAAT,EAAeQ,QAAf;AAA2B,KADnD,EAEGC,KAFH,CAES,UAACE,KAAD,EAAW;AAAEX,eAASW,KAAT;AAAkB,KAFxC;AAGD,GAJD,MAKK;AACH,WAAOV,OAAP;AACD;AACF,E;;;;;;;;;ACrBD;;AAEA,IAAMW,QAAQ,OAAd;;AAEA;;;;;;;;;;;;;;;;AAgBO,SAAS3D,MAAT,CAAgB4D,UAAhB,EAA4B1B,GAA5B,EAAiC2B,UAAjC,EAA6C;AAClD,MAAI,CAAC3B,GAAL,EAAU;AACRA,UAAM,IAAN;AACD;;AAED;AACA,MAAI4B,QAAQ,OAAOF,UAAP,KAAsB,QAAtB,GAAiC,gDAAaA,UAAb,CAAjC,GAA4DA,UAAxE;;AAEA,MAAI,OAAOC,UAAP,KAAsB,WAAtB,IAAqCC,MAAMvH,MAAN,KAAiB,CAA1D,EAA6D;AAC3D;AACA2F,QAAI4B,MAAM,CAAN,CAAJ,IAAgBD,UAAhB;;AAEA,WAAO3B,GAAP;AACD;;AAED,MAAI,OAAO2B,UAAP,KAAsB,WAAtB,IACA,OAAO3B,IAAI4B,MAAM,CAAN,CAAJ,CAAP,KAAyB,WAD7B,EAC0C;AACxC;AACA5B,QAAI4B,MAAM,CAAN,CAAJ,IAAgBA,MAAMvH,MAAN,GAAe,CAAf,IAAoBoH,MAAMI,IAAN,CAAWD,MAAM,CAAN,CAAX,CAApB,GAA2C,EAA3C,GAAgD,EAAhE;AACD;;AAED,MAAI/G,QAAQmF,IAAI4B,MAAM,CAAN,CAAJ,CAAZ;;AAEA,OAAK,IAAI7F,IAAI,CAAb,EAAgBA,IAAI6F,MAAMvH,MAA1B,EAAkC0B,GAAlC,EAAuC;AACrC;AACA;AACA,QAAI6F,MAAM7F,CAAN,MAAa,EAAjB,EAAqB;AACnB,aAAOmE,SAAP;AACD;;AAED,QAAI,OAAOyB,UAAP,KAAsB,WAA1B,EAAuC;AACrC,UAAI5F,MAAM6F,MAAMvH,MAAN,GAAe,CAAzB,EAA4B;AAC1B;AACAQ,cAAM+G,MAAM7F,CAAN,CAAN,IAAkB4F,UAAlB;AACA,eAAOA,UAAP;AACD,OAJD,MAKK;AACH;AACA;AACA,YAAIG,MAAMjH,MAAM+G,MAAM7F,CAAN,CAAN,CAAV;;AAEA,YAAI,OAAO+F,GAAP,KAAe,WAAf,IAA8BA,QAAQ,IAA1C,EAAgD;AAC9CA,gBAAML,MAAMI,IAAN,CAAWD,MAAM7F,IAAI,CAAV,CAAX,IAA2B,EAA3B,GAAgC,EAAtC;AACAlB,gBAAM+G,MAAM7F,CAAN,CAAN,IAAkB+F,GAAlB;AACD;;AAEDjH,gBAAQiH,GAAR;AACD;AACF,KAlBD,MAmBK,IAAIjH,KAAJ,EAAW;AACd;AACAA,cAAQA,MAAM+G,MAAM7F,CAAN,CAAN,CAAR;AACD;AACF;;AAED,SAAOlB,KAAP;AACD,E;;;;;;;;AC5ED;AAAA;;;;AAIO,SAASkH,cAAT,CAAwBxG,MAAxB,EAAgCyG,EAAhC,EAAoCxE,IAApC,EAA0CyE,YAA1C,EAAwD;AAC7DA,iBAAeA,iBAAiB/B,SAAjB,GAA6B,IAA7B,GAAoC+B,YAAnD;;AAEAzE,SAAOA,QAAQ,EAAf;;AAEA,MAAM0E,WAAW,SAAXA,QAAW,CAASC,YAAT,EAA4BC,iBAA5B,EAAyDC,SAAzD,EAAmF;AAClGD,sBAAkBD,YAAlB,EAAgCE,SAAhC;AACA,QAAIF,aAAahE,UAAjB,EAA6B;AAC3BpD,aAAOC,IAAP,CAAYmH,aAAahE,UAAzB,EAAqCvD,OAArC,CAA6C,UAACjB,IAAD,EAAU;AACrD,YAAM2I,cAAcD,UAAUpI,KAAV,EAApB;AACAqI,oBAAYxH,IAAZ,CAAiBnB,IAAjB;AACAuI,iBAASC,aAAahE,UAAb,CAAwBxE,IAAxB,CAAT,EAAwCyI,iBAAxC,EAA2DE,WAA3D;AACD,OAJD;AAKD;;AAED;AACA,QAAI,CAACL,YAAD,IAAiBE,aAAanE,KAAlC,EAAyC;AACvC,UAAMO,UAAU8D,UAAUpI,KAAV,EAAhB,CAAmCsE,QAAQzD,IAAR,CAAa,EAAb;AACnCoH,eAASC,aAAanE,KAAtB,EAA6BoE,iBAA7B,EAAgD7D,OAAhD;AACD;AACF,GAfD;;AAiBA2D,WAAS3G,MAAT,EAAiByG,EAAjB,EAAqBxE,QAAQ,EAA7B;AACD;;AAEM,SAAS+E,YAAT,CAAsBxD,IAAtB,EAA4BiD,EAA5B,EAAgC;AACrCA,KAAGjD,IAAH;AACA,MAAIA,KAAKf,KAAT,EAAgB;AACde,SAAKf,KAAL,CAAWpD,OAAX,CAAmB,UAACsB,CAAD,EAAO;AACxBqG,mBAAarG,CAAb,EAAgB8F,EAAhB;AACD,KAFD;AAGD;;AAED,MAAIjD,KAAKwB,IAAT,EAAe;AACbxB,SAAKwB,IAAL,CAAU3F,OAAV,CAAkB,UAAC4F,GAAD,EAAS;AACzB,UAAIA,IAAIxC,KAAR,EAAe;AACbwC,YAAIxC,KAAJ,CAAUpD,OAAV,CAAkB,UAACsB,CAAD,EAAO;AACvBqG,uBAAarG,CAAb,EAAgB8F,EAAhB;AACD,SAFD;AAGD;AACF,KAND;AAOD;AACF,C;;;;;;;;;AC9CD;AAAA;AACA;;AAEA;;;;;;;;;AASO,SAASQ,QAAT,CAAkBzD,IAAlB,EAAwBlE,KAAxB,EAA+B;AACpC,MAAI,CAACkE,IAAL,EAAW;AACT,WAAO,EAAE0D,OAAO,IAAT,EAAP;AACD;;AAED,MAAIlH,SAASwD,KAAKxD,MAAlB;AACA,MAAI,CAACA,MAAL,EAAa;AACX,WAAO,EAAEkH,OAAO,IAAT,EAAP;AACD;;AAED;AACA;AACA;AACA;AACA,MAAI5H,UAAU,EAAd,EAAkB;AAChBA,YAAQqF,SAAR;AACD;;AAED;AACA,MAAInB,KAAK7D,IAAL,KAAc,QAAd,IAA0BL,UAAU,IAAxC,EAA8C;AAC5CA,YAAQqF,SAAR;AACD;;AAED;AACA;AACA;AACA,MAAIwC,OAAO,EAAExH,MAAM,QAAR,EAAkB,cAAc,EAAhC,EAAoCsB,UAAU0D,SAA9C,EAAX;AACA,MAAIyC,WAAW5D,KAAKnF,GAAL,CAASmF,KAAKnF,GAAL,CAASS,MAAT,GAAkB,CAA3B,CAAf;AACAqI,OAAKvE,UAAL,CAAgBwE,QAAhB,IAA4BpH,MAA5B;;AAEA,MAAIwD,KAAKvC,QAAT,EAAmB;AACjBkG,SAAKlG,QAAL,GAAgB,CAAEmG,QAAF,CAAhB;AACD;;AAED,MAAIC,YAAY,EAAhB;AACA,MAAI,OAAO/H,KAAP,KAAiB,WAArB,EAAkC;AAChC+H,cAAUD,QAAV,IAAsB9H,KAAtB;AACD;;AAED,SAAO,2CAAAgI,CAAIC,cAAJ,CAAmBF,SAAnB,EAA8BF,IAA9B,CAAP;AACD,E;;;;;;;kCCpDD;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,yCAAyC;AACzC;AACA;;AAEA;AACA;;AAEA;;AAEA,8BAA8B,iGAAiG,EAAE;AACjI,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,GAAG;AAAA;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,G;;;;;;ACtGD,qB","file":"json-schema-form-core.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 29e9f63d8ee4b92578af","export { parse } from 'objectpath';\r\nexport { stringify } from 'objectpath';\r\nexport { normalize } from 'objectpath';\r\n\r\n/**\r\n * I am a name formatter function for processing keys into names for classes or Id.\r\n *\r\n * @param {Array} key I am the key array of a processed schema key\r\n * @param {string} separator I am the separator between the key items and optional form name\r\n * @param {string} formName I am an optional form name\r\n * @param {boolean} omitNumbers I determine if numeric values should be included in the output or withheld\r\n *\r\n * @return {string} I am the formatted key\r\n */\r\nexport function name (key: Array, separator?: string, formName = '', omitNumbers = false) {\r\n if (key) {\r\n let fieldKey = key.slice();\r\n let fieldSeparator = separator || '-';\r\n\r\n if (omitNumbers) {\r\n fieldKey = fieldKey.filter(function(currentKey: any) {\r\n return typeof currentKey !== 'number';\r\n });\r\n };\r\n\r\n return ((formName.length !== 0)\r\n ? formName + fieldSeparator\r\n : ''\r\n ) + fieldKey.join(fieldSeparator);\r\n };\r\n\r\n return '';\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/sf-path.js","// Takes a titleMap in either object or list format and returns one\r\n// in the list format.\r\nexport default function(titleMap: Array, originalEnum?: any) {\r\n if (!Array.isArray(titleMap)) {\r\n const canonical = [];\r\n if (originalEnum) {\r\n originalEnum.forEach((value) => {\r\n canonical.push({ name: titleMap[value], value });\r\n });\r\n }\r\n else {\r\n Object.keys(titleMap).forEach((value) => {\r\n canonical.push({ name: titleMap[value], value });\r\n });\r\n }\r\n return canonical;\r\n }\r\n return titleMap;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/canonical-title-map.js","module.exports = require('./lib/ObjectPath.js').ObjectPath;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/objectpath/index.js\n// module id = 2\n// module chunks = 0","import { stringify } from './sf-path';\r\nimport canonicalTitleMap from './canonical-title-map';\r\n\r\n/* Utils */\r\nconst stripNullType = (type) => {\r\n if (Array.isArray(type) && type.length === 2) {\r\n if (type[0] === 'null') {\r\n return type[1];\r\n };\r\n if (type[1] === 'null') {\r\n return type[0];\r\n };\r\n };\r\n return type;\r\n};\r\n\r\n// Creates an default titleMap list from an enum, i.e. a list of strings.\r\nconst enumToTitleMap = (enm) => {\r\n const titleMap = []; // canonical titleMap format is a list.\r\n enm.forEach((name) => {\r\n titleMap.push({ name, value: name });\r\n });\r\n return titleMap;\r\n};\r\n\r\n/**\r\n * Creates a default form definition from a schema.\r\n */\r\nexport function defaultFormDefinition(schemaTypes, name, schema, options) {\r\n const rules = schemaTypes[stripNullType(schema.type)];\r\n if (rules) {\r\n let def;\r\n // We give each rule a possibility to recurse it's children.\r\n const innerDefaultFormDefinition = (childName, childSchema , childOptions) =>\r\n defaultFormDefinition(schemaTypes, childName, childSchema, childOptions);\r\n for (let i = 0; i < rules.length; i++) {\r\n def = rules[i](name, schema, options, innerDefaultFormDefinition);\r\n\r\n // first handler in list that actually returns something is our handler!\r\n if (def) {\r\n\r\n // Do we have form defaults in the schema under the x-schema-form-attribute?\r\n if (def.schema['x-schema-form']) {\r\n Object.assign(def, def.schema['x-schema-form']);\r\n }\r\n\r\n return def;\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Creates a form object with all common properties\r\n */\r\nexport function stdFormObj(name, schema, options) {\r\n options = options || {};\r\n\r\n // The Object.assign used to be a angular.copy. Should work though.\r\n const f = options.global && options.global.formDefaults ?\r\n Object.assign({}, options.global.formDefaults) : {};\r\n if (options.global && options.global.supressPropertyTitles === true) {\r\n f.title = schema.title;\r\n }\r\n else {\r\n f.title = schema.title || name;\r\n }\r\n\r\n if (schema.description) { f.description = schema.description; }\r\n if (options.required === true || schema.required === true) { f.required = true; }\r\n if (schema.maxLength) { f.maxlength = schema.maxLength; }\r\n if (schema.minLength) { f.minlength = schema.minLength; }\r\n if (schema.readOnly || schema.readonly) { f.readonly = true; }\r\n if (schema.minimum) { f.minimum = schema.minimum + (schema.exclusiveMinimum ? 1 : 0); }\r\n if (schema.maximum) { f.maximum = schema.maximum - (schema.exclusiveMaximum ? 1 : 0); }\r\n\r\n // Non standard attributes (DONT USE DEPRECATED)\r\n // If you must set stuff like this in the schema use the x-schema-form attribute\r\n if (schema.validationMessage) { f.validationMessage = schema.validationMessage; }\r\n if (schema.enumNames) { f.titleMap = canonicalTitleMap(schema.enumNames, schema['enum']); }\r\n f.schema = schema;\r\n\r\n // Ng model options doesn't play nice with undefined, might be defined\r\n // globally though\r\n f.ngModelOptions = f.ngModelOptions || {};\r\n\r\n return f;\r\n};\r\n\r\n/*** Schema types to form type mappings, with defaults ***/\r\nexport function text(name, schema, options) {\r\n if (stripNullType(schema.type) === 'string' && !schema['enum']) {\r\n const f = stdFormObj(name, schema, options);\r\n f.key = options.path;\r\n f.type = 'text';\r\n options.lookup[stringify(options.path)] = f;\r\n return f;\r\n }\r\n}\r\n\r\n// default in json form for number and integer is a text field\r\n// input type=\"number\" would be more suitable don't ya think?\r\nexport function number(name, schema, options) {\r\n if (stripNullType(schema.type) === 'number') {\r\n const f = stdFormObj(name, schema, options);\r\n f.key = options.path;\r\n f.type = 'number';\r\n options.lookup[stringify(options.path)] = f;\r\n return f;\r\n }\r\n}\r\n\r\nexport function integer(name, schema, options) {\r\n if (stripNullType(schema.type) === 'integer') {\r\n const f = stdFormObj(name, schema, options);\r\n f.key = options.path;\r\n f.type = 'number';\r\n options.lookup[stringify(options.path)] = f;\r\n return f;\r\n }\r\n}\r\n\r\nexport function checkbox(name, schema, options) {\r\n if (stripNullType(schema.type) === 'boolean') {\r\n const f = stdFormObj(name, schema, options);\r\n f.key = options.path;\r\n f.type = 'checkbox';\r\n options.lookup[stringify(options.path)] = f;\r\n return f;\r\n }\r\n}\r\n\r\nexport function select(name, schema, options) {\r\n if (stripNullType(schema.type) === 'string' && schema['enum']) {\r\n const f = stdFormObj(name, schema, options);\r\n f.key = options.path;\r\n f.type = 'select';\r\n if (!f.titleMap) {\r\n f.titleMap = enumToTitleMap(schema['enum']);\r\n }\r\n options.lookup[stringify(options.path)] = f;\r\n return f;\r\n }\r\n}\r\n\r\nexport function checkboxes(name, schema, options) {\r\n if (stripNullType(schema.type) === 'array' && schema.items && schema.items['enum']) {\r\n const f = stdFormObj(name, schema, options);\r\n f.key = options.path;\r\n f.type = 'checkboxes';\r\n if (!f.titleMap) {\r\n f.titleMap = enumToTitleMap(schema.items['enum']);\r\n }\r\n options.lookup[stringify(options.path)] = f;\r\n return f;\r\n }\r\n}\r\n\r\nexport function fieldset(name, schema, options, defaultFormDef) {\r\n if (stripNullType(schema.type) === 'object') {\r\n const f = stdFormObj(name, schema, options);\r\n f.type = 'fieldset';\r\n f.key = options.path;\r\n f.items = [];\r\n options.lookup[stringify(options.path)] = f;\r\n\r\n // recurse down into properties\r\n if (schema.properties) {\r\n Object.keys(schema.properties).forEach((key) => {\r\n const value = schema.properties[key];\r\n const path = options.path.slice();\r\n path.push(key);\r\n if (options.ignore[stringify(path)] !== true) {\r\n const required = schema.required && schema.required.indexOf(key) !== -1;\r\n\r\n const def = defaultFormDef(key, value, {\r\n path,\r\n required: required || false,\r\n lookup: options.lookup,\r\n ignore: options.ignore,\r\n global: options.global\r\n });\r\n if (def) {\r\n f.items.push(def);\r\n }\r\n }\r\n });\r\n }\r\n return f;\r\n }\r\n}\r\n\r\nexport function array(name, schema, options, defaultFormDef) {\r\n if (stripNullType(schema.type) === 'array') {\r\n const f = stdFormObj(name, schema, options);\r\n f.type = 'array';\r\n f.key = options.path;\r\n options.lookup[stringify(options.path)] = f;\r\n\r\n const required = schema.required &&\r\n schema.required.indexOf(options.path[options.path.length - 1]) !== -1;\r\n\r\n // The default is to always just create one child. This works since if the\r\n // schemas items declaration is of type: \"object\" then we get a fieldset.\r\n // We also follow json form notatation, adding empty brackets \"[]\" to\r\n // signify arrays.\r\n\r\n const arrPath = options.path.slice();\r\n arrPath.push('');\r\n\r\n f.items = [\r\n defaultFormDef(name, schema.items, {\r\n path: arrPath,\r\n required: required || false,\r\n lookup: options.lookup,\r\n ignore: options.ignore,\r\n global: options.global\r\n })\r\n ];\r\n\r\n return f;\r\n }\r\n}\r\n\r\nexport function createDefaults() {\r\n // First sorted by schema type then a list.\r\n // Order has importance. First handler returning an form snippet will be used.\r\n return {\r\n string: [ select, text ],\r\n object: [ fieldset ],\r\n number: [ number ],\r\n integer: [ integer ],\r\n boolean: [ checkbox ],\r\n array: [ checkboxes, array ]\r\n };\r\n};\r\n\r\n/**\r\n * Create form defaults from schema\r\n */\r\nexport function defaultForm(schema: any, defaultSchemaTypes: any, ignore?: any, globalOptions?: any) {\r\n const form = [];\r\n const lookup = {}; // Map path => form obj for fast lookup in merging\r\n ignore = ignore || {};\r\n globalOptions = globalOptions || {};\r\n defaultSchemaTypes = defaultSchemaTypes || createDefaults();\r\n\r\n if (schema.properties) {\r\n Object.keys(schema.properties).forEach((key) => {\r\n if (ignore[key] !== true) {\r\n const required = schema.required && schema.required.indexOf(key) !== -1;\r\n const def = defaultFormDefinition(defaultSchemaTypes, key, schema.properties[key], {\r\n path: [ key ], // Path to this property in bracket notation.\r\n lookup: lookup, // Extra map to register with. Optimization for merger.\r\n ignore: ignore, // The ignore list of paths (sans root level name)\r\n required: required, // Is it required? (v4 json schema style)\r\n global: globalOptions // Global options, including form defaults\r\n });\r\n if (def) {\r\n form.push(def);\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n throw new Error('Not implemented. Only type \"object\" allowed at root level of schema.');\r\n }\r\n return { form: form, lookup: lookup };\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/schema-defaults.js","import * as schemaDefaultsImp from './lib/schema-defaults';\r\nimport * as sfPathImp from './lib/sf-path';\r\nimport canonicalTitleMapImp from './lib/canonical-title-map';\r\n\r\nexport { merge } from './lib/merge';\r\nexport { select } from './lib/select';\r\nexport { jsonref } from './lib/resolve';\r\nexport { traverseSchema, traverseForm } from './lib/traverse';\r\nexport { validate } from './lib/validate';\r\n\r\nexport const sfPath = sfPathImp;\r\nexport const schemaDefaults = schemaDefaultsImp;\r\nexport const canonicalTitleMap = canonicalTitleMapImp;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/module.js","(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o -1) {\n combinedDetails = u2Details;\n } else {\n u1Details = isType(u1, 'Undefined') ? undefined : parseURI(u1);\n\n if (!isType(u1Details, 'Undefined')) {\n combinedDetails = u1Details;\n\n // Join the paths\n combinedDetails.path = slash(path.join(u1Details.path, u2Details.path));\n\n // Join query parameters\n combinedDetails.query = combineQueryParams(u1Details.query, u2Details.query);\n } else {\n combinedDetails = u2Details;\n }\n }\n\n // Remove the fragment\n combinedDetails.fragment = undefined;\n\n // For relative URIs, add back the '..' since it was removed above\n return (remoteUriTypes.indexOf(combinedDetails.reference) === -1 &&\n combinedDetails.path.indexOf('../') === 0 ? '../' : '') + URI.serialize(combinedDetails);\n}\n\nfunction findAncestors (obj, path) {\n var ancestors = [];\n var node;\n\n if (path.length > 0) {\n node = obj;\n\n path.slice(0, path.length - 1).forEach(function (seg) {\n if (seg in node) {\n node = node[seg];\n\n ancestors.push(node);\n }\n });\n }\n\n return ancestors;\n}\n\nfunction processSubDocument (mode, doc, subDocPath, refDetails, options, parents, parentPtrs, allRefs, indirect) {\n var refValue;\n var rOptions;\n\n if (subDocPath.length > 0) {\n try {\n refValue = findValue(doc, subDocPath);\n } catch (err) {\n // We only mark missing remote references as missing because local references can have deferred values\n if (mode === 'remote') {\n refDetails.error = err.message;\n refDetails.missing = true;\n }\n }\n } else {\n refValue = doc;\n }\n\n if (!isType(refValue, 'Undefined')) {\n refDetails.value = refValue;\n }\n\n if (isType(refValue, 'Array') || isType(refValue, 'Object')) {\n rOptions = clone(options);\n\n if (mode === 'local') {\n delete rOptions.subDocPath;\n\n // Traverse the dereferenced value\n doc = refValue;\n } else {\n rOptions.relativeBase = path.dirname(parents[parents.length - 1]);\n\n if (subDocPath.length === 0) {\n delete rOptions.subDocPath;\n } else {\n rOptions.subDocPath = subDocPath;\n }\n }\n\n return findRefsRecursive(doc, rOptions, parents, parentPtrs, allRefs, indirect);\n }\n}\n\n// Should this be its own exported API?\nfunction findRefsRecursive (obj, options, parents, parentPtrs, allRefs, indirect) {\n var allTasks = Promise.resolve();\n var parentPath = parentPtrs.length ? pathFromPtr(parentPtrs[parentPtrs.length - 1]) : [];\n var refs = findRefs(obj, options);\n var subDocPath = options.subDocPath || [];\n var subDocPtr = pathToPtr(subDocPath);\n var ancestorPtrs = ['#'];\n\n parents.forEach(function (parent, index) {\n if (parent.charAt(0) !== '#') {\n ancestorPtrs.push(parentPtrs[index]);\n }\n });\n\n // Reverse the order so we search them in the proper order\n ancestorPtrs.reverse();\n\n if ((parents[parents.length - 1] || '').charAt(0) !== '#') {\n allRefs.documents[pathToPtr(parentPath)] = obj;\n }\n\n Object.keys(refs).forEach(function (refPtr) {\n var refDetails = refs[refPtr];\n var location;\n var parentIndex;\n var refFullPath;\n var refFullPtr;\n\n // If there are no parents, treat the reference pointer as-is. Otherwise, the reference is a reference within a\n // remote document and its sub document path prefix must be removed.\n if (parents.length === 0) {\n refFullPath = parentPath.concat(pathFromPtr(refPtr));\n } else {\n refFullPath = parentPath.concat(pathFromPtr(refPtr).slice(parents.length === 0 ? 0 : subDocPath.length));\n }\n\n refFullPtr = pathToPtr(refFullPath);\n\n // It is possible to process the same reference more than once in the event of hierarchical references so we avoid\n // processing a reference if we've already done so.\n if (!isType(allRefs[refFullPtr], 'Undefined')) {\n return;\n }\n\n // Record the reference metadata\n allRefs.refs[refFullPtr] = refs[refPtr];\n\n // Do not process invalid references\n if (isType(refDetails.error, 'Undefined') && refDetails.type !== 'invalid') {\n if (remoteTypes.indexOf(refDetails.type) > -1) {\n location = combineURIs(options.relativeBase, refDetails.uri);\n parentIndex = parents.indexOf(location);\n } else {\n location = refDetails.uri;\n parentIndex = parentPtrs.indexOf(location);\n }\n\n // Record ancestor paths\n refDetails.ancestorPtrs = ancestorPtrs;\n\n // Record if the reference is indirect based on its parent\n refDetails.indirect = indirect;\n\n // Only process non-circular references further\n if (parentIndex === -1) {\n if (remoteTypes.indexOf(refDetails.type) > -1) {\n allTasks = allTasks\n .then(function () {\n return getRemoteDocument(location, options)\n .then(function (doc) {\n return processSubDocument('remote',\n doc,\n isType(refDetails.uriDetails.fragment, 'Undefined') ?\n [] :\n pathFromPtr(decodeURI(refDetails.uriDetails.fragment)),\n refDetails,\n options,\n parents.concat(location),\n parentPtrs.concat(refFullPtr),\n allRefs,\n indirect);\n })\n .catch(function (err) {\n refDetails.error = err.message;\n refDetails.missing = true;\n });\n });\n } else {\n if (refFullPtr.indexOf(location + '/') !== 0 && refFullPtr !== location &&\n subDocPtr.indexOf(location + '/') !== 0 && subDocPtr !== location) {\n if (location.indexOf(subDocPtr + '/') !== 0) {\n allTasks = allTasks\n .then(function () {\n return processSubDocument('local',\n obj,\n pathFromPtr(location),\n refDetails,\n options,\n parents.concat(location),\n parentPtrs.concat(refFullPtr),\n allRefs,\n indirect || (location.indexOf(subDocPtr + '/') === -1 && location !== subDocPtr));\n });\n }\n } else {\n refDetails.circular = true;\n }\n }\n } else {\n // Mark seen ancestors as circular\n parentPtrs.slice(parentIndex).forEach(function (parentPtr) {\n allRefs.refs[parentPtr].circular = true;\n });\n\n refDetails.circular = true;\n }\n }\n });\n\n allTasks = allTasks\n .then(function () {\n // Identify indirect, local circular references (Issue 82)\n var circulars = [];\n var processedRefPtrs = [];\n var processedRefs = [];\n\n function walkRefs (parentPtrs, parentRefs, refPtr, ref) {\n Object.keys(allRefs.refs).forEach(function (dRefPtr) {\n var dRefDetails = allRefs.refs[dRefPtr];\n\n // Do not process already processed references or references that are not a nested references\n if (processedRefs.indexOf(ref) === -1 && processedRefPtrs.indexOf(refPtr) === -1 &&\n circulars.indexOf(ref) === -1 && dRefPtr !== refPtr && dRefPtr.indexOf(ref + '/') === 0) {\n if (parentRefs.indexOf(ref) > -1) {\n parentRefs.forEach(function (parentRef) {\n if (circulars.indexOf(ref) === -1) {\n circulars.push(parentRef);\n }\n });\n } else {\n walkRefs(parentPtrs.concat(refPtr), parentRefs.concat(ref), dRefPtr, dRefDetails.uri);\n }\n\n processedRefPtrs.push(refPtr);\n processedRefs.push(ref);\n }\n });\n }\n\n Object.keys(allRefs.refs).forEach(function (refPtr) {\n var refDetails = allRefs.refs[refPtr];\n\n // Only process local, non-circular references\n if (refDetails.type === 'local' && !refDetails.circular && circulars.indexOf(refDetails.uri) === -1) {\n walkRefs([], [], refPtr, refDetails.uri);\n }\n });\n\n Object.keys(allRefs.refs).forEach(function (refPtr) {\n var refDetails = allRefs.refs[refPtr];\n\n if (circulars.indexOf(refDetails.uri) > -1) {\n refDetails.circular = true;\n }\n });\n })\n .then(function () {\n return allRefs;\n });\n\n return allTasks;\n}\n\nfunction findValue (obj, path) {\n var value = obj;\n\n path.forEach(function (seg) {\n seg = decodeURI(seg);\n\n if (seg in value) {\n value = value[seg];\n } else {\n throw Error('JSON Pointer points to missing location: ' + pathToPtr(path));\n }\n });\n\n return value;\n}\n\nfunction getExtraRefKeys (ref) {\n return Object.keys(ref).filter(function (key) {\n return key !== '$ref';\n });\n}\n\nfunction getRefType (refDetails) {\n var type;\n\n // Convert the URI reference to one of our types\n switch (refDetails.uriDetails.reference) {\n case 'absolute':\n case 'uri':\n type = 'remote';\n break;\n case 'same-document':\n type = 'local';\n break;\n default:\n type = refDetails.uriDetails.reference;\n }\n\n return type;\n}\n\nfunction getRemoteDocument (url, options) {\n var cacheEntry = remoteCache[url];\n var allTasks = Promise.resolve();\n var loaderOptions = clone(options.loaderOptions || {});\n\n if (isType(cacheEntry, 'Undefined')) {\n // If there is no content processor, default to processing the raw response as JSON\n if (isType(loaderOptions.processContent, 'Undefined')) {\n loaderOptions.processContent = function (res, callback) {\n callback(undefined, JSON.parse(res.text));\n };\n }\n\n // Attempt to load the resource using path-loader\n allTasks = PathLoader.load(decodeURI(url), loaderOptions);\n\n // Update the cache\n allTasks = allTasks\n .then(function (res) {\n remoteCache[url] = {\n value: res\n };\n\n return res;\n })\n .catch(function (err) {\n remoteCache[url] = {\n error: err\n };\n\n throw err;\n });\n } else {\n // Return the cached version\n allTasks = allTasks.then(function () {\n return cacheEntry.value;\n });\n }\n\n // Return a cloned version to avoid updating the cache\n allTasks = allTasks.then(function (res) {\n return clone(res);\n });\n\n return allTasks;\n}\n\nfunction isRefLike (obj, throwWithDetails) {\n var refLike = true;\n\n try {\n if (!isType(obj, 'Object')) {\n throw new Error('obj is not an Object');\n } else if (!isType(obj.$ref, 'String')) {\n throw new Error('obj.$ref is not a String');\n }\n } catch (err) {\n if (throwWithDetails) {\n throw err;\n }\n\n refLike = false;\n }\n\n return refLike;\n}\n\nfunction isType (obj, type) {\n // A PhantomJS bug (https://github.com/ariya/phantomjs/issues/11722) prohibits us from using the same approach for\n // undefined checking that we use for other types.\n if (type === 'Undefined') {\n return typeof obj === 'undefined';\n } else {\n return Object.prototype.toString.call(obj) === '[object ' + type + ']';\n }\n}\n\nfunction makeRefFilter (options) {\n var refFilter;\n var validTypes;\n\n if (isType(options.filter, 'Array') || isType(options.filter, 'String')) {\n validTypes = isType(options.filter, 'String') ? [options.filter] : options.filter;\n refFilter = function (refDetails) {\n // Check the exact type or for invalid URIs, check its original type\n return validTypes.indexOf(refDetails.type) > -1 || validTypes.indexOf(getRefType(refDetails)) > -1;\n };\n } else if (isType(options.filter, 'Function')) {\n refFilter = options.filter;\n } else if (isType(options.filter, 'Undefined')) {\n refFilter = function () {\n return true;\n };\n }\n\n return function (refDetails, path) {\n return (refDetails.type !== 'invalid' || options.includeInvalid === true) && refFilter(refDetails, path);\n };\n}\n\nfunction makeSubDocPath (options) {\n var subDocPath;\n\n if (isType(options.subDocPath, 'Array')) {\n subDocPath = options.subDocPath;\n } else if (isType(options.subDocPath, 'String')) {\n subDocPath = pathFromPtr(options.subDocPath);\n } else if (isType(options.subDocPath, 'Undefined')) {\n subDocPath = [];\n }\n\n return subDocPath;\n}\n\nfunction parseURI (uri) {\n // We decode first to avoid doubly encoding\n return URI.parse(encodeURI(decodeURI(uri)));\n}\n\nfunction setValue (obj, refPath, value) {\n findValue(obj, refPath.slice(0, refPath.length - 1))[decodeURI(refPath[refPath.length - 1])] = value;\n}\n\nfunction walk (ancestors, node, path, fn) {\n var processChildren = true;\n\n function walkItem (item, segment) {\n path.push(segment);\n walk(ancestors, item, path, fn);\n path.pop();\n }\n\n // Call the iteratee\n if (isType(fn, 'Function')) {\n processChildren = fn(ancestors, node, path);\n }\n\n // We do not process circular objects again\n if (ancestors.indexOf(node) === -1) {\n ancestors.push(node);\n\n if (processChildren !== false) {\n if (isType(node, 'Array')) {\n node.forEach(function (member, index) {\n walkItem(member, index.toString());\n });\n } else if (isType(node, 'Object')) {\n Object.keys(node).forEach(function (key) {\n walkItem(node[key], key);\n });\n }\n }\n }\n\n ancestors.pop();\n}\n\nfunction validateOptions (options, obj) {\n if (isType(options, 'Undefined')) {\n // Default to an empty options object\n options = {};\n } else {\n // Clone the options so we do not alter the ones passed in\n options = clone(options);\n }\n\n if (!isType(options, 'Object')) {\n throw new TypeError('options must be an Object');\n } else if (!isType(options.filter, 'Undefined') &&\n !isType(options.filter, 'Array') &&\n !isType(options.filter, 'Function') &&\n !isType(options.filter, 'String')) {\n throw new TypeError('options.filter must be an Array, a Function of a String');\n } else if (!isType(options.includeInvalid, 'Undefined') &&\n !isType(options.includeInvalid, 'Boolean')) {\n throw new TypeError('options.includeInvalid must be a Boolean');\n } else if (!isType(options.refPreProcessor, 'Undefined') &&\n !isType(options.refPreProcessor, 'Function')) {\n throw new TypeError('options.refPreProcessor must be a Function');\n } else if (!isType(options.refPostProcessor, 'Undefined') &&\n !isType(options.refPostProcessor, 'Function')) {\n throw new TypeError('options.refPostProcessor must be a Function');\n } else if (!isType(options.subDocPath, 'Undefined') &&\n !isType(options.subDocPath, 'Array') &&\n !isPtr(options.subDocPath)) {\n // If a pointer is provided, throw an error if it's not the proper type\n throw new TypeError('options.subDocPath must be an Array of path segments or a valid JSON Pointer');\n }\n\n options.filter = makeRefFilter(options);\n\n // Set the subDocPath to avoid everyone else having to compute it\n options.subDocPath = makeSubDocPath(options);\n\n if (!isType(obj, 'Undefined')) {\n try {\n findValue(obj, options.subDocPath);\n } catch (err) {\n err.message = err.message.replace('JSON Pointer', 'options.subDocPath');\n\n throw err;\n }\n }\n\n return options;\n}\n\n/* Module Members */\n\n/*\n * Each of the functions below are defined as function statements and *then* exported in two steps instead of one due\n * to a bug in jsdoc (https://github.com/jsdoc2md/jsdoc-parse/issues/18) that causes our documentation to be\n * generated improperly. The impact to the user is significant enough for us to warrant working around it until this\n * is fixed.\n */\n\n/**\n * The options used for various JsonRefs APIs.\n *\n * @typedef {object} JsonRefsOptions\n *\n * @param {string|string[]|function} [filter=function () {return true;}] - The filter to use when gathering JSON\n * References *(If this value is a single string or an array of strings, the value(s) are expected to be the `type(s)`\n * you are interested in collecting as described in {@link module:JsonRefs.getRefDetails}. If it is a function, it is\n * expected that the function behaves like {@link module:JsonRefs~RefDetailsFilter}.)*\n * @param {boolean} [includeInvalid=false] - Whether or not to include invalid JSON Reference details *(This will make\n * it so that objects that are like JSON Reference objects, as in they are an `Object` and the have a `$ref` property,\n * but fail validation will be included. This is very useful for when you want to know if you have invalid JSON\n * Reference definitions. This will not mean that APIs will process invalid JSON References but the reasons as to why\n * the JSON References are invalid will be included in the returned metadata.)*\n * @param {object} [loaderOptions] - The options to pass to\n * {@link https://github.com/whitlockjc/path-loader/blob/master/docs/API.md#module_PathLoader.load|PathLoader~load}\n * @param {module:JsonRefs~RefPreProcessor} [refPreProcessor] - The callback used to pre-process a JSON Reference like\n * object *(This is called prior to validating the JSON Reference like object and getting its details)*\n * @param {module:JsonRefs~RefPostProcessor} [refPostProcessor] - The callback used to post-process the JSON Reference\n * metadata *(This is called prior filtering the references)*\n * @param {string} [options.relativeBase] - The base location to use when resolving relative references *(Only useful\n * for APIs that do remote reference resolution. If this value is not defined,\n * {@link https://github.com/whitlockjc/path-loader|path-loader} will use `window.location.href` for the browser and\n * `process.cwd()` for Node.js.)*\n * @param {string|string[]} [options.subDocPath=[]] - The JSON Pointer or array of path segments to the sub document\n * location to search from\n */\n\n/**\n * Simple function used to filter out JSON References.\n *\n * @typedef {function} RefDetailsFilter\n *\n * @param {module:JsonRefs~UnresolvedRefDetails} refDetails - The JSON Reference details to test\n * @param {string[]} path - The path to the JSON Reference\n *\n * @returns {boolean} whether the JSON Reference should be filtered *(out)* or not\n */\n\n/**\n * Simple function used to pre-process a JSON Reference like object.\n *\n * @typedef {function} RefPreProcessor\n *\n * @param {object} obj - The JSON Reference like object\n * @param {string[]} path - The path to the JSON Reference like object\n *\n * @returns {object} the processed JSON Reference like object\n */\n\n/**\n * Simple function used to post-process a JSON Reference details.\n *\n * @typedef {function} RefPostProcessor\n *\n * @param {module:JsonRefs~UnresolvedRefDetails} refDetails - The JSON Reference details to test\n * @param {string[]} path - The path to the JSON Reference\n *\n * @returns {object} the processed JSON Reference details object\n */\n\n/**\n * Detailed information about resolved JSON References.\n *\n * @typedef {module:JsonRefs~UnresolvedRefDetails} ResolvedRefDetails\n *\n * @property {boolean} [circular] - Whether or not the JSON Reference is circular *(Will not be set if the JSON\n * Reference is not circular)*\n * @property {boolean} [missing] - Whether or not the referenced value was missing or not *(Will not be set if the\n * referenced value is not missing)*\n * @property {*} [value] - The referenced value *(Will not be set if the referenced value is missing)*\n */\n\n/**\n * The results of resolving the JSON References of an array/object.\n *\n * @typedef {object} ResolvedRefsResults\n *\n * @property {module:JsonRefs~ResolvedRefDetails} refs - An object whose keys are JSON Pointers *(fragment version)*\n * to where the JSON Reference is defined and whose values are {@link module:JsonRefs~ResolvedRefDetails}\n * @property {object} resolved - The array/object with its JSON References fully resolved\n */\n\n/**\n * An object containing the retrieved document and detailed information about its JSON References.\n *\n * @typedef {module:JsonRefs~ResolvedRefsResults} RetrievedRefsResults\n *\n * @property {object} value - The retrieved document\n */\n\n/**\n * An object containing the retrieved document, the document with its references resolved and detailed information\n * about its JSON References.\n *\n * @typedef {object} RetrievedResolvedRefsResults\n *\n * @property {module:JsonRefs~UnresolvedRefDetails} refs - An object whose keys are JSON Pointers *(fragment version)*\n * to where the JSON Reference is defined and whose values are {@link module:JsonRefs~UnresolvedRefDetails}\n * @property {ResolvedRefsResults} - An object whose keys are JSON Pointers *(fragment version)*\n * to where the JSON Reference is defined and whose values are {@link module:JsonRefs~ResolvedRefDetails}\n * @property {object} value - The retrieved document\n */\n\n/**\n * Detailed information about unresolved JSON References.\n *\n * @typedef {object} UnresolvedRefDetails\n *\n * @property {object} def - The JSON Reference definition\n * @property {string} [error] - The error information for invalid JSON Reference definition *(Only present when the\n * JSON Reference definition is invalid or there was a problem retrieving a remote reference during resolution)*\n * @property {string} uri - The URI portion of the JSON Reference\n * @property {object} uriDetails - Detailed information about the URI as provided by\n * {@link https://github.com/garycourt/uri-js|URI.parse}.\n * @property {string} type - The JSON Reference type *(This value can be one of the following: `invalid`, `local`,\n * `relative` or `remote`.)*\n * @property {string} [warning] - The warning information *(Only present when the JSON Reference definition produces a\n * warning)*\n */\n\n/**\n * Clears the internal cache of remote documents, reference details, etc.\n *\n * @alias module:JsonRefs.clearCache\n */\nfunction clearCache () {\n remoteCache = {};\n}\n\n/**\n * Takes an array of path segments and decodes the JSON Pointer tokens in them.\n *\n * @param {string[]} path - The array of path segments\n *\n * @returns {string} the array of path segments with their JSON Pointer tokens decoded\n *\n * @throws {Error} if the path is not an `Array`\n *\n * @see {@link https://tools.ietf.org/html/rfc6901#section-3}\n *\n * @alias module:JsonRefs.decodePath\n */\nfunction decodePath (path) {\n if (!isType(path, 'Array')) {\n throw new TypeError('path must be an array');\n }\n\n return path.map(function (seg) {\n if (!isType(seg, 'String')) {\n seg = JSON.stringify(seg);\n }\n\n return decodeURI(seg.replace(/~1/g, '/').replace(/~0/g, '~'));\n });\n}\n\n/**\n * Takes an array of path segments and encodes the special JSON Pointer characters in them.\n *\n * @param {string[]} path - The array of path segments\n *\n * @returns {string} the array of path segments with their JSON Pointer tokens encoded\n *\n * @throws {Error} if the path is not an `Array`\n *\n * @see {@link https://tools.ietf.org/html/rfc6901#section-3}\n *\n * @alias module:JsonRefs.encodePath\n */\nfunction encodePath (path) {\n if (!isType(path, 'Array')) {\n throw new TypeError('path must be an array');\n }\n\n return path.map(function (seg) {\n if (!isType(seg, 'String')) {\n seg = JSON.stringify(seg);\n }\n\n return seg.replace(/~/g, '~0').replace(/\\//g, '~1');\n });\n}\n\n/**\n * Finds JSON References defined within the provided array/object.\n *\n * @param {array|object} obj - The structure to find JSON References within\n * @param {module:JsonRefs~JsonRefsOptions} [options] - The JsonRefs options\n *\n * @returns {object} an object whose keys are JSON Pointers *(fragment version)* to where the JSON Reference is defined\n * and whose values are {@link module:JsonRefs~UnresolvedRefDetails}.\n *\n * @throws {Error} when the input arguments fail validation or if `options.subDocPath` points to an invalid location\n *\n * @alias module:JsonRefs.findRefs\n *\n * @example\n * // Finding all valid references\n * var allRefs = JsonRefs.findRefs(obj);\n * // Finding all remote references\n * var remoteRefs = JsonRefs.findRefs(obj, {filter: ['relative', 'remote']});\n * // Finding all invalid references\n * var invalidRefs = JsonRefs.findRefs(obj, {filter: 'invalid', includeInvalid: true});\n */\nfunction findRefs (obj, options) {\n var refs = {};\n\n // Validate the provided document\n if (!isType(obj, 'Array') && !isType(obj, 'Object')) {\n throw new TypeError('obj must be an Array or an Object');\n }\n\n // Validate options\n options = validateOptions(options, obj);\n\n // Walk the document (or sub document) and find all JSON References\n walk(findAncestors(obj, options.subDocPath),\n findValue(obj, options.subDocPath),\n clone(options.subDocPath),\n function (ancestors, node, path) {\n var processChildren = true;\n var refDetails;\n\n if (isRefLike(node)) {\n // Pre-process the node when necessary\n if (!isType(options.refPreProcessor, 'Undefined')) {\n node = options.refPreProcessor(clone(node), path);\n }\n\n refDetails = getRefDetails(node);\n\n // Post-process the reference details\n if (!isType(options.refPostProcessor, 'Undefined')) {\n refDetails = options.refPostProcessor(refDetails, path);\n }\n\n if (options.filter(refDetails, path)) {\n refs[pathToPtr(path)] = refDetails;\n }\n\n // Whenever a JSON Reference has extra children, its children should not be processed.\n // See: http://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03#section-3\n if (getExtraRefKeys(node).length > 0) {\n processChildren = false;\n }\n }\n\n return processChildren;\n });\n\n return refs;\n}\n\n/**\n * Finds JSON References defined within the document at the provided location.\n *\n * This API is identical to {@link module:JsonRefs.findRefs} except this API will retrieve a remote document and then\n * return the result of {@link module:JsonRefs.findRefs} on the retrieved document.\n *\n * @param {string} location - The location to retrieve *(Can be relative or absolute, just make sure you look at the\n * {@link module:JsonRefs~JsonRefsOptions|options documentation} to see how relative references are handled.)*\n * @param {module:JsonRefs~JsonRefsOptions} [options] - The JsonRefs options\n *\n * @returns {Promise} a promise that resolves a {@link module:JsonRefs~RetrievedRefsResults} and rejects with an\n * `Error` when the input arguments fail validation, when `options.subDocPath` points to an invalid location or when\n * the location argument points to an unloadable resource\n *\n * @alias module:JsonRefs.findRefsAt\n *\n * @example\n * // Example that only resolves references within a sub document\n * JsonRefs.findRefsAt('http://petstore.swagger.io/v2/swagger.json', {\n * subDocPath: '#/definitions'\n * })\n * .then(function (res) {\n * // Do something with the response\n * //\n * // res.refs: JSON Reference locations and details\n * // res.value: The retrieved document\n * }, function (err) {\n * console.log(err.stack);\n * });\n */\nfunction findRefsAt (location, options) {\n var allTasks = Promise.resolve();\n\n allTasks = allTasks\n .then(function () {\n // Validate the provided location\n if (!isType(location, 'String')) {\n throw new TypeError('location must be a string');\n }\n\n // Validate options\n options = validateOptions(options);\n\n // Combine the location and the optional relative base\n location = combineURIs(options.relativeBase, location);\n\n return getRemoteDocument(location, options);\n })\n .then(function (res) {\n var cacheEntry = clone(remoteCache[location]);\n var cOptions = clone(options);\n var uriDetails = parseURI(location);\n\n if (isType(cacheEntry.refs, 'Undefined')) {\n // Do not filter any references so the cache is complete\n delete cOptions.filter;\n delete cOptions.subDocPath;\n\n cOptions.includeInvalid = true;\n\n remoteCache[location].refs = findRefs(res, cOptions);\n }\n\n // Add the filter options back\n if (!isType(options.filter, 'Undefined')) {\n cOptions.filter = options.filter;\n }\n\n if (!isType(uriDetails.fragment, 'Undefined')) {\n cOptions.subDocPath = pathFromPtr(decodeURI(uriDetails.fragment));\n } else if (!isType(uriDetails.subDocPath, 'Undefined')) {\n cOptions.subDocPath = options.subDocPath;\n }\n\n // This will use the cache so don't worry about calling it twice\n return {\n refs: findRefs(res, cOptions),\n value: res\n };\n });\n\n return allTasks;\n}\n\n/**\n * Returns detailed information about the JSON Reference.\n *\n * @param {object} obj - The JSON Reference definition\n *\n * @returns {module:JsonRefs~UnresolvedRefDetails} the detailed information\n *\n * @alias module:JsonRefs.getRefDetails\n */\nfunction getRefDetails (obj) {\n var details = {\n def: obj\n };\n var cacheKey;\n var extraKeys;\n var uriDetails;\n\n try {\n if (isRefLike(obj, true)) {\n cacheKey = obj.$ref;\n uriDetails = uriDetailsCache[cacheKey];\n\n if (isType(uriDetails, 'Undefined')) {\n uriDetails = uriDetailsCache[cacheKey] = parseURI(cacheKey);\n }\n\n details.uri = cacheKey;\n details.uriDetails = uriDetails;\n\n if (isType(uriDetails.error, 'Undefined')) {\n details.type = getRefType(details);\n } else {\n details.error = details.uriDetails.error;\n details.type = 'invalid';\n }\n\n // Identify warning\n extraKeys = getExtraRefKeys(obj);\n\n if (extraKeys.length > 0) {\n details.warning = 'Extra JSON Reference properties will be ignored: ' + extraKeys.join(', ');\n }\n } else {\n details.type = 'invalid';\n }\n } catch (err) {\n details.error = err.message;\n details.type = 'invalid';\n }\n\n return details;\n}\n\n/**\n * Returns whether the argument represents a JSON Pointer.\n *\n * A string is a JSON Pointer if the following are all true:\n *\n * * The string is of type `String`\n * * The string must be empty, `#` or start with a `/` or `#/`\n *\n * @param {string} ptr - The string to check\n * @param {boolean} [throwWithDetails=false] - Whether or not to throw an `Error` with the details as to why the value\n * provided is invalid\n *\n * @returns {boolean} the result of the check\n *\n * @throws {error} when the provided value is invalid and the `throwWithDetails` argument is `true`\n *\n * @alias module:JsonRefs.isPtr\n *\n * @see {@link https://tools.ietf.org/html/rfc6901#section-3}\n *\n * @example\n * // Separating the different ways to invoke isPtr for demonstration purposes\n * if (isPtr(str)) {\n * // Handle a valid JSON Pointer\n * } else {\n * // Get the reason as to why the value is not a JSON Pointer so you can fix/report it\n * try {\n * isPtr(str, true);\n * } catch (err) {\n * // The error message contains the details as to why the provided value is not a JSON Pointer\n * }\n * }\n */\nfunction isPtr (ptr, throwWithDetails) {\n var valid = true;\n var firstChar;\n\n try {\n if (isType(ptr, 'String')) {\n if (ptr !== '') {\n firstChar = ptr.charAt(0);\n\n if (['#', '/'].indexOf(firstChar) === -1) {\n throw new Error('ptr must start with a / or #/');\n } else if (firstChar === '#' && ptr !== '#' && ptr.charAt(1) !== '/') {\n throw new Error('ptr must start with a / or #/');\n } else if (ptr.match(badPtrTokenRegex)) {\n throw new Error('ptr has invalid token(s)');\n }\n }\n } else {\n throw new Error('ptr is not a String');\n }\n } catch (err) {\n if (throwWithDetails === true) {\n throw err;\n }\n\n valid = false;\n }\n\n return valid;\n}\n\n/**\n * Returns whether the argument represents a JSON Reference.\n *\n * An object is a JSON Reference only if the following are all true:\n *\n * * The object is of type `Object`\n * * The object has a `$ref` property\n * * The `$ref` property is a valid URI *(We do not require 100% strict URIs and will handle unescaped special\n * characters.)*\n *\n * @param {object} obj - The object to check\n * @param {boolean} [throwWithDetails=false] - Whether or not to throw an `Error` with the details as to why the value\n * provided is invalid\n *\n * @returns {boolean} the result of the check\n *\n * @throws {error} when the provided value is invalid and the `throwWithDetails` argument is `true`\n *\n * @alias module:JsonRefs.isRef\n *\n * @see {@link http://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03#section-3}\n *\n * @example\n * // Separating the different ways to invoke isRef for demonstration purposes\n * if (isRef(obj)) {\n * // Handle a valid JSON Reference\n * } else {\n * // Get the reason as to why the value is not a JSON Reference so you can fix/report it\n * try {\n * isRef(str, true);\n * } catch (err) {\n * // The error message contains the details as to why the provided value is not a JSON Reference\n * }\n * }\n */\nfunction isRef (obj, throwWithDetails) {\n return isRefLike(obj, throwWithDetails) && getRefDetails(obj, throwWithDetails).type !== 'invalid';\n}\n\n/**\n * Returns an array of path segments for the provided JSON Pointer.\n *\n * @param {string} ptr - The JSON Pointer\n *\n * @returns {string[]} the path segments\n *\n * @throws {Error} if the provided `ptr` argument is not a JSON Pointer\n *\n * @alias module:JsonRefs.pathFromPtr\n */\nfunction pathFromPtr (ptr) {\n if (!isPtr(ptr)) {\n throw new Error('ptr must be a JSON Pointer');\n }\n\n var segments = ptr.split('/');\n\n // Remove the first segment\n segments.shift();\n\n return decodePath(segments);\n}\n\n/**\n * Returns a JSON Pointer for the provided array of path segments.\n *\n * **Note:** If a path segment in `path` is not a `String`, it will be converted to one using `JSON.stringify`.\n *\n * @param {string[]} path - The array of path segments\n * @param {boolean} [hashPrefix=true] - Whether or not create a hash-prefixed JSON Pointer\n *\n * @returns {string} the corresponding JSON Pointer\n *\n * @throws {Error} if the `path` argument is not an array\n *\n * @alias module:JsonRefs.pathToPtr\n */\nfunction pathToPtr (path, hashPrefix) {\n if (!isType(path, 'Array')) {\n throw new Error('path must be an Array');\n }\n\n // Encode each segment and return\n return (hashPrefix !== false ? '#' : '') + (path.length > 0 ? '/' : '') + encodePath(path).join('/');\n}\n\n/**\n * Finds JSON References defined within the provided array/object and resolves them.\n *\n * @param {array|object} obj - The structure to find JSON References within\n * @param {module:JsonRefs~JsonRefsOptions} [options] - The JsonRefs options\n *\n * @returns {Promise} a promise that resolves a {@link module:JsonRefs~ResolvedRefsResults} and rejects with an\n * `Error` when the input arguments fail validation, when `options.subDocPath` points to an invalid location or when\n * the location argument points to an unloadable resource\n *\n * @alias module:JsonRefs.resolveRefs\n *\n * @example\n * // Example that only resolves relative and remote references\n * JsonRefs.resolveRefs(swaggerObj, {\n * filter: ['relative', 'remote']\n * })\n * .then(function (res) {\n * // Do something with the response\n * //\n * // res.refs: JSON Reference locations and details\n * // res.resolved: The document with the appropriate JSON References resolved\n * }, function (err) {\n * console.log(err.stack);\n * });\n */\nfunction resolveRefs (obj, options) {\n var allTasks = Promise.resolve();\n\n allTasks = allTasks\n .then(function () {\n // Validate the provided document\n if (!isType(obj, 'Array') && !isType(obj, 'Object')) {\n throw new TypeError('obj must be an Array or an Object');\n }\n\n // Validate options\n options = validateOptions(options, obj);\n\n // Clone the input so we do not alter it\n obj = clone(obj);\n })\n .then(function () {\n return findRefsRecursive(obj, options, [], [], {\n documents: {},\n refs: {}\n });\n })\n .then(function (allRefs) {\n var deferredRefs = {};\n var refs = {};\n\n function pathSorter (p1, p2) {\n return pathFromPtr(p1).length - pathFromPtr(p2).length;\n }\n\n // Resolve all references with a known value\n Object.keys(allRefs.refs).sort(pathSorter).forEach(function (refPtr) {\n var refDetails = allRefs.refs[refPtr];\n\n // Record all direct references\n if (!refDetails.indirect) {\n refs[refPtr] = refDetails;\n }\n\n // Delete helper property\n delete refDetails.indirect;\n\n if (isType(refDetails.error, 'Undefined') && refDetails.type !== 'invalid') {\n if (isType(refDetails.value, 'Undefined') && refDetails.circular) {\n refDetails.value = refDetails.def;\n }\n\n // We defer processing all references without a value until later\n if (isType(refDetails.value, 'Undefined')) {\n deferredRefs[refPtr] = refDetails;\n } else {\n if (refPtr === '#') {\n obj = refDetails.value;\n } else {\n setValue(obj, pathFromPtr(refPtr), refDetails.value);\n }\n\n // Delete helper property\n delete refDetails.ancestorPtrs;\n }\n } else {\n // Delete helper property\n delete refDetails.ancestorPtrs;\n }\n });\n\n // Resolve all deferred references\n Object.keys(deferredRefs).forEach(function (refPtr) {\n var refDetails = deferredRefs[refPtr];\n\n // Attempt to resolve the value against all if its ancestors in order\n refDetails.ancestorPtrs.forEach(function (ancestorPtr, index) {\n if (isType(refDetails.value, 'Undefined')) {\n try {\n refDetails.value = findValue(allRefs.documents[ancestorPtr], pathFromPtr(refDetails.uri));\n\n // Delete helper property\n delete refDetails.ancestorPtrs;\n\n setValue(obj, pathFromPtr(refPtr), refDetails.value);\n } catch (err) {\n if (index === refDetails.ancestorPtrs.length - 1) {\n refDetails.error = err.message;\n refDetails.missing = true;\n\n // Delete helper property\n delete refDetails.ancestorPtrs;\n }\n }\n }\n });\n });\n\n return {\n refs: refs,\n resolved: obj\n };\n });\n\n return allTasks;\n}\n\n/**\n * Resolves JSON References defined within the document at the provided location.\n *\n * This API is identical to {@link module:JsonRefs.resolveRefs} except this API will retrieve a remote document and then\n * return the result of {@link module:JsonRefs.resolveRefs} on the retrieved document.\n *\n * @param {string} location - The location to retrieve *(Can be relative or absolute, just make sure you look at the\n * {@link module:JsonRefs~JsonRefsOptions|options documentation} to see how relative references are handled.)*\n * @param {module:JsonRefs~JsonRefsOptions} [options] - The JsonRefs options\n *\n * @returns {Promise} a promise that resolves a {@link module:JsonRefs~RetrievedResolvedRefsResults} and rejects with an\n * `Error` when the input arguments fail validation, when `options.subDocPath` points to an invalid location or when\n * the location argument points to an unloadable resource\n *\n * @alias module:JsonRefs.resolveRefsAt\n *\n * @example\n * // Example that loads a JSON document (No options.loaderOptions.processContent required) and resolves all references\n * JsonRefs.resolveRefsAt('./swagger.json')\n * .then(function (res) {\n * // Do something with the response\n * //\n * // res.refs: JSON Reference locations and details\n * // res.resolved: The document with the appropriate JSON References resolved\n * // res.value: The retrieved document\n * }, function (err) {\n * console.log(err.stack);\n * });\n */\nfunction resolveRefsAt (location, options) {\n var allTasks = Promise.resolve();\n\n allTasks = allTasks\n .then(function () {\n // Validate the provided location\n if (!isType(location, 'String')) {\n throw new TypeError('location must be a string');\n }\n\n // Validate options\n options = validateOptions(options);\n\n // Combine the location and the optional relative base\n location = combineURIs(options.relativeBase, location);\n\n return getRemoteDocument(location, options);\n })\n .then(function (res) {\n var cOptions = clone(options);\n var uriDetails = parseURI(location);\n\n // Set the sub document path if necessary\n if (!isType(uriDetails.fragment, 'Undefined')) {\n cOptions.subDocPath = pathFromPtr(decodeURI(uriDetails.fragment));\n }\n\n // Update the relative base based on the retrieved location\n cOptions.relativeBase = path.dirname(location);\n\n return resolveRefs(res, cOptions)\n .then(function (res2) {\n return {\n refs: res2.refs,\n resolved: res2.resolved,\n value: res\n };\n });\n });\n\n return allTasks;\n}\n\n/* Export the module members */\nmodule.exports.clearCache = clearCache;\nmodule.exports.decodePath = decodePath;\nmodule.exports.encodePath = encodePath;\nmodule.exports.findRefs = findRefs;\nmodule.exports.findRefsAt = findRefsAt;\nmodule.exports.getRefDetails = getRefDetails;\nmodule.exports.isPtr = isPtr;\nmodule.exports.isRef = isRef;\nmodule.exports.pathFromPtr = pathFromPtr;\nmodule.exports.pathToPtr = pathToPtr;\nmodule.exports.resolveRefs = resolveRefs;\nmodule.exports.resolveRefsAt = resolveRefsAt;\n\n\n\n// WEBPACK FOOTER //\n// index.js","\n/**\n * Expose `Emitter`.\n */\n\nmodule.exports = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n if (obj) return mixin(obj);\n};\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n var args = [].slice.call(arguments, 1)\n , callbacks = this._callbacks['$' + event];\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n\n\n\n// WEBPACK FOOTER //\n// node_modules/component-emitter/index.js","/*! Native Promise Only\n v0.8.1 (c) Kyle Simpson\n MIT License: http://getify.mit-license.org\n*/\n\n(function UMD(name,context,definition){\n\t// special form of UMD for polyfilling across evironments\n\tcontext[name] = context[name] || definition();\n\tif (typeof module != \"undefined\" && module.exports) { module.exports = context[name]; }\n\telse if (typeof define == \"function\" && define.amd) { define(function $AMD$(){ return context[name]; }); }\n})(\"Promise\",typeof global != \"undefined\" ? global : this,function DEF(){\n\t/*jshint validthis:true */\n\t\"use strict\";\n\n\tvar builtInProp, cycle, scheduling_queue,\n\t\tToString = Object.prototype.toString,\n\t\ttimer = (typeof setImmediate != \"undefined\") ?\n\t\t\tfunction timer(fn) { return setImmediate(fn); } :\n\t\t\tsetTimeout\n\t;\n\n\t// dammit, IE8.\n\ttry {\n\t\tObject.defineProperty({},\"x\",{});\n\t\tbuiltInProp = function builtInProp(obj,name,val,config) {\n\t\t\treturn Object.defineProperty(obj,name,{\n\t\t\t\tvalue: val,\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: config !== false\n\t\t\t});\n\t\t};\n\t}\n\tcatch (err) {\n\t\tbuiltInProp = function builtInProp(obj,name,val) {\n\t\t\tobj[name] = val;\n\t\t\treturn obj;\n\t\t};\n\t}\n\n\t// Note: using a queue instead of array for efficiency\n\tscheduling_queue = (function Queue() {\n\t\tvar first, last, item;\n\n\t\tfunction Item(fn,self) {\n\t\t\tthis.fn = fn;\n\t\t\tthis.self = self;\n\t\t\tthis.next = void 0;\n\t\t}\n\n\t\treturn {\n\t\t\tadd: function add(fn,self) {\n\t\t\t\titem = new Item(fn,self);\n\t\t\t\tif (last) {\n\t\t\t\t\tlast.next = item;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tfirst = item;\n\t\t\t\t}\n\t\t\t\tlast = item;\n\t\t\t\titem = void 0;\n\t\t\t},\n\t\t\tdrain: function drain() {\n\t\t\t\tvar f = first;\n\t\t\t\tfirst = last = cycle = void 0;\n\n\t\t\t\twhile (f) {\n\t\t\t\t\tf.fn.call(f.self);\n\t\t\t\t\tf = f.next;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t})();\n\n\tfunction schedule(fn,self) {\n\t\tscheduling_queue.add(fn,self);\n\t\tif (!cycle) {\n\t\t\tcycle = timer(scheduling_queue.drain);\n\t\t}\n\t}\n\n\t// promise duck typing\n\tfunction isThenable(o) {\n\t\tvar _then, o_type = typeof o;\n\n\t\tif (o != null &&\n\t\t\t(\n\t\t\t\to_type == \"object\" || o_type == \"function\"\n\t\t\t)\n\t\t) {\n\t\t\t_then = o.then;\n\t\t}\n\t\treturn typeof _then == \"function\" ? _then : false;\n\t}\n\n\tfunction notify() {\n\t\tfor (var i=0; i 0) {\n\t\t\t\t\tschedule(notify,self);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\treject.call(new MakeDefWrapper(self),err);\n\t\t}\n\t}\n\n\tfunction reject(msg) {\n\t\tvar self = this;\n\n\t\t// already triggered?\n\t\tif (self.triggered) { return; }\n\n\t\tself.triggered = true;\n\n\t\t// unwrap\n\t\tif (self.def) {\n\t\t\tself = self.def;\n\t\t}\n\n\t\tself.msg = msg;\n\t\tself.state = 2;\n\t\tif (self.chain.length > 0) {\n\t\t\tschedule(notify,self);\n\t\t}\n\t}\n\n\tfunction iteratePromises(Constructor,arr,resolver,rejecter) {\n\t\tfor (var idx=0; idx 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n\n\n\n// WEBPACK FOOTER //\n// node_modules/path-browserify/index.js","/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2015 Jeremy Whitlock\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n'use strict';\n\n/**\n * Utility that provides a single API for loading the content of a path/URL.\n *\n * @module PathLoader\n */\n\nvar supportedLoaders = {\n file: require('./lib/loaders/file'),\n http: require('./lib/loaders/http'),\n https: require('./lib/loaders/http')\n};\nvar defaultLoader = typeof window === 'object' || typeof importScripts === 'function' ?\n supportedLoaders.http :\n supportedLoaders.file;\n\n// Load promises polyfill if necessary\n/* istanbul ignore if */\nif (typeof Promise === 'undefined') {\n require('native-promise-only');\n}\n\nfunction getScheme (location) {\n if (typeof location !== 'undefined') {\n location = location.indexOf('://') === -1 ? '' : location.split('://')[0];\n }\n\n return location;\n}\n\n/**\n * Callback used to provide access to altering a remote request prior to the request being made.\n *\n * @typedef {function} PrepareRequestCallback\n *\n * @param {object} req - The Superagent request object\n * @param {string} location - The location being retrieved\n * @param {function} callback - First callback\n *\n * @alias module:PathLoader~PrepareRequestCallback\n */\n\n /**\n * Callback used to provide access to processing the raw response of the request being made. *(HTTP loader only)*\n *\n * @typedef {function} ProcessResponseCallback\n *\n * @param {object} res - The Superagent response object *(For non-HTTP loaders, this object will be like the Superagent\n * object in that it will have a `text` property whose value is the raw string value being processed. This was done\n * for consistency.)*\n * @param {function} callback - Error-first callback\n *\n * @returns {*} the result of processing the responsexs\n *\n * @alias module:PathLoader~ProcessResponseCallback\n */\n\nfunction getLoader (location) {\n var scheme = getScheme(location);\n var loader = supportedLoaders[scheme];\n\n if (typeof loader === 'undefined') {\n if (scheme === '') {\n loader = defaultLoader;\n } else {\n throw new Error('Unsupported scheme: ' + scheme);\n }\n }\n\n return loader;\n}\n\n/**\n * Loads a document at the provided location and returns a JavaScript object representation.\n *\n * @param {object} location - The location to the document\n * @param {object} [options] - The options\n * @param {string} [options.encoding='utf-8'] - The encoding to use when loading the file *(File loader only)*\n * @param {string} [options.method=get] - The HTTP method to use for the request *(HTTP loader only)*\n * @param {module:PathLoader~PrepareRequestCallback} [options.prepareRequest] - The callback used to prepare the request\n * *(HTTP loader only)*\n * @param {module:PathLoader~ProcessResponseCallback} [options.processContent] - The callback used to process the\n * response\n *\n * @returns {Promise} Always returns a promise even if there is a callback provided\n *\n * @example\n * // Example using Promises\n *\n * PathLoader\n * .load('./package.json')\n * .then(JSON.parse)\n * .then(function (document) {\n * console.log(document.name + ' (' + document.version + '): ' + document.description);\n * }, function (err) {\n * console.error(err.stack);\n * });\n *\n * @example\n * // Example using options.prepareRequest to provide authentication details for a remotely secure URL\n *\n * PathLoader\n * .load('https://api.github.com/repos/whitlockjc/path-loader', {\n * prepareRequest: function (req, callback) {\n * req.auth('my-username', 'my-password');\n * callback(undefined, req);\n * }\n * })\n * .then(JSON.parse)\n * .then(function (document) {\n * console.log(document.full_name + ': ' + document.description);\n * }, function (err) {\n * console.error(err.stack);\n * });\n *\n * @example\n * // Example loading a YAML file\n *\n * PathLoader\n * .load('/Users/not-you/projects/path-loader/.travis.yml')\n * .then(YAML.safeLoad)\n * .then(function (document) {\n * console.log('path-loader uses the', document.language, 'language.');\n * }, function (err) {\n * console.error(err.stack);\n * });\n *\n * @example\n * // Example loading a YAML file with options.processContent (Useful if you need information in the raw response)\n *\n * PathLoader\n * .load('/Users/not-you/projects/path-loader/.travis.yml', {\n * processContent: function (res, callback) {\n * callback(YAML.safeLoad(res.text));\n * }\n * })\n * .then(function (document) {\n * console.log('path-loader uses the', document.language, 'language.');\n * }, function (err) {\n * console.error(err.stack);\n * });\n */\nmodule.exports.load = function (location, options) {\n var allTasks = Promise.resolve();\n\n // Default options to empty object\n if (typeof options === 'undefined') {\n options = {};\n }\n\n // Validate arguments\n allTasks = allTasks.then(function () {\n if (typeof location === 'undefined') {\n throw new TypeError('location is required');\n } else if (typeof location !== 'string') {\n throw new TypeError('location must be a string');\n }\n\n if (typeof options !== 'undefined') {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n } else if (typeof options.processContent !== 'undefined' && typeof options.processContent !== 'function') {\n throw new TypeError('options.processContent must be a function');\n }\n }\n });\n\n // Load the document from the provided location and process it\n allTasks = allTasks\n .then(function () {\n return new Promise(function (resolve, reject) {\n var loader = getLoader(location);\n\n loader.load(location, options || {}, function (err, document) {\n if (err) {\n reject(err);\n } else {\n resolve(document);\n }\n });\n });\n })\n .then(function (res) {\n if (options.processContent) {\n return new Promise(function (resolve, reject) {\n // For consistency between file and http, always send an object with a 'text' property containing the raw\n // string value being processed.\n options.processContent(typeof res === 'object' ? res : {text: res}, function (err, processed) {\n if (err) {\n reject(err);\n } else {\n resolve(processed);\n }\n });\n });\n } else {\n // If there was no content processor, we will assume that for all objects that it is a Superagent response\n // and will return its `text` property value. Otherwise, we will return the raw response.\n return typeof res === 'object' ? res.text : res;\n }\n });\n\n return allTasks;\n};\n\n\n\n// WEBPACK FOOTER //\n// node_modules/path-loader/index.js","/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2015 Jeremy Whitlock\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n'use strict';\n\nvar unsupportedError = new TypeError('The \\'file\\' scheme is not supported in the browser');\n\n/**\n * The file loader is not supported in the browser.\n *\n * @throws {error} the file loader is not supported in the browser\n */\nmodule.exports.getBase = function () {\n throw unsupportedError;\n};\n\n/**\n * The file loader is not supported in the browser.\n */\nmodule.exports.load = function () {\n var fn = arguments[arguments.length - 1];\n\n if (typeof fn === 'function') {\n fn(unsupportedError);\n } else {\n throw unsupportedError;\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// node_modules/path-loader/lib/loaders/file-browser.js","/* eslint-env node, browser */\n\n/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2015 Jeremy Whitlock\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n'use strict';\n\nvar request = require('superagent');\n\nvar supportedHttpMethods = ['delete', 'get', 'head', 'patch', 'post', 'put'];\n\n/**\n * Loads a file from an http or https URL.\n *\n * @param {string} location - The document URL (If relative, location is relative to window.location.origin).\n * @param {object} options - The loader options\n * @param {string} [options.method=get] - The HTTP method to use for the request\n * @param {module:PathLoader~PrepareRequestCallback} [options.prepareRequest] - The callback used to prepare a request\n * @param {module:PathLoader~ProcessResponseCallback} [options.processContent] - The callback used to process the\n * response\n * @param {function} callback - The error-first callback\n */\nmodule.exports.load = function (location, options, callback) {\n var realMethod = options.method ? options.method.toLowerCase() : 'get';\n var err;\n var realRequest;\n\n function makeRequest (err, req) {\n if (err) {\n callback(err);\n } else {\n // buffer() is only available in Node.js\n if (typeof req.buffer === 'function') {\n req.buffer(true);\n }\n\n req\n .end(function (err2, res) {\n if (err2) {\n callback(err2);\n } else {\n callback(undefined, res);\n }\n });\n }\n }\n\n if (typeof options.method !== 'undefined') {\n if (typeof options.method !== 'string') {\n err = new TypeError('options.method must be a string');\n } else if (supportedHttpMethods.indexOf(options.method) === -1) {\n err = new TypeError('options.method must be one of the following: ' +\n supportedHttpMethods.slice(0, supportedHttpMethods.length - 1).join(', ') + ' or ' +\n supportedHttpMethods[supportedHttpMethods.length - 1]);\n }\n } else if (typeof options.prepareRequest !== 'undefined' && typeof options.prepareRequest !== 'function') {\n err = new TypeError('options.prepareRequest must be a function');\n }\n\n if (!err) {\n realRequest = request[realMethod === 'delete' ? 'del' : realMethod](location);\n\n if (options.prepareRequest) {\n try {\n options.prepareRequest(realRequest, makeRequest);\n } catch (err2) {\n callback(err2);\n }\n } else {\n makeRequest(undefined, realRequest);\n }\n } else {\n callback(err);\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// node_modules/path-loader/lib/loaders/http.js","// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n// WEBPACK FOOTER //\n// node_modules/process/browser.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\n\n\n// WEBPACK FOOTER //\n// node_modules/querystring-es3/decode.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n\n\n\n// WEBPACK FOOTER //\n// node_modules/querystring-es3/encode.js","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n\n\n\n// WEBPACK FOOTER //\n// node_modules/querystring-es3/index.js","\n/**\n * Reduce `arr` with `fn`.\n *\n * @param {Array} arr\n * @param {Function} fn\n * @param {Mixed} initial\n *\n * TODO: combatible error handling?\n */\n\nmodule.exports = function(arr, fn, initial){ \n var idx = 0;\n var len = arr.length;\n var curr = arguments.length == 3\n ? initial\n : arr[idx++];\n\n while (idx < len) {\n curr = fn.call(null, curr, arr[idx], ++idx, arr);\n }\n \n return curr;\n};\n\n\n// WEBPACK FOOTER //\n// node_modules/reduce-component/index.js","'use strict';\nmodule.exports = function (str) {\n\tvar isExtendedLengthPath = /^\\\\\\\\\\?\\\\/.test(str);\n\tvar hasNonAscii = /[^\\x00-\\x80]+/.test(str);\n\n\tif (isExtendedLengthPath || hasNonAscii) {\n\t\treturn str;\n\t}\n\n\treturn str.replace(/\\\\/g, '/');\n};\n\n\n\n// WEBPACK FOOTER //\n// node_modules/slash/index.js","/**\n * Module dependencies.\n */\n\nvar Emitter = require('emitter');\nvar reduce = require('reduce');\nvar requestBase = require('./request-base');\nvar isObject = require('./is-object');\n\n/**\n * Root reference for iframes.\n */\n\nvar root;\nif (typeof window !== 'undefined') { // Browser window\n root = window;\n} else if (typeof self !== 'undefined') { // Web Worker\n root = self;\n} else { // Other environments\n root = this;\n}\n\n/**\n * Noop.\n */\n\nfunction noop(){};\n\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * TODO: future proof, move to compoent land\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isHost(obj) {\n var str = {}.toString.call(obj);\n\n switch (str) {\n case '[object File]':\n case '[object Blob]':\n case '[object FormData]':\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Expose `request`.\n */\n\nvar request = module.exports = require('./request').bind(null, Request);\n\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = function () {\n if (root.XMLHttpRequest\n && (!root.location || 'file:' != root.location.protocol\n || !root.ActiveXObject)) {\n return new XMLHttpRequest;\n } else {\n try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) {}\n }\n return false;\n};\n\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\nvar trim = ''.trim\n ? function(s) { return s.trim(); }\n : function(s) { return s.replace(/(^\\s*|\\s*$)/g, ''); };\n\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(obj) {\n if (!isObject(obj)) return obj;\n var pairs = [];\n for (var key in obj) {\n if (null != obj[key]) {\n pushEncodedKeyValuePair(pairs, key, obj[key]);\n }\n }\n return pairs.join('&');\n}\n\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\nfunction pushEncodedKeyValuePair(pairs, key, val) {\n if (Array.isArray(val)) {\n return val.forEach(function(v) {\n pushEncodedKeyValuePair(pairs, key, v);\n });\n }\n pairs.push(encodeURIComponent(key)\n + '=' + encodeURIComponent(val));\n}\n\n/**\n * Expose serialization method.\n */\n\n request.serializeObject = serialize;\n\n /**\n * Parse the given x-www-form-urlencoded `str`.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseString(str) {\n var obj = {};\n var pairs = str.split('&');\n var parts;\n var pair;\n\n for (var i = 0, len = pairs.length; i < len; ++i) {\n pair = pairs[i];\n parts = pair.split('=');\n obj[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);\n }\n\n return obj;\n}\n\n/**\n * Expose parser.\n */\n\nrequest.parseString = parseString;\n\n/**\n * Default MIME type map.\n *\n * superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n html: 'text/html',\n json: 'application/json',\n xml: 'application/xml',\n urlencoded: 'application/x-www-form-urlencoded',\n 'form': 'application/x-www-form-urlencoded',\n 'form-data': 'application/x-www-form-urlencoded'\n};\n\n/**\n * Default serialization map.\n *\n * superagent.serialize['application/xml'] = function(obj){\n * return 'generated xml here';\n * };\n *\n */\n\n request.serialize = {\n 'application/x-www-form-urlencoded': serialize,\n 'application/json': JSON.stringify\n };\n\n /**\n * Default parsers.\n *\n * superagent.parse['application/xml'] = function(str){\n * return { object parsed from str };\n * };\n *\n */\n\nrequest.parse = {\n 'application/x-www-form-urlencoded': parseString,\n 'application/json': JSON.parse\n};\n\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(str) {\n var lines = str.split(/\\r?\\n/);\n var fields = {};\n var index;\n var line;\n var field;\n var val;\n\n lines.pop(); // trailing CRLF\n\n for (var i = 0, len = lines.length; i < len; ++i) {\n line = lines[i];\n index = line.indexOf(':');\n field = line.slice(0, index).toLowerCase();\n val = trim(line.slice(index + 1));\n fields[field] = val;\n }\n\n return fields;\n}\n\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\nfunction isJSON(mime) {\n return /[\\/+]json\\b/.test(mime);\n}\n\n/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nfunction type(str){\n return str.split(/ *; */).shift();\n};\n\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction params(str){\n return reduce(str.split(/ *; */), function(obj, str){\n var parts = str.split(/ *= */)\n , key = parts.shift()\n , val = parts.shift();\n\n if (key && val) obj[key] = val;\n return obj;\n }, {});\n};\n\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n * - set flags (.ok, .error, etc)\n * - parse header\n *\n * Examples:\n *\n * Aliasing `superagent` as `request` is nice:\n *\n * request = superagent;\n *\n * We can use the promise-like API, or pass callbacks:\n *\n * request.get('/').end(function(res){});\n * request.get('/', function(res){});\n *\n * Sending data can be chained:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' })\n * .end(function(res){});\n *\n * Or passed to `.send()`:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' }, function(res){});\n *\n * Or passed to `.post()`:\n *\n * request\n * .post('/user', { name: 'tj' })\n * .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n * request\n * .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\nfunction Response(req, options) {\n options = options || {};\n this.req = req;\n this.xhr = this.req.xhr;\n // responseText is accessible only if responseType is '' or 'text' and on older browsers\n this.text = ((this.req.method !='HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || typeof this.xhr.responseType === 'undefined')\n ? this.xhr.responseText\n : null;\n this.statusText = this.req.xhr.statusText;\n this.setStatusProperties(this.xhr.status);\n this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n // getResponseHeader still works. so we get content-type even if getting\n // other headers fails.\n this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n this.setHeaderProperties(this.header);\n this.body = this.req.method != 'HEAD'\n ? this.parseBody(this.text ? this.text : this.xhr.response)\n : null;\n}\n\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nResponse.prototype.get = function(field){\n return this.header[field.toLowerCase()];\n};\n\n/**\n * Set header related properties:\n *\n * - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\nResponse.prototype.setHeaderProperties = function(header){\n // content-type\n var ct = this.header['content-type'] || '';\n this.type = type(ct);\n\n // params\n var obj = params(ct);\n for (var key in obj) this[key] = obj[key];\n};\n\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype.parseBody = function(str){\n var parse = request.parse[this.type];\n if (!parse && isJSON(this.type)) {\n parse = request.parse['application/json'];\n }\n return parse && str && (str.length || str instanceof Object)\n ? parse(str)\n : null;\n};\n\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n * - .noContent\n * - .badRequest\n * - .unauthorized\n * - .notAcceptable\n * - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\nResponse.prototype.setStatusProperties = function(status){\n // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n if (status === 1223) {\n status = 204;\n }\n\n var type = status / 100 | 0;\n\n // status / class\n this.status = this.statusCode = status;\n this.statusType = type;\n\n // basics\n this.info = 1 == type;\n this.ok = 2 == type;\n this.clientError = 4 == type;\n this.serverError = 5 == type;\n this.error = (4 == type || 5 == type)\n ? this.toError()\n : false;\n\n // sugar\n this.accepted = 202 == status;\n this.noContent = 204 == status;\n this.badRequest = 400 == status;\n this.unauthorized = 401 == status;\n this.notAcceptable = 406 == status;\n this.notFound = 404 == status;\n this.forbidden = 403 == status;\n};\n\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\nResponse.prototype.toError = function(){\n var req = this.req;\n var method = req.method;\n var url = req.url;\n\n var msg = 'cannot ' + method + ' ' + url + ' (' + this.status + ')';\n var err = new Error(msg);\n err.status = this.status;\n err.method = method;\n err.url = url;\n\n return err;\n};\n\n/**\n * Expose `Response`.\n */\n\nrequest.Response = Response;\n\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n var self = this;\n this._query = this._query || [];\n this.method = method;\n this.url = url;\n this.header = {}; // preserves header name case\n this._header = {}; // coerces header names to lowercase\n this.on('end', function(){\n var err = null;\n var res = null;\n\n try {\n res = new Response(self);\n } catch(e) {\n err = new Error('Parser is unable to parse the response');\n err.parse = true;\n err.original = e;\n // issue #675: return the raw response if the response parsing fails\n err.rawResponse = self.xhr && self.xhr.responseText ? self.xhr.responseText : null;\n // issue #876: return the http status code if the response parsing fails\n err.statusCode = self.xhr && self.xhr.status ? self.xhr.status : null;\n return self.callback(err);\n }\n\n self.emit('response', res);\n\n if (err) {\n return self.callback(err, res);\n }\n\n if (res.status >= 200 && res.status < 300) {\n return self.callback(err, res);\n }\n\n var new_err = new Error(res.statusText || 'Unsuccessful HTTP response');\n new_err.original = err;\n new_err.response = res;\n new_err.status = res.status;\n\n self.callback(new_err, res);\n });\n}\n\n/**\n * Mixin `Emitter` and `requestBase`.\n */\n\nEmitter(Request.prototype);\nfor (var key in requestBase) {\n Request.prototype[key] = requestBase[key];\n}\n\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request}\n * @api public\n */\n\nRequest.prototype.abort = function(){\n if (this.aborted) return;\n this.aborted = true;\n this.xhr.abort();\n this.clearTimeout();\n this.emit('abort');\n return this;\n};\n\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.xml = 'application/xml';\n *\n * request.post('/')\n * .type('xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * request.post('/')\n * .type('application/xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function(type){\n this.set('Content-Type', request.types[type] || type);\n return this;\n};\n\n/**\n * Set responseType to `val`. Presently valid responseTypes are 'blob' and \n * 'arraybuffer'.\n *\n * Examples:\n *\n * req.get('/')\n * .responseType('blob')\n * .end(callback);\n *\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.responseType = function(val){\n this._responseType = val;\n return this;\n};\n\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.json = 'application/json';\n *\n * request.get('/agent')\n * .accept('json')\n * .end(callback);\n *\n * request.get('/agent')\n * .accept('application/json')\n * .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.accept = function(type){\n this.set('Accept', request.types[type] || type);\n return this;\n};\n\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} pass\n * @param {Object} options with 'type' property 'auto' or 'basic' (default 'basic')\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.auth = function(user, pass, options){\n if (!options) {\n options = {\n type: 'basic'\n }\n }\n\n switch (options.type) {\n case 'basic':\n var str = btoa(user + ':' + pass);\n this.set('Authorization', 'Basic ' + str);\n break;\n\n case 'auto':\n this.username = user;\n this.password = pass;\n break;\n }\n return this;\n};\n\n/**\n* Add query-string `val`.\n*\n* Examples:\n*\n* request.get('/shoes')\n* .query('size=10')\n* .query({ color: 'blue' })\n*\n* @param {Object|String} val\n* @return {Request} for chaining\n* @api public\n*/\n\nRequest.prototype.query = function(val){\n if ('string' != typeof val) val = serialize(val);\n if (val) this._query.push(val);\n return this;\n};\n\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `filename`.\n *\n * ``` js\n * request.post('/upload')\n * .attach(new Blob(['hey!'], { type: \"text/html\"}))\n * .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String} filename\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.attach = function(field, file, filename){\n this._getFormData().append(field, file, filename || file.name);\n return this;\n};\n\nRequest.prototype._getFormData = function(){\n if (!this._formData) {\n this._formData = new root.FormData();\n }\n return this._formData;\n};\n\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n * // manual json\n * request.post('/user')\n * .type('json')\n * .send('{\"name\":\"tj\"}')\n * .end(callback)\n *\n * // auto json\n * request.post('/user')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // manual x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send('name=tj')\n * .end(callback)\n *\n * // auto x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // defaults to x-www-form-urlencoded\n * request.post('/user')\n * .send('name=tobi')\n * .send('species=ferret')\n * .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.send = function(data){\n var obj = isObject(data);\n var type = this._header['content-type'];\n\n // merge\n if (obj && isObject(this._data)) {\n for (var key in data) {\n this._data[key] = data[key];\n }\n } else if ('string' == typeof data) {\n if (!type) this.type('form');\n type = this._header['content-type'];\n if ('application/x-www-form-urlencoded' == type) {\n this._data = this._data\n ? this._data + '&' + data\n : data;\n } else {\n this._data = (this._data || '') + data;\n }\n } else {\n this._data = data;\n }\n\n if (!obj || isHost(data)) return this;\n if (!type) this.type('json');\n return this;\n};\n\n/**\n * @deprecated\n */\nResponse.prototype.parse = function serialize(fn){\n if (root.console) {\n console.warn(\"Client-side parse() method has been renamed to serialize(). This method is not compatible with superagent v2.0\");\n }\n this.serialize(fn);\n return this;\n};\n\nResponse.prototype.serialize = function serialize(fn){\n this._parser = fn;\n return this;\n};\n\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\nRequest.prototype.callback = function(err, res){\n var fn = this._callback;\n this.clearTimeout();\n fn(err, res);\n};\n\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\nRequest.prototype.crossDomainError = function(){\n var err = new Error('Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');\n err.crossDomain = true;\n\n err.status = this.status;\n err.method = this.method;\n err.url = this.url;\n\n this.callback(err);\n};\n\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\nRequest.prototype.timeoutError = function(){\n var timeout = this._timeout;\n var err = new Error('timeout of ' + timeout + 'ms exceeded');\n err.timeout = timeout;\n this.callback(err);\n};\n\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\nRequest.prototype.withCredentials = function(){\n this._withCredentials = true;\n return this;\n};\n\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.end = function(fn){\n var self = this;\n var xhr = this.xhr = request.getXHR();\n var query = this._query.join('&');\n var timeout = this._timeout;\n var data = this._formData || this._data;\n\n // store callback\n this._callback = fn || noop;\n\n // state change\n xhr.onreadystatechange = function(){\n if (4 != xhr.readyState) return;\n\n // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n // result in the error \"Could not complete the operation due to error c00c023f\"\n var status;\n try { status = xhr.status } catch(e) { status = 0; }\n\n if (0 == status) {\n if (self.timedout) return self.timeoutError();\n if (self.aborted) return;\n return self.crossDomainError();\n }\n self.emit('end');\n };\n\n // progress\n var handleProgress = function(e){\n if (e.total > 0) {\n e.percent = e.loaded / e.total * 100;\n }\n e.direction = 'download';\n self.emit('progress', e);\n };\n if (this.hasListeners('progress')) {\n xhr.onprogress = handleProgress;\n }\n try {\n if (xhr.upload && this.hasListeners('progress')) {\n xhr.upload.onprogress = handleProgress;\n }\n } catch(e) {\n // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n // Reported here:\n // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n }\n\n // timeout\n if (timeout && !this._timer) {\n this._timer = setTimeout(function(){\n self.timedout = true;\n self.abort();\n }, timeout);\n }\n\n // querystring\n if (query) {\n query = request.serializeObject(query);\n this.url += ~this.url.indexOf('?')\n ? '&' + query\n : '?' + query;\n }\n\n // initiate request\n if (this.username && this.password) {\n xhr.open(this.method, this.url, true, this.username, this.password);\n } else {\n xhr.open(this.method, this.url, true);\n }\n\n // CORS\n if (this._withCredentials) xhr.withCredentials = true;\n\n // body\n if ('GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !isHost(data)) {\n // serialize stuff\n var contentType = this._header['content-type'];\n var serialize = this._parser || request.serialize[contentType ? contentType.split(';')[0] : ''];\n if (!serialize && isJSON(contentType)) serialize = request.serialize['application/json'];\n if (serialize) data = serialize(data);\n }\n\n // set header fields\n for (var field in this.header) {\n if (null == this.header[field]) continue;\n xhr.setRequestHeader(field, this.header[field]);\n }\n\n if (this._responseType) {\n xhr.responseType = this._responseType;\n }\n\n // send stuff\n this.emit('request', this);\n\n // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n // We need null here if data is undefined\n xhr.send(typeof data !== 'undefined' ? data : null);\n return this;\n};\n\n\n/**\n * Expose `Request`.\n */\n\nrequest.Request = Request;\n\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} data or fn\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.get = function(url, data, fn){\n var req = request('GET', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.query(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} data or fn\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.head = function(url, data, fn){\n var req = request('HEAD', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * DELETE `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nfunction del(url, fn){\n var req = request('DELETE', url);\n if (fn) req.end(fn);\n return req;\n};\n\nrequest['del'] = del;\nrequest['delete'] = del;\n\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} data\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.patch = function(url, data, fn){\n var req = request('PATCH', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} data\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.post = function(url, data, fn){\n var req = request('POST', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} data or fn\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.put = function(url, data, fn){\n var req = request('PUT', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n\n\n// WEBPACK FOOTER //\n// node_modules/superagent/lib/client.js","/**\n * Check if `obj` is an object.\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isObject(obj) {\n return null != obj && 'object' == typeof obj;\n}\n\nmodule.exports = isObject;\n\n\n\n// WEBPACK FOOTER //\n// node_modules/superagent/lib/is-object.js","/**\n * Module of mixed-in functions shared between node and client code\n */\nvar isObject = require('./is-object');\n\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\nexports.clearTimeout = function _clearTimeout(){\n this._timeout = 0;\n clearTimeout(this._timer);\n return this;\n};\n\n/**\n * Force given parser\n *\n * Sets the body parser no matter type.\n *\n * @param {Function}\n * @api public\n */\n\nexports.parse = function parse(fn){\n this._parser = fn;\n return this;\n};\n\n/**\n * Set timeout to `ms`.\n *\n * @param {Number} ms\n * @return {Request} for chaining\n * @api public\n */\n\nexports.timeout = function timeout(ms){\n this._timeout = ms;\n return this;\n};\n\n/**\n * Faux promise support\n *\n * @param {Function} fulfill\n * @param {Function} reject\n * @return {Request}\n */\n\nexports.then = function then(fulfill, reject) {\n return this.end(function(err, res) {\n err ? reject(err) : fulfill(res);\n });\n}\n\n/**\n * Allow for extension\n */\n\nexports.use = function use(fn) {\n fn(this);\n return this;\n}\n\n\n/**\n * Get request header `field`.\n * Case-insensitive.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nexports.get = function(field){\n return this._header[field.toLowerCase()];\n};\n\n/**\n * Get case-insensitive header `field` value.\n * This is a deprecated internal API. Use `.get(field)` instead.\n *\n * (getHeader is no longer used internally by the superagent code base)\n *\n * @param {String} field\n * @return {String}\n * @api private\n * @deprecated\n */\n\nexports.getHeader = exports.get;\n\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n * Case-insensitive.\n *\n * Examples:\n *\n * req.get('/')\n * .set('Accept', 'application/json')\n * .set('X-API-Key', 'foobar')\n * .end(callback);\n *\n * req.get('/')\n * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n * .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nexports.set = function(field, val){\n if (isObject(field)) {\n for (var key in field) {\n this.set(key, field[key]);\n }\n return this;\n }\n this._header[field.toLowerCase()] = val;\n this.header[field] = val;\n return this;\n};\n\n/**\n * Remove header `field`.\n * Case-insensitive.\n *\n * Example:\n *\n * req.get('/')\n * .unset('User-Agent')\n * .end(callback);\n *\n * @param {String} field\n */\nexports.unset = function(field){\n delete this._header[field.toLowerCase()];\n delete this.header[field];\n return this;\n};\n\n/**\n * Write the field `name` and `val` for \"multipart/form-data\"\n * request bodies.\n *\n * ``` js\n * request.post('/upload')\n * .field('foo', 'bar')\n * .end(callback);\n * ```\n *\n * @param {String} name\n * @param {String|Blob|File|Buffer|fs.ReadStream} val\n * @return {Request} for chaining\n * @api public\n */\nexports.field = function(name, val) {\n this._getFormData().append(name, val);\n return this;\n};\n\n\n\n// WEBPACK FOOTER //\n// node_modules/superagent/lib/request-base.js","// The node and browser modules expose versions of this with the\n// appropriate constructor function bound as first argument\n/**\n * Issue a request:\n *\n * Examples:\n *\n * request('GET', '/users').end(callback)\n * request('/users').end(callback)\n * request('/users', callback)\n *\n * @param {String} method\n * @param {String|Function} url or callback\n * @return {Request}\n * @api public\n */\n\nfunction request(RequestConstructor, method, url) {\n // callback\n if ('function' == typeof url) {\n return new RequestConstructor('GET', method).end(url);\n }\n\n // url first\n if (2 == arguments.length) {\n return new RequestConstructor('GET', method);\n }\n\n return new RequestConstructor(method, url);\n}\n\nmodule.exports = request;\n\n\n\n// WEBPACK FOOTER //\n// node_modules/superagent/lib/request.js","/*! https://mths.be/punycode v1.3.2 by @mathias, modified for URI.js */\r\n\r\nvar punycode = (function () {\r\n\r\n\t/**\r\n\t * The `punycode` object.\r\n\t * @name punycode\r\n\t * @type Object\r\n\t */\r\n\tvar punycode,\r\n\r\n\t/** Highest positive signed 32-bit float value */\r\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\r\n\r\n\t/** Bootstring parameters */\r\n\tbase = 36,\r\n\ttMin = 1,\r\n\ttMax = 26,\r\n\tskew = 38,\r\n\tdamp = 700,\r\n\tinitialBias = 72,\r\n\tinitialN = 128, // 0x80\r\n\tdelimiter = '-', // '\\x2D'\r\n\r\n\t/** Regular expressions */\r\n\tregexPunycode = /^xn--/,\r\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\r\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\r\n\r\n\t/** Error messages */\r\n\terrors = {\r\n\t\t'overflow': 'Overflow: input needs wider integers to process',\r\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\r\n\t\t'invalid-input': 'Invalid input'\r\n\t},\r\n\r\n\t/** Convenience shortcuts */\r\n\tbaseMinusTMin = base - tMin,\r\n\tfloor = Math.floor,\r\n\tstringFromCharCode = String.fromCharCode,\r\n\r\n\t/** Temporary variable */\r\n\tkey;\r\n\r\n\t/*--------------------------------------------------------------------------*/\r\n\r\n\t/**\r\n\t * A generic error utility function.\r\n\t * @private\r\n\t * @param {String} type The error type.\r\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\r\n\t */\r\n\tfunction error(type) {\r\n\t\tthrow new RangeError(errors[type]);\r\n\t}\r\n\r\n\t/**\r\n\t * A generic `Array#map` utility function.\r\n\t * @private\r\n\t * @param {Array} array The array to iterate over.\r\n\t * @param {Function} callback The function that gets called for every array\r\n\t * item.\r\n\t * @returns {Array} A new array of values returned by the callback function.\r\n\t */\r\n\tfunction map(array, fn) {\r\n\t\tvar length = array.length;\r\n\t\tvar result = [];\r\n\t\twhile (length--) {\r\n\t\t\tresult[length] = fn(array[length]);\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\r\n\t * addresses.\r\n\t * @private\r\n\t * @param {String} domain The domain name or email address.\r\n\t * @param {Function} callback The function that gets called for every\r\n\t * character.\r\n\t * @returns {Array} A new string of characters returned by the callback\r\n\t * function.\r\n\t */\r\n\tfunction mapDomain(string, fn) {\r\n\t\tvar parts = string.split('@');\r\n\t\tvar result = '';\r\n\t\tif (parts.length > 1) {\r\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\r\n\t\t\t// the local part (i.e. everything up to `@`) intact.\r\n\t\t\tresult = parts[0] + '@';\r\n\t\t\tstring = parts[1];\r\n\t\t}\r\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\r\n\t\tstring = string.replace(regexSeparators, '\\x2E');\r\n\t\tvar labels = string.split('.');\r\n\t\tvar encoded = map(labels, fn).join('.');\r\n\t\treturn result + encoded;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an array containing the numeric code points of each Unicode\r\n\t * character in the string. While JavaScript uses UCS-2 internally,\r\n\t * this function will convert a pair of surrogate halves (each of which\r\n\t * UCS-2 exposes as separate characters) into a single code point,\r\n\t * matching UTF-16.\r\n\t * @see `punycode.ucs2.encode`\r\n\t * @see \r\n\t * @memberOf punycode.ucs2\r\n\t * @name decode\r\n\t * @param {String} string The Unicode input string (UCS-2).\r\n\t * @returns {Array} The new array of code points.\r\n\t */\r\n\tfunction ucs2decode(string) {\r\n\t\tvar output = [],\r\n\t\t counter = 0,\r\n\t\t length = string.length,\r\n\t\t value,\r\n\t\t extra;\r\n\t\twhile (counter < length) {\r\n\t\t\tvalue = string.charCodeAt(counter++);\r\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\r\n\t\t\t\t// high surrogate, and there is a next character\r\n\t\t\t\textra = string.charCodeAt(counter++);\r\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\r\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\r\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\r\n\t\t\t\t\toutput.push(value);\r\n\t\t\t\t\tcounter--;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\toutput.push(value);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn output;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a string based on an array of numeric code points.\r\n\t * @see `punycode.ucs2.decode`\r\n\t * @memberOf punycode.ucs2\r\n\t * @name encode\r\n\t * @param {Array} codePoints The array of numeric code points.\r\n\t * @returns {String} The new Unicode string (UCS-2).\r\n\t */\r\n\tfunction ucs2encode(array) {\r\n\t\treturn map(array, function(value) {\r\n\t\t\tvar output = '';\r\n\t\t\tif (value > 0xFFFF) {\r\n\t\t\t\tvalue -= 0x10000;\r\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\r\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\r\n\t\t\t}\r\n\t\t\toutput += stringFromCharCode(value);\r\n\t\t\treturn output;\r\n\t\t}).join('');\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a basic code point into a digit/integer.\r\n\t * @see `digitToBasic()`\r\n\t * @private\r\n\t * @param {Number} codePoint The basic numeric code point value.\r\n\t * @returns {Number} The numeric value of a basic code point (for use in\r\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\r\n\t * the code point does not represent a value.\r\n\t */\r\n\tfunction basicToDigit(codePoint) {\r\n\t\tif (codePoint - 48 < 10) {\r\n\t\t\treturn codePoint - 22;\r\n\t\t}\r\n\t\tif (codePoint - 65 < 26) {\r\n\t\t\treturn codePoint - 65;\r\n\t\t}\r\n\t\tif (codePoint - 97 < 26) {\r\n\t\t\treturn codePoint - 97;\r\n\t\t}\r\n\t\treturn base;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a digit/integer into a basic code point.\r\n\t * @see `basicToDigit()`\r\n\t * @private\r\n\t * @param {Number} digit The numeric value of a basic code point.\r\n\t * @returns {Number} The basic code point whose value (when used for\r\n\t * representing integers) is `digit`, which needs to be in the range\r\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\r\n\t * used; else, the lowercase form is used. The behavior is undefined\r\n\t * if `flag` is non-zero and `digit` has no uppercase form.\r\n\t */\r\n\tfunction digitToBasic(digit, flag) {\r\n\t\t// 0..25 map to ASCII a..z or A..Z\r\n\t\t// 26..35 map to ASCII 0..9\r\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\r\n\t}\r\n\r\n\t/**\r\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\r\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\r\n\t * @private\r\n\t */\r\n\tfunction adapt(delta, numPoints, firstTime) {\r\n\t\tvar k = 0;\r\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\r\n\t\tdelta += floor(delta / numPoints);\r\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\r\n\t\t\tdelta = floor(delta / baseMinusTMin);\r\n\t\t}\r\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\r\n\t * symbols.\r\n\t * @memberOf punycode\r\n\t * @param {String} input The Punycode string of ASCII-only symbols.\r\n\t * @returns {String} The resulting string of Unicode symbols.\r\n\t */\r\n\tfunction decode(input) {\r\n\t\t// Don't use UCS-2\r\n\t\tvar output = [],\r\n\t\t inputLength = input.length,\r\n\t\t out,\r\n\t\t i = 0,\r\n\t\t n = initialN,\r\n\t\t bias = initialBias,\r\n\t\t basic,\r\n\t\t j,\r\n\t\t index,\r\n\t\t oldi,\r\n\t\t w,\r\n\t\t k,\r\n\t\t digit,\r\n\t\t t,\r\n\t\t /** Cached calculation results */\r\n\t\t baseMinusT;\r\n\r\n\t\t// Handle the basic code points: let `basic` be the number of input code\r\n\t\t// points before the last delimiter, or `0` if there is none, then copy\r\n\t\t// the first basic code points to the output.\r\n\r\n\t\tbasic = input.lastIndexOf(delimiter);\r\n\t\tif (basic < 0) {\r\n\t\t\tbasic = 0;\r\n\t\t}\r\n\r\n\t\tfor (j = 0; j < basic; ++j) {\r\n\t\t\t// if it's not a basic code point\r\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\r\n\t\t\t\terror('not-basic');\r\n\t\t\t}\r\n\t\t\toutput.push(input.charCodeAt(j));\r\n\t\t}\r\n\r\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\r\n\t\t// points were copied; start at the beginning otherwise.\r\n\r\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\r\n\r\n\t\t\t// `index` is the index of the next character to be consumed.\r\n\t\t\t// Decode a generalized variable-length integer into `delta`,\r\n\t\t\t// which gets added to `i`. The overflow checking is easier\r\n\t\t\t// if we increase `i` as we go, then subtract off its starting\r\n\t\t\t// value at the end to obtain `delta`.\r\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\r\n\r\n\t\t\t\tif (index >= inputLength) {\r\n\t\t\t\t\terror('invalid-input');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\r\n\r\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\r\n\t\t\t\t\terror('overflow');\r\n\t\t\t\t}\r\n\r\n\t\t\t\ti += digit * w;\r\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\r\n\r\n\t\t\t\tif (digit < t) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbaseMinusT = base - t;\r\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\r\n\t\t\t\t\terror('overflow');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tw *= baseMinusT;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tout = output.length + 1;\r\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\r\n\r\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\r\n\t\t\t// incrementing `n` each time, so we'll fix that now:\r\n\t\t\tif (floor(i / out) > maxInt - n) {\r\n\t\t\t\terror('overflow');\r\n\t\t\t}\r\n\r\n\t\t\tn += floor(i / out);\r\n\t\t\ti %= out;\r\n\r\n\t\t\t// Insert `n` at position `i` of the output\r\n\t\t\toutput.splice(i++, 0, n);\r\n\r\n\t\t}\r\n\r\n\t\treturn ucs2encode(output);\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\r\n\t * Punycode string of ASCII-only symbols.\r\n\t * @memberOf punycode\r\n\t * @param {String} input The string of Unicode symbols.\r\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\r\n\t */\r\n\tfunction encode(input) {\r\n\t\tvar n,\r\n\t\t delta,\r\n\t\t handledCPCount,\r\n\t\t basicLength,\r\n\t\t bias,\r\n\t\t j,\r\n\t\t m,\r\n\t\t q,\r\n\t\t k,\r\n\t\t t,\r\n\t\t currentValue,\r\n\t\t output = [],\r\n\t\t /** `inputLength` will hold the number of code points in `input`. */\r\n\t\t inputLength,\r\n\t\t /** Cached calculation results */\r\n\t\t handledCPCountPlusOne,\r\n\t\t baseMinusT,\r\n\t\t qMinusT;\r\n\r\n\t\t// Convert the input in UCS-2 to Unicode\r\n\t\tinput = ucs2decode(input);\r\n\r\n\t\t// Cache the length\r\n\t\tinputLength = input.length;\r\n\r\n\t\t// Initialize the state\r\n\t\tn = initialN;\r\n\t\tdelta = 0;\r\n\t\tbias = initialBias;\r\n\r\n\t\t// Handle the basic code points\r\n\t\tfor (j = 0; j < inputLength; ++j) {\r\n\t\t\tcurrentValue = input[j];\r\n\t\t\tif (currentValue < 0x80) {\r\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thandledCPCount = basicLength = output.length;\r\n\r\n\t\t// `handledCPCount` is the number of code points that have been handled;\r\n\t\t// `basicLength` is the number of basic code points.\r\n\r\n\t\t// Finish the basic string - if it is not empty - with a delimiter\r\n\t\tif (basicLength) {\r\n\t\t\toutput.push(delimiter);\r\n\t\t}\r\n\r\n\t\t// Main encoding loop:\r\n\t\twhile (handledCPCount < inputLength) {\r\n\r\n\t\t\t// All non-basic code points < n have been handled already. Find the next\r\n\t\t\t// larger one:\r\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\r\n\t\t\t\tcurrentValue = input[j];\r\n\t\t\t\tif (currentValue >= n && currentValue < m) {\r\n\t\t\t\t\tm = currentValue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\r\n\t\t\t// but guard against overflow\r\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\r\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\r\n\t\t\t\terror('overflow');\r\n\t\t\t}\r\n\r\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\r\n\t\t\tn = m;\r\n\r\n\t\t\tfor (j = 0; j < inputLength; ++j) {\r\n\t\t\t\tcurrentValue = input[j];\r\n\r\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\r\n\t\t\t\t\terror('overflow');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (currentValue == n) {\r\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\r\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\r\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\r\n\t\t\t\t\t\tif (q < t) {\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tqMinusT = q - t;\r\n\t\t\t\t\t\tbaseMinusT = base - t;\r\n\t\t\t\t\t\toutput.push(\r\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\r\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\r\n\t\t\t\t\tdelta = 0;\r\n\t\t\t\t\t++handledCPCount;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t++delta;\r\n\t\t\t++n;\r\n\r\n\t\t}\r\n\t\treturn output.join('');\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a Punycode string representing a domain name or an email address\r\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\r\n\t * it doesn't matter if you call it on a string that has already been\r\n\t * converted to Unicode.\r\n\t * @memberOf punycode\r\n\t * @param {String} input The Punycoded domain name or email address to\r\n\t * convert to Unicode.\r\n\t * @returns {String} The Unicode representation of the given Punycode\r\n\t * string.\r\n\t */\r\n\tfunction toUnicode(input) {\r\n\t\treturn mapDomain(input, function(string) {\r\n\t\t\treturn regexPunycode.test(string)\r\n\t\t\t\t? decode(string.slice(4).toLowerCase())\r\n\t\t\t\t: string;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a Unicode string representing a domain name or an email address to\r\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\r\n\t * i.e. it doesn't matter if you call it with a domain that's already in\r\n\t * ASCII.\r\n\t * @memberOf punycode\r\n\t * @param {String} input The domain name or email address to convert, as a\r\n\t * Unicode string.\r\n\t * @returns {String} The Punycode representation of the given domain name or\r\n\t * email address.\r\n\t */\r\n\tfunction toASCII(input) {\r\n\t\treturn mapDomain(input, function(string) {\r\n\t\t\treturn regexNonASCII.test(string)\r\n\t\t\t\t? 'xn--' + encode(string)\r\n\t\t\t\t: string;\r\n\t\t});\r\n\t}\r\n\r\n\t/*--------------------------------------------------------------------------*/\r\n\r\n\t/** Define the public API */\r\n\tpunycode = {\r\n\t\t/**\r\n\t\t * A string representing the current Punycode.js version number.\r\n\t\t * @memberOf punycode\r\n\t\t * @type String\r\n\t\t */\r\n\t\tversion: '1.3.2',\r\n\t\t/**\r\n\t\t * An object of methods to convert from JavaScript's internal character\r\n\t\t * representation (UCS-2) to Unicode code points, and back.\r\n\t\t * @see \r\n\t\t * @memberOf punycode\r\n\t\t * @type Object\r\n\t\t */\r\n\t\tucs2: {\r\n\t\t\tdecode: ucs2decode,\r\n\t\t\tencode: ucs2encode\r\n\t\t},\r\n\t\tdecode: decode,\r\n\t\tencode: encode,\r\n\t\ttoASCII: toASCII,\r\n\t\ttoUnicode: toUnicode\r\n\t};\r\n\r\n\treturn punycode;\r\n}());\r\n\r\nif (typeof COMPILED === \"undefined\" && typeof module !== \"undefined\") module.exports = punycode;\n\n\n// WEBPACK FOOTER //\n// node_modules/uri-js/build/punycode.js","///\r\nrequire(\"./schemes/http\");\r\nrequire(\"./schemes/urn\");\r\nrequire(\"./schemes/mailto\");\r\n\n\n\n// WEBPACK FOOTER //\n// node_modules/uri-js/build/schemes.js","///\r\nif (typeof COMPILED === \"undefined\" && typeof URI === \"undefined\" && typeof require === \"function\")\r\n var URI = require(\"../uri\");\r\nURI.SCHEMES[\"http\"] = URI.SCHEMES[\"https\"] = {\r\n domainHost: true,\r\n parse: function (components, options) {\r\n //report missing host\r\n if (!components.host) {\r\n components.error = components.error || \"HTTP URIs must have a host.\";\r\n }\r\n return components;\r\n },\r\n serialize: function (components, options) {\r\n //normalize the default port\r\n if (components.port === (String(components.scheme).toLowerCase() !== \"https\" ? 80 : 443) || components.port === \"\") {\r\n components.port = undefined;\r\n }\r\n //normalize the empty path\r\n if (!components.path) {\r\n components.path = \"/\";\r\n }\r\n //NOTE: We do not parse query strings for HTTP URIs\r\n //as WWW Form Url Encoded query strings are part of the HTML4+ spec,\r\n //and not the HTTP spec. \r\n return components;\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// node_modules/uri-js/build/schemes/http.js","///\r\nif (typeof COMPILED === \"undefined\" && typeof URI === \"undefined\" && typeof require === \"function\") {\r\n var URI = require(\"../uri\"), punycode = require(\"../punycode\");\r\n}\r\n(function () {\r\n function merge() {\r\n var sets = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n sets[_i - 0] = arguments[_i];\r\n }\r\n if (sets.length > 1) {\r\n sets[0] = sets[0].slice(0, -1);\r\n var xl = sets.length - 1;\r\n for (var x = 1; x < xl; ++x) {\r\n sets[x] = sets[x].slice(1, -1);\r\n }\r\n sets[xl] = sets[xl].slice(1);\r\n return sets.join('');\r\n }\r\n else {\r\n return sets[0];\r\n }\r\n }\r\n function subexp(str) {\r\n return \"(?:\" + str + \")\";\r\n }\r\n var O = {}, isIRI = URI.IRI_SUPPORT, \r\n //RFC 3986\r\n UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\", HEXDIG$$ = \"[0-9A-Fa-f]\", PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)), \r\n //RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; = \r\n //ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\",\r\n //WSP$$ = \"[\\\\x20\\\\x09]\",\r\n //OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\", //(%d1-8 / %d11-12 / %d14-31 / %d127)\r\n //QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$), //%d33 / %d35-91 / %d93-126 / obs-qtext\r\n //VCHAR$$ = \"[\\\\x21-\\\\x7E]\",\r\n //WSP$$ = \"[\\\\x20\\\\x09]\",\r\n //OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)), //%d0 / CR / LF / obs-qtext\r\n //FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\"),\r\n //QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$),\r\n //QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"'),\r\n ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\", QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\", VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\"), DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\"), QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$), QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$), QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"'), \r\n //RFC 6068\r\n DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\", SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\", QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$), DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\"), LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$), ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$), TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\"), HFNAME$ = subexp(QCHAR$ + \"*\"), HFVALUE$ = HFNAME$, HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$), HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\"), HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$), MAILTO_URI = URI.VALIDATE_SUPPORT && new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\"), UNRESERVED = new RegExp(UNRESERVED$$, \"g\"), PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\"), NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\"), NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\"), NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\"), NOT_HFVALUE = NOT_HFNAME, TO = URI.VALIDATE_SUPPORT && new RegExp(\"^\" + TO$ + \"$\"), HFIELDS = URI.VALIDATE_SUPPORT && new RegExp(\"^\" + HFIELDS2$ + \"$\");\r\n function toUpperCase(str) {\r\n return str.toUpperCase();\r\n }\r\n function decodeUnreserved(str) {\r\n var decStr = URI.pctDecChars(str);\r\n return (!decStr.match(UNRESERVED) ? str : decStr);\r\n }\r\n function toArray(obj) {\r\n return obj !== undefined && obj !== null ? (obj instanceof Array && !obj.callee ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\r\n }\r\n URI.SCHEMES[\"mailto\"] = {\r\n parse: function (components, options) {\r\n if (URI.VALIDATE_SUPPORT && !components.error) {\r\n if (components.path && !TO.test(components.path)) {\r\n components.error = \"Email address is not valid\";\r\n }\r\n else if (components.query && !HFIELDS.test(components.query)) {\r\n components.error = \"Header fields are invalid\";\r\n }\r\n }\r\n var to = components.to = (components.path ? components.path.split(\",\") : []);\r\n components.path = undefined;\r\n if (components.query) {\r\n var unknownHeaders = false, headers = {};\r\n var hfields = components.query.split(\"&\");\r\n for (var x = 0, xl = hfields.length; x < xl; ++x) {\r\n var hfield = hfields[x].split(\"=\");\r\n switch (hfield[0]) {\r\n case \"to\":\r\n var toAddrs = hfield[1].split(\",\");\r\n for (var x_1 = 0, xl_1 = toAddrs.length; x_1 < xl_1; ++x_1) {\r\n to.push(toAddrs[x_1]);\r\n }\r\n break;\r\n case \"subject\":\r\n components.subject = URI.unescapeComponent(hfield[1], options);\r\n break;\r\n case \"body\":\r\n components.body = URI.unescapeComponent(hfield[1], options);\r\n break;\r\n default:\r\n unknownHeaders = true;\r\n headers[URI.unescapeComponent(hfield[0], options)] = URI.unescapeComponent(hfield[1], options);\r\n break;\r\n }\r\n }\r\n if (unknownHeaders)\r\n components.headers = headers;\r\n }\r\n components.query = undefined;\r\n for (var x = 0, xl = to.length; x < xl; ++x) {\r\n var addr = to[x].split(\"@\");\r\n addr[0] = URI.unescapeComponent(addr[0]);\r\n if (typeof punycode !== \"undefined\" && !options.unicodeSupport) {\r\n //convert Unicode IDN -> ASCII IDN\r\n try {\r\n addr[1] = punycode.toASCII(URI.unescapeComponent(addr[1], options).toLowerCase());\r\n }\r\n catch (e) {\r\n components.error = components.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\r\n }\r\n }\r\n else {\r\n addr[1] = URI.unescapeComponent(addr[1], options).toLowerCase();\r\n }\r\n to[x] = addr.join(\"@\");\r\n }\r\n return components;\r\n },\r\n serialize: function (components, options) {\r\n var to = toArray(components.to);\r\n if (to) {\r\n for (var x = 0, xl = to.length; x < xl; ++x) {\r\n var toAddr = String(to[x]);\r\n var atIdx = toAddr.lastIndexOf(\"@\");\r\n var localPart = toAddr.slice(0, atIdx);\r\n var domain = toAddr.slice(atIdx + 1);\r\n localPart = localPart.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, URI.pctEncChar);\r\n if (typeof punycode !== \"undefined\") {\r\n //convert IDN via punycode\r\n try {\r\n domain = (!options.iri ? punycode.toASCII(URI.unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\r\n }\r\n catch (e) {\r\n components.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\r\n }\r\n }\r\n else {\r\n domain = domain.replace(PCT_ENCODED, decodeUnreserved).toLowerCase().replace(PCT_ENCODED, toUpperCase).replace(NOT_DOMAIN, URI.pctEncChar);\r\n }\r\n to[x] = localPart + \"@\" + domain;\r\n }\r\n components.path = to.join(\",\");\r\n }\r\n var headers = components.headers = components.headers || {};\r\n if (components.subject)\r\n headers[\"subject\"] = components.subject;\r\n if (components.body)\r\n headers[\"body\"] = components.body;\r\n var fields = [];\r\n for (var name_1 in headers) {\r\n if (headers[name_1] !== O[name_1]) {\r\n fields.push(name_1.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, URI.pctEncChar) +\r\n \"=\" +\r\n headers[name_1].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, URI.pctEncChar));\r\n }\r\n }\r\n if (fields.length) {\r\n components.query = fields.join(\"&\");\r\n }\r\n return components;\r\n }\r\n };\r\n})();\r\n\n\n\n// WEBPACK FOOTER //\n// node_modules/uri-js/build/schemes/mailto.js","///\r\nif (typeof COMPILED === \"undefined\" && typeof URI === \"undefined\" && typeof require === \"function\")\r\n var URI = require(\"../uri\");\r\n(function () {\r\n var pctEncChar = URI.pctEncChar, NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\", PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\", TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\", NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\", URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\"), URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\"), URN_PARSE = /^([^\\:]+)\\:(.*)/, URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g, UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\r\n //RFC 2141\r\n URI.SCHEMES[\"urn\"] = {\r\n parse: function (components, options) {\r\n var matches = components.path.match(URN_PATH), scheme, schemeHandler;\r\n if (!matches) {\r\n if (!options.tolerant) {\r\n components.error = components.error || \"URN is not strictly valid.\";\r\n }\r\n matches = components.path.match(URN_PARSE);\r\n }\r\n if (matches) {\r\n scheme = \"urn:\" + matches[1].toLowerCase();\r\n schemeHandler = URI.SCHEMES[scheme];\r\n //in order to serialize properly, \r\n //every URN must have a serializer that calls the URN serializer \r\n if (!schemeHandler) {\r\n //create fake scheme handler\r\n schemeHandler = URI.SCHEMES[scheme] = {\r\n parse: function (components, options) {\r\n return components;\r\n },\r\n serialize: URI.SCHEMES[\"urn\"].serialize\r\n };\r\n }\r\n components.scheme = scheme;\r\n components.path = matches[2];\r\n components = schemeHandler.parse(components, options);\r\n }\r\n else {\r\n components.error = components.error || \"URN can not be parsed.\";\r\n }\r\n return components;\r\n },\r\n serialize: function (components, options) {\r\n var scheme = components.scheme || options.scheme, matches;\r\n if (scheme && scheme !== \"urn\") {\r\n var matches = scheme.match(URN_SCHEME);\r\n if (!matches) {\r\n matches = [\"urn:\" + scheme, scheme];\r\n }\r\n components.scheme = \"urn\";\r\n components.path = matches[1] + \":\" + (components.path ? components.path.replace(URN_EXCLUDED, pctEncChar) : \"\");\r\n }\r\n return components;\r\n }\r\n };\r\n //RFC 4122\r\n URI.SCHEMES[\"urn:uuid\"] = {\r\n parse: function (components, options) {\r\n if (!options.tolerant && (!components.path || !components.path.match(UUID))) {\r\n components.error = components.error || \"UUID is not valid.\";\r\n }\r\n return components;\r\n },\r\n serialize: function (components, options) {\r\n //ensure UUID is valid\r\n if (!options.tolerant && (!components.path || !components.path.match(UUID))) {\r\n //invalid UUIDs can not have this scheme\r\n components.scheme = undefined;\r\n }\r\n else {\r\n //normalize UUID\r\n components.path = (components.path || \"\").toLowerCase();\r\n }\r\n return URI.SCHEMES[\"urn\"].serialize(components, options);\r\n }\r\n };\r\n}());\r\n\n\n\n// WEBPACK FOOTER //\n// node_modules/uri-js/build/schemes/urn.js","/**\r\n * URI.js\r\n *\r\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\r\n * @author Gary Court\r\n * @version 2.0.0\r\n * @see http://github.com/garycourt/uri-js\r\n * @license URI.js v2.0.0 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js\r\n */\r\n/**\r\n * Copyright 2011 Gary Court. All rights reserved.\r\n *\r\n * Redistribution and use in source and binary forms, with or without modification, are\r\n * permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice, this list of\r\n * conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\r\n * of conditions and the following disclaimer in the documentation and/or other materials\r\n * provided with the distribution.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\r\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\r\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\r\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\r\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n *\r\n * The views and conclusions contained in the software and documentation are those of the\r\n * authors and should not be interpreted as representing official policies, either expressed\r\n * or implied, of Gary Court.\r\n */\r\n///\r\n///\r\n/**\r\n * Compiler switch for indicating code is compiled\r\n * @define {boolean}\r\n */\r\nvar COMPILED = false;\r\n/**\r\n * Compiler switch for supporting IRI URIs\r\n * @define {boolean}\r\n */\r\nvar URI__IRI_SUPPORT = true;\r\n/**\r\n * Compiler switch for supporting URI validation\r\n * @define {boolean}\r\n */\r\nvar URI__VALIDATE_SUPPORT = true;\r\nvar URI = (function () {\r\n function merge() {\r\n var sets = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n sets[_i - 0] = arguments[_i];\r\n }\r\n if (sets.length > 1) {\r\n sets[0] = sets[0].slice(0, -1);\r\n var xl = sets.length - 1;\r\n for (var x = 1; x < xl; ++x) {\r\n sets[x] = sets[x].slice(1, -1);\r\n }\r\n sets[xl] = sets[xl].slice(1);\r\n return sets.join('');\r\n }\r\n else {\r\n return sets[0];\r\n }\r\n }\r\n function subexp(str) {\r\n return \"(?:\" + str + \")\";\r\n }\r\n function buildExps(isIRI) {\r\n var ALPHA$$ = \"[A-Za-z]\", CR$ = \"[\\\\x0D]\", DIGIT$$ = \"[0-9]\", DQUOTE$$ = \"[\\\\x22]\", HEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"), LF$$ = \"[\\\\x0A]\", SP$$ = \"[\\\\x20]\", PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)), GEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\", SUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\", RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$), UCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\", IPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\", UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$), SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"), USERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"), DEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$), IPV4ADDRESS$ = subexp(DEC_OCTET$ + \"\\\\.\" + DEC_OCTET$ + \"\\\\.\" + DEC_OCTET$ + \"\\\\.\" + DEC_OCTET$), H16$ = subexp(HEXDIG$$ + \"{1,4}\"), LS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$), IPV6ADDRESS$ = subexp(merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"), IPVFUTURE$ = subexp(\"v\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"), IP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"), REG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"), HOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$), PORT$ = subexp(DIGIT$$ + \"*\"), AUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"), PCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")), SEGMENT$ = subexp(PCHAR$ + \"*\"), SEGMENT_NZ$ = subexp(PCHAR$ + \"+\"), SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"), PATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"), PATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"), PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), PATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\", PATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$), QUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"), FRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"), HIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$), URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"), RELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$), RELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"), URI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$), ABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"), GENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\", RELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\", ABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\", SAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\", AUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\";\r\n return {\r\n URI_REF: URI__VALIDATE_SUPPORT && new RegExp(\"(\" + GENERIC_REF$ + \")|(\" + RELATIVE_REF$ + \")\"),\r\n NOT_SCHEME: new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\r\n NOT_USERINFO: new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\r\n NOT_HOST: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\r\n NOT_PATH: new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\r\n NOT_PATH_NOSCHEME: new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\r\n NOT_QUERY: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\r\n NOT_FRAGMENT: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\r\n ESCAPE: new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\r\n UNRESERVED: new RegExp(UNRESERVED$$, \"g\"),\r\n OTHER_CHARS: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\r\n PCT_ENCODED: new RegExp(PCT_ENCODED$, \"g\")\r\n };\r\n }\r\n var URI_PROTOCOL = buildExps(false), IRI_PROTOCOL = URI__IRI_SUPPORT ? buildExps(true) : undefined, URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?([^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n)*))?/i, RDS1 = /^\\.\\.?\\//, RDS2 = /^\\/\\.(\\/|$)/, RDS3 = /^\\/\\.\\.(\\/|$)/, RDS4 = /^\\.\\.?$/, RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/, NO_MATCH_IS_UNDEFINED = (\"\").match(/(){0}/)[1] === undefined;\r\n function pctEncChar(chr) {\r\n var c = chr.charCodeAt(0), e;\r\n if (c < 16)\r\n e = \"%0\" + c.toString(16).toUpperCase();\r\n else if (c < 128)\r\n e = \"%\" + c.toString(16).toUpperCase();\r\n else if (c < 2048)\r\n e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\r\n else\r\n e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\r\n return e;\r\n }\r\n function pctDecChars(str) {\r\n var newStr = \"\", i = 0, il = str.length, c, c2, c3;\r\n while (i < il) {\r\n c = parseInt(str.substr(i + 1, 2), 16);\r\n if (c < 128) {\r\n newStr += String.fromCharCode(c);\r\n i += 3;\r\n }\r\n else if (c >= 194 && c < 224) {\r\n if ((il - i) >= 6) {\r\n c2 = parseInt(str.substr(i + 4, 2), 16);\r\n newStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\r\n }\r\n else {\r\n newStr += str.substr(i, 6);\r\n }\r\n i += 6;\r\n }\r\n else if (c >= 224) {\r\n if ((il - i) >= 9) {\r\n c2 = parseInt(str.substr(i + 4, 2), 16);\r\n c3 = parseInt(str.substr(i + 7, 2), 16);\r\n newStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\r\n }\r\n else {\r\n newStr += str.substr(i, 9);\r\n }\r\n i += 9;\r\n }\r\n else {\r\n newStr += str.substr(i, 3);\r\n i += 3;\r\n }\r\n }\r\n return newStr;\r\n }\r\n function typeOf(o) {\r\n return o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\r\n }\r\n function toUpperCase(str) {\r\n return str.toUpperCase();\r\n }\r\n var SCHEMES = {};\r\n function _normalizeComponentEncoding(components, protocol) {\r\n function decodeUnreserved(str) {\r\n var decStr = pctDecChars(str);\r\n return (!decStr.match(protocol.UNRESERVED) ? str : decStr);\r\n }\r\n if (components.scheme)\r\n components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\r\n if (components.userinfo !== undefined)\r\n components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\r\n if (components.host !== undefined)\r\n components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\r\n if (components.path !== undefined)\r\n components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\r\n if (components.query !== undefined)\r\n components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\r\n if (components.fragment !== undefined)\r\n components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\r\n return components;\r\n }\r\n ;\r\n function parse(uriString, options) {\r\n if (options === void 0) { options = {}; }\r\n var protocol = (URI__IRI_SUPPORT && options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL), matches, parseError = false, components = {}, schemeHandler;\r\n if (options.reference === \"suffix\")\r\n uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\r\n if (URI__VALIDATE_SUPPORT) {\r\n matches = uriString.match(protocol.URI_REF);\r\n if (matches) {\r\n if (matches[1]) {\r\n //generic URI\r\n matches = matches.slice(1, 10);\r\n }\r\n else {\r\n //relative URI\r\n matches = matches.slice(10, 19);\r\n }\r\n }\r\n if (!matches) {\r\n parseError = true;\r\n if (!options.tolerant)\r\n components.error = components.error || \"URI is not strictly valid.\";\r\n matches = uriString.match(URI_PARSE);\r\n }\r\n }\r\n else {\r\n matches = uriString.match(URI_PARSE);\r\n }\r\n if (matches) {\r\n if (NO_MATCH_IS_UNDEFINED) {\r\n //store each component\r\n components.scheme = matches[1];\r\n //components.authority = matches[2];\r\n components.userinfo = matches[3];\r\n components.host = matches[4];\r\n components.port = parseInt(matches[5], 10);\r\n components.path = matches[6] || \"\";\r\n components.query = matches[7];\r\n components.fragment = matches[8];\r\n //fix port number\r\n if (isNaN(components.port)) {\r\n components.port = matches[5];\r\n }\r\n }\r\n else {\r\n //store each component\r\n components.scheme = matches[1] || undefined;\r\n //components.authority = (uriString.indexOf(\"//\") !== -1 ? matches[2] : undefined);\r\n components.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\r\n components.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\r\n components.port = parseInt(matches[5], 10);\r\n components.path = matches[6] || \"\";\r\n components.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\r\n components.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\r\n //fix port number\r\n if (isNaN(components.port)) {\r\n components.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\r\n }\r\n }\r\n //determine reference type\r\n if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\r\n components.reference = \"same-document\";\r\n }\r\n else if (components.scheme === undefined) {\r\n components.reference = \"relative\";\r\n }\r\n else if (components.fragment === undefined) {\r\n components.reference = \"absolute\";\r\n }\r\n else {\r\n components.reference = \"uri\";\r\n }\r\n //check for reference errors\r\n if (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\r\n components.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\r\n }\r\n //find scheme handler\r\n schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\r\n //check if scheme can't handle IRIs\r\n if (URI__IRI_SUPPORT && typeof punycode !== \"undefined\" && !options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\r\n //if host component is a domain name\r\n if (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\r\n //convert Unicode IDN -> ASCII IDN\r\n try {\r\n components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\r\n }\r\n catch (e) {\r\n components.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\r\n }\r\n }\r\n //convert IRI -> URI\r\n _normalizeComponentEncoding(components, URI_PROTOCOL);\r\n }\r\n else {\r\n //normalize encodings\r\n _normalizeComponentEncoding(components, protocol);\r\n }\r\n //perform scheme specific parsing\r\n if (schemeHandler && schemeHandler.parse) {\r\n schemeHandler.parse(components, options);\r\n }\r\n }\r\n else {\r\n parseError = true;\r\n components.error = components.error || \"URI can not be parsed.\";\r\n }\r\n return components;\r\n }\r\n ;\r\n function _recomposeAuthority(components, options) {\r\n var uriTokens = [];\r\n if (components.userinfo !== undefined) {\r\n uriTokens.push(components.userinfo);\r\n uriTokens.push(\"@\");\r\n }\r\n if (components.host !== undefined) {\r\n uriTokens.push(components.host);\r\n }\r\n if (typeof components.port === \"number\") {\r\n uriTokens.push(\":\");\r\n uriTokens.push(components.port.toString(10));\r\n }\r\n return uriTokens.length ? uriTokens.join(\"\") : undefined;\r\n }\r\n ;\r\n function removeDotSegments(input) {\r\n var output = [], s;\r\n while (input.length) {\r\n if (input.match(RDS1)) {\r\n input = input.replace(RDS1, \"\");\r\n }\r\n else if (input.match(RDS2)) {\r\n input = input.replace(RDS2, \"/\");\r\n }\r\n else if (input.match(RDS3)) {\r\n input = input.replace(RDS3, \"/\");\r\n output.pop();\r\n }\r\n else if (input === \".\" || input === \"..\") {\r\n input = \"\";\r\n }\r\n else {\r\n s = input.match(RDS5)[0];\r\n input = input.slice(s.length);\r\n output.push(s);\r\n }\r\n }\r\n return output.join(\"\");\r\n }\r\n ;\r\n function serialize(components, options) {\r\n if (options === void 0) { options = {}; }\r\n var protocol = (URI__IRI_SUPPORT && options.iri ? IRI_PROTOCOL : URI_PROTOCOL), uriTokens = [], schemeHandler, authority, s;\r\n //find scheme handler\r\n schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\r\n //perform scheme specific serialization\r\n if (schemeHandler && schemeHandler.serialize)\r\n schemeHandler.serialize(components, options);\r\n //if host component is a domain name\r\n if (URI__IRI_SUPPORT && typeof punycode !== \"undefined\" && components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\r\n //convert IDN via punycode\r\n try {\r\n components.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\r\n }\r\n catch (e) {\r\n components.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\r\n }\r\n }\r\n //normalize encoding\r\n _normalizeComponentEncoding(components, protocol);\r\n if (options.reference !== \"suffix\" && components.scheme) {\r\n uriTokens.push(components.scheme);\r\n uriTokens.push(\":\");\r\n }\r\n authority = _recomposeAuthority(components, options);\r\n if (authority !== undefined) {\r\n if (options.reference !== \"suffix\") {\r\n uriTokens.push(\"//\");\r\n }\r\n uriTokens.push(authority);\r\n if (components.path && components.path.charAt(0) !== \"/\") {\r\n uriTokens.push(\"/\");\r\n }\r\n }\r\n if (components.path !== undefined) {\r\n s = components.path;\r\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\r\n s = removeDotSegments(s);\r\n }\r\n if (authority === undefined) {\r\n s = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\r\n }\r\n uriTokens.push(s);\r\n }\r\n if (components.query !== undefined) {\r\n uriTokens.push(\"?\");\r\n uriTokens.push(components.query);\r\n }\r\n if (components.fragment !== undefined) {\r\n uriTokens.push(\"#\");\r\n uriTokens.push(components.fragment);\r\n }\r\n return uriTokens.join(''); //merge tokens into a string\r\n }\r\n ;\r\n function resolveComponents(base, relative, options, skipNormalization) {\r\n if (options === void 0) { options = {}; }\r\n var target = {};\r\n if (!skipNormalization) {\r\n base = parse(serialize(base, options), options); //normalize base components\r\n relative = parse(serialize(relative, options), options); //normalize relative components\r\n }\r\n options = options || {};\r\n if (!options.tolerant && relative.scheme) {\r\n target.scheme = relative.scheme;\r\n //target.authority = relative.authority;\r\n target.userinfo = relative.userinfo;\r\n target.host = relative.host;\r\n target.port = relative.port;\r\n target.path = removeDotSegments(relative.path);\r\n target.query = relative.query;\r\n }\r\n else {\r\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\r\n //target.authority = relative.authority;\r\n target.userinfo = relative.userinfo;\r\n target.host = relative.host;\r\n target.port = relative.port;\r\n target.path = removeDotSegments(relative.path);\r\n target.query = relative.query;\r\n }\r\n else {\r\n if (!relative.path) {\r\n target.path = base.path;\r\n if (relative.query !== undefined) {\r\n target.query = relative.query;\r\n }\r\n else {\r\n target.query = base.query;\r\n }\r\n }\r\n else {\r\n if (relative.path.charAt(0) === \"/\") {\r\n target.path = removeDotSegments(relative.path);\r\n }\r\n else {\r\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\r\n target.path = \"/\" + relative.path;\r\n }\r\n else if (!base.path) {\r\n target.path = relative.path;\r\n }\r\n else {\r\n target.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\r\n }\r\n target.path = removeDotSegments(target.path);\r\n }\r\n target.query = relative.query;\r\n }\r\n //target.authority = base.authority;\r\n target.userinfo = base.userinfo;\r\n target.host = base.host;\r\n target.port = base.port;\r\n }\r\n target.scheme = base.scheme;\r\n }\r\n target.fragment = relative.fragment;\r\n return target;\r\n }\r\n ;\r\n function resolve(baseURI, relativeURI, options) {\r\n return serialize(resolveComponents(parse(baseURI, options), parse(relativeURI, options), options, true), options);\r\n }\r\n ;\r\n function normalize(uri, options) {\r\n if (typeof uri === \"string\") {\r\n uri = serialize(parse(uri, options), options);\r\n }\r\n else if (typeOf(uri) === \"object\") {\r\n uri = parse(serialize(uri, options), options);\r\n }\r\n return uri;\r\n }\r\n ;\r\n function equal(uriA, uriB, options) {\r\n if (typeof uriA === \"string\") {\r\n uriA = serialize(parse(uriA, options), options);\r\n }\r\n else if (typeOf(uriA) === \"object\") {\r\n uriA = serialize(uriA, options);\r\n }\r\n if (typeof uriB === \"string\") {\r\n uriB = serialize(parse(uriB, options), options);\r\n }\r\n else if (typeOf(uriB) === \"object\") {\r\n uriB = serialize(uriB, options);\r\n }\r\n return uriA === uriB;\r\n }\r\n ;\r\n function escapeComponent(str, options) {\r\n return str && str.toString().replace((!URI__IRI_SUPPORT || !options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\r\n }\r\n ;\r\n function unescapeComponent(str, options) {\r\n return str && str.toString().replace((!URI__IRI_SUPPORT || !options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\r\n }\r\n ;\r\n return {\r\n IRI_SUPPORT: URI__IRI_SUPPORT,\r\n VALIDATE_SUPPORT: URI__VALIDATE_SUPPORT,\r\n pctEncChar: pctEncChar,\r\n pctDecChars: pctDecChars,\r\n SCHEMES: SCHEMES,\r\n parse: parse,\r\n _recomposeAuthority: _recomposeAuthority,\r\n removeDotSegments: removeDotSegments,\r\n serialize: serialize,\r\n resolveComponents: resolveComponents,\r\n resolve: resolve,\r\n normalize: normalize,\r\n equal: equal,\r\n escapeComponent: escapeComponent,\r\n unescapeComponent: unescapeComponent\r\n };\r\n})();\r\nif (!COMPILED && typeof module !== \"undefined\" && typeof require === \"function\") {\r\n var punycode = require(\"./punycode\");\r\n module.exports = URI;\r\n require(\"./schemes\");\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// node_modules/uri-js/build/uri.js","import {stringify, parse} from './sf-path';\r\nimport { defaultForm, createDefaults } from './schema-defaults';\r\nimport canonicalTitleMap from './canonical-title-map';\r\n\r\n// export function merge(schema, form, schemaDefaultTypes, ignore, options, readonly, asyncTemplates) {\r\nexport function merge(lookup, form, typeDefaults=createDefaults(), ignore, options, readonly, asyncTemplates) {\r\n let formItems = [];\r\n let formItemRest = [];\r\n form = form || [];\r\n let idx = form.indexOf('*');\r\n options = options || {};\r\n let stdForm = {};\r\n\r\n let idxRest = form.indexOf('...');\r\n if(typeof lookup === 'object' && lookup.hasOwnProperty('properties')) {\r\n readonly = readonly || lookup.readonly || lookup.readOnly;\r\n stdForm = defaultForm(lookup, typeDefaults, ignore, options);\r\n\r\n let defaultFormLookup = stdForm.lookup;\r\n\r\n lookup = defaultFormLookup || lookup;\r\n formItems = formItems.concat(stdForm.form);\r\n };\r\n\r\n if (idx !== -1) {\r\n form = form.slice(0, idx).concat(formItems).concat(form.slice(idx + 1));\r\n }\r\n\r\n //simple case, we have a \"...\", just put the formItemRest there\r\n if (stdForm.form && idxRest !== -1) {\r\n let formKeys = form.map(function(obj) {\r\n if (typeof obj === 'string'){\r\n return obj;\r\n }\r\n else if (obj.key) {\r\n return obj.key;\r\n };\r\n }).filter(function(element) {\r\n return element !== undefined;\r\n });\r\n\r\n formItemRest = formItemRest.concat(\r\n stdForm.form.map(function(obj) {\r\n let isInside = formKeys.indexOf(obj.key[0]) !== -1;\r\n if (!isInside) {\r\n return obj;\r\n };\r\n })\r\n .filter(function(element) {\r\n return element !== undefined;\r\n })\r\n );\r\n };\r\n\r\n if (idxRest !== -1) {\r\n form = form.slice(0, idxRest).concat(formItemRest).concat(form.slice(idxRest + 1));\r\n };\r\n\r\n // ok let's merge!\r\n // We look at the supplied form and extend it with schema standards\r\n return form.map((obj) => {\r\n // handle the shortcut with just a name\r\n if (typeof obj === 'string') {\r\n obj = { key: obj };\r\n }\r\n\r\n if (obj.key) {\r\n if (typeof obj.key === 'string') {\r\n obj.key = parse(obj.key);\r\n }\r\n }\r\n\r\n // If it has a titleMap make sure it's a list\r\n if (obj.titleMap) {\r\n obj.titleMap = canonicalTitleMap(obj.titleMap);\r\n }\r\n\r\n // extend with std form from schema.\r\n if (obj.key) {\r\n const strid = stringify(obj.key);\r\n if (lookup[strid]) {\r\n const schemaDefaults = lookup[strid];\r\n if (schemaDefaults) {\r\n Object.keys(schemaDefaults).forEach((attr) => {\r\n if (obj[attr] === undefined) {\r\n obj[attr] = schemaDefaults[attr];\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n // Are we inheriting readonly?\r\n if (readonly === true) { // Inheriting false is not cool.\r\n obj.readonly = true;\r\n }\r\n\r\n // if it's a type with items, merge 'em!\r\n if (obj.items) {\r\n obj.items = merge(lookup, obj.items, typeDefaults, ignore, options, obj.readonly, asyncTemplates);\r\n }\r\n\r\n // if its has tabs, merge them also!\r\n if (obj.tabs) {\r\n obj.tabs.forEach((tab) => {\r\n if (tab.items) {\r\n tab.items = merge(lookup, tab.items, typeDefaults, ignore, options, obj.readonly, asyncTemplates);\r\n }\r\n });\r\n }\r\n\r\n // Special case: checkbox\r\n // Since have to ternary state we need a default\r\n if (obj.type === 'checkbox') {\r\n // Check for schema property, as the checkbox may be part of the explicitly defined form\r\n if (obj.schema === undefined) {\r\n obj.schema = { default: false };\r\n }\r\n else if (obj.schema['default'] === undefined) {\r\n obj.schema['default'] = false;\r\n };\r\n };\r\n\r\n // Special case: template type with tempplateUrl that's needs to be loaded before rendering\r\n // TODO: this is not a clean solution. Maybe something cleaner can be made when $ref support\r\n // is introduced since we need to go async then anyway\r\n if (asyncTemplates && obj.type === 'template' && !obj.template && obj.templateUrl) {\r\n asyncTemplates.push(obj);\r\n };\r\n\r\n return obj;\r\n });\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/merge.js","import * as JsonRefs from './../../lib/json-refs-standalone';\r\n\r\nexport function jsonref(schema, callBack) {\r\n let promise = new Promise(\r\n function(resolve, reject) {\r\n JsonRefs.resolveRefs(schema, {\r\n \"filter\": [ 'relative', 'local', 'remote' ]\r\n })\r\n .then((res) => { resolve(res.resolved); })\r\n .catch((err) => { reject(new Error(err)); });\r\n }\r\n );\r\n\r\n if(typeof(callBack) === 'function') {\r\n promise\r\n .then((resolved) => { callBack(null, resolved); })\r\n .catch((error) => { callBack(error); });\r\n }\r\n else {\r\n return promise;\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/resolve.js","import * as sfPath from './sf-path';\r\n\r\nconst numRe = /^\\d+$/;\r\n\r\n/**\r\n * @description\r\n * Utility method to access deep properties without\r\n * throwing errors when things are not defined.\r\n * Can also set a value in a deep structure, creating objects when missing\r\n * ex.\r\n * var foo = Select('address.contact.name',obj)\r\n * Select('address.contact.name',obj,'Leeroy')\r\n *\r\n * @param {string} projection A dot path to the property you want to get/set\r\n * @param {object} obj (optional) The object to project on, defaults to 'this'\r\n * @param {Any} valueToSet (opional) The value to set, if parts of the path of\r\n * the projection is missing empty objects will be created.\r\n * @returns {Any|undefined} returns the value at the end of the projection path\r\n * or undefined if there is none.\r\n */\r\nexport function select(projection, obj, valueToSet) {\r\n if (!obj) {\r\n obj = this;\r\n };\r\n\r\n // Support [] array syntax\r\n let parts = typeof projection === 'string' ? sfPath.parse(projection) : projection;\r\n\r\n if (typeof valueToSet !== 'undefined' && parts.length === 1) {\r\n // special case, just setting one variable\r\n obj[parts[0]] = valueToSet;\r\n\r\n return obj;\r\n };\r\n\r\n if (typeof valueToSet !== 'undefined' &&\r\n typeof obj[parts[0]] === 'undefined') {\r\n // We need to look ahead to check if array is appropriate\r\n obj[parts[0]] = parts.length > 2 && numRe.test(parts[1]) ? [] : {};\r\n };\r\n\r\n let value = obj[parts[0]];\r\n\r\n for (let i = 1; i < parts.length; i++) {\r\n // Special case: We allow JSON Form syntax for arrays using empty brackets\r\n // These will of course not work here so we exit if they are found.\r\n if (parts[i] === '') {\r\n return undefined;\r\n };\r\n\r\n if (typeof valueToSet !== 'undefined') {\r\n if (i === parts.length - 1) {\r\n // last step. Let's set the value\r\n value[parts[i]] = valueToSet;\r\n return valueToSet;\r\n }\r\n else {\r\n // Make sure to create new objects on the way if they are not there.\r\n // We need to look ahead to check if array is appropriate\r\n let tmp = value[parts[i]];\r\n\r\n if (typeof tmp === 'undefined' || tmp === null) {\r\n tmp = numRe.test(parts[i + 1]) ? [] : {};\r\n value[parts[i]] = tmp;\r\n };\r\n\r\n value = tmp;\r\n };\r\n }\r\n else if (value) {\r\n // Just get nex value.\r\n value = value[parts[i]];\r\n };\r\n };\r\n\r\n return value;\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/select.js","/**\r\n * Traverse a schema, applying a function(schema,path) on every sub schema\r\n * i.e. every property of an object.\r\n */\r\nexport function traverseSchema(schema, fn, path, ignoreArrays) {\r\n ignoreArrays = ignoreArrays === undefined ? true : ignoreArrays;\r\n\r\n path = path || [];\r\n\r\n const traverse = function(schemaObject: any, processorFunction: Function, pathArray: Array) {\r\n processorFunction(schemaObject, pathArray);\r\n if (schemaObject.properties) {\r\n Object.keys(schemaObject.properties).forEach((name) => {\r\n const currentPath = pathArray.slice();\r\n currentPath.push(name);\r\n traverse(schemaObject.properties[name], processorFunction, currentPath);\r\n });\r\n }\r\n\r\n // Only support type \"array\" which have a schemaObject as \"items\".\r\n if (!ignoreArrays && schemaObject.items) {\r\n const arrPath = pathArray.slice(); arrPath.push('');\r\n traverse(schemaObject.items, processorFunction, arrPath);\r\n }\r\n };\r\n\r\n traverse(schema, fn, path || []);\r\n}\r\n\r\nexport function traverseForm(form, fn) {\r\n fn(form);\r\n if (form.items) {\r\n form.items.forEach((f) => {\r\n traverseForm(f, fn);\r\n });\r\n }\r\n\r\n if (form.tabs) {\r\n form.tabs.forEach((tab) => {\r\n if (tab.items) {\r\n tab.items.forEach((f) => {\r\n traverseForm(f, fn);\r\n });\r\n }\r\n });\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/traverse.js","/* Common code for validating a value against its form and schema definition */\r\nimport tv4 from 'tv4';\r\n\r\n/**\r\n * Validate a value against its form definition and schema.\r\n * The value should either be of proper type or a string, some type\r\n * coercion is applied.\r\n *\r\n * @param {Object} form A merged form definition, i.e. one with a schema.\r\n * @param {Any} value the value to validate.\r\n * @return {Object} a tv4js result object.\r\n */\r\nexport function validate(form, value) {\r\n if (!form) {\r\n return { valid: true };\r\n };\r\n\r\n let schema = form.schema;\r\n if (!schema) {\r\n return { valid: true };\r\n };\r\n\r\n // Input of type text and textareas will give us a viewValue of ''\r\n // when empty, this is a valid value in a schema and does not count as something\r\n // that breaks validation of 'required'. But for our own sanity an empty field should\r\n // not validate if it's required.\r\n if (value === '') {\r\n value = undefined;\r\n };\r\n\r\n // Numbers fields will give a null value, which also means empty field\r\n if (form.type === 'number' && value === null) {\r\n value = undefined;\r\n };\r\n\r\n // Version 4 of JSON Schema has the required property not on the\r\n // property itself but on the wrapping object. Since we like to test\r\n // only this property we wrap it in a fake object.\r\n let wrap = { type: 'object', 'properties': {}, required: undefined};\r\n let propName = form.key[form.key.length - 1];\r\n wrap.properties[propName] = schema;\r\n\r\n if (form.required) {\r\n wrap.required = [ propName ];\r\n };\r\n\r\n let valueWrap = {};\r\n if (typeof value !== 'undefined') {\r\n valueWrap[propName] = value;\r\n };\r\n\r\n return tv4.validateResult(valueWrap, wrap);\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/validate.js","'use strict';\n\n;!function(undefined) {\n\n\tvar ObjectPath = {\n\t\tparse: function(str){\n\t\t\tif(typeof str !== 'string'){\n\t\t\t\tthrow new TypeError('ObjectPath.parse must be passed a string');\n\t\t\t}\n\n\t\t\tvar i = 0;\n\t\t\tvar parts = [];\n\t\t\tvar d, b, q, c;\n\t\t\twhile (i < str.length){\n\t\t\t\td = str.indexOf('.', i);\n\t\t\t\tb = str.indexOf('[', i);\n\n\t\t\t\t// we've reached the end\n\t\t\t\tif (d === -1 && b === -1){\n\t\t\t\t\tparts.push(str.slice(i, str.length));\n\t\t\t\t\ti = str.length;\n\t\t\t\t}\n\n\t\t\t\t// dots\n\t\t\t\telse if (b === -1 || (d !== -1 && d < b)) {\n\t\t\t\t\tparts.push(str.slice(i, d));\n\t\t\t\t\ti = d + 1;\n\t\t\t\t}\n\n\t\t\t\t// brackets\n\t\t\t\telse {\n\t\t\t\t\tif (b > i){\n\t\t\t\t\t\tparts.push(str.slice(i, b));\n\t\t\t\t\t\ti = b;\n\t\t\t\t\t}\n\t\t\t\t\tq = str.slice(b+1, b+2);\n\t\t\t\t\tif (q !== '\"' && q !=='\\'') {\n\t\t\t\t\t\tc = str.indexOf(']', b);\n\t\t\t\t\t\tif (c === -1) c = str.length;\n\t\t\t\t\t\tparts.push(str.slice(i + 1, c));\n\t\t\t\t\t\ti = (str.slice(c + 1, c + 2) === '.') ? c + 2 : c + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tc = str.indexOf(q+']', b);\n\t\t\t\t\t\tif (c === -1) c = str.length;\n\t\t\t\t\t\twhile (str.slice(c - 1, c) === '\\\\' && b < str.length){\n\t\t\t\t\t\t\tb++;\n\t\t\t\t\t\t\tc = str.indexOf(q+']', b);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparts.push(str.slice(i + 2, c).replace(new RegExp('\\\\'+q,'g'), q));\n\t\t\t\t\t\ti = (str.slice(c + 2, c + 3) === '.') ? c + 3 : c + 2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn parts;\n\t\t},\n\n\t\t// root === true : auto calculate root; must be dot-notation friendly\n\t\t// root String : the string to use as root\n\t\tstringify: function(arr, quote){\n\n\t\t\tif(!Array.isArray(arr))\n\t\t\t\tarr = [arr.toString()];\n\n\t\t\tquote = quote === '\"' ? '\"' : '\\'';\n\n\t\t\treturn arr.map(function(n){ return '[' + quote + (n.toString()).replace(new RegExp(quote, 'g'), '\\\\' + quote) + quote + ']'; }).join('');\n\t\t},\n\n\t\tnormalize: function(data, quote){\n\t\t\treturn ObjectPath.stringify(Array.isArray(data) ? data : ObjectPath.parse(data), quote);\n\t\t},\n\n\t\t// Angular\n\t\tregisterModule: function(angular) {\n\t\t\tangular.module('ObjectPath', []).provider('ObjectPath', function(){\n\t\t\t\tthis.parse = ObjectPath.parse;\n\t\t\t\tthis.stringify = ObjectPath.stringify;\n\t\t\t\tthis.normalize = ObjectPath.normalize;\n\t\t\t\tthis.$get = function(){\n\t\t\t\t\treturn ObjectPath;\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t};\n\n\t// AMD\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(function() {\n\t\t\treturn {ObjectPath: ObjectPath};\n\t\t});\n\t}\n\n\t// CommonJS\n\telse if (typeof exports === 'object') {\n\t\texports.ObjectPath = ObjectPath;\n\t}\n\n\t// Browser global\n\telse {\n\t\twindow.ObjectPath = ObjectPath;\n\t}\n\t\n}();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/objectpath/lib/ObjectPath.js\n// module id = 11\n// module chunks = 0","module.exports = tv4;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"tv4\"\n// module id = 12\n// module chunks = 0"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/json-schema-form-core.min.js b/dist/json-schema-form-core.min.js
deleted file mode 100644
index 6c3b573..0000000
--- a/dist/json-schema-form-core.min.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * json-schema-form-core
- * @version 1.0.0-alpha.2
- * @date Sun, 19 Feb 2017 12:19:19 GMT
- * @link https://github.com/json-schema-form/json-schema-form-core
- * @license MIT
- * Copyright (c) 2014-2017 JSON Schema Form
- */
-module.exports=function(r){function n(t){if(e[t])return e[t].exports;var o=e[t]={i:t,l:!1,exports:{}};return r[t].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var e={};return n.m=r,n.c=e,n.i=function(r){return r},n.d=function(r,e,t){n.o(r,e)||Object.defineProperty(r,e,{configurable:!1,enumerable:!0,get:t})},n.n=function(r){var e=r&&r.__esModule?function(){return r.default}:function(){return r};return n.d(e,"a",e),e},n.o=function(r,n){return Object.prototype.hasOwnProperty.call(r,n)},n.p="",n(n.s=0)}([function(r,n,e){!function(){throw new Error('Cannot find module "C:\\Users\\Marcel\\Documents\\SERIOUS\\git\\json-schema-form-core\\src\\lib\\index"')}()}]);
\ No newline at end of file
diff --git a/index.js b/index.js
index 073be86..adae98f 100644
--- a/index.js
+++ b/index.js
@@ -1,7 +1 @@
-export { schemaDefaults } from './src/schemaDefaults';
-export { canonicalTitleMap } from './src/canonicalTitleMap';
-export { sfPath } from './src/sfPath';
-export { merge } from './src/merge';
-export { select } from './src/select';
-export { traverse } from './src/traverse';
-export { validate } from './src/validate';
+module.exports = require('./dist/cjs/Core');
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..893cfa6
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,9700 @@
+{
+ "name": "json-schema-form-core",
+ "version": "1.0.0-alpha.5",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@angular-devkit/build-optimizer": {
+ "version": "0.0.31",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.0.31.tgz",
+ "integrity": "sha512-kkYmH5nxdr6kVr7FFBoUKnSuw0gjAZQlkN08jui7ts5yiHSWUqdOOASeLYlT50Mnz8PcnkFSrB2D5MXReGHvGg==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "1.1.0",
+ "source-map": "0.5.7",
+ "typescript": "2.7.2",
+ "webpack-sources": "1.0.2"
+ }
+ },
+ "@korzio/djv-draft-04": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@korzio/djv-draft-04/-/djv-draft-04-2.0.0.tgz",
+ "integrity": "sha1-m0WabHKyqcUL9O8dJJvbWN2EBWY=",
+ "dev": true,
+ "optional": true
+ },
+ "@types/chai": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-3.5.2.tgz",
+ "integrity": "sha1-wRzSgX06QBt7oPWkIPNcVhObHB4=",
+ "dev": true
+ },
+ "@types/lodash": {
+ "version": "4.14.85",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.85.tgz",
+ "integrity": "sha512-HrZiwDl62if0z31+rB99CLlg7WzS7b+KmyW75XAHEl/ZG0De2ACo6skZ89Zh3jOWkjKObN0Apq3MUezg7u9NKQ==",
+ "dev": true
+ },
+ "@types/mocha": {
+ "version": "2.2.44",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.44.tgz",
+ "integrity": "sha512-k2tWTQU8G4+iSMvqKi0Q9IIsWAp/n8xzdZS4Q4YVIltApoMA00wFBFdlJnmoaK1/z7B0Cy0yPe6GgXteSmdUNw==",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "8.0.51",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.51.tgz",
+ "integrity": "sha512-El3+WJk2D/ppWNd2X05aiP5l2k4EwF7KwheknQZls+I26eSICoWRhRIJ56jGgw2dqNGQ5LtNajmBU2ajS28EvQ==",
+ "dev": true
+ },
+ "@types/sinon": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-2.3.7.tgz",
+ "integrity": "sha512-w+LjztaZbgZWgt/y/VMP5BUAWLtSyoIJhXyW279hehLPyubDoBNwvhcj3WaSptcekuKYeTCVxrq60rdLc6ImJA==",
+ "dev": true
+ },
+ "@types/sinon-chai": {
+ "version": "2.7.29",
+ "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-2.7.29.tgz",
+ "integrity": "sha512-EkI/ZvJT4hglWo7Ipf9SX+J+R9htNOMjW8xiOhce7+0csqvgoF5IXqY5Ae1GqRgNtWCuaywR5HjVa1snkTqpOw==",
+ "dev": true,
+ "requires": {
+ "@types/chai": "3.5.2",
+ "@types/sinon": "2.3.7"
+ }
+ },
+ "acorn": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
+ "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
+ "dev": true
+ },
+ "acorn-dynamic-import": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz",
+ "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==",
+ "dev": true,
+ "requires": {
+ "acorn": "5.5.3"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz",
+ "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==",
+ "dev": true
+ }
+ }
+ },
+ "adm-zip": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz",
+ "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=",
+ "dev": true
+ },
+ "ajv": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.3.0.tgz",
+ "integrity": "sha1-FlCkERTvAFdMrBC4Ay2PTBSBLac=",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "1.0.0",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.3.1"
+ }
+ },
+ "ajv-keywords": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz",
+ "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=",
+ "dev": true
+ },
+ "align-text": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2",
+ "longest": "1.0.1",
+ "repeat-string": "1.6.1"
+ }
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "requires": {
+ "micromatch": "3.1.9",
+ "normalize-path": "2.1.1"
+ }
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "dev": true
+ },
+ "archiver": {
+ "version": "0.14.4",
+ "resolved": "https://registry.npmjs.org/archiver/-/archiver-0.14.4.tgz",
+ "integrity": "sha1-W53bn17hzu8hy487Ag5iQOy0MVw=",
+ "dev": true,
+ "requires": {
+ "async": "0.9.2",
+ "buffer-crc32": "0.2.13",
+ "glob": "4.3.5",
+ "lazystream": "0.1.0",
+ "lodash": "3.2.0",
+ "readable-stream": "1.0.34",
+ "tar-stream": "1.1.5",
+ "zip-stream": "0.5.2"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
+ "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
+ "dev": true
+ },
+ "glob": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-4.3.5.tgz",
+ "integrity": "sha1-gPuwjKVA8jiszl0R0em8QedRc9M=",
+ "dev": true,
+ "requires": {
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "2.0.10",
+ "once": "1.4.0"
+ },
+ "dependencies": {
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ }
+ }
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "lodash": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.2.0.tgz",
+ "integrity": "sha1-S/UKMkP5rrC6xBpV09WZBnWkYvs=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
+ "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.11"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "1.0.3"
+ }
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+ "dev": true
+ },
+ "array-filter": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
+ "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
+ "dev": true
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "dev": true
+ },
+ "array-map": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+ "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
+ "dev": true
+ },
+ "array-reduce": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
+ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "asn1": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
+ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
+ "dev": true
+ },
+ "asn1.js": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.0"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "assert": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
+ "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
+ "dev": true,
+ "requires": {
+ "util": "0.10.3"
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ },
+ "assertion-error": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz",
+ "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=",
+ "dev": true
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "dev": true
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ },
+ "async-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
+ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+ "dev": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+ "dev": true
+ },
+ "atob": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz",
+ "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=",
+ "dev": true
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+ "dev": true
+ },
+ "aws4": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
+ "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=",
+ "dev": true
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "esutils": "2.0.2",
+ "js-tokens": "3.0.2"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "requires": {
+ "cache-base": "1.0.1",
+ "class-utils": "0.3.6",
+ "component-emitter": "1.2.1",
+ "define-property": "1.0.0",
+ "isobject": "3.0.1",
+ "mixin-deep": "1.3.1",
+ "pascalcase": "0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ }
+ }
+ },
+ "base64-js": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz",
+ "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==",
+ "dev": true
+ },
+ "batch": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz",
+ "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=",
+ "dev": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
+ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "tweetnacl": "0.14.5"
+ }
+ },
+ "big.js": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
+ "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
+ "dev": true
+ },
+ "binary-extensions": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
+ "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
+ "dev": true
+ },
+ "bl": {
+ "version": "0.9.5",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz",
+ "integrity": "sha1-wGt5evCF6gC8Unr8jvzxHeIjIFQ=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.0.34"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "bluebird": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
+ "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
+ "dev": true
+ },
+ "bn.js": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
+ "dev": true
+ },
+ "boom": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
+ "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
+ "dev": true,
+ "requires": {
+ "hoek": "4.2.0"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz",
+ "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "1.1.0",
+ "array-unique": "0.3.2",
+ "define-property": "1.0.0",
+ "extend-shallow": "2.0.1",
+ "fill-range": "4.0.0",
+ "isobject": "3.0.1",
+ "kind-of": "6.0.2",
+ "repeat-element": "1.1.2",
+ "snapdragon": "0.8.2",
+ "snapdragon-node": "2.1.1",
+ "split-string": "3.1.0",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "dev": true
+ },
+ "browser-resolve": {
+ "version": "1.11.2",
+ "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz",
+ "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=",
+ "dev": true,
+ "requires": {
+ "resolve": "1.1.7"
+ }
+ },
+ "browser-stdout": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
+ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
+ "dev": true
+ },
+ "browserify-aes": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz",
+ "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==",
+ "dev": true,
+ "requires": {
+ "buffer-xor": "1.0.3",
+ "cipher-base": "1.0.4",
+ "create-hash": "1.1.3",
+ "evp_bytestokey": "1.0.3",
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.1"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz",
+ "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=",
+ "dev": true,
+ "requires": {
+ "browserify-aes": "1.1.1",
+ "browserify-des": "1.0.0",
+ "evp_bytestokey": "1.0.3"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz",
+ "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=",
+ "dev": true,
+ "requires": {
+ "cipher-base": "1.0.4",
+ "des.js": "1.0.0",
+ "inherits": "2.0.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "randombytes": "2.0.6"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "browserify-rsa": "4.0.1",
+ "create-hash": "1.1.3",
+ "create-hmac": "1.1.6",
+ "elliptic": "6.4.0",
+ "inherits": "2.0.3",
+ "parse-asn1": "5.1.0"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "dev": true,
+ "requires": {
+ "pako": "1.0.6"
+ }
+ },
+ "buffer": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+ "dev": true,
+ "requires": {
+ "base64-js": "1.2.3",
+ "ieee754": "1.1.9",
+ "isarray": "1.0.0"
+ }
+ },
+ "buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+ "dev": true
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+ "dev": true
+ },
+ "builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+ "dev": true
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+ "dev": true
+ },
+ "cacache": {
+ "version": "10.0.4",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz",
+ "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==",
+ "dev": true,
+ "requires": {
+ "bluebird": "3.5.1",
+ "chownr": "1.0.1",
+ "glob": "7.1.2",
+ "graceful-fs": "4.1.11",
+ "lru-cache": "4.1.2",
+ "mississippi": "2.0.0",
+ "mkdirp": "0.5.1",
+ "move-concurrently": "1.0.1",
+ "promise-inflight": "1.0.1",
+ "rimraf": "2.6.2",
+ "ssri": "5.3.0",
+ "unique-filename": "1.1.0",
+ "y18n": "4.0.0"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz",
+ "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "1.0.2",
+ "yallist": "2.1.2"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "dev": true,
+ "requires": {
+ "glob": "7.1.2"
+ }
+ }
+ }
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "requires": {
+ "collection-visit": "1.0.0",
+ "component-emitter": "1.2.1",
+ "get-value": "2.0.6",
+ "has-value": "1.0.0",
+ "isobject": "3.0.1",
+ "set-value": "2.0.0",
+ "to-object-path": "0.3.0",
+ "union-value": "1.0.0",
+ "unset-value": "1.0.0"
+ }
+ },
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "dev": true,
+ "requires": {
+ "camelcase": "2.1.1",
+ "map-obj": "1.0.1"
+ }
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+ "dev": true
+ },
+ "center-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "align-text": "0.1.4",
+ "lazy-cache": "1.0.4"
+ }
+ },
+ "chai": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz",
+ "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=",
+ "dev": true,
+ "requires": {
+ "assertion-error": "1.0.2",
+ "check-error": "1.0.2",
+ "deep-eql": "3.0.1",
+ "get-func-name": "2.0.0",
+ "pathval": "1.1.0",
+ "type-detect": "4.0.5"
+ }
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "check-error": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
+ "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
+ "dev": true
+ },
+ "chokidar": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.2.tgz",
+ "integrity": "sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw==",
+ "dev": true,
+ "requires": {
+ "anymatch": "2.0.0",
+ "async-each": "1.0.1",
+ "braces": "2.3.1",
+ "fsevents": "1.1.3",
+ "glob-parent": "3.1.0",
+ "inherits": "2.0.3",
+ "is-binary-path": "1.0.1",
+ "is-glob": "4.0.0",
+ "normalize-path": "2.1.1",
+ "path-is-absolute": "1.0.1",
+ "readdirp": "2.1.0",
+ "upath": "1.0.4"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ }
+ }
+ },
+ "chownr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
+ "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
+ "dev": true
+ },
+ "chrome-trace-event": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.2.tgz",
+ "integrity": "sha1-kPNohdU0WlBiEzLwcXtZWIPV2YI=",
+ "dev": true
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.1"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "3.1.0",
+ "define-property": "0.2.5",
+ "isobject": "3.0.1",
+ "static-extend": "0.1.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "center-align": "0.1.3",
+ "right-align": "0.1.3",
+ "wordwrap": "0.0.2"
+ },
+ "dependencies": {
+ "wordwrap": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "clone": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz",
+ "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=",
+ "dev": true
+ },
+ "clone-buffer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
+ "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=",
+ "dev": true
+ },
+ "clone-stats": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
+ "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
+ "dev": true
+ },
+ "cloneable-readable": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.0.0.tgz",
+ "integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "process-nextick-args": "1.0.7",
+ "through2": "2.0.3"
+ }
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "dev": true,
+ "requires": {
+ "map-visit": "1.0.0",
+ "object-visit": "1.0.1"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz",
+ "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
+ "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "1.0.0"
+ }
+ },
+ "comment-json": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-1.1.3.tgz",
+ "integrity": "sha1-aYbDMw/uDEyeAMI5jNYa+l2PI54=",
+ "dev": true,
+ "requires": {
+ "json-parser": "1.1.5"
+ }
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "dev": true
+ },
+ "component-emitter": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+ "dev": true
+ },
+ "component-props": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/component-props/-/component-props-1.1.1.tgz",
+ "integrity": "sha1-+bffm5kntubZfJvScqqGdnDzSUQ=",
+ "dev": true
+ },
+ "compress-commons": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-0.2.9.tgz",
+ "integrity": "sha1-Qi2SdDDAGr0GzUVbbfwEy0z4ADw=",
+ "dev": true,
+ "requires": {
+ "buffer-crc32": "0.2.13",
+ "crc32-stream": "0.3.4",
+ "node-int64": "0.3.3",
+ "readable-stream": "1.0.34"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.1.tgz",
+ "integrity": "sha512-gslSSJx03QKa59cIKqeJO9HQ/WZMotvYJCuaUULrLpjj8oG40kV2Z+gz82pVxlTkOADi4PJxQPPfhl1ELYrrXw==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3",
+ "typedarray": "0.0.6"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "console-browserify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
+ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+ "dev": true,
+ "requires": {
+ "date-now": "0.1.4"
+ }
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+ "dev": true
+ },
+ "cookiejar": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz",
+ "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=",
+ "dev": true
+ },
+ "copy-concurrently": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+ "dev": true,
+ "requires": {
+ "aproba": "1.2.0",
+ "fs-write-stream-atomic": "1.0.10",
+ "iferr": "0.1.5",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.2",
+ "run-queue": "1.0.3"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "dev": true,
+ "requires": {
+ "glob": "7.1.2"
+ }
+ }
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "crc32-stream": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.3.4.tgz",
+ "integrity": "sha1-c7wltF+sHbZjIjGnv86JJ+nwZVI=",
+ "dev": true,
+ "requires": {
+ "buffer-crc32": "0.2.13",
+ "readable-stream": "1.0.34"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "create-ecdh": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz",
+ "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "elliptic": "6.4.0"
+ }
+ },
+ "create-hash": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz",
+ "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=",
+ "dev": true,
+ "requires": {
+ "cipher-base": "1.0.4",
+ "inherits": "2.0.3",
+ "ripemd160": "2.0.1",
+ "sha.js": "2.4.10"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz",
+ "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=",
+ "dev": true,
+ "requires": {
+ "cipher-base": "1.0.4",
+ "create-hash": "1.1.3",
+ "inherits": "2.0.3",
+ "ripemd160": "2.0.1",
+ "safe-buffer": "5.1.1",
+ "sha.js": "2.4.10"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "cross-env": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.1.4.tgz",
+ "integrity": "sha512-Mx8mw6JWhfpYoEk7PGvHxJMLQwQHORAs8+2bX+C1lGQ4h3GkDb1zbzC2Nw85YH9ZQMlO0BHZxMacgrfPmMFxbg==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "5.1.0",
+ "is-windows": "1.0.2"
+ }
+ },
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "4.1.1",
+ "shebang-command": "1.2.0",
+ "which": "1.3.0"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
+ "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "1.0.2",
+ "yallist": "2.1.2"
+ }
+ }
+ }
+ },
+ "cryptiles": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
+ "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
+ "dev": true,
+ "requires": {
+ "boom": "5.2.0"
+ },
+ "dependencies": {
+ "boom": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
+ "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
+ "dev": true,
+ "requires": {
+ "hoek": "4.2.0"
+ }
+ }
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "dev": true,
+ "requires": {
+ "browserify-cipher": "1.0.0",
+ "browserify-sign": "4.0.4",
+ "create-ecdh": "4.0.0",
+ "create-hash": "1.1.3",
+ "create-hmac": "1.1.6",
+ "diffie-hellman": "5.0.2",
+ "inherits": "2.0.3",
+ "pbkdf2": "3.0.14",
+ "public-encrypt": "4.0.0",
+ "randombytes": "2.0.6",
+ "randomfill": "1.0.4"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "ctype": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz",
+ "integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=",
+ "dev": true
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "dev": true,
+ "requires": {
+ "array-find-index": "1.0.2"
+ }
+ },
+ "cyclist": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
+ "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
+ "dev": true
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0"
+ }
+ },
+ "date-now": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
+ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "dev": true
+ },
+ "deep-eql": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
+ "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
+ "dev": true,
+ "requires": {
+ "type-detect": "4.0.5"
+ }
+ },
+ "deepmerge": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.1.0.tgz",
+ "integrity": "sha512-Q89Z26KAfA3lpPGhbF6XMfYAm3jIV3avViy6KOJ2JLzFbeWHOvPQUu5aSJIWXap3gDZC2y1eF5HXEPI2wGqgvw==",
+ "dev": true
+ },
+ "define-properties": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
+ "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
+ "dev": true,
+ "requires": {
+ "foreach": "2.0.5",
+ "object-keys": "1.0.11"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2",
+ "isobject": "3.0.1"
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "dev": true
+ },
+ "dependency-cruiser": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/dependency-cruiser/-/dependency-cruiser-2.7.1.tgz",
+ "integrity": "sha1-n/r/oZb37sBDgOTYPPzp1DgxxoQ=",
+ "dev": true,
+ "requires": {
+ "acorn": "5.2.1",
+ "ajv": "5.3.0",
+ "chalk": "2.3.0",
+ "commander": "2.11.0",
+ "figures": "2.0.0",
+ "handlebars": "4.0.11",
+ "lodash": "4.17.4",
+ "resolve": "1.5.0",
+ "safe-regex": "1.1.0",
+ "semver": "5.4.1"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz",
+ "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==",
+ "dev": true
+ },
+ "ajv": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz",
+ "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=",
+ "dev": true,
+ "requires": {
+ "co": "4.6.0",
+ "fast-deep-equal": "1.0.0",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.3.1"
+ }
+ },
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "commander": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
+ "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz",
+ "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==",
+ "dev": true,
+ "requires": {
+ "path-parse": "1.0.5"
+ }
+ },
+ "semver": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
+ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "des.js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
+ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.0"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "diffie-hellman": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz",
+ "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "miller-rabin": "4.0.1",
+ "randombytes": "2.0.6"
+ }
+ },
+ "djv": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/djv/-/djv-2.0.0.tgz",
+ "integrity": "sha1-CRjKWDCn5mbxOhl3dk3fHMKZglQ=",
+ "dev": true,
+ "requires": {
+ "@korzio/djv-draft-04": "2.0.0"
+ }
+ },
+ "domain-browser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
+ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+ "dev": true
+ },
+ "duplexer": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
+ "dev": true
+ },
+ "duplexify": {
+ "version": "3.5.4",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz",
+ "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "1.4.0",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3",
+ "stream-shift": "1.0.0"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
+ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "jsbn": "0.1.1"
+ }
+ },
+ "elliptic": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
+ "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "brorand": "1.1.0",
+ "hash.js": "1.1.3",
+ "hmac-drbg": "1.0.1",
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.0",
+ "minimalistic-crypto-utils": "1.0.1"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+ "dev": true
+ },
+ "end-of-stream": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz",
+ "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
+ "dev": true,
+ "requires": {
+ "once": "1.4.0"
+ }
+ },
+ "enhanced-resolve": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz",
+ "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "memory-fs": "0.4.1",
+ "tapable": "1.0.0"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ }
+ }
+ },
+ "errno": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
+ "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+ "dev": true,
+ "requires": {
+ "prr": "1.0.1"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
+ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "0.2.1"
+ }
+ },
+ "es-abstract": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.8.1.tgz",
+ "integrity": "sha512-G6pkMLdmxF3dh4hbuYuQiku29rRqo9p5+iRf7mZTEELT/xZ/D9Vzg04ddlvzJuJuCmZp1WBbfbVLZEeygYNkpw==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "1.1.1",
+ "function-bind": "1.1.1",
+ "has": "1.0.1",
+ "is-callable": "1.1.3",
+ "is-regex": "1.0.4"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz",
+ "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
+ "dev": true,
+ "requires": {
+ "is-callable": "1.1.3",
+ "is-date-object": "1.0.1",
+ "is-symbol": "1.0.1"
+ }
+ },
+ "es6-object-assign": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz",
+ "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "eslint-scope": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
+ "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
+ "dev": true,
+ "requires": {
+ "esrecurse": "4.2.1",
+ "estraverse": "4.2.0"
+ }
+ },
+ "esprima": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
+ "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
+ "dev": true
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "4.2.0"
+ }
+ },
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ },
+ "estree-walker": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz",
+ "integrity": "sha1-va/oCVOD2EFNXcLs9MkXO225QS4=",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
+ },
+ "event-stream": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz",
+ "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
+ "dev": true,
+ "requires": {
+ "duplexer": "0.1.1",
+ "from": "0.1.7",
+ "map-stream": "0.1.0",
+ "pause-stream": "0.0.11",
+ "split": "0.3.3",
+ "stream-combiner": "0.0.4",
+ "through": "2.3.8"
+ }
+ },
+ "events": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
+ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
+ "dev": true
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dev": true,
+ "requires": {
+ "md5.js": "1.3.4",
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "posix-character-classes": "0.1.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "1.0.0",
+ "is-extendable": "1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "2.0.4"
+ }
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "0.3.2",
+ "define-property": "1.0.0",
+ "expand-brackets": "2.1.4",
+ "extend-shallow": "2.0.1",
+ "fragment-cache": "0.2.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+ "dev": true
+ },
+ "fast-deep-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
+ "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=",
+ "dev": true
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
+ },
+ "figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "1.0.5"
+ }
+ },
+ "file-type": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
+ "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=",
+ "dev": true
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1",
+ "to-regex-range": "2.1.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "find-cache-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
+ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
+ "dev": true,
+ "requires": {
+ "commondir": "1.0.1",
+ "make-dir": "1.2.0",
+ "pkg-dir": "2.0.0"
+ }
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "2.1.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "flush-write-stream": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz",
+ "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "foreach": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
+ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
+ "dev": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+ "dev": true
+ },
+ "form-data": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz",
+ "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=",
+ "dev": true,
+ "requires": {
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.6",
+ "mime-types": "2.1.18"
+ }
+ },
+ "formatio": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz",
+ "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=",
+ "dev": true,
+ "requires": {
+ "samsam": "1.3.0"
+ }
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "dev": true,
+ "requires": {
+ "map-cache": "0.2.2"
+ }
+ },
+ "from": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
+ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=",
+ "dev": true
+ },
+ "from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "fs-extra": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz",
+ "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "jsonfile": "4.0.0",
+ "universalify": "0.1.1"
+ }
+ },
+ "fs-write-stream-atomic": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "iferr": "0.1.5",
+ "imurmurhash": "0.1.4",
+ "readable-stream": "2.3.3"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ }
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "fsevents": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz",
+ "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "nan": "2.10.0",
+ "node-pre-gyp": "0.6.39"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ajv": {
+ "version": "4.11.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "co": "4.6.0",
+ "json-stable-stringify": "1.0.1"
+ }
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "aproba": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "delegates": "1.0.0",
+ "readable-stream": "2.2.9"
+ }
+ },
+ "asn1": {
+ "version": "0.2.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "assert-plus": {
+ "version": "0.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "aws-sign2": {
+ "version": "0.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "aws4": {
+ "version": "1.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "balanced-match": {
+ "version": "0.4.2",
+ "bundled": true,
+ "dev": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "tweetnacl": "0.14.5"
+ }
+ },
+ "block-stream": {
+ "version": "0.0.9",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ },
+ "boom": {
+ "version": "2.10.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.7",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "balanced-match": "0.4.2",
+ "concat-map": "0.0.1"
+ }
+ },
+ "buffer-shims": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "co": {
+ "version": "4.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "delayed-stream": "1.0.0"
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "cryptiles": {
+ "version": "2.0.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "boom": "2.10.1"
+ }
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "assert-plus": "1.0.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "debug": {
+ "version": "2.6.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.4.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ecc-jsbn": {
+ "version": "0.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "jsbn": "0.1.1"
+ }
+ },
+ "extend": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "extsprintf": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "form-data": {
+ "version": "2.1.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.5",
+ "mime-types": "2.1.15"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "fstream": {
+ "version": "1.0.11",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "inherits": "2.0.3",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.1"
+ }
+ },
+ "fstream-ignore": {
+ "version": "1.0.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "fstream": "1.0.11",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4"
+ }
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "aproba": "1.1.1",
+ "console-control-strings": "1.1.0",
+ "has-unicode": "2.0.1",
+ "object-assign": "4.1.1",
+ "signal-exit": "3.0.2",
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wide-align": "1.1.2"
+ }
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "assert-plus": "1.0.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "bundled": true,
+ "dev": true
+ },
+ "har-schema": {
+ "version": "1.0.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "har-validator": {
+ "version": "4.2.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ajv": "4.11.8",
+ "har-schema": "1.0.5"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "hawk": {
+ "version": "3.1.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "boom": "2.10.1",
+ "cryptiles": "2.0.5",
+ "hoek": "2.16.3",
+ "sntp": "1.0.9"
+ }
+ },
+ "hoek": {
+ "version": "2.16.3",
+ "bundled": true,
+ "dev": true
+ },
+ "http-signature": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "assert-plus": "0.2.0",
+ "jsprim": "1.4.0",
+ "sshpk": "1.13.0"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "jodid25519": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "jsbn": "0.1.1"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "jsonify": "0.0.0"
+ }
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "jsprim": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.0.2",
+ "json-schema": "0.2.3",
+ "verror": "1.3.6"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "mime-db": {
+ "version": "1.27.0",
+ "bundled": true,
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.15",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "mime-db": "1.27.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true,
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "node-pre-gyp": {
+ "version": "0.6.39",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "detect-libc": "1.0.2",
+ "hawk": "3.1.3",
+ "mkdirp": "0.5.1",
+ "nopt": "4.0.1",
+ "npmlog": "4.1.0",
+ "rc": "1.2.1",
+ "request": "2.81.0",
+ "rimraf": "2.6.1",
+ "semver": "5.3.0",
+ "tar": "2.2.1",
+ "tar-pack": "3.4.0"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1.1.0",
+ "osenv": "0.1.4"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "are-we-there-yet": "1.1.4",
+ "console-control-strings": "1.1.0",
+ "gauge": "2.7.4",
+ "set-blocking": "2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "oauth-sign": {
+ "version": "0.8.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "1.0.2",
+ "os-tmpdir": "1.0.2"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "performance-now": {
+ "version": "0.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "bundled": true,
+ "dev": true
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "qs": {
+ "version": "6.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "deep-extend": "0.4.2",
+ "ini": "1.3.4",
+ "minimist": "1.2.0",
+ "strip-json-comments": "2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.2.9",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "buffer-shims": "1.0.0",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "string_decoder": "1.0.1",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "request": {
+ "version": "2.81.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "aws-sign2": "0.6.0",
+ "aws4": "1.6.0",
+ "caseless": "0.12.0",
+ "combined-stream": "1.0.5",
+ "extend": "3.0.1",
+ "forever-agent": "0.6.1",
+ "form-data": "2.1.4",
+ "har-validator": "4.2.1",
+ "hawk": "3.1.3",
+ "http-signature": "1.1.1",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.15",
+ "oauth-sign": "0.8.2",
+ "performance-now": "0.2.0",
+ "qs": "6.4.0",
+ "safe-buffer": "5.0.1",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.2",
+ "tunnel-agent": "0.6.0",
+ "uuid": "3.0.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "glob": "7.1.2"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "semver": {
+ "version": "5.3.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "sntp": {
+ "version": "1.0.9",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ },
+ "sshpk": {
+ "version": "1.13.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "asn1": "0.2.3",
+ "assert-plus": "1.0.0",
+ "bcrypt-pbkdf": "1.0.1",
+ "dashdash": "1.14.1",
+ "ecc-jsbn": "0.1.1",
+ "getpass": "0.1.7",
+ "jodid25519": "1.0.2",
+ "jsbn": "0.1.1",
+ "tweetnacl": "0.14.5"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.0.1"
+ }
+ },
+ "stringstream": {
+ "version": "0.0.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "2.2.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "block-stream": "0.0.9",
+ "fstream": "1.0.11",
+ "inherits": "2.0.3"
+ }
+ },
+ "tar-pack": {
+ "version": "3.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "debug": "2.6.8",
+ "fstream": "1.0.11",
+ "fstream-ignore": "1.0.5",
+ "once": "1.4.0",
+ "readable-stream": "2.2.9",
+ "rimraf": "2.6.1",
+ "tar": "2.2.1",
+ "uid-number": "0.0.6"
+ }
+ },
+ "tough-cookie": {
+ "version": "2.3.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "punycode": "1.4.1"
+ }
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "5.0.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "uid-number": {
+ "version": "0.0.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "uuid": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "verror": {
+ "version": "1.3.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "extsprintf": "1.0.2"
+ }
+ },
+ "wide-align": {
+ "version": "1.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "string-width": "1.0.2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "generate-function": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
+ "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=",
+ "dev": true
+ },
+ "generate-object-property": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
+ "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
+ "dev": true,
+ "requires": {
+ "is-property": "1.0.2"
+ }
+ },
+ "get-func-name": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
+ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
+ "dev": true
+ },
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+ "dev": true
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "dev": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ },
+ "dependencies": {
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+ "dev": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ }
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "requires": {
+ "is-glob": "3.1.0",
+ "path-dirname": "1.0.2"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ }
+ }
+ },
+ "google-closure-compiler-js": {
+ "version": "20170910.0.1",
+ "resolved": "https://registry.npmjs.org/google-closure-compiler-js/-/google-closure-compiler-js-20170910.0.1.tgz",
+ "integrity": "sha512-Vric7QFWxzHFxITZ10bmlG1H/5rhODb7hJuWyKWMD8GflpQzRmbMVqkFp3fKvN+U9tPwZItGVhkiOR+84PX3ew==",
+ "dev": true,
+ "requires": {
+ "minimist": "1.2.0",
+ "vinyl": "2.1.0",
+ "webpack-core": "0.6.9"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "handlebars": {
+ "version": "4.0.11",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
+ "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
+ "dev": true,
+ "requires": {
+ "async": "1.5.2",
+ "optimist": "0.6.1",
+ "source-map": "0.4.4",
+ "uglify-js": "2.8.29"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "dev": true,
+ "requires": {
+ "amdefine": "1.0.1"
+ }
+ }
+ }
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+ "dev": true
+ },
+ "har-validator": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
+ "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
+ "dev": true,
+ "requires": {
+ "ajv": "5.5.2",
+ "har-schema": "2.0.0"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "dev": true,
+ "requires": {
+ "co": "4.6.0",
+ "fast-deep-equal": "1.0.0",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.3.1"
+ }
+ }
+ }
+ },
+ "has": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
+ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
+ "dev": true,
+ "requires": {
+ "function-bind": "1.1.1"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "dev": true,
+ "requires": {
+ "get-value": "2.0.6",
+ "has-values": "1.0.0",
+ "isobject": "3.0.1"
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "dev": true,
+ "requires": {
+ "is-number": "3.0.0",
+ "kind-of": "4.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "hash-base": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz",
+ "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "hash.js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz",
+ "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.0"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "hawk": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
+ "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
+ "dev": true,
+ "requires": {
+ "boom": "4.3.1",
+ "cryptiles": "3.1.2",
+ "hoek": "4.2.0",
+ "sntp": "2.1.0"
+ }
+ },
+ "he": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
+ "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
+ "dev": true
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "dev": true,
+ "requires": {
+ "hash.js": "1.1.3",
+ "minimalistic-assert": "1.0.0",
+ "minimalistic-crypto-utils": "1.0.1"
+ }
+ },
+ "hoek": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz",
+ "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==",
+ "dev": true
+ },
+ "homedir-polyfill": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
+ "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=",
+ "dev": true,
+ "requires": {
+ "parse-passwd": "1.0.0"
+ }
+ },
+ "hosted-git-info": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz",
+ "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==",
+ "dev": true
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "jsprim": "1.4.1",
+ "sshpk": "1.13.1"
+ }
+ },
+ "https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+ "dev": true
+ },
+ "ieee754": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.9.tgz",
+ "integrity": "sha512-yWDsidMaZHbeTa0a1iSFpK8QhzicsFxo8zKxH0YU2g47rNUZql5+2o3DSc5Z070kjGPLP292BWiF4bd8Q+G87g==",
+ "dev": true
+ },
+ "iferr": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
+ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+ "dev": true
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "dev": true,
+ "requires": {
+ "repeating": "2.0.1"
+ }
+ },
+ "indexof": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
+ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "interpret": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
+ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
+ "dev": true
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "1.11.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-builtin-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+ "dev": true,
+ "requires": {
+ "builtin-modules": "1.1.1"
+ }
+ },
+ "is-callable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz",
+ "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=",
+ "dev": true
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+ "dev": true
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-finite": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "is-glob": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
+ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ },
+ "is-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
+ "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
+ "dev": true
+ },
+ "is-my-json-valid": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz",
+ "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==",
+ "dev": true,
+ "requires": {
+ "generate-function": "2.0.0",
+ "generate-object-property": "1.2.0",
+ "jsonpointer": "4.0.1",
+ "xtend": "4.0.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "is-odd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz",
+ "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==",
+ "dev": true,
+ "requires": {
+ "is-number": "4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+ "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+ "dev": true
+ }
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "3.0.1"
+ }
+ },
+ "is-property": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
+ "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
+ "dev": true
+ },
+ "is-regex": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "dev": true,
+ "requires": {
+ "has": "1.0.1"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz",
+ "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=",
+ "dev": true
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+ "dev": true
+ },
+ "jade": {
+ "version": "0.26.3",
+ "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz",
+ "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=",
+ "dev": true,
+ "requires": {
+ "commander": "0.6.1",
+ "mkdirp": "0.3.0"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz",
+ "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz",
+ "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=",
+ "dev": true
+ }
+ }
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.11.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
+ "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
+ "dev": true,
+ "requires": {
+ "argparse": "1.0.10",
+ "esprima": "4.0.0"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "dev": true,
+ "optional": true
+ },
+ "json-parser": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/json-parser/-/json-parser-1.1.5.tgz",
+ "integrity": "sha1-5i7FJh0aal/CDoEqMgdAxtkAVnc=",
+ "dev": true,
+ "requires": {
+ "esprima": "2.7.3"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+ "dev": true
+ }
+ }
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+ "dev": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "dev": true
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11"
+ }
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+ "dev": true
+ },
+ "jsonpointer": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
+ "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
+ "dev": true
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
+ "just-extend": {
+ "version": "1.1.27",
+ "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz",
+ "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ },
+ "klaw-sync": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-3.0.2.tgz",
+ "integrity": "sha512-32bw9y2nKrnpX2LsJnDTBO2TSdOKPbXfQAWl7Lupcc3D0iKkzI/sQDEw1GjkOuTqZEhe+bVxKSlhSRLxyeytcw==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11"
+ }
+ },
+ "lazy-cache": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
+ "dev": true,
+ "optional": true
+ },
+ "lazystream": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz",
+ "integrity": "sha1-GyXWPHcqTCDwpe0KnXf0hLbhaSA=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.0.34"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "strip-bom": "2.0.0"
+ }
+ },
+ "loader-runner": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz",
+ "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
+ "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
+ "dev": true,
+ "requires": {
+ "big.js": "3.2.0",
+ "emojis-list": "2.1.0",
+ "json5": "0.5.1"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "2.0.0",
+ "path-exists": "3.0.0"
+ },
+ "dependencies": {
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ }
+ }
+ },
+ "lodash": {
+ "version": "4.17.4",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
+ "dev": true
+ },
+ "lodash.get": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
+ "dev": true
+ },
+ "lolex": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.0.tgz",
+ "integrity": "sha512-rPO6R1t8PjYL6xbsFUg7aByKkWAql907na6powPBORVs4DCm8aMBUkL4+6CXO0gEIV8vtu3mWV0FB8ZaCYPBmA==",
+ "dev": true
+ },
+ "longest": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+ "dev": true
+ },
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "dev": true,
+ "requires": {
+ "currently-unhandled": "0.4.1",
+ "signal-exit": "3.0.2"
+ }
+ },
+ "lru-cache": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
+ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=",
+ "dev": true
+ },
+ "magic-string": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.16.0.tgz",
+ "integrity": "sha1-lw67DacZMwEoX7GqZQ85vdgetFo=",
+ "dev": true,
+ "requires": {
+ "vlq": "0.2.2"
+ }
+ },
+ "make-dir": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz",
+ "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==",
+ "dev": true,
+ "requires": {
+ "pify": "3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
+ }
+ },
+ "make-error": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.0.tgz",
+ "integrity": "sha1-Uq06M5zPEM5itAQLcI/nByRLi5Y=",
+ "dev": true
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true
+ },
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ },
+ "map-stream": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz",
+ "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=",
+ "dev": true
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "dev": true,
+ "requires": {
+ "object-visit": "1.0.1"
+ }
+ },
+ "max-component": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/max-component/-/max-component-1.0.0.tgz",
+ "integrity": "sha1-ACywJdxZE/CM8jukLBWJgGmNFtU=",
+ "dev": true,
+ "requires": {
+ "to-function": "2.0.6"
+ }
+ },
+ "md5.js": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
+ "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
+ "dev": true,
+ "requires": {
+ "hash-base": "3.0.4",
+ "inherits": "2.0.3"
+ },
+ "dependencies": {
+ "hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+ "dev": true,
+ "requires": {
+ "errno": "0.1.7",
+ "readable-stream": "2.3.3"
+ }
+ },
+ "memory-streams": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/memory-streams/-/memory-streams-0.1.2.tgz",
+ "integrity": "sha1-Jz/3d6tg/sWZsRY1UlUoLMosUMI=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.0.34"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ },
+ "dependencies": {
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "2.1.0",
+ "decamelize": "1.2.0",
+ "loud-rejection": "1.6.0",
+ "map-obj": "1.0.1",
+ "minimist": "1.2.0",
+ "normalize-package-data": "2.4.0",
+ "object-assign": "4.1.1",
+ "read-pkg-up": "1.0.1",
+ "redent": "1.0.0",
+ "trim-newlines": "1.0.0"
+ }
+ },
+ "micromatch": {
+ "version": "3.1.9",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz",
+ "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "braces": "2.3.1",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "extglob": "2.0.4",
+ "fragment-cache": "0.2.1",
+ "kind-of": "6.0.2",
+ "nanomatch": "1.2.9",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "brorand": "1.1.0"
+ }
+ },
+ "mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.33.0"
+ }
+ },
+ "minimalistic-assert": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz",
+ "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=",
+ "dev": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.11"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "mississippi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz",
+ "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==",
+ "dev": true,
+ "requires": {
+ "concat-stream": "1.6.1",
+ "duplexify": "3.5.4",
+ "end-of-stream": "1.4.0",
+ "flush-write-stream": "1.0.2",
+ "from2": "2.3.0",
+ "parallel-transform": "1.1.0",
+ "pump": "2.0.1",
+ "pumpify": "1.4.0",
+ "stream-each": "1.2.2",
+ "through2": "2.0.3"
+ }
+ },
+ "mixin-deep": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
+ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
+ "dev": true,
+ "requires": {
+ "for-in": "1.0.2",
+ "is-extendable": "1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "2.0.4"
+ }
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ }
+ }
+ },
+ "mocha": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.0.4.tgz",
+ "integrity": "sha512-nMOpAPFosU1B4Ix1jdhx5e3q7XO55ic5a8cgYvW27CequcEY+BabS0kUVL1Cw1V5PuVHZWeNRWFLmEPexo79VA==",
+ "dev": true,
+ "requires": {
+ "browser-stdout": "1.3.1",
+ "commander": "2.11.0",
+ "debug": "3.1.0",
+ "diff": "3.5.0",
+ "escape-string-regexp": "1.0.5",
+ "glob": "7.1.2",
+ "growl": "1.10.3",
+ "he": "1.1.1",
+ "mkdirp": "0.5.1",
+ "supports-color": "4.4.0"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
+ "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
+ "dev": true
+ },
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "diff": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "growl": {
+ "version": "1.10.3",
+ "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz",
+ "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "mocha-in-sauce": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/mocha-in-sauce/-/mocha-in-sauce-0.0.1.tgz",
+ "integrity": "sha1-3u3W3eEjKQ5T+GYhP64ALDAYbKQ=",
+ "dev": true,
+ "requires": {
+ "batch": "0.5.3",
+ "bluebird": "3.5.1",
+ "debug": "2.6.9",
+ "max-component": "1.0.0",
+ "mocha": "2.5.3",
+ "request": "2.83.0",
+ "sauce-connect-launcher": "0.14.0",
+ "sum-component": "0.1.1",
+ "wd": "0.4.0"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz",
+ "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz",
+ "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=",
+ "dev": true
+ },
+ "glob": {
+ "version": "3.2.11",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
+ "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "minimatch": "0.3.0"
+ }
+ },
+ "minimatch": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
+ "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "2.7.3",
+ "sigmund": "1.0.1"
+ }
+ },
+ "mocha": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz",
+ "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=",
+ "dev": true,
+ "requires": {
+ "commander": "2.3.0",
+ "debug": "2.2.0",
+ "diff": "1.4.0",
+ "escape-string-regexp": "1.0.2",
+ "glob": "3.2.11",
+ "growl": "1.9.2",
+ "jade": "0.26.3",
+ "mkdirp": "0.5.1",
+ "supports-color": "1.2.0",
+ "to-iso-string": "0.0.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+ "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
+ "dev": true,
+ "requires": {
+ "ms": "0.7.1"
+ }
+ },
+ "diff": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz",
+ "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=",
+ "dev": true
+ },
+ "growl": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz",
+ "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=",
+ "dev": true
+ }
+ }
+ },
+ "ms": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz",
+ "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=",
+ "dev": true
+ }
+ }
+ },
+ "move-concurrently": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
+ "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+ "dev": true,
+ "requires": {
+ "aproba": "1.2.0",
+ "copy-concurrently": "1.0.5",
+ "fs-write-stream-atomic": "1.0.10",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.2",
+ "run-queue": "1.0.3"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "dev": true,
+ "requires": {
+ "glob": "7.1.2"
+ }
+ }
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "nan": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
+ "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
+ "dev": true,
+ "optional": true
+ },
+ "nanomatch": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz",
+ "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "fragment-cache": "0.2.1",
+ "is-odd": "2.0.0",
+ "is-windows": "1.0.2",
+ "kind-of": "6.0.2",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "neo-async": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.0.tgz",
+ "integrity": "sha512-nJmSswG4As/MkRq7QZFuH/sf/yuv8ODdMZrY4Bedjp77a5MK4A6s7YbBB64c9u79EBUOfXUXBvArmvzTD0X+6g==",
+ "dev": true
+ },
+ "nise": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/nise/-/nise-1.2.0.tgz",
+ "integrity": "sha512-q9jXh3UNsMV28KeqI43ILz5+c3l+RiNW8mhurEwCKckuHQbL+hTJIKKTiUlCPKlgQ/OukFvSnKB/Jk3+sFbkGA==",
+ "dev": true,
+ "requires": {
+ "formatio": "1.2.0",
+ "just-extend": "1.1.27",
+ "lolex": "1.6.0",
+ "path-to-regexp": "1.7.0",
+ "text-encoding": "0.6.4"
+ },
+ "dependencies": {
+ "lolex": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz",
+ "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=",
+ "dev": true
+ }
+ }
+ },
+ "node-int64": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.3.3.tgz",
+ "integrity": "sha1-LW5rLs5d6FiLQ9iNG8QbJs0fqE0=",
+ "dev": true
+ },
+ "node-libs-browser": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz",
+ "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==",
+ "dev": true,
+ "requires": {
+ "assert": "1.4.1",
+ "browserify-zlib": "0.2.0",
+ "buffer": "4.9.1",
+ "console-browserify": "1.1.0",
+ "constants-browserify": "1.0.0",
+ "crypto-browserify": "3.12.0",
+ "domain-browser": "1.2.0",
+ "events": "1.1.1",
+ "https-browserify": "1.0.0",
+ "os-browserify": "0.3.0",
+ "path-browserify": "0.0.0",
+ "process": "0.11.10",
+ "punycode": "1.4.1",
+ "querystring-es3": "0.2.1",
+ "readable-stream": "2.3.3",
+ "stream-browserify": "2.0.1",
+ "stream-http": "2.8.1",
+ "string_decoder": "1.1.0",
+ "timers-browserify": "2.0.6",
+ "tty-browserify": "0.0.0",
+ "url": "0.11.0",
+ "util": "0.10.3",
+ "vm-browserify": "0.0.4"
+ },
+ "dependencies": {
+ "string_decoder": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.0.tgz",
+ "integrity": "sha512-8zQpRF6juocE69ae7CSPmYEGJe4VCXwP6S6dxUWI7i53Gwv54/ec41fiUA+X7BPGGv7fRSQJjBQVa0gomGaOgg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ }
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "2.6.0",
+ "is-builtin-module": "1.0.0",
+ "semver": "5.5.0",
+ "validate-npm-package-license": "3.0.3"
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "1.1.0"
+ }
+ },
+ "npm-run-all": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.1.tgz",
+ "integrity": "sha512-qrmqqaJa+REbzUTIL/mHfTdgwz+gL1xUezY/ueyLa7GISZ4T3h0CH8D2r6AaZdCYN2unu7PzspP0ofpXla1ftg==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "chalk": "2.1.0",
+ "cross-spawn": "5.1.0",
+ "memory-streams": "0.1.2",
+ "minimatch": "3.0.4",
+ "ps-tree": "1.1.0",
+ "read-pkg": "2.0.0",
+ "shell-quote": "1.6.1",
+ "string.prototype.padend": "3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+ "dev": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "strip-bom": "3.0.0"
+ },
+ "dependencies": {
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "1.3.1"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ },
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "requires": {
+ "pify": "2.3.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "2.0.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "2.0.0"
+ },
+ "dependencies": {
+ "normalize-package-data": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "2.6.0",
+ "is-builtin-module": "1.0.0",
+ "semver": "5.5.0",
+ "validate-npm-package-license": "3.0.3"
+ }
+ }
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "npm-scripts-info": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/npm-scripts-info/-/npm-scripts-info-0.3.6.tgz",
+ "integrity": "sha1-FOfHjBKIvW2CB4dpx6qVg/xBPAM=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "meow": "3.7.0",
+ "unquote": "1.1.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
+ },
+ "nyc": {
+ "version": "11.3.0",
+ "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.3.0.tgz",
+ "integrity": "sha512-oUu0WHt1k/JMIODvAYXX6C50Mupw2GO34P/Jdg2ty9xrLufBthHiKR2gf08aF+9S0abW1fl24R7iKRBXzibZmg==",
+ "dev": true,
+ "requires": {
+ "archy": "1.0.0",
+ "arrify": "1.0.1",
+ "caching-transform": "1.0.1",
+ "convert-source-map": "1.5.0",
+ "debug-log": "1.0.1",
+ "default-require-extensions": "1.0.0",
+ "find-cache-dir": "0.1.1",
+ "find-up": "2.1.0",
+ "foreground-child": "1.5.6",
+ "glob": "7.1.2",
+ "istanbul-lib-coverage": "1.1.1",
+ "istanbul-lib-hook": "1.1.0",
+ "istanbul-lib-instrument": "1.9.1",
+ "istanbul-lib-report": "1.1.2",
+ "istanbul-lib-source-maps": "1.2.2",
+ "istanbul-reports": "1.1.3",
+ "md5-hex": "1.3.0",
+ "merge-source-map": "1.0.4",
+ "micromatch": "2.3.11",
+ "mkdirp": "0.5.1",
+ "resolve-from": "2.0.0",
+ "rimraf": "2.6.2",
+ "signal-exit": "3.0.2",
+ "spawn-wrap": "1.3.8",
+ "test-exclude": "4.1.1",
+ "yargs": "10.0.3",
+ "yargs-parser": "8.0.0"
+ },
+ "dependencies": {
+ "align-text": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2",
+ "longest": "1.0.1",
+ "repeat-string": "1.6.1"
+ }
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "append-transform": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz",
+ "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=",
+ "dev": true,
+ "requires": {
+ "default-require-extensions": "1.0.0"
+ }
+ },
+ "archy": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
+ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
+ "dev": true
+ },
+ "arr-diff": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "1.1.0"
+ }
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+ "dev": true
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "esutils": "2.0.2",
+ "js-tokens": "3.0.2"
+ }
+ },
+ "babel-generator": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz",
+ "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=",
+ "dev": true,
+ "requires": {
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "detect-indent": "4.0.0",
+ "jsesc": "1.3.0",
+ "lodash": "4.17.4",
+ "source-map": "0.5.7",
+ "trim-right": "1.0.1"
+ }
+ },
+ "babel-messages": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
+ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "dev": true,
+ "requires": {
+ "core-js": "2.5.1",
+ "regenerator-runtime": "0.11.0"
+ }
+ },
+ "babel-template": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
+ "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "lodash": "4.17.4"
+ }
+ },
+ "babel-traverse": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
+ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "debug": "2.6.9",
+ "globals": "9.18.0",
+ "invariant": "2.2.2",
+ "lodash": "4.17.4"
+ }
+ },
+ "babel-types": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
+ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "esutils": "2.0.2",
+ "lodash": "4.17.4",
+ "to-fast-properties": "1.0.3"
+ }
+ },
+ "babylon": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+ "dev": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "dev": true,
+ "requires": {
+ "expand-range": "1.8.2",
+ "preserve": "0.2.0",
+ "repeat-element": "1.1.2"
+ }
+ },
+ "builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+ "dev": true
+ },
+ "caching-transform": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz",
+ "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=",
+ "dev": true,
+ "requires": {
+ "md5-hex": "1.3.0",
+ "mkdirp": "0.5.1",
+ "write-file-atomic": "1.3.4"
+ }
+ },
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+ "dev": true,
+ "optional": true
+ },
+ "center-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "align-text": "0.1.4",
+ "lazy-cache": "1.0.4"
+ }
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "center-align": "0.1.3",
+ "right-align": "0.1.3",
+ "wordwrap": "0.0.2"
+ },
+ "dependencies": {
+ "wordwrap": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "dev": true
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "convert-source-map": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz",
+ "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=",
+ "dev": true
+ },
+ "core-js": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz",
+ "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=",
+ "dev": true
+ },
+ "cross-spawn": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
+ "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "4.1.1",
+ "which": "1.3.0"
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "debug-log": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz",
+ "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=",
+ "dev": true
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "default-require-extensions": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz",
+ "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=",
+ "dev": true,
+ "requires": {
+ "strip-bom": "2.0.0"
+ }
+ },
+ "detect-indent": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
+ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
+ "dev": true,
+ "requires": {
+ "repeating": "2.0.1"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
+ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "0.2.1"
+ }
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
+ },
+ "execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "5.1.0",
+ "get-stream": "3.0.0",
+ "is-stream": "1.1.0",
+ "npm-run-path": "2.0.2",
+ "p-finally": "1.0.0",
+ "signal-exit": "3.0.2",
+ "strip-eof": "1.0.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "4.1.1",
+ "shebang-command": "1.2.0",
+ "which": "1.3.0"
+ }
+ }
+ }
+ },
+ "expand-brackets": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "dev": true,
+ "requires": {
+ "is-posix-bracket": "0.1.1"
+ }
+ },
+ "expand-range": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "dev": true,
+ "requires": {
+ "fill-range": "2.2.3"
+ }
+ },
+ "extglob": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ },
+ "filename-regex": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
+ "dev": true
+ },
+ "fill-range": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
+ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
+ "dev": true,
+ "requires": {
+ "is-number": "2.1.0",
+ "isobject": "2.1.0",
+ "randomatic": "1.1.7",
+ "repeat-element": "1.1.2",
+ "repeat-string": "1.6.1"
+ }
+ },
+ "find-cache-dir": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz",
+ "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=",
+ "dev": true,
+ "requires": {
+ "commondir": "1.0.1",
+ "mkdirp": "0.5.1",
+ "pkg-dir": "1.0.0"
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "2.0.0"
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "for-own": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "dev": true,
+ "requires": {
+ "for-in": "1.0.2"
+ }
+ },
+ "foreground-child": {
+ "version": "1.5.6",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz",
+ "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "4.0.2",
+ "signal-exit": "3.0.2"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
+ "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "glob-base": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+ "dev": true,
+ "requires": {
+ "glob-parent": "2.0.0",
+ "is-glob": "2.0.1"
+ }
+ },
+ "glob-parent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "dev": true,
+ "requires": {
+ "is-glob": "2.0.1"
+ }
+ },
+ "globals": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
+ "dev": true
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "handlebars": {
+ "version": "4.0.11",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
+ "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
+ "dev": true,
+ "requires": {
+ "async": "1.5.2",
+ "optimist": "0.6.1",
+ "source-map": "0.4.4",
+ "uglify-js": "2.8.29"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "dev": true,
+ "requires": {
+ "amdefine": "1.0.1"
+ }
+ }
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+ "dev": true
+ },
+ "hosted-git-info": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
+ "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==",
+ "dev": true
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "invariant": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz",
+ "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=",
+ "dev": true,
+ "requires": {
+ "loose-envify": "1.3.1"
+ }
+ },
+ "invert-kv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
+ "dev": true
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-buffer": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
+ "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
+ "dev": true
+ },
+ "is-builtin-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+ "dev": true,
+ "requires": {
+ "builtin-modules": "1.1.1"
+ }
+ },
+ "is-dotfile": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+ "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+ "dev": true
+ },
+ "is-equal-shallow": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+ "dev": true,
+ "requires": {
+ "is-primitive": "2.0.0"
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ },
+ "is-finite": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ },
+ "is-number": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "is-posix-bracket": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+ "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
+ "dev": true
+ },
+ "is-primitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ },
+ "istanbul-lib-coverage": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz",
+ "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==",
+ "dev": true
+ },
+ "istanbul-lib-hook": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz",
+ "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==",
+ "dev": true,
+ "requires": {
+ "append-transform": "0.4.0"
+ }
+ },
+ "istanbul-lib-instrument": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz",
+ "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==",
+ "dev": true,
+ "requires": {
+ "babel-generator": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "istanbul-lib-coverage": "1.1.1",
+ "semver": "5.4.1"
+ }
+ },
+ "istanbul-lib-report": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz",
+ "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==",
+ "dev": true,
+ "requires": {
+ "istanbul-lib-coverage": "1.1.1",
+ "mkdirp": "0.5.1",
+ "path-parse": "1.0.5",
+ "supports-color": "3.2.3"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+ "dev": true,
+ "requires": {
+ "has-flag": "1.0.0"
+ }
+ }
+ }
+ },
+ "istanbul-lib-source-maps": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz",
+ "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==",
+ "dev": true,
+ "requires": {
+ "debug": "3.1.0",
+ "istanbul-lib-coverage": "1.1.1",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.2",
+ "source-map": "0.5.7"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "istanbul-reports": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz",
+ "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==",
+ "dev": true,
+ "requires": {
+ "handlebars": "4.0.11"
+ }
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ },
+ "jsesc": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
+ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.5"
+ }
+ },
+ "lazy-cache": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
+ "dev": true,
+ "optional": true
+ },
+ "lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "dev": true,
+ "requires": {
+ "invert-kv": "1.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "strip-bom": "2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "2.0.0",
+ "path-exists": "3.0.0"
+ },
+ "dependencies": {
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ }
+ }
+ },
+ "lodash": {
+ "version": "4.17.4",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
+ "dev": true
+ },
+ "longest": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+ "dev": true
+ },
+ "loose-envify": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
+ "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
+ "dev": true,
+ "requires": {
+ "js-tokens": "3.0.2"
+ }
+ },
+ "lru-cache": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
+ "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "1.0.2",
+ "yallist": "2.1.2"
+ }
+ },
+ "md5-hex": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz",
+ "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=",
+ "dev": true,
+ "requires": {
+ "md5-o-matic": "0.1.1"
+ }
+ },
+ "md5-o-matic": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz",
+ "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=",
+ "dev": true
+ },
+ "mem": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
+ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "1.1.0"
+ }
+ },
+ "merge-source-map": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz",
+ "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=",
+ "dev": true,
+ "requires": {
+ "source-map": "0.5.7"
+ }
+ },
+ "micromatch": {
+ "version": "2.3.11",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "dev": true,
+ "requires": {
+ "arr-diff": "2.0.0",
+ "array-unique": "0.2.1",
+ "braces": "1.8.5",
+ "expand-brackets": "0.1.5",
+ "extglob": "0.3.2",
+ "filename-regex": "2.0.1",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1",
+ "kind-of": "3.2.2",
+ "normalize-path": "2.1.1",
+ "object.omit": "2.0.1",
+ "parse-glob": "3.0.4",
+ "regex-cache": "0.4.4"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz",
+ "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "normalize-package-data": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "2.5.0",
+ "is-builtin-module": "1.0.0",
+ "semver": "5.4.1",
+ "validate-npm-package-license": "3.0.1"
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "1.1.0"
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "requires": {
+ "path-key": "2.0.1"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
+ },
+ "object.omit": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+ "dev": true,
+ "requires": {
+ "for-own": "0.1.5",
+ "is-extendable": "0.1.1"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8",
+ "wordwrap": "0.0.3"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true
+ },
+ "os-locale": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
+ "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
+ "dev": true,
+ "requires": {
+ "execa": "0.7.0",
+ "lcid": "1.0.0",
+ "mem": "1.1.0"
+ }
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz",
+ "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=",
+ "dev": true
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "1.1.0"
+ }
+ },
+ "parse-glob": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+ "dev": true,
+ "requires": {
+ "glob-base": "0.3.0",
+ "is-dotfile": "1.0.3",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1"
+ }
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "1.3.1"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
+ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
+ "dev": true
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "2.0.4"
+ }
+ },
+ "pkg-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
+ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
+ "dev": true,
+ "requires": {
+ "find-up": "1.1.2"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "2.1.0",
+ "pinkie-promise": "2.0.1"
+ }
+ }
+ }
+ },
+ "preserve": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
+ "dev": true
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "dev": true
+ },
+ "randomatic": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
+ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
+ "dev": true,
+ "requires": {
+ "is-number": "3.0.0",
+ "kind-of": "4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.5"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.5"
+ }
+ }
+ }
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "1.1.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "1.1.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true,
+ "requires": {
+ "find-up": "1.1.2",
+ "read-pkg": "1.1.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "2.1.0",
+ "pinkie-promise": "2.0.1"
+ }
+ }
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz",
+ "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==",
+ "dev": true
+ },
+ "regex-cache": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
+ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
+ "dev": true,
+ "requires": {
+ "is-equal-shallow": "0.1.3"
+ }
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "dev": true
+ },
+ "repeat-element": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
+ "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
+ "requires": {
+ "is-finite": "1.0.2"
+ }
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+ "dev": true
+ },
+ "resolve-from": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
+ "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=",
+ "dev": true
+ },
+ "right-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
+ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "align-text": "0.1.4"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "dev": true,
+ "requires": {
+ "glob": "7.1.2"
+ }
+ },
+ "semver": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
+ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
+ "dev": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "slide": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
+ "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "spawn-wrap": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.3.8.tgz",
+ "integrity": "sha512-Yfkd7Yiwz4RcBPrDWzvhnTzQINBHNqOEhUzOdWZ67Y9b4wzs3Gz6ymuptQmRBpzlpOzroM7jwzmBdRec7JJ0UA==",
+ "dev": true,
+ "requires": {
+ "foreground-child": "1.5.6",
+ "mkdirp": "0.5.1",
+ "os-homedir": "1.0.2",
+ "rimraf": "2.6.2",
+ "signal-exit": "3.0.2",
+ "which": "1.3.0"
+ }
+ },
+ "spdx-correct": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
+ "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
+ "dev": true,
+ "requires": {
+ "spdx-license-ids": "1.2.2"
+ }
+ },
+ "spdx-expression-parse": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
+ "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
+ "dev": true
+ },
+ "spdx-license-ids": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
+ "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "0.2.1"
+ }
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ },
+ "test-exclude": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz",
+ "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==",
+ "dev": true,
+ "requires": {
+ "arrify": "1.0.1",
+ "micromatch": "2.3.11",
+ "object-assign": "4.1.1",
+ "read-pkg-up": "1.0.1",
+ "require-main-filename": "1.0.1"
+ }
+ },
+ "to-fast-properties": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
+ "dev": true
+ },
+ "trim-right": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "2.8.29",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
+ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "source-map": "0.5.7",
+ "uglify-to-browserify": "1.0.2",
+ "yargs": "3.10.0"
+ },
+ "dependencies": {
+ "yargs": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "camelcase": "1.2.1",
+ "cliui": "2.1.0",
+ "decamelize": "1.2.0",
+ "window-size": "0.1.0"
+ }
+ }
+ }
+ },
+ "uglify-to-browserify": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
+ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+ "dev": true,
+ "optional": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
+ "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
+ "dev": true,
+ "requires": {
+ "spdx-correct": "1.0.2",
+ "spdx-expression-parse": "1.0.4"
+ }
+ },
+ "which": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
+ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
+ "dev": true,
+ "requires": {
+ "isexe": "2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "window-size": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
+ "dev": true,
+ "optional": true
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "dev": true,
+ "requires": {
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "write-file-atomic": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz",
+ "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "imurmurhash": "0.1.4",
+ "slide": "1.1.6"
+ }
+ },
+ "y18n": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+ "dev": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ },
+ "yargs": {
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz",
+ "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==",
+ "dev": true,
+ "requires": {
+ "cliui": "3.2.0",
+ "decamelize": "1.2.0",
+ "find-up": "2.1.0",
+ "get-caller-file": "1.0.2",
+ "os-locale": "2.1.0",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "2.1.1",
+ "which-module": "2.0.0",
+ "y18n": "3.2.1",
+ "yargs-parser": "8.0.0"
+ },
+ "dependencies": {
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "dev": true,
+ "requires": {
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wrap-ansi": "2.1.0"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ }
+ }
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz",
+ "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=",
+ "dev": true,
+ "requires": {
+ "camelcase": "4.1.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "oauth-sign": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+ "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "dev": true,
+ "requires": {
+ "copy-descriptor": "0.1.1",
+ "define-property": "0.2.5",
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "object-keys": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
+ "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=",
+ "dev": true
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "dev": true,
+ "requires": {
+ "isobject": "3.0.1"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "requires": {
+ "isobject": "3.0.1"
+ }
+ },
+ "objectpath": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/objectpath/-/objectpath-1.2.1.tgz",
+ "integrity": "sha1-yHQzvdNSrqAU5PnAtS1wpCZSBS4=",
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "opn": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz",
+ "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=",
+ "dev": true,
+ "requires": {
+ "object-assign": "4.1.1",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "opn-cli": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/opn-cli/-/opn-cli-3.1.0.tgz",
+ "integrity": "sha1-+BmubK4LQRvQFJuFYP5siK2tIPg=",
+ "dev": true,
+ "requires": {
+ "file-type": "3.9.0",
+ "get-stdin": "5.0.1",
+ "meow": "3.7.0",
+ "opn": "4.0.2",
+ "temp-write": "2.1.0"
+ },
+ "dependencies": {
+ "get-stdin": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz",
+ "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=",
+ "dev": true
+ }
+ }
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.10",
+ "wordwrap": "0.0.3"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+ "dev": true
+ }
+ }
+ },
+ "os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+ "dev": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz",
+ "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==",
+ "dev": true,
+ "requires": {
+ "p-try": "1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "1.2.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ },
+ "pako": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
+ "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
+ "dev": true
+ },
+ "parallel-transform": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
+ "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
+ "dev": true,
+ "requires": {
+ "cyclist": "0.2.2",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "parse-asn1": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz",
+ "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=",
+ "dev": true,
+ "requires": {
+ "asn1.js": "4.10.1",
+ "browserify-aes": "1.1.1",
+ "create-hash": "1.1.3",
+ "evp_bytestokey": "1.0.3",
+ "pbkdf2": "3.0.14"
+ }
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "1.3.1"
+ }
+ },
+ "parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+ "dev": true
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true
+ },
+ "path-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
+ "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
+ "dev": true
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
+ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
+ "dev": true
+ },
+ "path-to-regexp": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz",
+ "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=",
+ "dev": true,
+ "requires": {
+ "isarray": "0.0.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ }
+ }
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "pathval": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz",
+ "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=",
+ "dev": true
+ },
+ "pause-stream": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
+ "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
+ "dev": true,
+ "requires": {
+ "through": "2.3.8"
+ }
+ },
+ "pbkdf2": {
+ "version": "3.0.14",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz",
+ "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==",
+ "dev": true,
+ "requires": {
+ "create-hash": "1.1.3",
+ "create-hmac": "1.1.6",
+ "ripemd160": "2.0.1",
+ "safe-buffer": "5.1.1",
+ "sha.js": "2.4.10"
+ }
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+ "dev": true
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "2.0.4"
+ }
+ },
+ "pkg-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
+ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+ "dev": true,
+ "requires": {
+ "find-up": "2.1.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "2.0.0"
+ }
+ }
+ }
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+ "dev": true
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+ "dev": true
+ },
+ "promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+ "dev": true
+ },
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+ "dev": true
+ },
+ "ps-tree": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz",
+ "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=",
+ "dev": true,
+ "requires": {
+ "event-stream": "3.3.4"
+ }
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "dev": true
+ },
+ "public-encrypt": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz",
+ "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "browserify-rsa": "4.0.1",
+ "create-hash": "1.1.3",
+ "parse-asn1": "5.1.0",
+ "randombytes": "2.0.6"
+ }
+ },
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "1.4.0",
+ "once": "1.4.0"
+ },
+ "dependencies": {
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ }
+ }
+ },
+ "pumpify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz",
+ "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==",
+ "dev": true,
+ "requires": {
+ "duplexify": "3.5.4",
+ "inherits": "2.0.3",
+ "pump": "2.0.1"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ },
+ "q": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
+ "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
+ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
+ "dev": true
+ },
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+ "dev": true
+ },
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+ "dev": true
+ },
+ "randombytes": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
+ "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "dev": true,
+ "requires": {
+ "randombytes": "2.0.6",
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "1.1.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "1.1.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true,
+ "requires": {
+ "find-up": "1.1.2",
+ "read-pkg": "1.1.0"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ },
+ "dependencies": {
+ "string_decoder": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
+ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ }
+ }
+ },
+ "readdirp": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
+ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "minimatch": "3.0.4",
+ "readable-stream": "2.3.3",
+ "set-immediate-shim": "1.0.1"
+ },
+ "dependencies": {
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.11"
+ }
+ }
+ }
+ },
+ "rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
+ "dev": true,
+ "requires": {
+ "resolve": "1.1.7"
+ }
+ },
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "dev": true,
+ "requires": {
+ "indent-string": "2.1.0",
+ "strip-indent": "1.0.1"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "3.0.2",
+ "safe-regex": "1.1.0"
+ }
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "dev": true
+ },
+ "repeat-element": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
+ "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
+ "requires": {
+ "is-finite": "1.0.2"
+ }
+ },
+ "replace-ext": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
+ "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
+ "dev": true
+ },
+ "request": {
+ "version": "2.83.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
+ "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "0.7.0",
+ "aws4": "1.6.0",
+ "caseless": "0.12.0",
+ "combined-stream": "1.0.6",
+ "extend": "3.0.1",
+ "forever-agent": "0.6.1",
+ "form-data": "2.3.1",
+ "har-validator": "5.0.3",
+ "hawk": "6.0.2",
+ "http-signature": "1.2.0",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.17",
+ "oauth-sign": "0.8.2",
+ "performance-now": "2.1.0",
+ "qs": "6.5.1",
+ "safe-buffer": "5.1.1",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.3",
+ "tunnel-agent": "0.6.0",
+ "uuid": "3.1.0"
+ },
+ "dependencies": {
+ "extend": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+ "dev": true
+ },
+ "mime-db": {
+ "version": "1.30.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
+ "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.17",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
+ "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.30.0"
+ }
+ }
+ }
+ },
+ "resolve": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
+ "dev": true
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "dev": true
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
+ },
+ "right-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
+ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "align-text": "0.1.4"
+ }
+ },
+ "rimraf": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.3.tgz",
+ "integrity": "sha1-5bUclDekxYKtuVXp8oz42UXicq8=",
+ "dev": true,
+ "requires": {
+ "glob": "5.0.15"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "dev": true,
+ "requires": {
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ },
+ "dependencies": {
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.11"
+ }
+ }
+ }
+ }
+ }
+ },
+ "ripemd160": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz",
+ "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=",
+ "dev": true,
+ "requires": {
+ "hash-base": "2.0.2",
+ "inherits": "2.0.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "rollup": {
+ "version": "0.51.3",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.51.3.tgz",
+ "integrity": "sha512-K9oygeFN+DhZTyWxAu0S/6cYMKSE9F2YXjXItwzBf8lRBRFRiQLurXkeUbqE+LCxvMtauiMFMApPb8YNyHT0Vw==",
+ "dev": true
+ },
+ "rollup-plugin-inject": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-2.0.0.tgz",
+ "integrity": "sha1-iTTZilsNstBe/O4qwGoXCkxwsEQ=",
+ "dev": true,
+ "requires": {
+ "acorn": "4.0.13",
+ "estree-walker": "0.2.1",
+ "magic-string": "0.16.0",
+ "rollup-pluginutils": "1.5.2"
+ }
+ },
+ "rollup-plugin-node-resolve": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.0.0.tgz",
+ "integrity": "sha1-i4l8TDAw1QASd7BRSyXSygloPuA=",
+ "dev": true,
+ "requires": {
+ "browser-resolve": "1.11.2",
+ "builtin-modules": "1.1.1",
+ "is-module": "1.0.0",
+ "resolve": "1.1.7"
+ }
+ },
+ "rollup-pluginutils": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz",
+ "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=",
+ "dev": true,
+ "requires": {
+ "estree-walker": "0.2.1",
+ "minimatch": "3.0.4"
+ }
+ },
+ "rsync": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/rsync/-/rsync-0.6.1.tgz",
+ "integrity": "sha1-NoGgCYvYdQRI+L+dof7gn3djdCs=",
+ "dev": true
+ },
+ "run-queue": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
+ "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+ "dev": true,
+ "requires": {
+ "aproba": "1.2.0"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
+ "dev": true
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "dev": true,
+ "requires": {
+ "ret": "0.1.15"
+ }
+ },
+ "samsam": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz",
+ "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==",
+ "dev": true
+ },
+ "sauce-connect-launcher": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/sauce-connect-launcher/-/sauce-connect-launcher-0.14.0.tgz",
+ "integrity": "sha1-pMtHQ9KQbwefWUq/F8vLSnpzOy0=",
+ "dev": true,
+ "requires": {
+ "adm-zip": "0.4.7",
+ "async": "1.4.0",
+ "lodash": "3.10.1",
+ "rimraf": "2.4.3"
+ },
+ "dependencies": {
+ "async": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.4.0.tgz",
+ "integrity": "sha1-Nfhvg8WeBCHQmc2akdgnj7V4wA0=",
+ "dev": true
+ },
+ "lodash": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
+ "dev": true
+ }
+ }
+ },
+ "schema-utils": {
+ "version": "0.4.5",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz",
+ "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==",
+ "dev": true,
+ "requires": {
+ "ajv": "6.3.0",
+ "ajv-keywords": "3.1.0"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.3.0.tgz",
+ "integrity": "sha1-FlCkERTvAFdMrBC4Ay2PTBSBLac=",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "1.0.0",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.3.1"
+ }
+ }
+ }
+ },
+ "semver": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
+ "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
+ "dev": true
+ },
+ "serialize-javascript": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.4.0.tgz",
+ "integrity": "sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU=",
+ "dev": true
+ },
+ "set-immediate-shim": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
+ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
+ "dev": true
+ },
+ "set-value": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
+ "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-extendable": "0.1.1",
+ "is-plain-object": "2.0.4",
+ "split-string": "3.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+ "dev": true
+ },
+ "sha.js": {
+ "version": "2.4.10",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz",
+ "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.1"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "shell-quote": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
+ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
+ "dev": true,
+ "requires": {
+ "array-filter": "0.0.1",
+ "array-map": "0.0.0",
+ "array-reduce": "0.0.0",
+ "jsonify": "0.0.0"
+ }
+ },
+ "shelljs": {
+ "version": "0.7.8",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz",
+ "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=",
+ "dev": true,
+ "requires": {
+ "glob": "7.1.2",
+ "interpret": "1.1.0",
+ "rechoir": "0.6.2"
+ }
+ },
+ "shx": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/shx/-/shx-0.2.2.tgz",
+ "integrity": "sha1-CjBNAgsO3xMGrYFXDoDwNG31ijk=",
+ "dev": true,
+ "requires": {
+ "es6-object-assign": "1.1.0",
+ "minimist": "1.2.0",
+ "shelljs": "0.7.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ }
+ }
+ },
+ "sigmund": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
+ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "sinon": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.1.2.tgz",
+ "integrity": "sha512-5uLBZPdCWl59Lpbf45ygKj7Z0LVol+ftBe7RDIXOQV/sF58pcFmbK8raA7bt6eljNuGnvBP+/ZxlicVn0emDjA==",
+ "dev": true,
+ "requires": {
+ "diff": "3.4.0",
+ "formatio": "1.2.0",
+ "lodash.get": "4.4.2",
+ "lolex": "2.3.0",
+ "nise": "1.2.0",
+ "supports-color": "4.5.0",
+ "type-detect": "4.0.5"
+ },
+ "dependencies": {
+ "diff": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz",
+ "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "sinon-chai": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.14.0.tgz",
+ "integrity": "sha512-9stIF1utB0ywNHNT7RgiXbdmen8QDCRsrTjw+G9TgKt1Yexjiv8TOWZ6WHsTPz57Yky3DIswZvEqX8fpuHNDtQ==",
+ "dev": true
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "requires": {
+ "base": "0.11.2",
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "map-cache": "0.2.2",
+ "source-map": "0.5.7",
+ "source-map-resolve": "0.5.1",
+ "use": "3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "requires": {
+ "define-property": "1.0.0",
+ "isobject": "3.0.1",
+ "snapdragon-util": "3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "sntp": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
+ "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
+ "dev": true,
+ "requires": {
+ "hoek": "4.2.0"
+ }
+ },
+ "source-list-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz",
+ "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "source-map-resolve": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz",
+ "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==",
+ "dev": true,
+ "requires": {
+ "atob": "2.0.3",
+ "decode-uri-component": "0.2.0",
+ "resolve-url": "0.2.1",
+ "source-map-url": "0.4.0",
+ "urix": "0.1.0"
+ }
+ },
+ "source-map-support": {
+ "version": "0.4.18",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
+ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
+ "dev": true,
+ "requires": {
+ "source-map": "0.5.7"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+ "dev": true
+ },
+ "spdx-correct": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz",
+ "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==",
+ "dev": true,
+ "requires": {
+ "spdx-expression-parse": "3.0.0",
+ "spdx-license-ids": "3.0.0"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz",
+ "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==",
+ "dev": true
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
+ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+ "dev": true,
+ "requires": {
+ "spdx-exceptions": "2.1.0",
+ "spdx-license-ids": "3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz",
+ "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==",
+ "dev": true
+ },
+ "spec-js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/spec-js/-/spec-js-1.0.0.tgz",
+ "integrity": "sha1-GTI7ad7huscjY5VsjPwl7NJVdAg=",
+ "dev": true
+ },
+ "split": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
+ "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=",
+ "dev": true,
+ "requires": {
+ "through": "2.3.8"
+ }
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "3.0.2"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "sshpk": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
+ "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
+ "dev": true,
+ "requires": {
+ "asn1": "0.2.3",
+ "assert-plus": "1.0.0",
+ "bcrypt-pbkdf": "1.0.1",
+ "dashdash": "1.14.1",
+ "ecc-jsbn": "0.1.1",
+ "getpass": "0.1.7",
+ "jsbn": "0.1.1",
+ "tweetnacl": "0.14.5"
+ }
+ },
+ "ssri": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz",
+ "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "dev": true,
+ "requires": {
+ "define-property": "0.2.5",
+ "object-copy": "0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "stream-browserify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
+ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "stream-combiner": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
+ "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
+ "dev": true,
+ "requires": {
+ "duplexer": "0.1.1"
+ }
+ },
+ "stream-each": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz",
+ "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "1.4.0",
+ "stream-shift": "1.0.0"
+ }
+ },
+ "stream-http": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.1.tgz",
+ "integrity": "sha512-cQ0jo17BLca2r0GfRdZKYAGLU6JRoIWxqSOakUMuKOT6MOK7AAlE856L33QuDmAy/eeOrhLee3dZKX0Uadu93A==",
+ "dev": true,
+ "requires": {
+ "builtin-status-codes": "3.0.0",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3",
+ "to-arraybuffer": "1.0.1",
+ "xtend": "4.0.1"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "stream-shift": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
+ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
+ "dev": true
+ },
+ "string.prototype.padend": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz",
+ "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=",
+ "dev": true,
+ "requires": {
+ "define-properties": "1.1.2",
+ "es-abstract": "1.8.1",
+ "function-bind": "1.1.1"
+ }
+ },
+ "stringstream": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
+ "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "0.2.1"
+ }
+ },
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "4.0.1"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true
+ },
+ "sum-component": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/sum-component/-/sum-component-0.1.1.tgz",
+ "integrity": "sha1-yAsFh7vQD3zYX0ugSOtp/M2s5bg=",
+ "dev": true,
+ "requires": {
+ "to-function": "2.0.6"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ },
+ "tapable": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz",
+ "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==",
+ "dev": true
+ },
+ "tar-stream": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.1.5.tgz",
+ "integrity": "sha1-vpIYwTDCACnhB7D5Z/sj3gV50Tw=",
+ "dev": true,
+ "requires": {
+ "bl": "0.9.5",
+ "end-of-stream": "1.4.0",
+ "readable-stream": "1.0.34",
+ "xtend": "4.0.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "temp-write": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/temp-write/-/temp-write-2.1.0.tgz",
+ "integrity": "sha1-WYkJGODvCdVIqqNC9L00CdhATpY=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "mkdirp": "0.5.1",
+ "os-tmpdir": "1.0.2",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "uuid": "2.0.3"
+ },
+ "dependencies": {
+ "uuid": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
+ "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
+ "dev": true
+ }
+ }
+ },
+ "text-encoding": {
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz",
+ "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "through2": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2.3.3",
+ "xtend": "4.0.1"
+ }
+ },
+ "timers-browserify": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz",
+ "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==",
+ "dev": true,
+ "requires": {
+ "setimmediate": "1.0.5"
+ }
+ },
+ "to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+ "dev": true
+ },
+ "to-function": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/to-function/-/to-function-2.0.6.tgz",
+ "integrity": "sha1-fVbNnDuS+o29eyLoPVGSTedA68U=",
+ "dev": true,
+ "requires": {
+ "component-props": "1.1.1"
+ }
+ },
+ "to-iso-string": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz",
+ "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=",
+ "dev": true
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "regex-not": "1.0.2",
+ "safe-regex": "1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1"
+ }
+ },
+ "tough-cookie": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
+ "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
+ "dev": true,
+ "requires": {
+ "punycode": "1.4.1"
+ }
+ },
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+ "dev": true
+ },
+ "ts-config": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/ts-config/-/ts-config-17.0.0.tgz",
+ "integrity": "sha512-6lectaA+utD2vvlf0T8tkwX1SOhMClv5wAlC8SRsN5fa/pSo1WcplrNZp1Vxst0zlfaLHJqUQrx9c128AiHkQQ==",
+ "dev": true,
+ "requires": {
+ "comment-json": "1.1.3"
+ }
+ },
+ "ts-node": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.3.0.tgz",
+ "integrity": "sha1-wTxqMCTjC+EYDdUwOPwgkonUv2k=",
+ "dev": true,
+ "requires": {
+ "arrify": "1.0.1",
+ "chalk": "2.1.0",
+ "diff": "3.3.1",
+ "make-error": "1.3.0",
+ "minimist": "1.2.0",
+ "mkdirp": "0.5.1",
+ "source-map-support": "0.4.18",
+ "tsconfig": "6.0.0",
+ "v8flags": "3.0.1",
+ "yn": "2.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "diff": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz",
+ "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ },
+ "v8flags": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.0.1.tgz",
+ "integrity": "sha1-3Oj8N5wX2fLJ6e142JzgAFKxt2s=",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "1.0.1"
+ }
+ }
+ }
+ },
+ "tsconfig": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-6.0.0.tgz",
+ "integrity": "sha1-aw6DdgA9evGGT434+J3QBZ/80DI=",
+ "dev": true,
+ "requires": {
+ "strip-bom": "3.0.0",
+ "strip-json-comments": "2.0.1"
+ },
+ "dependencies": {
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ }
+ }
+ },
+ "tsconfig-paths": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.1.3.tgz",
+ "integrity": "sha512-Q8QfUfp/gzk3ahny/fHG4VKycBxR4iFULajHYTlJvo2rvvqjXManF2M8unbBET4xlfF2v7jqkimd/cnC9+bmEw==",
+ "dev": true,
+ "requires": {
+ "deepmerge": "2.1.0",
+ "strip-bom": "3.0.0",
+ "strip-json-comments": "2.0.1"
+ },
+ "dependencies": {
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true
+ }
+ }
+ },
+ "tslib": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
+ "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ=="
+ },
+ "tslint": {
+ "version": "5.9.1",
+ "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz",
+ "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "builtin-modules": "1.1.1",
+ "chalk": "2.3.2",
+ "commander": "2.15.0",
+ "diff": "3.5.0",
+ "glob": "7.1.2",
+ "js-yaml": "3.11.0",
+ "minimatch": "3.0.4",
+ "resolve": "1.5.0",
+ "semver": "5.5.0",
+ "tslib": "1.9.0",
+ "tsutils": "2.22.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz",
+ "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.3.0"
+ }
+ },
+ "commander": {
+ "version": "2.15.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.0.tgz",
+ "integrity": "sha512-7B1ilBwtYSbetCgTY1NJFg+gVpestg0fdA1MhC1Vs4ssyfSXnCAjFr+QcQM9/RedXC0EaUx1sG8Smgw2VfgKEg==",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "diff": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.11"
+ }
+ },
+ "resolve": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz",
+ "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==",
+ "dev": true,
+ "requires": {
+ "path-parse": "1.0.5"
+ }
+ },
+ "semver": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
+ "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz",
+ "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==",
+ "dev": true,
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "tsutils": {
+ "version": "2.22.2",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.22.2.tgz",
+ "integrity": "sha512-u06FUSulCJ+Y8a2ftuqZN6kIGqdP2yJjUPEngXqmdPND4UQfb04igcotH+dw+IFr417yP6muCLE8/5/Qlfnx0w==",
+ "dev": true,
+ "requires": {
+ "tslib": "1.9.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
+ "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==",
+ "dev": true
+ }
+ }
+ },
+ "tty-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
+ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+ "dev": true
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "tv4": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz",
+ "integrity": "sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM=",
+ "dev": true
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+ "dev": true,
+ "optional": true
+ },
+ "type-detect": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.5.tgz",
+ "integrity": "sha512-N9IvkQslUGYGC24RkJk1ba99foK6TkwC2FHAEBlQFBP0RxQZS8ZpJuAZcwiY/w9ZJHFQb1aOXBI60OdxhTrwEQ==",
+ "dev": true
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "typescript": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz",
+ "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "2.8.29",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
+ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "source-map": "0.5.7",
+ "uglify-to-browserify": "1.0.2",
+ "yargs": "3.10.0"
+ }
+ },
+ "uglify-to-browserify": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
+ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+ "dev": true,
+ "optional": true
+ },
+ "uglifyjs-webpack-plugin": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.4.tgz",
+ "integrity": "sha512-z0IbjpW8b3O/OVn+TTZN4pI29RN1zktFBXLIzzfZ+++cUtZ1ERSlLWgpE/5OERuEUs1ijVQnpYAkSlpoVmQmSQ==",
+ "dev": true,
+ "requires": {
+ "cacache": "10.0.4",
+ "find-cache-dir": "1.0.0",
+ "schema-utils": "0.4.5",
+ "serialize-javascript": "1.4.0",
+ "source-map": "0.6.1",
+ "uglify-es": "3.3.9",
+ "webpack-sources": "1.1.0",
+ "worker-farm": "1.6.0"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
+ "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "uglify-es": {
+ "version": "3.3.9",
+ "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
+ "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
+ "dev": true,
+ "requires": {
+ "commander": "2.13.0",
+ "source-map": "0.6.1"
+ }
+ },
+ "webpack-sources": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz",
+ "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==",
+ "dev": true,
+ "requires": {
+ "source-list-map": "2.0.0",
+ "source-map": "0.6.1"
+ }
+ }
+ }
+ },
+ "underscore.string": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.0.3.tgz",
+ "integrity": "sha1-Rhe4waJQz25QZPu7Nj0PqWzxRVI=",
+ "dev": true
+ },
+ "union-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
+ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
+ "dev": true,
+ "requires": {
+ "arr-union": "3.1.0",
+ "get-value": "2.0.6",
+ "is-extendable": "0.1.1",
+ "set-value": "0.4.3"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "set-value": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
+ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-extendable": "0.1.1",
+ "is-plain-object": "2.0.4",
+ "to-object-path": "0.3.0"
+ }
+ }
+ }
+ },
+ "unique-filename": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz",
+ "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=",
+ "dev": true,
+ "requires": {
+ "unique-slug": "2.0.0"
+ }
+ },
+ "unique-slug": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz",
+ "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=",
+ "dev": true,
+ "requires": {
+ "imurmurhash": "0.1.4"
+ }
+ },
+ "universalify": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
+ "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
+ "dev": true
+ },
+ "unquote": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.0.tgz",
+ "integrity": "sha1-mOH8YItrhUx1r7G5WvwJm6adlC8=",
+ "dev": true
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "dev": true,
+ "requires": {
+ "has-value": "0.3.1",
+ "isobject": "3.0.1"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "dev": true,
+ "requires": {
+ "get-value": "2.0.6",
+ "has-values": "0.1.4",
+ "isobject": "2.1.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+ "dev": true
+ }
+ }
+ },
+ "upath": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.4.tgz",
+ "integrity": "sha512-d4SJySNBXDaQp+DPrziv3xGS6w3d2Xt69FijJr86zMPBy23JEloMCEOUBBzuN7xCtjLCnmB9tI/z7SBCahHBOw==",
+ "dev": true
+ },
+ "uri-js": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz",
+ "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=",
+ "dev": true,
+ "requires": {
+ "punycode": "2.1.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz",
+ "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=",
+ "dev": true
+ }
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "dev": true
+ },
+ "url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "dev": true,
+ "requires": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+ "dev": true
+ }
+ }
+ },
+ "use": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz",
+ "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.1"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+ "dev": true
+ }
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "uuid": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
+ "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==",
+ "dev": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz",
+ "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==",
+ "dev": true,
+ "requires": {
+ "spdx-correct": "3.0.0",
+ "spdx-expression-parse": "3.0.0"
+ }
+ },
+ "vargs": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/vargs/-/vargs-0.1.0.tgz",
+ "integrity": "sha1-a2GE2mUgzDIEzhtAfKwm2SYJ6/8=",
+ "dev": true
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "1.3.0"
+ }
+ },
+ "vinyl": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz",
+ "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=",
+ "dev": true,
+ "requires": {
+ "clone": "2.1.1",
+ "clone-buffer": "1.0.0",
+ "clone-stats": "1.0.0",
+ "cloneable-readable": "1.0.0",
+ "remove-trailing-separator": "1.1.0",
+ "replace-ext": "1.0.0"
+ }
+ },
+ "vlq": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.2.tgz",
+ "integrity": "sha1-4xbVJXtAuGu0PLjV/qXX9U1rDKE=",
+ "dev": true
+ },
+ "vm-browserify": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
+ "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
+ "dev": true,
+ "requires": {
+ "indexof": "0.0.1"
+ }
+ },
+ "watchpack": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.5.0.tgz",
+ "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==",
+ "dev": true,
+ "requires": {
+ "chokidar": "2.0.2",
+ "graceful-fs": "4.1.11",
+ "neo-async": "2.5.0"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ }
+ }
+ },
+ "wd": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/wd/-/wd-0.4.0.tgz",
+ "integrity": "sha1-9vSk4gL2ikt2h652WusTDIQ0H5o=",
+ "dev": true,
+ "requires": {
+ "archiver": "0.14.4",
+ "async": "1.0.0",
+ "lodash": "3.9.3",
+ "q": "1.4.1",
+ "request": "2.55.0",
+ "underscore.string": "3.0.3",
+ "vargs": "0.1.0"
+ },
+ "dependencies": {
+ "asn1": {
+ "version": "0.1.11",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz",
+ "integrity": "sha1-VZvhg3bQik7E2+gId9J4GGObLfc=",
+ "dev": true
+ },
+ "assert-plus": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz",
+ "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=",
+ "dev": true
+ },
+ "async": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz",
+ "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=",
+ "dev": true
+ },
+ "aws-sign2": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz",
+ "integrity": "sha1-xXED96F/wDfwLXwuZLYC6iI/fWM=",
+ "dev": true
+ },
+ "bluebird": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz",
+ "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=",
+ "dev": true
+ },
+ "boom": {
+ "version": "2.10.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
+ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+ "dev": true,
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ },
+ "caseless": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.9.0.tgz",
+ "integrity": "sha1-t7Zc5r8UE4hlOc/VM/CzDv+pz4g=",
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz",
+ "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "0.0.5"
+ }
+ },
+ "cryptiles": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
+ "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+ "dev": true,
+ "requires": {
+ "boom": "2.10.1"
+ }
+ },
+ "delayed-stream": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz",
+ "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=",
+ "dev": true
+ },
+ "form-data": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz",
+ "integrity": "sha1-Jvi8JtpkQOKZy9z7aQNcT3em5GY=",
+ "dev": true,
+ "requires": {
+ "async": "0.9.2",
+ "combined-stream": "0.0.7",
+ "mime-types": "2.0.14"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
+ "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
+ "dev": true
+ }
+ }
+ },
+ "har-validator": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz",
+ "integrity": "sha1-2DhCsOtMQ1lgrrEIoGejqpTA7rI=",
+ "dev": true,
+ "requires": {
+ "bluebird": "2.11.0",
+ "chalk": "1.1.3",
+ "commander": "2.15.0",
+ "is-my-json-valid": "2.16.1"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.15.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.0.tgz",
+ "integrity": "sha512-7B1ilBwtYSbetCgTY1NJFg+gVpestg0fdA1MhC1Vs4ssyfSXnCAjFr+QcQM9/RedXC0EaUx1sG8Smgw2VfgKEg==",
+ "dev": true
+ }
+ }
+ },
+ "hawk": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz",
+ "integrity": "sha1-HnMc45RH+h0PbXB/e87r7A/R7B8=",
+ "dev": true,
+ "requires": {
+ "boom": "2.10.1",
+ "cryptiles": "2.0.5",
+ "hoek": "2.16.3",
+ "sntp": "1.0.9"
+ }
+ },
+ "hoek": {
+ "version": "2.16.3",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
+ "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
+ "dev": true
+ },
+ "http-signature": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz",
+ "integrity": "sha1-T72sEyVZqoMjEh5UB3nAoBKyfmY=",
+ "dev": true,
+ "requires": {
+ "asn1": "0.1.11",
+ "assert-plus": "0.1.5",
+ "ctype": "0.5.3"
+ }
+ },
+ "lodash": {
+ "version": "3.9.3",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.9.3.tgz",
+ "integrity": "sha1-AVnoaDL+/8bWHYUrEqlTuZSWvTI=",
+ "dev": true
+ },
+ "mime-db": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz",
+ "integrity": "sha1-PQxjGA9FjrENMlqqN9fFiuMS6dc=",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz",
+ "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.12.0"
+ }
+ },
+ "node-uuid": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz",
+ "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=",
+ "dev": true
+ },
+ "oauth-sign": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.6.0.tgz",
+ "integrity": "sha1-fb6uRPbKRU4fFoRR1jB0ZzWBPOM=",
+ "dev": true
+ },
+ "qs": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz",
+ "integrity": "sha1-9854jld33wtQENp/fE5zujJHD1o=",
+ "dev": true
+ },
+ "request": {
+ "version": "2.55.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.55.0.tgz",
+ "integrity": "sha1-11wc32eddrsQD5v/4f5VG1wk6T0=",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "0.5.0",
+ "bl": "0.9.5",
+ "caseless": "0.9.0",
+ "combined-stream": "0.0.7",
+ "forever-agent": "0.6.1",
+ "form-data": "0.2.0",
+ "har-validator": "1.8.0",
+ "hawk": "2.3.1",
+ "http-signature": "0.10.1",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.0.14",
+ "node-uuid": "1.4.8",
+ "oauth-sign": "0.6.0",
+ "qs": "2.4.2",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.3",
+ "tunnel-agent": "0.4.3"
+ }
+ },
+ "sntp": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
+ "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
+ "dev": true,
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ },
+ "tunnel-agent": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
+ "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
+ "dev": true
+ }
+ }
+ },
+ "webpack": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.1.1.tgz",
+ "integrity": "sha512-PwxKH81yLjbPyBSZvPj/Ji9pT99XOGFA0t6zipoOKOMNRZ+09N39J5Uzcx3rYKnsHgKwDnfGkvzac4MF2Taknw==",
+ "dev": true,
+ "requires": {
+ "acorn": "5.5.3",
+ "acorn-dynamic-import": "3.0.0",
+ "ajv": "6.3.0",
+ "ajv-keywords": "3.1.0",
+ "chrome-trace-event": "0.1.2",
+ "enhanced-resolve": "4.0.0",
+ "eslint-scope": "3.7.1",
+ "loader-runner": "2.3.0",
+ "loader-utils": "1.1.0",
+ "memory-fs": "0.4.1",
+ "micromatch": "3.1.9",
+ "mkdirp": "0.5.1",
+ "neo-async": "2.5.0",
+ "node-libs-browser": "2.1.0",
+ "schema-utils": "0.4.5",
+ "tapable": "1.0.0",
+ "uglifyjs-webpack-plugin": "1.2.4",
+ "watchpack": "1.5.0",
+ "webpack-sources": "1.0.2"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz",
+ "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==",
+ "dev": true
+ },
+ "ajv": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.3.0.tgz",
+ "integrity": "sha1-FlCkERTvAFdMrBC4Ay2PTBSBLac=",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "1.0.0",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.3.1"
+ }
+ }
+ }
+ },
+ "webpack-core": {
+ "version": "0.6.9",
+ "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz",
+ "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=",
+ "dev": true,
+ "requires": {
+ "source-list-map": "0.1.8",
+ "source-map": "0.4.4"
+ },
+ "dependencies": {
+ "source-list-map": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz",
+ "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "dev": true,
+ "requires": {
+ "amdefine": "1.0.1"
+ }
+ }
+ }
+ },
+ "webpack-sources": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.2.tgz",
+ "integrity": "sha512-Y7UddMCv6dGjy81nBv6nuQeFFIt5aalHm7uyDsAsW86nZwfOVPGRr3XMjEQLaT+WKo8rlzhC9qtbJvYKLtAwaw==",
+ "dev": true,
+ "requires": {
+ "source-list-map": "2.0.0",
+ "source-map": "0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "which": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
+ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
+ "dev": true,
+ "requires": {
+ "isexe": "2.0.0"
+ }
+ },
+ "window-size": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
+ "dev": true,
+ "optional": true
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+ "dev": true
+ },
+ "worker-farm": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz",
+ "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==",
+ "dev": true,
+ "requires": {
+ "errno": "0.1.7"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+ "dev": true
+ },
+ "y18n": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+ "dev": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ },
+ "yargs": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "camelcase": "1.2.1",
+ "cliui": "2.1.0",
+ "decamelize": "1.2.0",
+ "window-size": "0.1.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "yn": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz",
+ "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=",
+ "dev": true
+ },
+ "zip-stream": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.5.2.tgz",
+ "integrity": "sha1-Mty8UG0Nq00hNyYlvX66rDwv/1Y=",
+ "dev": true,
+ "requires": {
+ "compress-commons": "0.2.9",
+ "lodash": "3.2.0",
+ "readable-stream": "1.0.34"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "lodash": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.2.0.tgz",
+ "integrity": "sha1-S/UKMkP5rrC6xBpV09WZBnWkYvs=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index ddd63d2..5ac7352 100644
--- a/package.json
+++ b/package.json
@@ -1,15 +1,122 @@
{
"name": "json-schema-form-core",
- "version": "1.0.0-alpha.4",
+ "version": "1.0.0-alpha.5",
"description": "JSON-Schema and JSON-UI-Schema utilities for form generation.",
- "main": "dist/json-schema-form-core.js",
+ "main": "index.js",
+ "nyc": {
+ "include": [
+ "src/*.ts",
+ "src/**/*.ts"
+ ],
+ "exclude": [
+ "node_modules",
+ "dist",
+ "*.d.ts",
+ "src/**/MiscJSDoc.ts"
+ ],
+ "extension": [
+ ".ts"
+ ],
+ "require": [
+ "ts-node/register"
+ ],
+ "reporter": [
+ "html"
+ ],
+ "all": true
+ },
+ "lint-staged": {
+ "*.@(js)": [
+ "eslint --fix",
+ "git add"
+ ],
+ "*.@(ts)": [
+ "tslint --fix",
+ "git add"
+ ]
+ },
+ "scripts-info": {
+ "info": "List available script",
+ "build_all": "Build all packages (ES6, CJS, UMD) and generate packages",
+ "build_cjs": "Build CJS package with clean up existing build",
+ "build_esm5": "Build ESM/ES5 package with clean up existing build",
+ "build_esm2015": "Build ESM/ES2015 package with clean up existing build",
+ "build_closure_core": "Minify Global core build using closure compiler",
+ "build_global": "Build Global package, then minify build",
+ "build_perf": "Build CJS & Global build, run macro performance test",
+ "build_docs": "Build ESM2015 & global package, create documentation using it",
+ "clean_dist_cjs": "Clean up existing CJS package output",
+ "clean_dist_esm5": "Clean up existing ESM/ES5 package output",
+ "clean_dist_esm2015": "Clean up existing ESM/ES2015 package output",
+ "clean_dist_global": "Clean up existing Global package output",
+ "commit": "Run git commit wizard",
+ "compile_dist_cjs": "Compile codebase into CJS module",
+ "compile_module_esm5": "Compile codebase into ESM/ES5",
+ "compile_dist_esm2015": "Compile codebase into ESM/ES2015",
+ "cover": "Execute test coverage",
+ "lint_perf": "Run lint against performance test suite",
+ "lint_spec": "Run lint against test spec",
+ "lint_src": "Run lint against source",
+ "lint": "Run lint against everything",
+ "perf": "Run macro performance benchmark",
+ "perf_micro": "Run micro performance benchmark",
+ "test_mocha": "Execute mocha test runner against existing test spec build",
+ "test_browser": "Execute mocha test runner on browser against existing test spec build",
+ "test": "Clean up existing test spec build, build test spec and execute mocha test runner",
+ "test:cover": "Execute test coverage",
+ "tests2png": "Generate marble diagram image from test spec",
+ "watch": "Watch codebase, trigger compile when source code changes"
+ },
"scripts": {
- "build": "webpack",
- "watch": "webpack --watch",
- "dist-untested": "webpack --config webpack.config.dist.js",
- "tslint": "tslint \"src/**/*.ts\"",
- "test": "mocha --opts .mocha",
- "testdoc": "mocha --opts .mocha && mocha --opts .mocha.md > docs/test.md"
+ "precommit": "lint-staged",
+ "commitmsg": "validate-commit-msg",
+ "info": "npm-scripts-info",
+ "build_all": "npm-run-all clean_dist copy_sources build_cjs build_esm5 build_esm2015 build_esm5_for_rollup build_umd generate_packages",
+ "build_cjs": "npm-run-all clean_dist_cjs compile_dist_cjs",
+ "build_esm5": "npm-run-all clean_dist_esm5 compile_dist_esm5",
+ "build_esm5_for_rollup": "npm-run-all clean_dist_esm5_for_rollup compile_dist_esm5_for_rollup",
+ "build_esm2015": "npm-run-all clean_dist_esm2015 compile_dist_esm2015",
+ "build_esm2015_for_docs": "npm-run-all clean_dist_esm2015 compile_dist_esm2015_for_docs",
+ "build_closure_core": "node ./tools/make-closure-core.js",
+ "build_global": "npm-run-all clean_dist_global build_esm5_for_rollup && mkdirp ./dist/global && node ./tools/make-umd-bundle.js && npm-run-all build_closure_core clean_dist_esm5_for_rollup",
+ "build_umd": "npm-run-all clean_dist_global && mkdirp ./dist/global && node ./tools/make-umd-bundle.js && npm-run-all build_closure_core",
+ "build_perf": "webdriver-manager update && npm-run-all build_cjs build_global perf",
+ "build_cover": "shx rm -rf ./dist/ && npm-run-all build_all build_spec cover",
+ "build_docs": "npm-run-all build_global build_esm2015_for_docs build_cjs tests2png decision_tree_widget && esdoc -c esdoc.json && npm-run-all clean_dist_esm2015",
+ "build_spec": "tsc --project ./spec --pretty",
+ "build_spec_browser": "webpack --config spec/support/webpack.mocha.config.js",
+ "clean_spec": "shx rm -rf spec-js",
+ "clean_dist": "shx rm -rf ./dist",
+ "clean_dist_cjs": "shx rm -rf ./dist/cjs",
+ "clean_dist_esm5": "shx rm -rf ./dist/esm5",
+ "clean_dist_esm5_for_rollup": "shx rm -rf ./dist/esm5_for_rollup",
+ "clean_dist_esm2015": "shx rm -rf ./dist/esm2015",
+ "clean_dist_global": "shx rm -rf ./dist/global",
+ "commit": "git-cz",
+ "compile_dist_cjs": "tsc -p ./tsconfig/tsconfig.cjs.json",
+ "compile_dist_esm5": "tsc -p ./tsconfig/tsconfig.esm5.json",
+ "compile_dist_esm2015": "tsc -p ./tsconfig/tsconfig.esm2015.json",
+ "compile_dist_esm2015_for_docs": "tsc ./dist/src/Core.ts ./dist/src/MiscJSDoc.ts -m es2015 --sourceMap --outDir ./dist/es6 --target es2015 -d --diagnostics --pretty --noImplicitAny --noImplicitReturns --noImplicitThis --suppressImplicitAnyIndexErrors --moduleResolution node",
+ "compile_dist_esm5_for_rollup": "tsc -p ./tsconfig/tsconfig.esm5.rollup.json",
+ "copy_sources": "mkdirp dist && shx cp -r ./src/ ./dist/src",
+ "decision_tree_widget": "cd doc/decision-tree-widget && npm run build && cd ../..",
+ "doctoc": "doctoc CONTRIBUTING.md",
+ "generate_packages": "node .make-packages.js",
+ "_lint_perf": "eslint perf/",
+ "lint_spec": "tslint --project tsconfig.json -c tslint.json \"spec/**/*.ts\"",
+ "lint_src": "tslint --project tsconfig.json -c tslint.json \"src/**/*.ts\" -e \"src/**/json-schema.ts\"",
+ "lint": "npm-run-all --parallel lint_*",
+ "perf": "protractor protractor.conf.js",
+ "perf_micro": "node ./perf/micro/index.js",
+ "prepare": "shx rm -rf ./typings && npm run build_all",
+ "prepublish": "shx rm -rf ./typings && npm run build_all",
+ "publish_docs": "./publish_docs.sh",
+ "test_browser": "npm-run-all build_spec_browser && opn spec/support/mocha-browser-runner.html",
+ "test": "cross-env TS_NODE_FAST=true mocha -r ts-node/register -r tsconfig-paths/register --opts spec/support/coverage.opts \"spec/**/*.spec.ts\"",
+ "test:cover": "cross-env TS_NODE_FAST=true nyc npm test",
+ "test:circular": "dependency-cruise --validate .dependency-cruiser.json -x \"^node_modules\" src",
+ "tests2png": "tsc && mkdirp tmp/docs/img && mkdirp spec-js/support && shx cp spec/support/*.opts spec-js/support/ && mocha --opts spec/support/tests2png.opts spec-js",
+ "watch": "watch \"echo triggering build && npm run build_test && echo build completed\" src -d -u -w=15"
},
"author": "json-schema-form",
"contributors": [
@@ -36,42 +143,59 @@
"json-schema-form-core",
"json-schema-form",
"json-ui-schema",
- "json-schema"
+ "json-schema",
+ "jsonschema"
],
"devDependencies": {
- "@types/chai": "^3.4.34",
- "@types/mocha": "^2.2.33",
- "@types/node": "^6.0.42",
- "babel-core": "^6.18.2",
- "babel-loader": "^6.2.9",
- "babel-plugin-syntax-async-functions": "^6.13.0",
- "babel-plugin-transform-async-to-generator": "^6.22.0",
- "babel-plugin-transform-flow-strip-types": "^6.21.0",
- "babel-polyfill": "^6.20.0",
- "babel-preset-es2015": "^6.18.0",
- "babel-preset-latest": "^6.16.0",
- "babel-preset-stage-0": "^6.22.0",
- "babel-register": "^6.18.0",
- "chai": "^3.5.0",
- "json-refs": "^2.1.6",
- "karma": "^1.3.0",
- "karma-babel-preprocessor": "^6.0.1",
- "karma-chai-sinon": "^0.1.5",
- "karma-coverage": "^1.1.1",
- "karma-growler-reporter": "0.0.2",
- "karma-mocha": "^1.3.0",
- "karma-phantomjs-launcher": "^1.0.2",
- "karma-webpack": "^1.8.1",
- "mocha": "^3.2.0",
+ "@angular-devkit/build-optimizer": "0.0.31",
+ "@types/chai": "^3.5.2",
+ "@types/lodash": "^4.14.80",
+ "@types/mocha": "^2.2.44",
+ "@types/node": "^8.0.47",
+ "@types/sinon": "^2.3.7",
+ "@types/sinon-chai": "^2.7.29",
+ "ajv": "^6.3.0",
+ "chai": "^4.1.2",
+ "cookiejar": "^2.1.1",
+ "cross-env": "^5.1.4",
+ "dependency-cruiser": "^2.6.0",
+ "djv": "^2.0.0",
+ "fs-extra": "^4.0.2",
+ "glob": "^7.1.2",
+ "google-closure-compiler-js": "^20170910.0.1",
+ "klaw-sync": "^3.0.0",
+ "lodash": "^4.17.4",
+ "mkdirp": "^0.5.1",
+ "mocha": "^5.0.4",
+ "mocha-in-sauce": "0.0.1",
+ "npm-run-all": "^4.1.1",
+ "npm-scripts-info": "^0.3.6",
+ "nyc": "^11.2.1",
"objectpath": "^1.2.1",
- "sinon": "^1.17.7",
- "sinon-chai": "^2.8.0",
- "ts-loader": "^1.2.2",
- "ts-node": "^1.2.1",
- "tslint": "^4.0.2",
- "tslint-loader": "^3.2.1",
- "tv4": "^1.2.7",
- "typescript": "~2.0.3",
- "webpack": "^2.2.1"
- }
+ "opn-cli": "^3.1.0",
+ "rollup": "^0.51.3",
+ "rollup-plugin-inject": "^2.0.0",
+ "rollup-plugin-node-resolve": "^3.0.0",
+ "rsync": "^0.6.1",
+ "shx": "^0.2.2",
+ "sinon": "^4.1.2",
+ "sinon-chai": "^2.14.0",
+ "source-map-support": "^0.4.18",
+ "spec-js": "^1.0.0",
+ "ts-config": "^17.0.0",
+ "ts-node": "^3.3.0",
+ "tsconfig-paths": "^3.1.3",
+ "tslint": "^5.9.1",
+ "tv4": "^1.3.0",
+ "typescript": "^2.7.2",
+ "uri-js": "^3.0.2",
+ "webpack": "^4.1.1"
+ },
+ "dependencies": {
+ "tslib": "^1.9.0"
+ },
+ "engines": {
+ "npm": ">=2.0.0"
+ },
+ "typings": "./dist/package/typings/Core.d.ts"
}
diff --git a/spec/api.spec.js b/spec/api.spec.js
new file mode 100644
index 0000000..e12cfaa
--- /dev/null
+++ b/spec/api.spec.js
@@ -0,0 +1,134 @@
+import { should } from 'chai';
+import { JSONSchemaForm, API } from '../dist/package/api';
+
+should();
+
+describe('api.js', () => {
+ it('should hold an API class', () => {
+ API.should.be.an('function');
+ JSONSchemaForm.should.be.an('function');
+ });
+
+ describe('API', () => {
+ it('should return an instance of JSONSchemaForm when form is called', () => {
+ let api = new API();
+ let result = api.form('test');
+// console.log(result);
+ result.instanceOf(JSONSchemaForm);
+ });
+ });
+
+ // describe('validate', () => {
+ // const form = { 'key': [ 'hero' ], 'schema': { 'type': 'string' }};
+ // it('should return a result object {"error":null, "missing":[], "valid":true}, with valid set to true when the data is valid for the schema', () => {
+ // let value = 'Batman';
+ // let result = validate(form, value);
+ // should.not.exist(result.error);
+ // result.missing.should.be.a('array');
+ // result.missing.length.should.equal(0);
+ // result.valid.should.equal(true);
+ // });
+
+ // it('should return an error object with a message "Invalid type: array (expected string)" when the data is not valid', () => {
+ // let value = [0];
+ // let result = validate(form, value);
+ // result.error.message.should.eq("Invalid type: array (expected string)");
+ // });
+ // });
+});
+
+/**
+ *
+ JsonRefs
+ .resolveRefs(defRefJsonSchema, { "filter": ['relative', 'local'] })
+ .then(function (res) {
+ // https://github.com/whitlockjc/json-refs/blob/master/docs/API.md#module_JsonRefs.resolveRefs
+
+
+
+jsf.form('myForm', schema, ui, model [, state]) // create, leave the bind to html to asf, rsf etc..
+
+jsf.form('myForm').schema(schema).ui(uiSchema)
+ .state('state', state)
+ .render()
+ .then(finished()=>{}, notify()=>{});
+
+jsf.form('myForm').schema
+jsf.form('myForm').ui.schema
+
+jsf.form('myForm').ui.actions
+jsf.form('myForm').ui.policies
+
+jsf.form('myForm').scope
+jsf.form('myForm').intermediate canonical intermediate language
+jsf.form('myForm').ui.views ['default']
+
+
+
+jsf.form('myForm').model('decision', true) // dynamic set model
+jsf.form('myForm').schema('decision').readonly // access to merged form or schema object
+jsf.form('myForm').schema([ "user", "age" ], schema [, form]) // perhaps replace schema definition for single field
+jsf.form('myForm').schema([ "user", "age" ]).onChange((old, new) => { }) // external listeners
+jsf.form('myForm').onChange((key, old, new) => { }) // external listeners of whole form
+jsf.form('myForm').validate(schema, form, model) // access to most of the providers as api
+
+
+// call jsonSchema.render(function(templates) { }).notify() to signal completion of definition
+var myForm = jsonSchema.form('myForm')
+ .schema({ 'type': 'object',
+ 'properties': {},
+ 'ui':{
+ [{'title': 'Administrator', 'fields':[]}, {'title': 'Data entry', 'fields':[], default: true }]}
+ })
+ .model(data)
+ .validate(function(schema, data) { return {"error":null, "missing":[], "valid":true} })
+ .presentation('AngularBootstrap', {actions: {template: actionsTemplate, builder: jsonSchema.builders.default}})
+ .composition('AngularBootstrap', {actions: {template: actionsTemplate, builder: jsonSchema.builders.default}})
+ .builder('array', function(){ }, 'theme': '*')
+ .templates({actions: {template: actionsTemplate, builder: jsonSchema.builders.default}})
+ .builders({ 'table': function(){ }, 'condition': function(){ } })
+ .rules({'policies': [{ }]})
+ .actions([{ }])
+ .scripts({ 'findUser': function() {} })
+ .listen((event, field, key) => {})
+ .listen(['onChange','onTemplateUpdate','onValidate'], (event, field, key) => {})
+ .presentation('bootstrapDecorator', {
+ actions: {template: actionsTemplate, builder: defaults},
+ array: {template: arrayTemplate, builder: [sfField, ngModelOptions, ngModel, array, condition]},
+ button: {template: submitTemplate, builder: defaults},
+ checkbox: {template: checkboxTemplate, builder: defaults},
+ checkboxes: {template: checkboxesTemplate, builder: [sfField, ngModelOptions, ngModel, array, condition]},
+ conditional: {template: sectionTemplate, builder: [sfField, simpleTransclusion, condition]},
+ 'default': {template: defaultTemplate, builder: defaults},
+ fieldset: {template: fieldsetTemplate, builder: [sfField, simpleTransclusion, condition]},
+ help: {template: helpTemplate, builder: defaults},
+ number: {template: defaultTemplate, builder: defaults.concat(numeric)},
+ password: {template: defaultTemplate, builder: defaults},
+ radios: {template: radiosTemplate, builder: defaults},
+ 'radios-inline': {template: radiosInlineTemplate, builder: defaults},
+ radiobuttons: {template: radiobuttonsTemplate, builder: defaults},
+ section: {template: sectionTemplate, builder: [sfField, simpleTransclusion, condition]},
+ select: {template: selectTemplate, builder: defaults.concat(selectPlaceholder)},
+ submit: {template: submitTemplate, builder: defaults},
+ tabarray: {template: tabarrayTemplate, builder: [sfField, ngModelOptions, ngModel, array, condition]},
+ tabs: {template: tabsTemplate, builder: [sfField, ngModelOptions, tabs, condition]},
+ textarea: {template: textareaTemplate, builder: defaults},
+
+ 'readonly': {template: textareaTemplate, builder: defaults}
+ 'annotation': [ // pass the template properties to change stle of annotation based on format
+ {'format': 'blue', 'path': '/bootstrap/textarea.html', template: textareaTemplate, builder: defaults}
+ ]
+ }, [])
+
+util = jsonSchema.form('myForm')
+util.lookup
+util.merge
+util.lookup
+
+
+describe('api.js', () => {
+ it('should hold all the public functions of the API', () => {
+ jsf.should.be.an('function');
+ });
+});
+ */
diff --git a/src/lib/canonical-title-map.spec.js b/spec/canonical-title-map.spec.ts
similarity index 88%
rename from src/lib/canonical-title-map.spec.js
rename to spec/canonical-title-map.spec.ts
index 11c4430..a521b72 100644
--- a/src/lib/canonical-title-map.spec.js
+++ b/spec/canonical-title-map.spec.ts
@@ -1,8 +1,8 @@
-import chai from 'chai';
+import { should } from 'chai';
import { describe, it} from 'mocha';
-import canonicalTitleMap from './canonical-title-map';
+import { canonicalTitleMap } from '../dist/package/Core';
-chai.should();
+should();
describe('canonical-title-map.js', () => {
it('should hold a normalisation function for enums and titleMaps to generate titleMaps', () => {
@@ -46,12 +46,12 @@ describe('canonical-title-map.js', () => {
result.should.be.deep.equal(titlemap);
});
- it('should return a titleMap for a titleMap object with original enum, returning "undefined" name if the enum value is not found', () => {
+ it('should return a titleMap for a titleMap object with original enum else returning "undefined"', () => {
enumeration.push('Mr Freeze');
let result = canonicalTitleMap(titlemapObj, enumeration);
titlemap.push({
- "name": undefined,
- "value": "Mr Freeze"
+ 'name': undefined,
+ 'value': 'Mr Freeze'
})
result.should.be.deep.equal(titlemap);
});
diff --git a/src/module.spec.js b/spec/core.spec.ts
similarity index 63%
rename from src/module.spec.js
rename to spec/core.spec.ts
index 65828a9..31da5bf 100644
--- a/src/module.spec.js
+++ b/spec/core.spec.ts
@@ -1,5 +1,5 @@
-import chai from 'chai';
-import { describe, it} from 'mocha';
+/* tslint:disable:quotemark */
+import { should } from 'chai';
import {
merge,
select,
@@ -9,12 +9,12 @@ import {
schemaDefaults,
canonicalTitleMap,
jsonref
-} from './module';
+} from '../dist/package/Core';
-chai.should();
+should();
-describe('module.js', () => {
- it('should hold all the public functions of the API', () => {
+describe('core.js', () => {
+ it('should hold all the public functions of the original API', () => {
merge.should.be.an('function');
select.should.be.an('function');
traverseSchema.should.be.an('function');
@@ -25,4 +25,10 @@ describe('module.js', () => {
canonicalTitleMap.should.be.an('function');
jsonref.should.be.an('function');
});
+
+ describe('Core API', () => {
+ it('should contain API'/*,
+ () => {}
+ */);
+ });
});
diff --git a/spec/helpers/ambient.d.ts b/spec/helpers/ambient.d.ts
new file mode 100644
index 0000000..6eec90c
--- /dev/null
+++ b/spec/helpers/ambient.d.ts
@@ -0,0 +1,12 @@
+// ambient declarations to allow modules do not have type definition
+declare module 'mocha/lib/interfaces/common' {
+}
+
+declare module 'escape-string-regexp' {
+}
+
+declare module 'mocha/lib/suite' {
+}
+
+declare module 'mocha/lib/test' {
+}
diff --git a/spec/helpers/testScheduler-ui.ts b/spec/helpers/testScheduler-ui.ts
new file mode 100644
index 0000000..9578d40
--- /dev/null
+++ b/spec/helpers/testScheduler-ui.ts
@@ -0,0 +1,246 @@
+///
+///
+
+import * as _ from 'lodash';
+import * as commonInterface from 'mocha/lib/interfaces/common';
+import * as escapeRe from 'escape-string-regexp';
+import * as chai from 'chai';
+import * as sinonChai from 'sinon-chai';
+
+import * as Rx from '../../dist/package/Assimilate';
+// import * as marble from './marble-testing';
+
+// setup sinon-chai
+chai.use(sinonChai);
+
+declare const module, global, Suite, Test: any;
+
+if (global && !(typeof window !== 'undefined')) {
+ global.mocha = require('mocha'); // tslint:disable-line:no-require-imports no-var-requires
+ global.Suite = global.mocha.Suite;
+ global.Test = global.mocha.Test;
+}
+
+if (!global.Promise) {
+ global.Promise = require('promise'); // tslint:disable-line:no-require-imports no-var-requires
+}
+
+const diagramFunction = global.asDiagram;
+
+// mocha creates own global context per each test suite, simple patching to global won't deliver its context into test cases.
+// this custom interface is just mimic of existing one amending test scheduler behavior previously test-helper does via global patching.
+module.exports = function(suite) {
+ const suites = [suite];
+
+ suite.on('pre-require', function(context, file, mocha) {
+ const common = (commonInterface)(suites, context);
+
+ context.before = common.before;
+ context.after = common.after;
+ context.beforeEach = common.beforeEach;
+ context.afterEach = common.afterEach;
+ context.run = mocha.options.delay && common.runWithSuite(suite);
+
+ // setting up per-context test scheduler
+ context.rxTestScheduler = null;
+
+ // setting up assertion, helper for marble testing
+ // context.hot = marble.hot;
+ // context.cold = marble.cold;
+ // context.expectObservable = marble.expectObservable;
+ // context.expectSubscriptions = marble.expectSubscriptions;
+ // context.time = marble.time;
+
+ /**
+ * Describe a "suite" with the given `title`
+ * and callback `fn` containing nested suites
+ * and/or tests.
+ */
+
+ context.describe = context.context = function(title, fn) {
+ const testSuite = (Suite).create(suites[0], title);
+ testSuite.file = file;
+ suites.unshift(testSuite);
+ fn.call(testSuite);
+ suites.shift();
+ return testSuite;
+ };
+
+ /**
+ * Pending describe.
+ */
+
+ context.xdescribe = context.xcontext = context.describe.skip = function(title, fn) {
+ const testSuite = (Suite).create(suites[0], title);
+ testSuite.pending = true;
+ suites.unshift(testSuite);
+ fn.call(testSuite);
+ suites.shift();
+ };
+
+ /**
+ * Exclusive suite.
+ */
+
+ context.describe.only = function(title, fn) {
+ const testSuite = context.describe(title, fn);
+ mocha.grep(testSuite.fullTitle());
+ return testSuite;
+ };
+
+ /**
+ * Describe a test case to test type definition
+ * sanity on build time. Recommended only for
+ * exceptional type definition won't be used in test cases.
+ */
+
+ context.type = function (title, fn) {
+ // intentionally does not execute to avoid unexpected side effect occurs by subscription,
+ // or infinite source. Suffecient to check build time only.
+ };
+
+ function stringify(x): string {
+ return JSON.stringify(x, function (key, value) {
+ if (Array.isArray(value)) {
+ return '[' + value
+ .map(function (i) {
+ return '\n\t' + stringify(i);
+ }) + '\n]';
+ }
+ return value;
+ })
+ .replace(/\\"/g, '"')
+ .replace(/\\t/g, '\t')
+ .replace(/\\n/g, '\n');
+ }
+
+ function deleteErrorNotificationStack(marble) {
+ const { notification } = marble;
+ if (notification) {
+ const { kind, error } = notification;
+ if (kind === 'E' && error instanceof Error) {
+ notification.error = { name: error.name, message: error.message };
+ }
+ }
+ return marble;
+ }
+
+ /**
+ * custom assertion formatter for expectObservable test
+ */
+
+ function observableMatcher(actual, expected) {
+ if (Array.isArray(actual) && Array.isArray(expected)) {
+ actual = actual.map(deleteErrorNotificationStack);
+ expected = expected.map(deleteErrorNotificationStack);
+ const passed = _.isEqual(actual, expected);
+ if (passed) {
+ return;
+ }
+
+ let message = '\nExpected \n';
+ actual.forEach((x) => message += `\t${stringify(x)}\n`);
+
+ message += '\t\nto deep equal \n';
+ expected.forEach((x) => message += `\t${stringify(x)}\n`);
+
+ chai.assert(passed, message);
+ } else {
+ chai.assert.deepEqual(actual, expected);
+ }
+ }
+
+ /**
+ * Describe a specification or test-case
+ * with the given `title` and callback `fn`
+ * acting as a thunk.
+ */
+
+ // const it = context.it = context.specify = function(title, fn) {
+ // context.rxTestScheduler = null;
+ // let modified = fn;
+
+ // if (fn && fn.length === 0) {
+ // modified = function () {
+ // context.rxTestScheduler = new Rx.TestScheduler(observableMatcher);
+
+ // try {
+ // fn();
+ // context.rxTestScheduler.flush();
+ // } finally {
+ // context.rxTestScheduler = null;
+ // }
+ // };
+ // }
+
+ // const suite = suites[0];
+ // if (suite.pending) {
+ // modified = null;
+ // }
+ // const test = new (Test)(title, modified);
+ // test.file = file;
+ // suite.addTest(test);
+ // return test;
+ // };
+
+ /**
+ * Describe a specification or test-case
+ * to be represented as marble diagram png.
+ * It will still serve as normal test cases as well.
+ */
+ context.asDiagram = function (label) {
+ if (diagramFunction) {
+ return diagramFunction(label, it);
+ }
+ return it;
+ };
+
+ /**
+ * Exclusive test-case.
+ */
+
+ context.it.only = function(title, fn) {
+ const test = it(title, fn);
+ const reString = '^' + (escapeRe)(test.fullTitle()) + '$';
+ mocha.grep(new RegExp(reString));
+ return test;
+ };
+
+ /**
+ * Pending test case.
+ */
+
+ context.xit = context.xspecify = context.it.skip = function(title) {
+ context.it(title);
+ };
+
+ /**
+ * Number of attempts to retry.
+ */
+ context.it.retries = function(n) {
+ context.retries(n);
+ };
+ });
+};
+
+// register into global instnace if browser test page injects mocha globally
+if (global.Mocha) {
+ (window).Mocha.interfaces['testschedulerui'] = module.exports;
+} else {
+ (mocha).interfaces['testschedulerui'] = module.exports;
+}
+
+// overrides JSON.toStringfy to serialize error object
+Object.defineProperty(Error.prototype, 'toJSON', {
+ value: function () {
+ const alt = {};
+
+ Object.getOwnPropertyNames(this).forEach(function (key) {
+ if (key !== 'stack') {
+ alt[key] = this[key];
+ }
+ }, this);
+ return alt;
+ },
+ configurable: true
+});
diff --git a/spec/json-rules.spec.js b/spec/json-rules.spec.js
new file mode 100644
index 0000000..9b965d0
--- /dev/null
+++ b/spec/json-rules.spec.js
@@ -0,0 +1,77 @@
+import chai from 'chai';
+import { describe, it} from 'mocha';
+import * as jsonrules from './json-rules';
+
+chai.should();
+
+describe('json-rules.js', () => {
+ const uischema = {
+ ui: {
+ "policy": [
+ {
+ "version": "0.0.3-alpha",
+ "description": "I catalogue a business rule that does stuff",
+ // "from" keyword defines the object(s) to append the policy to for determining relative pointer intention
+ // path model[company][i0][users][i1]
+ "from": "/properties/company/items/properties/users/items/properties",
+ "if": [
+ "allOf": [
+ {
+ // path model[company][i0][name]
+ "when": { "$data": "3/name" },
+ "is": { "pattern": "/^[A-M]/" }
+ },
+ {
+ // path model[company][i0][allowSubscription]
+ "when": { "$data": "3/allowSubscription" },
+ "is": {"const":true}
+ },
+ {
+ // path model[company][i0][users][i1][subscribe]
+ "when": { "$data": "0/subscribe" },
+ "is": {"const":true}
+ },
+ {
+ // path model[company][i0][users][i1][require]
+ "when": "1/require",
+ "is": { "items": { "const": "email" }}
+ }
+ ]
+ ],
+ "action": [
+ {
+ "update": [
+ // path model[company][i0][users][i1][email]
+ "0/email",
+ // path model[company][i0][users][i1][subscriptionTerm]
+ "0/subscriptionTerm",
+ // path model[company][i0][users][i1][readAgreement]
+ "0/readAgreement"
+ ],
+ "set": { "display": true, "required": true }
+ }
+ ]
+ }
+ ]
+ }
+ };
+
+ it('should contain a function for resolving relative & local references', () => {
+ jsonrules.should.be.an('object');
+ })
+
+ describe('jsonrules', () => {
+
+ it('should generate a function for evaluating rules', (done) => {
+ jsonrules
+ .generate(uischema)
+ .then((rules) => {
+console.log(rules);
+ done();
+ })
+ .catch((error) => {
+ done(error);
+ });
+ });
+ });
+});
diff --git a/src/lib/merge.spec.js b/spec/merge.spec.ts
similarity index 73%
rename from src/lib/merge.spec.js
rename to spec/merge.spec.ts
index 5450351..048ca4e 100644
--- a/src/lib/merge.spec.js
+++ b/spec/merge.spec.ts
@@ -1,9 +1,10 @@
-import chai from 'chai';
+/* tslint:disable:quotemark */
+import { should } from 'chai';
import { describe, it} from 'mocha';
-import { defaultForm, createDefaults } from './schema-defaults';
-import { merge } from './merge';
+import { merge, schemaDefaults } from '../dist/package/Core';
+import { JSONSchemaUI } from '../dist/src/json-schema-ui';
-chai.should();
+should();
// describe('merge.js', () => {
// it('should hold functions for generating a default form schema from defaults it creates', () => {
@@ -20,7 +21,7 @@ chai.should();
// });
describe('merge.js', () => {
- const schema = {
+ const schema: JSONSchemaUI = {
"type": "object",
"properties": {
"name": {
@@ -35,7 +36,7 @@ describe('merge.js', () => {
"items": {
"type": "object",
"properties": {
- "brand": {"type":"string"}
+ "brand": { "type": "string" }
}
}
},
@@ -52,7 +53,7 @@ describe('merge.js', () => {
}
};
- const stdForm = defaultForm(schema, createDefaults());
+ const stdForm = schemaDefaults.defaultForm(schema, schemaDefaults.createDefaults());
it('should contain a function for merging schema and form definitions', () => {
merge.should.be.an('function');
@@ -83,16 +84,16 @@ describe('merge.js', () => {
it('should combine a schema and form definition, regardless of order', () => {
merge(schema, [ 'name', 'shoe', 'gender' ]).should.be.deep.equal(stdForm.form);
merge(schema, [ 'gender' ]).should.be.deep.equal([stdForm.form[2]]);
- merge(schema, [ 'gender', 'name' ]).should.be.deep.equal([stdForm.form[2],stdForm.form[0]]);
+ merge(schema, [ 'gender', 'name' ]).should.be.deep.equal([stdForm.form[2], stdForm.form[0]]);
});
it('should allow items that are not in the schema', () => {
- merge(schema, [ '*', { type:'fieldset' }]).should.be.deep.equal(stdForm.form.concat([{ type:'fieldset' }]));
+ merge(schema, [ '*', { type: 'fieldset' }]).should.be.deep.equal(stdForm.form.concat([{ type: 'fieldset' }]));
});
it('should translate "readOnly" in schema to "readonly" on the merged form defintion', () => {
- var merged = merge(schema, [ 'gender' ]);
+ let merged = merge(schema, [ 'gender' ]);
merged[0].should.have.property('readonly');
merged[0].readonly.should.eq(true)
});
@@ -121,17 +122,17 @@ describe('merge.js', () => {
}
};
- var merged = merge(subschema, [ '*' ]);
+ let merged = merge(subschema, [ '*' ]);
- //sub
+ // sub
merged[0].should.have.property('readonly');
merged[0].readonly.should.eq(true);
- //array
+ // array
merged[0].items[0].should.have.property('readonly');
merged[0].items[0].readonly.should.eq(true);
- //array items
+ // array items
merged[0].items[0].items[0].should.have.property('readonly');
merged[0].items[0].items[0].readonly.should.eq(true);
});
@@ -159,19 +160,57 @@ describe('merge.js', () => {
}
};
- var merged = merge(subschema, [{key: 'sub', readonly: true}]);
+ let merged = merge(subschema, [{key: 'sub', readonly: true}]);
- //sub
+ // sub
merged[0].should.have.property('readonly');
merged[0].readonly.should.eq(true);
- //array
+ // array
merged[0].items[0].should.have.property('readonly');
merged[0].items[0].readonly.should.eq(true);
- //array items
+ // array items
merged[0].items[0].items[0].should.have.property('readonly');
merged[0].items[0].items[0].readonly.should.eq(true);
});
+
+ it('should add x-schema-form properties', () => {
+ let subschema = {
+ "type": "object",
+ "properties": {
+ "comment": {
+ "type": "string",
+ "title": "Comment",
+ "x-schema-form": {
+ "type": "textarea",
+ "placeholder": "Don't hold back"
+ }
+ }
+ }
+ };
+
+ let merged = merge(subschema, [ '*' ]);
+
+ merged.should.deep.eq(
+ [
+ {
+ "title": "Comment",
+ "schema": {
+ "type": "string",
+ "title": "Comment",
+ "x-schema-form": {
+ "type": "textarea",
+ "placeholder": "Don't hold back"
+ }
+ },
+ "ngModelOptions": {},
+ "key": [ "comment" ],
+ "type": "textarea",
+ "placeholder": "Don't hold back"
+ }
+ ]
+ )
+ });
});
});
diff --git a/src/lib/resolve.spec.js b/spec/resolve.spec.ts
similarity index 86%
rename from src/lib/resolve.spec.js
rename to spec/resolve.spec.ts
index 9b3a4be..c69181d 100644
--- a/src/lib/resolve.spec.js
+++ b/spec/resolve.spec.ts
@@ -1,8 +1,8 @@
-import chai from 'chai';
-import { describe, it} from 'mocha';
-import { jsonref } from './resolve';
+/* tslint:disable:quotemark */
+import { should } from 'chai';
+import { jsonref } from '../dist/package/Core';
-chai.should();
+should();
describe('resolve.js', () => {
const schema = {
@@ -85,7 +85,7 @@ describe('resolve.js', () => {
"description": "test remote schema resolution",
"type": "object",
"properties": {
- "relative": { "$ref": "https://raw.githubusercontent.com/json-schema-org/json-schema-org.github.io/master/geo" }
+ "relative": { "$ref": "http://json-schema.org/example/geo.json" }
}
};
@@ -97,7 +97,7 @@ describe('resolve.js', () => {
it('should resolve relative json-ref via promise', (done) => {
jsonref(schema)
- .then((resolved) => {
+ .then((resolved: any) => {
resolved.properties.storage.oneOf[0].properties.should.have.property('device');
resolved.properties.storage.oneOf[0].properties.should.equal(
resolved.definitions.diskDevice.properties
@@ -114,17 +114,23 @@ describe('resolve.js', () => {
it('should resolve relative json-ref via callback', (done) => {
jsonref(schema, function(error, resolved) {
- if (error) done(error);
+ if (error) {
+ done(error);
+ }
+
resolved.properties.storage.oneOf[0].properties.should.have.property('device');
done();
});
});
- //I believe this only fails in phantomjs due to https://github.com/ariya/phantomjs/issues/11195
+ // I believe this only fails in phantomjs due to https://github.com/ariya/phantomjs/issues/11195
it('should resolve remote json-ref via callback', (done) => {
jsonref(remote, function(error, resolved) {
- if (error) done(error);
- //resolved.properties.relative.latitude.type.should.equal('number');
+ if (error) {
+ done(error);
+ }
+
+ // resolved.properties.relative.latitude.type.should.equal('number');
done();
});
});
diff --git a/src/lib/select.spec.js b/spec/schema-defaults.spec.ts
similarity index 94%
rename from src/lib/select.spec.js
rename to spec/schema-defaults.spec.ts
index dd476a2..aa30ae4 100644
--- a/src/lib/select.spec.js
+++ b/spec/schema-defaults.spec.ts
@@ -1,18 +1,17 @@
-import chai from 'chai';
-import { describe, it} from 'mocha';
-import { defaultForm, createDefaults } from './schema-defaults';
+import { should } from 'chai';
+import { schemaDefaults } from '../dist/package/Core';
-chai.should();
+should();
describe('schema-defaults.js', () => {
it('should hold functions for generating a default form schema from defaults it creates', () => {
- defaultForm.should.be.an('function');
- createDefaults.should.be.an('function');
+ schemaDefaults.defaultForm.should.be.an('function');
+ schemaDefaults.createDefaults.should.be.an('function');
});
describe('createDefaults', () => {
it('should create default rules', () => {
- const rules = createDefaults();
+ const rules = schemaDefaults.createDefaults();
rules.should.be.an('object');
});
});
@@ -235,7 +234,7 @@ describe('schema-defaults.js', () => {
}
];
- const f = defaultForm(schema, createDefaults());
+ const f = schemaDefaults.defaultForm(schema, schemaDefaults.createDefaults());
f.form.should.be.deep.equal(form);
});
});
diff --git a/src/lib/schema-defaults.spec.js b/spec/select.spec.ts
similarity index 80%
rename from src/lib/schema-defaults.spec.js
rename to spec/select.spec.ts
index 74da488..614146f 100644
--- a/src/lib/schema-defaults.spec.js
+++ b/spec/select.spec.ts
@@ -1,11 +1,10 @@
-import chai from 'chai';
-import { describe, it} from 'mocha';
-import { select } from './select';
+import { should } from 'chai';
+import { select } from '../dist/package/Core';
-chai.should();
+should();
describe('select.js', () => {
- const data = {
+ let data = {
'name': 'Freddy',
'weapon': {
'glove': {
@@ -51,15 +50,13 @@ describe('select.js', () => {
});
it('should create any undefined objects or arrays in the path when setting a value', () => {
- let data = {};
let value = select('property.array[1].value', data, 'something');
- data.should.be.deep.equal({
- 'property': {
- 'array': [
- ,
- { 'value': 'something' }
- ]
- }
+ data.property.should.be.an('object');
+ data.property.should.be.deep.equal({
+ 'array': [
+ ,
+ { 'value': 'something' }
+ ]
});
});
});
diff --git a/src/lib/sf-path.spec.js b/spec/sf-path.spec.ts
similarity index 65%
rename from src/lib/sf-path.spec.js
rename to spec/sf-path.spec.ts
index 7cb874d..265b3dd 100644
--- a/src/lib/sf-path.spec.js
+++ b/spec/sf-path.spec.ts
@@ -1,15 +1,14 @@
-import chai from 'chai';
-import { describe, it} from 'mocha';
-import { parse, stringify, normalize, name } from './sf-path';
+import { should } from 'chai';
+import { sfPath } from '../dist/package/Core';
-chai.should();
+should();
describe('sf-path.js', () => {
it('should hold functions for working with object paths and keys', () => {
- parse.should.be.an('function');
- stringify.should.be.an('function');
- normalize.should.be.an('function');
- name.should.be.an('function');
+ sfPath.parse.should.be.an('function');
+ sfPath.stringify.should.be.an('function');
+ sfPath.normalize.should.be.an('function');
+ sfPath.name.should.be.an('function');
});
// describe('parse', () => {
diff --git a/spec/support/default.opts b/spec/support/default.opts
new file mode 100644
index 0000000..7e7b976
--- /dev/null
+++ b/spec/support/default.opts
@@ -0,0 +1,12 @@
+--require ajv
+--require djv
+--ui bdd
+
+--reporter spec
+
+--check-leaks
+--globals WebSocket,FormData,XDomainRequest,ActiveXObject
+
+--recursive
+--timeout 5000
+spec-js/**/*.spec.js
\ No newline at end of file
diff --git a/spec/support/mocha-browser-runner.html b/spec/support/mocha-browser-runner.html
new file mode 100644
index 0000000..95ae615
--- /dev/null
+++ b/spec/support/mocha-browser-runner.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spec/support/mocha.sauce.gruntfile.js b/spec/support/mocha.sauce.gruntfile.js
new file mode 100644
index 0000000..138c88d
--- /dev/null
+++ b/spec/support/mocha.sauce.gruntfile.js
@@ -0,0 +1,34 @@
+module.exports = function (grunt) {
+ grunt.initConfig({
+ pkg: grunt.file.readJSON('../../package.json'),
+
+ run: {
+ sauce: {
+ args: ['./mocha.sauce.runner.js'],
+ options: {
+ wait: true,
+ cwd: './'
+ }
+ }
+ },
+
+ connect: {
+ server: {
+ options: {
+ base: '../../',
+ port: 9876
+ }
+ }
+ }
+ });
+
+ var parentcwd = process.cwd();
+ process.chdir('../../');
+
+ grunt.loadNpmTasks('grunt-contrib-connect');
+ grunt.loadNpmTasks('grunt-run');
+
+ process.chdir(parentcwd);
+
+ grunt.registerTask('default', ['connect', 'run:sauce']);
+};
\ No newline at end of file
diff --git a/spec/support/mocha.sauce.runner.js b/spec/support/mocha.sauce.runner.js
new file mode 100644
index 0000000..e17ff9f
--- /dev/null
+++ b/spec/support/mocha.sauce.runner.js
@@ -0,0 +1,157 @@
+var _ = require('lodash');
+var mochaSauce = require('mocha-in-sauce');
+
+var customLaunchers = {
+ sl_chrome: {
+ base: 'SauceLabs',
+ browserName: 'chrome',
+ version: '46'
+ },
+ sl_chrome_beta: {
+ base: 'SauceLabs',
+ browserName: 'chrome',
+ version: 'beta'
+ },
+ /*
+ sl_chrome_dev: {
+ base: 'SauceLabs',
+ browserName: 'chrome',
+ version: 'dev'
+ },*/
+ sl_firefox: {
+ base: 'SauceLabs',
+ browserName: 'firefox',
+ version: '44'
+ },
+ /*sl_firefox_beta: {
+ base: 'SauceLabs',
+ browserName: 'firefox',
+ version: 'beta'
+ },
+ sl_firefox_dev: {
+ base: 'SauceLabs',
+ browserName: 'firefox',
+ version: 'dev'
+ },*/
+ sl_safari7: {
+ base: 'SauceLabs',
+ browserName: 'safari',
+ platform: 'OS X 10.9',
+ version: '7'
+ },
+ sl_safari8: {
+ base: 'SauceLabs',
+ browserName: 'safari',
+ platform: 'OS X 10.10',
+ version: '8'
+ },
+ sl_safari9: {
+ base: 'SauceLabs',
+ browserName: 'safari',
+ platform: 'OS X 10.11',
+ version: '9.0'
+ },
+ sl_ios8: {
+ base: 'SauceLabs',
+ browserName: 'iphone',
+ platform: 'OS X 10.11',
+ version: '8.4'
+ },
+ sl_ios9: {
+ base: 'SauceLabs',
+ browserName: 'iphone',
+ platform: 'OS X 10.11',
+ version: '9.1'
+ },
+ sl_ie9: {
+ base: 'SauceLabs',
+ browserName: 'internet explorer',
+ platform: 'Windows 2008',
+ version: '9'
+ },
+ sl_ie10: {
+ base: 'SauceLabs',
+ browserName: 'internet explorer',
+ platform: 'Windows 2012',
+ version: '10'
+ },
+ sl_ie11: {
+ base: 'SauceLabs',
+ browserName: 'internet explorer',
+ platform: 'Windows 8.1',
+ version: '11'
+ },
+ sl_edge: {
+ base: 'SauceLabs',
+ browserName: 'MicrosoftEdge',
+ platform: 'Windows 10',
+ version: '14.14393'
+ },
+ sl_edge_13: {
+ base: 'SauceLabs',
+ browserName: 'MicrosoftEdge',
+ platform: 'Windows 10',
+ version: '13.10586'
+ },
+ sl_android_4_1: {
+ base: 'SauceLabs',
+ browserName: 'android',
+ platform: 'Linux',
+ version: '4.1'
+ },
+ sl_android_4_2: {
+ base: 'SauceLabs',
+ browserName: 'android',
+ platform: 'Linux',
+ version: '4.2'
+ },
+ sl_android_4_3: {
+ base: 'SauceLabs',
+ browserName: 'android',
+ platform: 'Linux',
+ version: '4.3'
+ },
+ sl_android_4_4: {
+ base: 'SauceLabs',
+ browserName: 'android',
+ platform: 'Linux',
+ version: '4.4'
+ },
+ sl_android5: {
+ base: 'SauceLabs',
+ browserName: 'android',
+ platform: 'Linux',
+ version: '5.1'
+ }
+};
+
+var sauce = new mochaSauce({
+ name: 'RxJS 5 browser test',
+ build: process.env.TRAVIS_BUILD_NUMBER,
+ username: process.env.SAUCE_USERNAME,
+ accessKey: process.env.SAUCE_ACCESS_KEY,
+ host: 'localhost',
+ port: 4445,
+ runSauceConnect: true, // run sauceConnect automatically
+
+ url: 'http://localhost:9876/spec/support/mocha-browser-runner.html'
+});
+
+sauce.record(true, true);
+sauce.concurrency(1);
+
+_.each(customLaunchers, function (browser) {
+ sauce.browser(browser);
+});
+
+sauce.on('start', function (browser) {
+ console.log(' started %s %s %s ...', browser.browserName, browser.version, browser.platform || '');
+});
+
+sauce.on('end', function (browser, res) {
+ console.log(' completed %s %s %s ... : %d failures', browser.browserName, browser.version, browser.platform || '', res.failures);
+});
+
+sauce.start(function (err, res) {
+ console.log('-------------- done --------------');
+});
\ No newline at end of file
diff --git a/spec/support/webpack.mocha.config.js b/spec/support/webpack.mocha.config.js
new file mode 100644
index 0000000..dc417f2
--- /dev/null
+++ b/spec/support/webpack.mocha.config.js
@@ -0,0 +1,34 @@
+var _ = require('lodash');
+var path = require('path');
+var glob = require('glob');
+var webpack = require('webpack');
+
+var globPattern = 'spec-js/**/!(mocha.sauce.gruntfile|mocha.sauce.runner|webpack.mocha.config|painter|diagram-test-runner|testScheduler-ui).js';
+var files = _.map(glob.sync(globPattern), function (x) {
+ return path.resolve('./', x);
+});
+
+module.exports = {
+ devtool: '#inline-source-map',
+
+ stats: {
+ colors: true,
+ assets: false,
+ chunks: false
+ },
+
+ entry: {
+ 'browser.testscheduler': './spec-js/helpers/testScheduler-ui.js',
+ 'browser.spec': files
+ },
+
+ output: {
+ path: path.resolve(__dirname, 'tmp/browser'),
+ filename: '[name].js',
+ },
+
+ plugins: [
+ new webpack.optimize.CommonsChunkPlugin('browser.common'),
+ new webpack.IgnorePlugin(/^mocha$/)
+ ]
+};
\ No newline at end of file
diff --git a/src/lib/validate.spec.js b/spec/test_validate_mod.spec.js
similarity index 81%
rename from src/lib/validate.spec.js
rename to spec/test_validate_mod.spec.js
index ef1fdbd..460b1f2 100644
--- a/src/lib/validate.spec.js
+++ b/spec/test_validate_mod.spec.js
@@ -1,10 +1,12 @@
import chai from 'chai';
-import { describe, it} from 'mocha';
-import { validate } from './validate';
+import { describe, it } from 'mocha';
+import { validate } from './test_validate_mod';
+import { validate as v1 } from './test_validate_mod';
+import { validate as v2 } from './test_validate_mod';
let should = chai.should();
-describe('validate.js', () => {
+describe('test_validate_mod.js', () => {
it('should hold a validation function for testing against tv4 until an option to pass in a validator is created', () => {
validate.should.be.an('function');
});
diff --git a/src/lib/traverse.spec.js b/spec/traverse.spec.ts
similarity index 77%
rename from src/lib/traverse.spec.js
rename to spec/traverse.spec.ts
index 95c7390..f6b2a7b 100644
--- a/src/lib/traverse.spec.js
+++ b/spec/traverse.spec.ts
@@ -1,8 +1,7 @@
-import chai from 'chai';
-import { describe, it} from 'mocha';
-import { traverseSchema, traverseForm } from './traverse';
+import { should } from 'chai';
+import { traverseSchema, traverseForm } from '../dist/package/Core';
-chai.should();
+should();
describe('traverse.js', () => {
it('should hold functions for applying functions on branches of a json-schema or ui-schema', () => {
diff --git a/spec/validate.spec.ts b/spec/validate.spec.ts
new file mode 100644
index 0000000..b5dadde
--- /dev/null
+++ b/spec/validate.spec.ts
@@ -0,0 +1,26 @@
+import { should } from 'chai';
+import { validate } from '../dist/package/Core';
+
+should();
+
+describe('validate.js', () => {
+ it('should hold a validation function for testing against tv4 until an option to pass in a validator is created', () => {
+ validate.should.be.an('function');
+ });
+
+ describe('validate', () => {
+ const form = { 'key': [ 'hero' ], 'schema': { 'type': 'string' }};
+
+ it('should return a result object {"error":null, "missing":[], "valid":true}, with valid set to true', () => {
+ let value = 'Batman';
+ let result = validate(form, value);
+ result.valid.should.equal(true);
+ });
+
+ it('should return an error object with a message "Invalid type: array (expected string)" when the data is not valid', () => {
+ let value = [0];
+ let result = validate(form, value);
+ result.error.message.should.eq('Invalid type: array (expected string)');
+ });
+ });
+});
diff --git a/src/module.js b/src/Core.ts
similarity index 84%
rename from src/module.js
rename to src/Core.ts
index a959d03..6925927 100644
--- a/src/module.js
+++ b/src/Core.ts
@@ -3,8 +3,8 @@ import * as sfPathImp from './lib/sf-path';
import canonicalTitleMapImp from './lib/canonical-title-map';
export { merge } from './lib/merge';
-export { select } from './lib/select';
-export { jsonref } from './lib/resolve';
+export { select } from './lib/select';
+export { jsonref } from './lib/resolve';
export { traverseSchema, traverseForm } from './lib/traverse';
export { validate } from './lib/validate';
diff --git a/src/JsonRefs.d.ts b/src/JsonRefs.d.ts
new file mode 100644
index 0000000..af93ab1
--- /dev/null
+++ b/src/JsonRefs.d.ts
@@ -0,0 +1,423 @@
+// Generated by typings
+// Source: https://raw.githubusercontent.com/AndrewKeatsHMRC/typed-json-refs/master/index.d.ts
+declare namespace JsonRefs {
+
+ /**
+ * The options used for various JsonRefs APIs.
+ *
+ * @typedef {object} JsonRefsOptions
+ *
+ * @param {string|string[]|function} [filter=function () {return true;}] - The filter to use when gathering JSON
+ * References *(If this value is a single string or an array of strings, the value(s) are expected to be the `type(s)`
+ * you are interested in collecting as described in {@link module:JsonRefs.getRefDetails}. If it is a function, it is
+ * expected that the function behaves like {@link module:JsonRefs~RefDetailsFilter}.)*
+ * @param {boolean} [includeInvalid=false] - Whether or not to include invalid JSON Reference details *(This will make
+ * it so that objects that are like JSON Reference objects, as in they are an `Object` and the have a `$ref` property,
+ * but fail validation will be included. This is very useful for when you want to know if you have invalid JSON
+ * Reference definitions. This will not mean that APIs will process invalid JSON References but the reasons as to why
+ * the JSON References are invalid will be included in the returned metadata.)*
+ * @param {object} [loaderOptions] - The options to pass to
+ * {@link https://github.com/whitlockjc/path-loader/blob/master/docs/API.md#module_PathLoader.load|PathLoader~load}
+ * @param {module:JsonRefs~RefPreProcessor} [refPreProcessor] - The callback used to pre-process a JSON Reference like
+ * object *(This is called prior to validating the JSON Reference like object and getting its details)*
+ * @param {module:JsonRefs~RefPostProcessor} [refPostProcessor] - The callback used to post-process the JSON Reference
+ * metadata *(This is called prior filtering the references)*
+ * @param {string} [options.relativeBase] - The base location to use when resolving relative references *(Only useful
+ * for APIs that do remote reference resolution. If this value is not defined,
+ * {@link https://github.com/whitlockjc/path-loader|path-loader} will use `window.location.href` for the browser and
+ * `process.cwd()` for Node.js.)*
+ * @param {string|string[]} [options.subDocPath=[]] - The JSON Pointer or array of path segments to the sub document
+ * location to search from
+ */
+
+ interface JsonRefsOptions {
+ filter?: string|string[]|((obj: JsonRefs.UnresolvedRefDetails, refPath: string[]) => boolean);
+ includeInvalid?: boolean;
+ loaderOptions?: Object;
+ refPreProcessor?: RefPreProcessor;
+ refPostProcessor?: RefPostProcessor;
+ relativeBase?: string;
+ subDocPath?: string | string[];
+ }
+
+ /**
+ * Simple function used to filter out JSON References.
+ *
+ * @typedef {function} RefDetailsFilter
+ *
+ * @param {module:JsonRefs~UnresolvedRefDetails} refDetails - The JSON Reference details to test
+ * @param {string[]} path - The path to the JSON Reference
+ *
+ * @returns {boolean} whether the JSON Reference should be filtered *(out)* or not
+ */
+
+ /**
+ * Simple function used to pre-process a JSON Reference like object.
+ *
+ * @typedef {function} RefPreProcessor
+ *
+ * @param {object} obj - The JSON Reference like object
+ * @param {string[]} path - The path to the JSON Reference like object
+ *
+ * @returns {object} the processed JSON Reference like object
+ */
+ interface RefPreProcessor {
+ (obj: Object, path: string[]): Object;
+ }
+
+ /**
+ * Simple function used to post-process a JSON Reference details.
+ *
+ * @typedef {function} RefPostProcessor
+ *
+ * @param {module:JsonRefs~UnresolvedRefDetails} refDetails - The JSON Reference details to test
+ * @param {string[]} path - The path to the JSON Reference
+ *
+ * @returns {object} the processed JSON Reference details object
+ */
+ interface RefPostProcessor {
+ (refDetails: Object, path: string[]): Object;
+ }
+
+ /**
+ * Detailed information about resolved JSON References.
+ *
+ * @typedef {module:JsonRefs~UnresolvedRefDetails} ResolvedRefDetails
+ *
+ * @property {boolean} [circular] - Whether or not the JSON Reference is circular *(Will not be set if the JSON
+ * Reference is not circular)*
+ * @property {boolean} [missing] - Whether or not the referenced value was missing or not *(Will not be set if the
+ * referenced value is not missing)*
+ * @property {*} [value] - The referenced value *(Will not be set if the referenced value is missing)*
+ */
+ interface ResolvedRefDetails extends UnresolvedRefDetails {
+ circular?: boolean;
+ missing?: boolean;
+ value?: any;
+ }
+
+ /**
+ * The results of resolving the JSON References of an array/object.
+ *
+ * @typedef {object} ResolvedRefsResults
+ *
+ * @property {module:JsonRefs~ResolvedRefDetails} refs - An object whose keys are JSON Pointers *(fragment version)*
+ * to where the JSON Reference is defined and whose values are {@link module:JsonRefs~ResolvedRefDetails}
+ * @property {object} resolved - The array/object with its JSON References fully resolved
+ */
+ interface ResolvedRefsResults {
+ refs: {
+ [JSONPointer: string]: ResolvedRefDetails;
+ };
+ resolved: any[] | Object;
+ }
+
+ /**
+ * An object containing the retrieved document and detailed information about its JSON References.
+ *
+ * @typedef {module:JsonRefs~ResolvedRefsResults} RetrievedRefsResults
+ *
+ * @property {object} value - The retrieved document
+ */
+ /**
+ * An object containing the retrieved document, the document with its references resolved and detailed information
+ * about its JSON References.
+ *
+ * @typedef {object} RetrievedResolvedRefsResults
+ *
+ * @property {module:JsonRefs~UnresolvedRefDetails} refs - An object whose keys are JSON Pointers *(fragment version)*
+ * to where the JSON Reference is defined and whose values are {@link module:JsonRefs~UnresolvedRefDetails}
+ * @property {ResolvedRefsResults} - An object whose keys are JSON Pointers *(fragment version)*
+ * to where the JSON Reference is defined and whose values are {@link module:JsonRefs~ResolvedRefDetails}
+ * @property {object} value - The retrieved document
+ */
+ /**
+ * Detailed information about unresolved JSON References.
+ *
+ * @typedef {object} UnresolvedRefDetails
+ *
+ * @property {object} def - The JSON Reference definition
+ * @property {string} [error] - The error information for invalid JSON Reference definition *(Only present when the
+ * JSON Reference definition is invalid or there was a problem retrieving a remote reference during resolution)*
+ * @property {string} uri - The URI portion of the JSON Reference
+ * @property {object} uriDetails - Detailed information about the URI as provided by
+ * {@link https://github.com/garycourt/uri-js|URI.parse}.
+ * @property {string} type - The JSON Reference type *(This value can be one of the following: `invalid`, `local`,
+ * `relative` or `remote`.)*
+ * @property {string} [warning] - The warning information *(Only present when the JSON Reference definition produces a
+ * warning)*
+ */
+ interface UnresolvedRefDetails {
+ def: Object;
+ error?: string;
+ uri: string;
+ uriDetails: Object;
+ type: string;
+ warning?: string;
+ }
+
+ /**
+ * Clears the internal cache of remote documents, reference details, etc.
+ *
+ * @alias module:JsonRefs.clearCache
+ */
+ function clearCache(): void;
+
+ /**
+ * Takes an array of path segments and decodes the JSON Pointer tokens in them.
+ *
+ * @param {string[]} path - The array of path segments
+ *
+ * @returns {string} the array of path segments with their JSON Pointer tokens decoded
+ *
+ * @throws {Error} if the path is not an `Array`
+ *
+ * @see {@link https://tools.ietf.org/html/rfc6901#section-3}
+ *
+ * @alias module:JsonRefs.decodePath
+ */
+ function decodePath(path: any): any;
+
+ /**
+ * Takes an array of path segments and encodes the special JSON Pointer characters in them.
+ *
+ * @param {string[]} path - The array of path segments
+ *
+ * @returns {string} the array of path segments with their JSON Pointer tokens encoded
+ *
+ * @throws {Error} if the path is not an `Array`
+ *
+ * @see {@link https://tools.ietf.org/html/rfc6901#section-3}
+ *
+ * @alias module:JsonRefs.encodePath
+ */
+ function encodePath(path: any): any;
+
+ /**
+ * Finds JSON References defined within the provided array/object.
+ *
+ * @param {array|object} obj - The structure to find JSON References within
+ * @param {module:JsonRefs~JsonRefsOptions} [options] - The JsonRefs options
+ *
+ * @returns {object} an object whose keys are JSON Pointers *(fragment version)* to where the JSON Reference is defined
+ * and whose values are {@link module:JsonRefs~UnresolvedRefDetails}.
+ *
+ * @throws {Error} when the input arguments fail validation or if `options.subDocPath` points to an invalid location
+ *
+ * @alias module:JsonRefs.findRefs
+ *
+ * @example
+ * // Finding all valid references
+ * var allRefs = JsonRefs.findRefs(obj);
+ * // Finding all remote references
+ * var remoteRefs = JsonRefs.findRefs(obj, {filter: ['relative', 'remote']});
+ * // Finding all invalid references
+ * var invalidRefs = JsonRefs.findRefs(obj, {filter: 'invalid', includeInvalid: true});
+ */
+ function findRefs(obj: any, options: any): {};
+
+ /**
+ * Finds JSON References defined within the document at the provided location.
+ *
+ * This API is identical to {@link module:JsonRefs.findRefs} except this API will retrieve a remote document and then
+ * return the result of {@link module:JsonRefs.findRefs} on the retrieved document.
+ *
+ * @param {string} location - The location to retrieve *(Can be relative or absolute, just make sure you look at the
+ * {@link module:JsonRefs~JsonRefsOptions|options documentation} to see how relative references are handled.)*
+ * @param {module:JsonRefs~JsonRefsOptions} [options] - The JsonRefs options
+ *
+ * @returns {Promise} a promise that resolves a {@link module:JsonRefs~RetrievedRefsResults} and rejects with an
+ * `Error` when the input arguments fail validation, when `options.subDocPath` points to an invalid location or when
+ * the location argument points to an unloadable resource
+ *
+ * @alias module:JsonRefs.findRefsAt
+ *
+ * @example
+ * // Example that only resolves references within a sub document
+ * JsonRefs.findRefsAt('http://petstore.swagger.io/v2/swagger.json', {
+ * subDocPath: '#/definitions'
+ * })
+ * .then(function (res) {
+ * // Do something with the response
+ * //
+ * // res.refs: JSON Reference locations and details
+ * // res.value: The retrieved document
+ * }, function (err) {
+ * console.log(err.stack);
+ * });
+ */
+ function findRefsAt(location: any, options: any): any;
+
+ /**
+ * Returns detailed information about the JSON Reference.
+ *
+ * @param {object} obj - The JSON Reference definition
+ *
+ * @returns {module:JsonRefs~UnresolvedRefDetails} the detailed information
+ *
+ * @alias module:JsonRefs.getRefDetails
+ */
+ function getRefDetails(obj: any): {
+ def: any;
+ };
+
+ /**
+ * Returns whether the argument represents a JSON Pointer.
+ *
+ * A string is a JSON Pointer if the following are all true:
+ *
+ * * The string is of type `String`
+ * * The string must be empty, `#` or start with a `/` or `#/`
+ *
+ * @param {string} ptr - The string to check
+ * @param {boolean} [throwWithDetails=false] - Whether or not to throw an `Error` with the details as to why the value
+ * provided is invalid
+ *
+ * @returns {boolean} the result of the check
+ *
+ * @throws {error} when the provided value is invalid and the `throwWithDetails` argument is `true`
+ *
+ * @alias module:JsonRefs.isPtr
+ *
+ * @see {@link https://tools.ietf.org/html/rfc6901#section-3}
+ *
+ * @example
+ * // Separating the different ways to invoke isPtr for demonstration purposes
+ * if (isPtr(str)) {
+ * // Handle a valid JSON Pointer
+ * } else {
+ * // Get the reason as to why the value is not a JSON Pointer so you can fix/report it
+ * try {
+ * isPtr(str, true);
+ * } catch (err) {
+ * // The error message contains the details as to why the provided value is not a JSON Pointer
+ * }
+ * }
+ */
+ function isPtr(ptr: any, throwWithDetails: any): boolean;
+
+ /**
+ * Returns whether the argument represents a JSON Reference.
+ *
+ * An object is a JSON Reference only if the following are all true:
+ *
+ * * The object is of type `Object`
+ * * The object has a `$ref` property
+ * * The `$ref` property is a valid URI *(We do not require 100% strict URIs and will handle unescaped special
+ * characters.)*
+ *
+ * @param {object} obj - The object to check
+ * @param {boolean} [throwWithDetails=false] - Whether or not to throw an `Error` with the details as to why the value
+ * provided is invalid
+ *
+ * @returns {boolean} the result of the check
+ *
+ * @throws {error} when the provided value is invalid and the `throwWithDetails` argument is `true`
+ *
+ * @alias module:JsonRefs.isRef
+ *
+ * @see {@link http://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03#section-3}
+ *
+ * @example
+ * // Separating the different ways to invoke isRef for demonstration purposes
+ * if (isRef(obj)) {
+ * // Handle a valid JSON Reference
+ * } else {
+ * // Get the reason as to why the value is not a JSON Reference so you can fix/report it
+ * try {
+ * isRef(str, true);
+ * } catch (err) {
+ * // The error message contains the details as to why the provided value is not a JSON Reference
+ * }
+ * }
+ */
+ function isRef(obj: any, throwWithDetails: any): boolean;
+
+ /**
+ * Returns an array of path segments for the provided JSON Pointer.
+ *
+ * @param {string} ptr - The JSON Pointer
+ *
+ * @returns {string[]} the path segments
+ *
+ * @throws {Error} if the provided `ptr` argument is not a JSON Pointer
+ *
+ * @alias module:JsonRefs.pathFromPtr
+ */
+ function pathFromPtr(ptr: any): any;
+
+ /**
+ * Returns a JSON Pointer for the provided array of path segments.
+ *
+ * **Note:** If a path segment in `path` is not a `String`, it will be converted to one using `JSON.stringify`.
+ *
+ * @param {string[]} path - The array of path segments
+ * @param {boolean} [hashPrefix=true] - Whether or not create a hash-prefixed JSON Pointer
+ *
+ * @returns {string} the corresponding JSON Pointer
+ *
+ * @throws {Error} if the `path` argument is not an array
+ *
+ * @alias module:JsonRefs.pathToPtr
+ */
+ function pathToPtr(path: any, hashPrefix: any): string;
+
+ /**
+ * Finds JSON References defined within the provided array/object and resolves them.
+ *
+ * @param {array|object} obj - The structure to find JSON References within
+ * @param {module:JsonRefs~JsonRefsOptions} [options] - The JsonRefs options
+ *
+ * @returns {Promise} a promise that resolves a {@link module:JsonRefs~ResolvedRefsResults} and rejects with an
+ * `Error` when the input arguments fail validation, when `options.subDocPath` points to an invalid location or when
+ * the location argument points to an unloadable resource
+ *
+ * @alias module:JsonRefs.resolveRefs
+ *
+ * @example
+ * // Example that only resolves relative and remote references
+ * JsonRefs.resolveRefs(swaggerObj, {
+ * filter: ['relative', 'remote']
+ * })
+ * .then(function (res) {
+ * // Do something with the response
+ * //
+ * // res.refs: JSON Reference locations and details
+ * // res.resolved: The document with the appropriate JSON References resolved
+ * }, function (err) {
+ * console.log(err.stack);
+ * });
+ */
+ function resolveRefs(obj: any[] | Object, options?: JsonRefsOptions): Promise;
+
+ /**
+ * Resolves JSON References defined within the document at the provided location.
+ *
+ * This API is identical to {@link module:JsonRefs.resolveRefs} except this API will retrieve a remote document and then
+ * return the result of {@link module:JsonRefs.resolveRefs} on the retrieved document.
+ *
+ * @param {string} location - The location to retrieve *(Can be relative or absolute, just make sure you look at the
+ * {@link module:JsonRefs~JsonRefsOptions|options documentation} to see how relative references are handled.)*
+ * @param {module:JsonRefs~JsonRefsOptions} [options] - The JsonRefs options
+ *
+ * @returns {Promise} a promise that resolves a {@link module:JsonRefs~RetrievedResolvedRefsResults} and rejects with an
+ * `Error` when the input arguments fail validation, when `options.subDocPath` points to an invalid location or when
+ * the location argument points to an unloadable resource
+ *
+ * @alias module:JsonRefs.resolveRefsAt
+ *
+ * @example
+ * // Example that loads a JSON document (No options.loaderOptions.processContent required) and resolves all references
+ * JsonRefs.resolveRefsAt('./swagger.json')
+ * .then(function (res) {
+ * // Do something with the response
+ * //
+ * // res.refs: JSON Reference locations and details
+ * // res.resolved: The document with the appropriate JSON References resolved
+ * // res.value: The retrieved document
+ * }, function (err) {
+ * console.log(err.stack);
+ * });
+ */
+ function resolveRefsAt(location: string, options?: JsonRefsOptions): Promise